1(this["webpackJsonpetebase-site"]=this["webpackJsonpetebase-site"]||[]).push([[0],{100:function(e,t,a){e.exports=a.p+"static/media/kde-logo.eac91044.svg"},101:function(e,t){e.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAMAAABlApw1AAALEnpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHja7ZlZdiM7DkT/uYpeAgESHJbD8ZzeQS+/L1OyLM9+r95Xn7bKzlRmigMCiAio3PrPv7f7Fz+hlOKi5ZJqSp6fWGPVxknxt596/RUfr7/Xz7jf4v2b6+5xQ7kUOIbb29zuzzeu2+sHXuaQ/va6K/c7Wu4DyWPg6yecmc/5fF4k1/V2XeJ9oLpuJ6mW/LzUfh9o3B+8lnL/jY9l3Q7nvXtzIROlaUwUVFeQ4Pmr4b6CcPtt5zp/NQjPSYicWxB3u3QfjIC82d7L0fvnAL0J8suZex/9x9m74Gu7Xw/vYpnuMeLk0xti766HxzT6PHF4rEjf3tj1BZ+PQd57lr3XbXctJiKa7hl1BfslQufBTsjD9bHEK/NrnOfrVXkV3/wA8klmdl5DqijR306iTGmyZV3HIYMlRl2aOaoOkDjXSshadYQbTrxkaw41zFAAa+hyIXBZH2uRa956zTekMPMUHlVhMOEjX77cdzf/ysvtfapNxJdHrFiXnrxmGQe585enAET2HTe7AvzyusPvn/KHVAVBu8Jc2GDz/TZEN3nNrXDhHHjOON5KSFye9wEIEXMbi5EAAj5JMEnis2oWIY4FgBor1xC1g4CY6WSRGkNI6rIWPXPzmSzXs2qa9FyGmwDCQgoZbGpogBWjkT85FnKoWbBoZsmyFWfVWgopJksp5XRIruWQY7accs4l19xKKLFYSSVDhbW0qjXAgVZTzbXUWltT15ioMVbj+caVrj302K2nnnvptbdB+ow4bKSRRxl1tKkzTGhipplnmXW2JW7BFCsuW2nlVVZdbZNrO+y4baedd9l1twdqd1Q/vP4CanJHTS+kznP5gRpXXc4vQ8ihEzuYgZhGAfF8ECCh9WDmi8SoB7mDma9KUZiySDvYuCkHMSCMS9S2PLB7Re5XuDkrv8JNf0LOHej+CeQc0H3E7RPUZrvUMVy4nSo8MfWB6ktToomzzQbgIDvvQODvHt2fDvD/gf63B7KSu/Qae7DeE1XCoZLpdZbaVulD85JYXbBSo5HqfmIA+5qj103przrD+VDcVOGYS42kttk7gpm0jz4ozUzBB6S49e1ymIZQGmU+/dHOnlMYskqbe0vAYCb0gerJulLsMe9e9imkkbrXPn3LpsGS04as5zh2aBRiNYq6UIu1+aalaUcibmeYiO+O7qcHvj2uRpnWxcKng9ME5rErmjstG5vFhFsI8+T27kYEtb+JYOvQJRYhwpapwaYuJjH4jgdhmsE+diIMrVnfBtHwTvfou65pic2HpmvJu0FwSerKKt7COuFY2e+G0PbWocKdJp/mUz6MtBDoOHOpqxsMOpO0PmY6zOc1lYk/Mpl9NjhwS99ljqFAPuZxRRlZ1jH8nnMn2W3mWhFrU18WkBOC0VY1vFsdy8VNJMK2MPyY2i20MqPqiUvecD3kW5bWGEtg3swwlnusk4lZ1T1vRyRG5/QY+D88PgYiuXNhXZp2G5GQkv7yGZL181pwB8pK9EEhPaHgZXpG3pXMljXWjg3DmFtfI/dQ87I9dgIVYj8FlXXAFUtSK4uiISBU1JUNTGJiO5SMhFquAyT2SHsh6BPfORDsUVStFtm9LzcINKvmiZC3UmiYlBSKrvgBsjLhgSLDT5JKm+4Y86m7ka1tF1ftZ8n30podIcSLIZSjkDS5PSOG9D9uRfodPmVQTEO3XcxCaCPljkYfcBNMM4Y9Q/sb5Nx3D9iM+xXJcpDs+sxabC1u3Dy3Xawn+M2zEkS810y5sEOsSqkqpRIvEpR9D21XOb1CuXe22DMS34VgA2TNO0wq0qxlMmToh0HYJq1Oy0fm81hCnMkbJgUhglRid+uG0vyAkrw+9ILkfoL7QnsHaTvhvIs4KvYEfZWCd5R5kDp0zYLHRV88SFn527l/HElEuFUD24A5cOdOd5O12D+ZQWWHKjPVgekCTHzaKVo+CY5vxurdb79y0QQtp2ltOUwsfCah7UUopcKIbUMDcuaiWAKUkhESglVgjI1O4P3BSVlrmy3OscrOzUFSq0ZkoknJ0OXiicKiGLKiG+QtHFlGExoJ2Cjcs4rNvM0W9yZt/oAA3J3L/5gAjs/+RwjAvaTEnxKAI6s+I4CfxBF/f2XDwsdfCefYHqpFd9cLm51Y9ZKkegI2hXclYgT2McFDeyvpRJwqo5s/3z4RuE2dTPbi7IB/Oh7S3EpfcuTB+uqnMMxr6IUWZoxCfEc+Q8IwafUF/6BxbcZG3pGQlTRCUNsekBHFsqruZI36zP20dHNRvDxoVQqpdJY7q6agl2ButLuZkZOOpEQxs/Yd/KLxX2XQGqBddSYmhiFPJ1HJbV/pxxH1rnEkUoHgeyGpS86j064XkAo6crq2bYPQKFAUkM9HJrUtGpzObMbk40wnMikDEoXOadPJnSJwVxUwJCWqdE5nrjFvLGuQ9cMBZgyCxO0r4RP1/ah8w0ZtdrOwYmg/9mYfLLif4RTKwp7LYh+6f5+xrKVRU3RDxAyTGbabJNbcXwvfb9Pe3fOekWGmlCofyNVHapUeKuOQMsqTH8/M2zO+40fOt5d5rQ03zeT6oFInrLw8lqhVE4AKRA1PCi6Q+Fnvz0nvfpH9hxa70NfOLHjYCXaMuEZFPuFsW5DldqWQ4QZTY5pE8Wd+n2+WVj6hxPYqxYxBDm1NeG4iXrFhiskhYgC6NKjHLyU3xlqD6RJuj1YX7FLG1VEu9VYuE7xhTBTP1/NtALZNECJ4vLdNX13pYuOKDvCx8NRIuzlvpU7kGO8xZ4IlOs2v0g9LgNELXXisNMe06etIIc4vhxbmQo7Sla/ZyH6wJVFtLdzyD1VGIWQWTHBqsu33OiYihU7PPOCoehp3Vq4Beoe6MvEgnRbEd9cIGQz4sUBWcp8WSDZ7qofSL3OgT+agcA9/oRFHb8fwR0eUXwsGPBtLbBEpHhxRMhMSIx+BiC/l0CnkCNKXeeh37+D+xDzsGuXFlLus73K93Jz7Hm0+6uF9zdhKwDbOt0MBrkHXu5uC7VihI/mdtEtnyd/ahy+O7nHh9Cunnhrm4H3V6LAKQmjozJFwM0NXAClMTvqGunAjhUV2rEB4l7hbanuuMH1TYWR9WrBYqTRQVWdFjmahnkb3WJAAmmOTTriRcE0UrnkQVJqdoV5oR5HcpZeQICL4IP7RdLrTdYbVWp0RqLC+wIceU699Qj+M0TX4uFC258z2swXUjbynH2K90cGJNOFlG5hMyhzSCReHsGzaL8QDRsh8iu6JdXiqK1Wc9kzIJVmm5BzSIe4l6S4SxmSdQSK9Fh3lyjc/cKJ3Mw3Sx3sbefcMwfn6cBb752z5kCzTbkJjbtFw/u3vs+RUxEl6Gj/y/gvjjxOQvlALfEDstRPAinGMB0YIaD5
1Ir1cAdW9BHSm1YbhuJO0DO3/InefUcZ/lTicJ6cxhhHcs3rPhxEzrADeUgVmnoKBxNfr+Fu04z1XLL/q7L92d+9Tetf7O3lW793dfurs/+W7kjQC6n1iCurUv6rZ2mkKI5ny32l3sKCQumoKiqrRKiBUAQyMLy9kqQnCMf0m+ACvClwQ2MSgfWaSFo1TRAQZq57/kKKYQ0vlO2LCYZEwENlwHmofZyb/YrPvr0fg8CO5jVGI6YknF07nUpEEq6jXLtN1eb8VBE6aIWJfayZ/qdNBKQUgUIhsmtG1cffYvqfpx/IDad9T93dGdE2QXYzzkfBmUnqL9uhlU0+C7ORoIUpC4FY1dpFCTkCJ7cX9/My/HvWdla/8Fq7CuyuNXVcoAAAGFaUNDUElDQyBwcm9maWxlAAB4nH2RPUjDQBzFX1OlUisOVhB1yFCdLEgVcdQqFKFCqBVadTC59ENo0pC0uDgKrgUHPxarDi7Oujq4CoLgB4iTo5Oii5T4v6TQIsaD4368u/e4ewcI9RLTrI5xQNMrZioRFzPZFTHwiiD60Y0YhmRmGbOSlITn+LqHj693UZ7lfe7P0aPmLAb4ROIZZpgV4nXiqc2KwXmfOMyKskp8Tjxm0gWJH7muuPzGueCwwDPDZjo1RxwmFgttrLQxK5oa8SRxRNV0yhcyLquctzhrpSpr3pO/MJTTl5e4TnMYCSxgERJEKKhiAyVUEKVVJ8VCivbjHv5Bxy+RSyHXBhg55lGGBtnxg//B726t/ETMTQrFgc4X2/4YAQK7QKNm29/Htt04AfzPwJXe8pfrwPQn6bWWFjkCereBi+uWpuwBlzvAwJMhm7Ij+WkK+TzwfkbflAX6boHgqttbcx+nD0CaukreAAeHwGiBstc83t3V3tu/Z5r9/QCTmHK0yfByfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB+QKFQszGx4tDwUAAAH4UExURQCT8wF9zwJ9zwOV8wl9zwmU8w59zw9+zxCU8xF9zxN+0BN/0BOU8xOV8xSJ4BSU8xV9zxV/0BWU8xWV8xaU8xaV8xeV8xh+zxh/0BiV8xmV8xqV8xx/zxx/0ByAzxyA0ByV8x2V8x6K4R6L4B6L4h6V8x6W8x+L4B+L4R+L4h+M4h+M4x+M5B+V8x+W8yCW8yGW8yGW9CGX9COX8y2U8y+Y8zOb8zWW8zeb8zqY8zqa8zqb8zyc9D2b80Cb80Gd9GOq8mOq82Sp82Sp9WSq82Wq82Wr9Was9Wen82ip82mp9Wmq82mr9Gms82mu9Wqr82qt82ut9muu9Wyt82yu9W2q9W2r9W2t9W6t9m+s9XCv9XOv9nOw9nSv9XSw9ney9qPK+aXD5qXD56bD56fE56rM9qvH6KvM9qvN+avO+azH6KzH6azN9q3I6a3J6a3O9q7J6a7N9q7O9q7P9q7Q+a/J6a/P9q/Q+bDP9rDQ+bHQ+bLM6rPM6rPR9rTN67TR9rTR97TS+bTT+bXS9rXS97fU9rjV+tfo/N7s/OHu/eHv/eLu/OLu/ePu/ePv/eTv/fX5/fX5/vX6/vb5/vb6/fb6/vb7/vf6/vf7/vj7/vj7//j8//n7/vn8/vn8//n9//r8//r9//v8/vv8//3+//7+//7//////944KL8AAAW/SURBVHja7dwJexNFGMDxUrnaooGkDVIbJoGmNAm72cb7Ro6KSEVEuaSoICqHUEHlElEQORSPSIBSytlkv6bpRZPm3WSPeed4nne+wM4vu7O7+W82TZbmo4kABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAvQHGS89pDcgO5i8s0hiQ/Sxvl35dpi3AGMzbtl08E9UUkNh+0x4fxZPztATEN43Yk6N0uklDQGLnQ/vJOD1PO0By98jM/O3SyahmAGPrHbtyFM8s0wpgrKuef1lwfpFGAGPHbXv2KP0S0gZg7snbNiB4XhNAz94CMH977IfVegDiu+6C8/95cWy1DoD4J/fh+bcwFsuoD+jZBc6/eHQxK49YKqc4wNwLHj+l/UvZxIj19ikNMPaA67f0ZRubHg4CNQDGjjw4/2/nMNZAoATAWHcbnP9QM6scvTlFAcmtd8D5fzW3av7llawmILEbnv+hVjZrQGdT+YD4zhHw/H+2hdUM4IomHZDY9BCc/0/zGTBq94FsgLEd/PyLhxcwcMS61QJkB2+Cx/++JcxprMgpBBjvP9Dnv+9Z5jxS6gAm+0/t8X94CWNuBTIB0/2nZv0uYPVHWg3ATP+pPv7Pzm8w//JKzikAqOo/ldevFtZwdHXLB1T3n4r7h1bmYsTSsgGGw/3P0FzmbqTkAmr7z9T9czNzO6a+o8kBQP1n4vvLHOZ+rJAHgPuPXdzfxryMblkAp/5zdKmn+U/e2UkAOPcf5nGM312LB9TrP54FGfGA+v3HsyAtGtCo/3geggEu+o/SAFf9R2GAy/6jLMBt/1EV4L7/qAnw0n9UBHjrP+oBvPYf1QA++o9SAF/9hxvgKVNS/+EDyL5+uT8hqf9wAbx21b73biCB//7DAZB948/yth5/EEAQpP8EB7zyx8TWHvvfB8H6T0BA9sXrU9u715+U1H8CAV74+8kWC/2+zkUc+k8AwMt/VWzz348MSf3HN+DNq1Vb/e9jzwJO/ccn4O0rs7Zb2NIjp//4A7x1pWbLtzbG5fQfP4BXrwHbHn7Pg4Bn//EOiH8Obdwe3ez6bMq3/3jfA+GDJWj7dwdcnk259x/PayD6DSi4tcbVuYh///F+FuqEBYV3DDfnf+79x8d1IHoQXAeFNWbj6y///uPnShz6Hj6KBpIS+o+ve6H2C2PgSt4cF99//N1OR34HBaP1rgdI/cfn94GO34rQbIY39ojuP36/UkaOw+tgiym4//j+Thz+GhTc2GaK7T/+s8rCI+BR9M+HptD+E6ALRX+EBWuTIvtPkDLXeQo+itYnBPafQGmx/QR8b7ohIa7/BGujoRPgPng0kBDWfwLG3fZT4Dp4NLMPsPtP0DrdCa/k0fVJQf0ncF6PHoFX8lpTTP8J/nxgIXxFm7geCOg/HB5whI/D14Ntpoj+w+MJTeQieG964/1PBfQfLo+YOi6BguEHAvoPn2dkkXPgUSSi/3B6yBc+5nL+3PsPr6eUoQMlN/Pn33+4PWaNuhEg9B9+z4k7Gwsw+g/HB93RA43mP9TMVAZYoWN1z0U4/YfrTw3C58bqzP9QK1MdYEUuOQqw+g/nH3t0XHQ4itD6D+9fqzj0Irz+w/3nNmAvQuw/3AFQL8LsP/wBtb0Itf8gAGb3Itz+gwGo7kXI/QcFUNmLsPsPDmCmF6H3HyTAdC/C7z9YgMleJKD/oAHGe5GI/oMHsMLffdHGdAZYTz/D9AZY1krdAX29mgMsK92lOcDKLNccYGV0B0jaBzxfgMh0aQ6w0roDrF7dAX0rNQdY1irdAcLXAf/XsASfixDeI8voDhB7FKG8yZdarjnASnVpDsiJ2wdYL4OmdAcIW8l4r+MKuh4gvk+c0R0g5ihCfaN7le4AEb0IFyCgF2H/KQB6L0L/VwPsVoH/twwZ3QHI+0DEH2Og7oP/AS8Jl4BqWzNPAAAAAElFTkSuQmCC"},102:function(e,t,a){e.exports=a.p+"static/media/etesync-brand.5e0c4083.svg"},103:function(e,t,a){e.exports=a.p+"static/media/nlnet.835ad6c3.svg"},104:function(e,t,a){e.exports=a.p+"static/media/ngi0.f67b8297.svg"},105:function(e,t,a){e.exports=a.p+"static/media/svix.c9aeb987.svg"},108:function(e,t,a){e.exports=a.p+"static/media/logo192.0896bd80.png"},110:function(e,t,a){e.exports=a.p+"static/media/not_found.11a516ac.svg"},111:function(e,t,a){e.exports=a.p+"static/media/logo.9725d5d6.svg"},118:function(e,t,a){e.exports=a(263)},125:function(e,t,a){},128:function(e,t,a){},134:function(e,t,a){}
1,163:function(e,t,a){},263:function(e,t,a){"use strict";a.r(t);var n=a(0),o=a.n(n),l=a(89),r=(a(125),a(41)),c=a(6),s=a(31),i=(a(128),"EteSync Ltd"),m="Etebase",u="Your end-to-end encrypted backend",d="An open-source and end-to-end encrypted SDK and backend",h="encryption, end-to-end, etebase, firebase, backend, sync, zero-knowledge, cryptography",p="https://www.etebase.com",E={sources:{main:"/#open-source",github:"https://github.com/etesync",server:"https://github.com/etesync/server",js:"https://github.com/etesync/etebase-js",rust:"https://github.com/etesync/etebase-rs",java:"https://github.com/etesync/etebase-java",python:"https://github.com/etesync/etebase-py",c:"https://github.com/etesync/libetebase",go:"https://github.com/etesync/etebase-go",ruby:"https://github.com/etesync/etebase-ruby",swift:"https://github.com/etesync/etebase-swift",csharp:"https://github.com/etesync/etebase-csharp"},etesync:"https://www.etesync.com",blog:"https://blog.etesync.com/tag/etebase/",chat:"https://www.etebase.com/community-chat/",docs:"https://docs.etebase.com/",signup:"https://www.etebase.com/signup/",dashboard:"https://devs.etebase.com/devs/dashboard/"},g={key:"0x9E21F091FC395F366A4743E2D2E584C37C477933",link:"http://keys.gnupg.net/pks/lookup?op=get&search=0x9E21F091FC395F366A4743E2D2E584C37C477933"},f={handle:"@EteSync",link:"https://twitter.com/EteSyncHQ"},y={handle:"@[email protected]",link:"https://mastodon.social/@EteSync"},b={handle:"r/EteSync",link:"https://www.reddit.com/r/EteSync/"},w={contact:"[email protected]",sales:"[email protected]",jobs:"[email protected]",partner:"[email protected]",press:"[email protected]",conduct:"[email protected]"},v=a(272),A=a(273),N=(a(50),a(267)),I=a(268),x=a(269),T=a(12),k=a(11),S=a(92);function C(e){var t,a,n;if((null===(t=e.href)||void 0===t?void 0:t.startsWith("http"))||(null===(a=e.href)||void 0===a?void 0:a.startsWith("mailto:")))return o.a.createElement("a",Object.assign({target:"_blank",rel:"noopener noreferrer"},e,{href:e.href}),e.children);if(null===(n=e.href)||void 0===n?void 0:n.startsWith("#")){return o.a.createElement("a",Object.assign({},e,{href:e.href,onClick:function(t){var a=e.href.substring(1),n=document.getElementById(a);null===n||void 0===n||n.scrollIntoView(),t.preventDefault()}}),e.children)}return o.a.createElement(S.HashLink,Object.assign({},e,{to:e.href}),e.children)}var O=[{title:"Company",children:[{title:"About"},{title:"Careers",href:"mailto:".concat(w.jobs)},{title:"Open Source",href:E.sources.main}]},{title:"Legal",children:[{title:"Terms"},{title:"Imprint"}]},{title:"Resources",children:[{title:"Docs",href:E.docs},{title:"Blog",href:E.blog},{title:"Pricing"},{title:"Support",href:"/about#contact"}]},{title:"Community",children:[{title:"Code of Conduct"},{title:"Github",icon:k.a,href:E.sources.github},{title:"Twitter",icon:k.j,href:f.link},{title:"Mastodon",icon:k.d,href:y.link},{title:"Reddit",icon:k.g,href:b.link}]}];function D(){return o.a.createElement("footer",{className:"main-footer pb-4"},o.a.createElement(N.a,null,o.a.createElement(I.a,null,O.map((function(e){return o.a.createElement(x.a,{key:e.title,xs:6,md:!0,className:"pt-5"},o.a.createElement("ul",{className:"list mb-0 mr-5"},o.a.createElement("li",{className:"list-unstyled pb-1"},o.a.createElement("h5",{style:{fontSize:"1em",fontWeight:600}},e.title)),e.children.map((function(e){var t,a;return o.a.createElement("li",{key:e.title,className:"list-unstyled pt-2"},o.a.createElement(C,{className:"text-muted",href:null!==(t=e.href)&&void 0!==t?t:(a=e.title,a.toString().toLowerCase().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/-+/g,"-").replace(/^-+/,"").replace(/-+$/,""))},e.icon&&o.a.createElement(T.a,{icon:e.icon,className:"mr-2"}),e.title))}))))}))),o.a.createElement("div",{className:"mt-5 text-center"},"\xa9 ",i)))}var M=a(116),B=a(10),P=a(95),R=a.n(P);a(134);function L(){var e=o.a.useState(!1),t=Object(M.a)(e,2),a=t[0],n=t[1];return o.a.createElement(o.a.Fragment,null,a&&o.a.createElement("div",{id:"support_bubble"},o.a.createElement("button",{id:"support_bubble_close",type:"button",className:"close","aria-label":"Close",onClick:function(){return n(!1)}},o.a.createElement("span",{"aria-hidden":"true"},"\xd7")),o.a.createElement("div",{className:"clearfix"}),o.a.createElement("div",{className:"bubble_content"},o.a.createElement("h3",null,"Need help?"),o.a.createElement("p",null,"We are here for you."),o.a.createElement(C,{href:E.docs,target:"_blank",className:"btn btn-primary w-100"},o.a.createElement(T.a,{className:"icon-left",icon:B.h})," Documentation"),o.a.createElement(C,{href:E.chat,target:"_blank",className:"btn btn-info w-100"},o.a.createElement(T.a,{className:"icon-left",icon:B.d})," Chat With Us"),o.a.createElement(C,{href:E.sources.main,target:"_blank",className:"btn btn-secondary w-100"},o.a.createElement(T.a,{className:"icon-left",icon:B.q})," Report Issue"),o.a.createElement(C,{href:"mailto:".concat(w.contact),target:"_blank",className:"btn btn-secondary w-100"},o.a.createElement(T.a,{className:"icon-left",icon:B.g})," Email Us"),o.a.createElement("div",{className:"bubble_social d-flex justify-content-around"},o.a.createElement(C,{href:b.link,title:"reddit"},o.a.createElement(T.a,{icon:k.g})),o.a.createElement(C,{href:y.link,title:"Mastodon"},o.a.createElement(T.a,{icon:k.d})),o.a.createElement(C,{href:f.link,title:"Twitter"},o.a.createElement(T.a,{icon:k.j}))))),o.a.createElement("a",{id:"support_button",href:"/about#contact",className:"d-flex justify-content-center align-items-center",title:"Get help",onClick:function(e){n(!a),e.preventDefault()}},o.a.createElement("img",{alt:"Support button",src:R.a})))}var H=a(274),F=a(96),W=a.n(F),U=a(97),G=a.n(U),j=a(98),z=a.n(j),Q=a(99),Y=a.n(Q),X=a(100),V=a.n(X),q=a(101),K=a.n(q),J=a(102),Z=a.n(J),_=a(103),$=a.n(_),ee=a(104),te=a.n(ee),ae=a(105),ne=a.n(ae),oe=a(117),le=a(271),re=a(275
1),ce=a(107),se=a(270);function ie(e){var t,a=e.code,n=e.title,l=e.className;return o.a.createElement("div",{className:null!==(t="rounded "+l)&&void 0!==t?t:"",style:{backgroundColor:"#2b2b2b"}},n&&o.a.createElement("div",{style:{color:"#ccc",textAlign:"left",borderBottom:"1px solid #444",padding:"0.5em 1em",fontSize:"87.5%"}},n),o.a.createElement(re.a,{className:"rounded",language:"javascript",style:se.a},a))}function me(){var e=o.a.useState(0),t=Object(oe.a)(e,2),a=t[0],n=t[1],l=[{title:"List collections",longTitle:"Fetch the first 50 collections",code:'\nconst etebase = await Etebase.Account.login("username", "password");\nconst collectionManager = etebase.getCollectionManager();\n\n// Fetch the first 50 collections\nconst collections = await collectionManager.list("etebase.files", { limit: 50 });\n\nfor (const collection of collections.data) {\n console.log("Got collection:", collection.uid);\n}\n'.trim()},{title:"Fetch changed collections",longTitle:"Only fetch the collections that changed since we last fetched",code:'\nconst etebase = await Etebase.Account.login("username", "password");\nconst collectionManager = etebase.getCollectionManager();\n\n// Fetch the first 50 collections\nconst collections = await collectionManager.list("etebase.files", { limit: 50 });\nconst stoken = collections.stoken; // Save the sync token for later\n\n// Later on, when we fetch again:\nconst changedCollections = await collectionManager.list("etebase.files", { stoken });\nconsole.log("Recent changes:", changedCollections.data.length);\n'.trim()},{title:"Modify a collection",longTitle:"Fetch a collection by UID and modify it",code:'\nconst etebase = await Etebase.Account.login("username", "password");\nconst collectionManager = etebase.getCollectionManager();\nconst collectionUid = /* ... */; // An existing collection UID\n\nconst collection = await collectionManager.fetch(collectionUid);\n\n// Update the collection and upload it\nawait collection.setContent("New secret!");\nawait collectionManager.upload(collection);\n'.trim()},{title:"Easily give access",longTitle:"Invite another user to join the collection",code:'\nconst etebase = await Etebase.Account.login("username", "password");\nconst collection = /* ... */; // The collection we want to share\n\nconst invitationManager = etebase.getInvitationManager();\nconst user2 = await invitationManager.fetchUserProfile("username2");\n\n// Show user2.pubkey to the user, verify it\'s as expected, and then send an invite\nawait invitationManager.invite(collection, "username2", user2.pubkey,\n Etebase.CollectionAccessLevel.ReadOnly);\n\n// On user2\'s device:\n// List user2\'s incoming invitations\nconst invitations = await user2InvitationManager.listIncoming();\n// Show the invitation to the user to verify it\'s as expected, and then accept\nawait user2InvitationManager.accept(invitations.data[0]);\n'.trim()},{title:"Complex transactions",longTitle:"Enforce data integrity by using transactions",code:'\nconst etebase = await Etebase.Account.login("username", "password");\nconst collection = /* ... */; // The collection we want to share\n\n// Items are the content of a collection (think files vs filesystem)\nconst itemManager = etebase.getCollectionManager().getItemManager(collection);\n\n// The items to upload\nconst items = [item1, item2, item3];\n// These items are not uploaded, but upload will be aborted if they have changed\nconst deps = [item4, item5];\n// This function will fail if any of the items or the deps have changed\nawait itemManager.transaction(items, deps);\n// This function will only fail if any of the deps have changed\nawait itemManager.batch(items, deps);\n'.trim()},{title:"Realtime subscriptions",longTitle:"Subscribe to receieve changes in realtime",code:'\nconst etebase = await Etebase.Account.login("username", "password");\nconst collection = /* ... */; // The collection we want to share\n\n// Items are the content of a collection (think files vs filesystem)\nconst itemManager = etebase.getCollectionManager().getItemManager(collection);\n\nconst subscription = await itemManager.subscribeChanges((items) => {\n console.log("Changed items:", items.data.length);\n});\n'.trim()}],r=l[a];return o.a.createElement(o.a.Fragment,null,o.a.createElement("h2",null,"Straightforward API, Fully Encrypted"),o.a.createElement("p",{className:"lead"},"We take care of the encryption and its related challenges so you don't have to."),o.a.createElement(I.a,{className:"pt-3"},o.a.createElement(x.a,{lg:!0},o.a.createElement(ie,{title:r.longTitle,code:r.code,className:"my-auto shadow"})),o.a.createElement(x.a,{lg:3},o.a.createElement("div",{className:"d-flex flex-column pt-5 pt-lg-0"},l.map((function(e,t){return o.a.createElement(le.a,{variant:"outline-primary",className:"mb-2",key:e.title,title:e.longTitle,active:t===a,onClick:function(){return n(t)}},e.title)}))))))}re.a.registerLanguage("javascript",ce.a);a(163);function ue(e){var t=o.a.createElement(H.a,{className:"ClickableCard"},e.children);return e.href?o.a.createElement(C,{className:"link-unstyled p-0 d-block",href:e.href},t):t}var de=a(108),he=a.n(de);function pe(e){var t,a=Object(c.l)(),n=e.title?"".concat(m," \xb7 ").concat(e.title):"".concat(m," - ").concat(u),l=null!==(t=e.description)&&void 0!==t?t:d;return o.a.createElement(r.a,{title:n},o.a.createElement("meta",{name:"description",content:l}),o.a.createElement("meta",{name:"keywords",content:h}),o.a.createElement("meta",{name:"twitter:card",content:"summary"}),o.a.createElement("meta",{name:"twitter:site",content:f.handle}),o.a.createElement("meta",{property:"og:title",content:"".concat(n)}),o.a.createElement("meta",{property:"og:type",content:"website"}),o.a.createElement("meta",{property:"og:site_name",content:m}),o.a.createElement("meta",{property:"og:url",content:p+a.pathname}),l&&o.a.createElement("meta",{property:"og:description",content:l}),o.a.createElement("meta",{property:"og:image",content:"".concat(p).concat(he.a)}),o.a.createElement("meta",{name:"og:image:alt",content:"".concat(m," logo")}))}var Ee='\n// Setup encryption and login to server\nconst etebase = await Etebase.Account.login("username", "password");\nconst collectionManager = etebase.getCollectionManager();\n\n// Create, encrypt and upload a new collection\nconst collection = await collectionManager.create(\n "collection.type",\n { name: "My data" },\n "My private data!"\n);\nawait collectionManager.upload(collection);\n'.trim();function ge(){var e=[{title:"Strong Encryption",icon:B.k,content:o.a.createElement(o.a.Fragment,null,"Etebase is built using ",o.a.createElement(C,{href:"https://blog.etesync.com/end-to-end-encryption-what-it-is-and-why-it-is-needed/"}
1,"end-to-end encryption")," and modern cryptography, so your users can be sure that only they can access their data.")},{title:"Packed with Goodies",icon:B.b,content:o.a.createElement(o.a.Fragment,null,"Etebase is packed with optional goodies for your every need, including: a full ",o.a.createElement("span",{className:"font-weight-bold"},"revision history")," of your data, easy sharing among users, ",o.a.createElement("span",{className:"font-weight-bold"},"strong integrity")," protections and more.")},{title:"Battle Tested",icon:B.c,content:o.a.createElement(o.a.Fragment,null,"Etebase uses the widely used and audited ",o.a.createElement(C,{href:"https://github.com/jedisct1/libsodium"},"libsodium")," behind the scenes, and is based on the code that powers ",o.a.createElement(C,{href:"https://www.etesync.com"},"EteSync"),". So you know you can rely on it.")}],t=[{title:"Users care",icon:B.i,content:"Users care more and more about the privacy and security of their data. With Etebase, you have them both."},{title:"Data breach protection",icon:B.n,content:"Encrypted data is safe in the case of a breach, and isn't even considered a data-breach under GDPR and HIPAA."},{title:"Easier compliance",icon:B.a,content:"End-to-end encryption makes it much easier to comply with privacy regulation such as GDPR, HIPAA, CCPA, and FERPA."},{title:"Cryptography is hard",icon:B.f,content:"Cryptography is different because it's easy to get wrong, hard to get right, and even harder to know if you got it right."},{title:"Collaborative",icon:B.p,content:"Etebase supports sharing data, access control, and everything you need for collaborative editing."},{title:"Integrated billing",icon:B.l,content:"Integrated billing lets you charge users for using your service using a variety of different payment methods.",beta:!0},{title:"Performance tuned",icon:B.o,content:"Etebase makes it easy to build performant applications while keeping user data both private and secure."},{title:"Open-source software",icon:k.e,content:o.a.createElement(o.a.Fragment,null,"Etebase is ",o.a.createElement("a",{href:E.sources.main},"open-source")," which means there is no vendor lock-in and anyone can audit the code and contribute.")},{title:"Here for the long run",icon:B.j,content:"We started working on EteSync, the first step of our vision, in 2017 and haven't stopped since."}],a=[{title:"Server",icon:B.m,content:"The server component",href:E.sources.server},{title:"etebase-js",icon:k.c,content:"The TypeScript/JavaScript client-side library",href:E.sources.js},{title:"etebase-rs",icon:k.h,content:"The Rust client-side library",href:E.sources.rust},{title:"etebase-java",icon:k.b,content:"The Java/Kotlin client-side library",href:E.sources.java},{title:"etebase-python",icon:k.f,content:"The Python client-side library",href:E.sources.python},{title:"libetebase",icon:B.e,content:"The C client-side library",href:E.sources.c},{title:"etebase-csharp",imageIcon:W.a,content:"The C# client-side library",href:E.sources.csharp},{title:"etebase-go",imageIcon:G.a,content:"The Go client-side library",href:E.sources.go,comingSoon:!0},{title:"etebase-ruby",imageIcon:z.a,content:"The Swift client-side library",href:E.sources.ruby,comingSoon:!0},{title:"etebase-swift",icon:k.i,content:"The Swift client-side library",href:E.sources.swift,comingSoon:!0}];return o.a.createElement(o.a.Fragment,null,o.a.createElement(pe,null),o.a.createElement("div",{className:"Index-section",style:{backgroundColor:"#fff8eb"}},o.a.createElement(N.a,null,o.a.createElement(I.a,null,o.a.createElement(x.a,{md:!0},o.a.createElement("h1",null,"Your end-to-end encrypted backend."),o.a.createElement("div",{className:"my-4",style:{fontSize:"1.3em"}},o.a.createElement("p",null,"Etebase makes it easy to build end-to-e
1nd encrypted applications by taking care of the encryption and its related challenges."),o.a.createElement("p",null,"Think Firebase but encrypted in a way that only end-users can access their data.")),o.a.createElement(C,{href:E.docs,className:"text-uppercase mr-3 btn btn-outline-dark"},"Read the docs"),o.a.createElement(C,{className:"btn btn-success text-uppercase",href:E.signup},"Sign Up")),o.a.createElement(x.a,{md:7,className:"text-center d-flex flex-column pt-5 pt-md-0"},o.a.createElement(ie,{title:"Securely encrypt and upload your data with only a few lines of code.",code:Ee,className:"my-auto shadow"}),o.a.createElement("div",{className:"d-flex justify-content-center mt-3"},o.a.createElement("a",{className:"d-flex align-items-center text-decoration-none",style:{fontSize:"1.3em",color:"inherit"},href:E.sources.main,title:"Available for\u2026"},a.map((function(e){return e.icon?o.a.createElement(T.a,{key:e.title,icon:e.icon,className:"mx-2"}):o.a.createElement("img",{src:e.imageIcon,key:e.title,alt:e.title,style:{height:"1em"},className:"mx-2"})})))))))),o.a.createElement(N.a,{fluid:!0,className:"text-center font-weight-bold py-5 Index-section-alt-bg",style:{backgroundColor:"#f8f9fa",fontSize:"1.5em"}},o.a.createElement("p",null,"Trusted by"),o.a.createElement("div",null,o.a.createElement(C,{className:"mx-4",href:"https://www.kde.org"},o.a.createElement("img",{alt:"KDE Logo",src:V.a,style:{height:"1.8em"}})),o.a.createElement(C,{className:"mx-4",href:"https://www.gnome.org"},o.a.createElement("img",{alt:"GNOME Logo",src:Y.a,style:{height:"1.8em"}})),o.a.createElement(C,{className:"mx-4 text-nowrap",style:{color:"inherit",textDecoration:"none"},href:"https://www.tasks.org"},o.a.createElement("img",{alt:"Tasks.org Logo",src:K.a,style:{height:"1.8em"}}),o.a.createElement("span",{className:"ml-2",style:{verticalAlign:"middle"}},"Tasks.org")),o.a.createElement(C,{className:"mx-4",href:"https://www.etesync.com"},o.a.createElement("img",{alt:"EteSync Logo",src:Z.a,style:{height:"1.8em"}})))),o.a.createElement(N.a,{className:"Index-section Index-section-first"},o.a.createElement(I.a,null,e.map((function(e){return o.a.createElement(x.a,{key:e.title,md:!0,className:"text-center pt-5 pt-md-0"},o.a.createElement(T.a,{icon:e.icon,className:"mr-3",style:{fontSize:"9rem"}}),o.a.createElement("h3",{style:{fontSize:"2em"},className:"py-4"},e.title),o.a.createElement("p",{className:"text-muted",style:{fontSize:"1.2em"}},e.content))})))),o.a.createElement(N.a,{className:"Index-section"},o.a.createElement("h2",{className:"text-center"},"What is Etebase"),o.a.createElement("p",{className:"lead text-center"},"A set of client libraries and a server for building end-to-end encrypted applications."),o.a.createElement(I.a,{className:"justify-content-md-center"},o.a.createElement(x.a,{md:9},o.a.createElement("p",{className:"text-center"},"Build apps quickly without worrying about the infrastructure or the encryption by using any of the Etebase client libraries. Everything is ",o.a.createElement("a",{href:E.sources.main},"open-source"),", clients and server, so you can be sure it does what it says on the tin.",o.a.createElement("br",null),"Etebase is available on all major platforms and is used by applications on the desktop, mobile and the web.")))),o.a.createElement(N.a,{className:"Index-section"},o.a.createElement("h2",{className:"text-center"},"Why Etebase"),o.a.createElement("p",{className:"lead text-center"},"Some of the reasons why you would want to use Etebase."),o.a.createElement(I.a,null,t.map((function(e){return o.a.createElement(x.a,{key:e.title,md:4,className:"py-3"},o.a.createElement(H.a,null,o.a.createElement(H.a.Body,null,o.a.createElement(H.a.Title,{className:"font-weight-bold"},o.a.createElement(T.a,{icon:e.icon,className:"mr-3"}),e.title,e.beta&&o.a.createElement("small",{className:"text-muted ml-2"},"(Beta)")),o.a.createElement(H.a.Text,null,e.content))))})))),o.a.createElement(N.a,{className:"Index-section text-center"},o.a.createElement(me,null)),o.a.createElement(N.a,{className:"Index-section Index-section-last"},o.a.createElement("div",{className:"text-center",id:"open-source"},o.a.createElement("h2",null,"Open Source"),o.a.createElement("p",{className:"lead"},"Etebase is fully open source, which means anyone can verify it really does what it says it does, and does it correctly."),o.a.createElement("p",null,"Follow us on ",o.a.createElement(C,{href:E.sources.github},"Github"),". Star and watch each repo for updates.")),o.a.createElement(I.a,null,a.map((function(e){return o.a.createElement(x.a,{key:e.title,md:6,className:"py-3"},o.a.createElement(ue,{href:e.href},o.a.createElement(H.a.Body,null,o.a.createElement(H.a.Title,{className:"font-weight-bold text-uppercase"},e.icon?o.a.createElement(T.a,{icon:e.icon,className:"mr-3"}):o.a.createElement("img",{src:e.imageIcon,alt:e.title,style:{height:"1em"},className:"mr-3"}),e.title,e.comingSoon&&o.a.createElement("small",{className:"text-muted ml-2"},"(coming soon)")),o.a.createElement(H.a.Text,null,e.content))))})))),o.a.createElement(N.a,{fluid:!0,className:"text-center font-weight-bold py-5 Index-section-alt-bg",style:{fontSize:"1.5em"}},o.a.createElement("a",{href:E.chat,className:"btn btn-outline-dark text-uppercase mr-3"},"Chat with Us"),o.a.createElement(C,{className:"btn btn-success text-uppercase",href:E.signup},"Sign Up")),o.a.createElement(N.a,{className:"d-flex flex-wrap justify-content-center my-4"},o.a.createElement("h3",{className:"my-auto p-0 mr-5"},"Proudly supported by"),o.a.createElement("a",{href:"https://nlnet.nl/",className:"site my-3"},o.a.createElement("img",{height:"50",src:$.a,alt:"nlnet"})),o.a.createElement("span",{className:"mx-4"}),o.a.createElement("a",{href:"https://www.ngi.eu/",className:"site my-3"},o.a.createElement("img",{height:"50",src:te.a,alt:"NGI0 EteSync"})),o.a.createElement("span",{className:"mx-4"}),o.a.createElement("a",{href:"https://www.svix.com/",className:"site my-3"},o.a.createElement("img",{height:"50",src:ne.a,alt:"Svix - Webhooks as a Service"}))))}function fe(){return o.a.createElement("div",{className:"py-5 w-100"},o.a.createElement(pe,{title:"About"}),o.a.createElement(N.a,{className:"article-content text-center py-5"},o.a.createElement("h1",{className:"display-4 pb-5"},"Let's Encrypt Everything!"),o.a.createElement("p",null,"We built Etebase to enable developers to easily and quickly build secure encrypted applications. Etebase takes care of the encryption and its related challenges so you can focus on what you do best: building great applications."),o.a.createElement("p",null,"Building encrypted applications is notoriously hard and time consuming. To make matters worth, good cryptography and bad cryptography look the same to the untrained eye, so people are building insecure applications and don't even realise it."),o.a.createElement("p",null,"With our ever more digital lives, and with data breaches and privacy scandals becoming a common occurrence, securing user data is more important than ever before. This will only keep on growing.")),o.a.createElement(N.a,{className:"article-content text-center py-5"},o.a.createElement("h2",{className:"display-5"},"Who are we?"),o.a.createElement("p",null,"We are a team of veteran developers and contributors with years of experience working in top-tech companies and building encrypted applications."),o.a.createElement("p",null,"We are a European company with servers in Europe, and we follow the strict European privacy laws. We design our products in a way that prevents anyone, including us, from accessing your or your users' data."),o.a.createElement("p",null,"We are proudly supported by the ",o.a.createElement("a",{href:"https://nlnet.nl/PET/"},"NLnet Foundation")," (courtesy of NGI0 Discovery and the European Commission DG CNECT's Next Generation Internet programme) and ",o.a.createElement("a",{href:"https://www.svix.com"},"Svix - Webhooks as a service"),".")),o.a.createElement(N.a,{fluid:!0,className:"my-5 py-5 Index-section-alt-bg",style:{fontSize:"1.2em"}},o.a.createElement(N.a,null,o.a.createElement("div",{className:"d-flex align-items-center justify-content-center"},o.a.createElement("div",null,o.a.createElement("h3",null,"Do you care a lot about data privacy and security?"),o.a.createElement("p",{className:"mb-0"},"We are always looking for passionate individuals to join our team!")),o.a.createElement("a",{href:"mailto:".concat(w.jobs),className:"ml-5 btn btn-success"},"Apply Now")))),o.a.createElement(N.a,{className:"article-content text-center py-5"},o.a.createElement("h2",{id:"contact",className:"display-5"},"Contact"),o.a.createElement("p",null,"For help with building applications using Etebase, join our developer community chat which is available via ",o.a.createElement("a",{href:E.chat},"the web"),", ",o.a.createElement("a",{href:"ircs://chat.freenode.net:6697/etesync"},"IRC"),", or ",o.a.createElement("a",{href:"https://matrix.to/#/#EteSync:matrix.org"},"Matrix"),". Or reach out to us on ",o.a.createElement("a",{href:f.link},"Twitter"),", ",o.a.createElement("a",{href:y.link},"Mastodon")," and ",o.a.createElement("a",{href:b.link},"reddit"),"."),o.a.createElement("p",null,"If you would like to contact us regarding a private matter, you can do so by ",o.a.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"mailto:".concat(w.contact)},"email"),". If your email contains sensitive or private information, please encrypt it using the following PGP key: ",o.a.createElement("a",{style:{overflowWrap:"anywhere"},href:g.link},g.key),"."),o.a.createElement("p",null,"For press related enquiries, please email us at ",o.a.createElement("a",{href:"mailto:".concat(w.press)},w.press))),o.a.createElement(N.a,{fluid:!0,className:"my-5 py-5 Index-section-alt-bg text-center"},o.a.createElement(N.a,null,o.a.createElement(I.a,null,o.a.createElement(x.a,{md:6},o.a.createElement("h2",null,"Credit and Attribution"),o.a.createElement("p",null,"Etebase is open-source software and is made possible thanks to the works of many contributors and open-source projects. For more information please check out our ",o.a.createElement("a",{href:E.sources.main},"source code repositories"),"."),o.a.createElement("p",null,"This website uses icons from ",o.a.createElement("a",{href:"http://fontawesome.io/"},"Font Awesome"),", and illustrations from ",o.a.createElement("a",{href:"https://undraw.co/"},"unDraw"),".")),o.a.createElement(x.a,{md:6},o.a.createElement("h2",{id:"warrant-canary"},"Warrant Canary"),o.a.createElement("p",null,"To view the warrant canary, please click ",o.a.createElement("a",{href:"https://www.etesync.com/about/#warrant-canary",title:"Warrant canary"},"here"),". If you are not sure what a warrant canary is, you can ",o.a.createElement("a",{href:"https://www.eff.org/deeplinks/2014/04/warrant-canary-faq",title:"What is a warrant canary?"},"learn about it here"),"."))))))}function ye(){var e="Terms & Conditions";return o.a.createElement(o.a.Fragment,null,o.a.createElement(pe,{title:e}),o.a.createElement(N.a,{className:"py-5"},o.a.createElement("div",{className:"article-content"},o.a.createElement("h1",{className:"display-3 font-weight-bold pb-5"},e),o.a.createElement("p",null,'This is a legal agreement between the person registering for an Etebase account ("you") and Etebase ("we" or "us"). This agreement governs your use of the Etebase service ("the service").'),o.a.createElement("h2",null,"1. Usage"),o.a.createElement("ol",{type:"a"},o.a.createElement("li",null,"You may only use the service as intended."),o.a.createElement("li",null,"Your account may be suspended if you use excessive amount of bandwidth and/or storage c
1apacity.")),o.a.createElement("h2",{id:"privacy"},"2. Privacy"),o.a.createElement("ol",{type:"a"},o.a.createElement("li",null,"We may send you email concerning the service or your account at any time."),o.a.createElement("li",null,"We will not sell your email address to anyone."),o.a.createElement("li",null,"We may provide information concerning your account and your use of the service to 3rd parties, at our sole discretion, if:",o.a.createElement("ul",null,o.a.createElement("li",null,"It is requested by law enforcement authorities."),o.a.createElement("li",null,"We have reason to believe that it is in your interest that we provide such information."),o.a.createElement("li",null,"It is necessary in order to keep the service running, or to diagnose or fix problems with the service or another network.")))),o.a.createElement("h2",null,"3. Money"),o.a.createElement("ol",{type:"a"},o.a.createElement("li",null,"You are responsible for any use of your account; consequently, you are responsible for keeping your account password and the keys you use to access the service secure."),o.a.createElement("li",null,"If you cancel your subscription or fail to make a payment for whatever reason, your account will be deactivated immediately, and any data you have stored using the service may be deleted within a month."),o.a.createElement("li",null,"You are billed at the beginning of each billing period and will not be entitled to any refunds in case of early termination.")),o.a.createElement("h2",null,"4. Disclaimer"),o.a.createElement("ol",{type:"a"},o.a.createElement("li",null,"Use of the service is at your own risk."),o.a.createElement("li",null,'THE SERVICE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.'),o.a.createElement("li",null,"IN NO EVENT SHALL WE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SERVICE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."),o.a.createElement("li",null,"WITHOUT DEROGATING FROM THE ABOVE, OUR AGGREGATE LIABILITY IN RESPECT OF ANY AND ALL CLAIMS WILL BE LIMITED TO THE LICENSE FEES RECEIVED FROM YOU DURING THE SIX MONTH PERIOD PRIOR TO FILING THE CLAIM AGAINST US. THE FOREGOING LIMITATIONS APPLY REGARDLESS OF THE CAUSE OR CIRCUMSTANCES GIVING RISE TO SUCH LOSS, DAMAGE OR LIABILITY, EVEN IF SUCH LOSS, DAMAGE OR LIABILITY IS BASED ON NEGLIGENCE OR OTHER TORTS OR BREACH OF CONTRACT (INCLUDING FUNDAMENTAL BREACH OR BREACH OF A FUNDAMENTAL TERM).")),o.a.createElement("h2",null,"5. Miscellaneous"),o.a.createElement("ol",{type:"a"},o.a.createElement("li",null,"This agreement will be governed by the laws of the United Kingdom. The courts of England have exclusive jurisdiction to settle any dispute arising out of or in connection with this agreement"),o.a.createElement("li",null,"We may update these Terms and Conditions at any time, but you will not be bound by any updates until 30 days after we send you an email notifying you of the changes.")),o.a.createElement("p",{className:"text-muted text-right",style:{fontSize:"80%"}},"Last modified: 16/06/2020"))))}function be(){var e="\nUnion House,\n111 New Union Street,\nCoventry, England,\nCV1 2NT\n ".trim();return o.a.createElement(o.a.Fragment,null,o.a.createElement(pe,{title:"Imprint"}),o.a.createElement(N.a,{className:"py-5"},o.a.createElement("div",{className:"article-content"},o.a.createElement("h1",{className:"display-3 font-weight-bold pb-5"},"Imprint"),o.a.createElement("p",null,"EteSync Ltd",o.a.createElement("br",null),o.a.createElement("small",{className:"text-muted"},"Company number 12122991")),o.a.createElement("pre",null,e),o.a.createElement("h2",null,"Servers"),o.a.createElement("p",null,o.a.createElement("a",{href:"https://hetzner.com"},"Hetzner")," - Germany",o.a.createElement("br",null),o.a.createElement("a",{href:"https://edis.at"},"EDIS")," - Austria"))))}var we=a(44),ve=a.n(we);function Ae(){return o.a.createElement(o.a.Fragment,null,o.a.createElement(pe,{title:"Code of Conduct"}),o.a.createElement(N.a,{className:"py-5"},o.a.createElement("div",{className:"article-content"},o.a.createElement("h1",{className:"display-3 font-weight-bold pb-5"},"Code of Conduct"),o.a.createElement(ve.a,{escapeHtml:!1,source:"\nLike the technical community as a whole, the Etebase team and community is made up of people from all over the world, working on every aspect of the mission - including mentorship, teaching, and connecting people.\n\nDiversity is one of our huge strengths, but it can also lead to communication issues and unhappiness. To that end, we have a few ground rules that we ask people to adhere to. This code applies equally to founders, mentors and those seeking help and guidance.\n\nThis isn't intended as a list of things that you can't do, but rather take it in the spirit in which it's intended - a guide to make it easier to enrich all of us and the technical communities in which we participate.\n\nOne of Etebase's core values is freedom of speech and preventing censorship, and therefore this code is not intended, and shall never be used to silence views and opinions. It's only here to make sure we all adhere to the same standard of civility.\n\nThis code of conduct applies to all spaces run by Etebase. This includes IRC, the mailing lists, the issue tracker, events, and any other forums created or that will be created by the project team which the community uses for communication. In addition to other channels where violations are directed at members of the community such as harassing a member of the community by direct mail.\nIt does not however apply to how people or
1chestrate themselves outside the scope of Etebase where they are free to engage in whatever behaviour they choose.\n\n<a id=\"reporting\"></a>\nIf you believe someone is violating the code of conduct, we ask that you report it by emailing [".concat(w.conduct,"](mailto:").concat(w.conduct,").\n\n## The Guidelines\n\n- **Be friendly and patient**.\n- **Be welcoming.** We strive to be a community that welcomes and supports people of all backgrounds and identities. This includes, but is not limited to members of any race, ethnicity, culture, national origin, colour, immigration status, social and economic class, educational level, sex, sexual orientation, gender identity and expression, age, size, family status, political belief, religion, and mental and physical ability.\n- **Be considerate.** Your work will be used by other people, and you in turn will depend on the work of others. Any decision you take will affect users and colleagues, and you should take those consequences into account when making decisions. Remember that we're a world-wide community, so you might not be communicating in someone else's primary language.\n- **Be respectful.** Not all of us will agree all the time, but disagreement is no excuse for poor behavior and poor manners. We might all experience some frustration now and then, but we cannot allow that frustration to turn into a personal attack. It\u2019s important to remember that a community where people feel uncomfortable or threatened is not a productive one. Members of the Etebase community should be respectful when dealing with other members as well as with people outside the Etebase community.\n- **Be careful in the words that you choose.** We are a community of professionals, and we conduct ourselves professionally. Be kind to others. Do not insult or put down other participants. Harassment and other exclusionary behavior aren't acceptable. This includes, but is not limited to:\n - Violent threats or language directed against another person.\n - Discriminatory jokes and language.\n - Posting sexually explicit or violent material.\n - Posting (or threatening to post) other people's personally identifying information (\"doxing\").\n - Personal insults, especially those using racist or sexist terms.\n - Unwelcome sexual attention.\n - Advocating for, or encouraging, any of the above behavior.\n - Repeated harassment of others. In general, if someone asks you to stop, then stop.\n- **When we disagree, try to understand why.** Disagreements, both social and technical, happen all the time and Etebase is no exception. It is important that we resolve disagreements and differing views constructively. Remember that we\u2019re different. The strength of Etebase comes from its varied community, people from a wide range of backgrounds. Different people have different perspectives on issues. Being unable to understand why someone holds a viewpoint doesn\u2019t mean that they\u2019re wrong. Don\u2019t forget that it is human to err and blaming each other doesn\u2019t get us anywhere. Instead, focus on helping to resolve issues and learning from mistakes.\n\n\nThis code of conduct was originally based on [the Django project's CoC](https://www.djangoproject.com/conduct/).\n\n## Questions?\n\nIf you have questions, please feel free to [contact us](mailto:").concat(w.contact,").\n")}))))}function Ne(){return o.a.createElement(N.a,{className:"py-5"},o.a.createElement(pe,{title:"Pricing"}),o.a.createElement("h1",{className:"display-4 font-weight-bold pb-2 text-center"},"Pricing"),o.a.createElement("div",{className:"lead text-center mx-auto pb-3",style:{fontSize:"1.5em",maxWidth:"30em"}},o.a.createElement("p",null,"Etebase is ",o.a.createElement(C,{href:E.sources.main},"open-source")," so you can run your own server. The hosted service is in private beta. For more information please ",o.a.createElement("a",{href:"mailto:".concat(w.contact)},"contact us"),".")),o.a.createElement("div",{className:"text-center mt-5"},o.a.createElement(C,{className:"btn btn-primary text-uppercase",href:E.docs},"Start building")))}var Ie=a(109),xe=a.n(Ie);function Te(){return o.a.createElement(o.a.Fragment,null,o.a.createElement(pe,{title:"Roadmap"}),o.a.createElement(N.a,{className:"py-5"},o.a.createElement("div",{className:"article-content"},o.a.createElement("h1",{className:"display-3 font-weight-bold pb-5"},"Roadmap"),o.a.createElement(ve.a,{plugins:[xe.a],escapeHtml:!1,source:"\nThis is a list of all the major tasks we are working on at Etebase.\n\nEtebase is currently in beta. What does that mean? It means that some of the things we would like to have are not there yet, though what's there is already solid, and used in production.\n\nGot any suggestions or feedback? Please let us know by either [reaching out](/about#contact), or replying directly on the relevant Github issues or pull requests. Interested in helping? Please let us know!\n\n## Planned\n- [ ] Database API - an easy API to manipulate objects (e.g. JSON objects) directly, including filtering, sorting and etc. This is in contrast to the more key-value store nature of the current API.\n- [ ] Offline support - save changes locally when there's no connection and upload them once online.\n- [ ] Improve admin dashboard - make it easier to manage your users\n- [ ] Swift library ([repo](https://github.com/etesync/etebase-swift/))\n- [ ] Dart library\n\n## In Progress\n- [ ] Make it easier to handle very large files\n- [ ] Messaging - send end-to-e
1nd encrypted messages to other users in real-time.\n- [ ] Go library ([code](https://github.com/etesync/etebase-go))\n\n## Proposals\nPlease refer to [the protocol proposals tracker](https://github.com/etesync/etebase-docs/issues?q=is%3Aopen+is%3Aissue+label%3Aproposal) for a list of protocol proposals.\n\n## Done\n- [X] Database subscriptions - get notified when items change intsead of polling.\n- [X] Etebase-JS: automatically use a web worker for slow cryptographic operations\n- [X] C# library ([pull request](https://github.com/etesync/etebase-csharp/pull/1/))\n- [X] Move the server to [FastAPI](https://fastapi.tiangolo.com/) for increased performance and development speed.\n- [X] Implement `fetchMulti` for fetching mulitple items by `uid`.\n- [X] Docs: add [website](".concat(E.docs,") with docs for JavaScript, Python, Java, Kotlin and C/C++.\n - [X] Add Rust docs [etebase-docs#10](https://github.com/etesync/etebase-docs/pull/10)\n - [X] Add protocol specifications for authentication and the encryption\n- [X] [CollectionTypes](https://docs.etebase.com/overview#collection-type) - for easier collection filtering.\n- [X] Launch public beta. \ud83c\udf89\ud83c\udf89\ud83c\udf89\n ").trim()}))))}var ke=a(110),Se=a.n(ke);function Ce(e){var t=e.title,a=e.img,n=e.children;return o.a.createElement(N.a,{className:"text-center",style:{paddingTop:"5em",paddingBottom:"5em"}},o.a.createElement("img",{src:a,alt:t,style:{maxWidth:"50%"}}),o.a.createElement("p",{className:"lead mt-5",style:{fontSize:"2em"}},t),n)}function Oe(){return o.a.createElement(Ce,{title:"Page not found.",img:Se.a})}var De=a(111),Me=a.n(De);function Be(){var e=Object(c.l)(),t=[{title:"Docs",href:E.docs},{title:"Pricing",href:"/pricing"},{title:"Blog",href:E.blog},{title:"Roadmap",href:"/roadmap"},{title:"Source Code",href:"/#open-source"}];return o.a.createElement("div",{className:"d-flex flex-column flex-grow-1",style:{maxWidth:"100%"}},o.a.createElement(v.a,{bg:"light",expand:"lg",style:{boxShadow:"rgba(0, 0, 0, 0.1) 0px 3px 5px 0px"}},o.a.createElement(C,{className:"navbar-brand",href:"/",style:{fontWeight:"bold"}},o.a.createElement("img",{alt:m,src:Me.a,width:"30",height:"30",className:"d-inline-block align-text-top"}),"\xa0",o.a.createElement("span",{className:"text-lowercase"},m),o.a.createElement("small",{className:"text-muted",style:{fontSize:"60%"}}," by EteSync")),o.a.createElement(v.a.Toggle,{"aria-controls":"responsive-navbar-nav"}),o.a.createElement(v.a.Collapse,{id:"responsive-navbar-nav"},o.a.createElement(A.a,{activeKey:e.pathname},t.map((function(e){return o.a.createElement(A.a.Link,{as:C,key:e.title,href:e.href},e.title)})),o.a.createElement(A.a.Link,{as:C,className:"d-lg-none",href:E.dashboard},"Log In"))),o.a.createElement(C,{href:E.dashboard,className:"btn btn-outline-dark text-uppercase ml-lg-auto d-none d-lg-block mr-3"},"Log In")),o.a.createElement(c.g,null,o.a.createElement(c.d,{exact:!0,path:"/"},o.a.createElement(ge,null)),o.a.createElement(c.d,{path:"/about"},o.a.createElement(fe,null)),o.a.createElement(c.d,{path:"/terms"},o.a.createElement(ye,null)),o.a.createElement(c.d,{path:"/imprint"},o.a.createElement(be,null)),o.a.createElement(c.d,{path:"/code-of-conduct"},o.a.createElement(Ae,null)),o.a.createElement(c.d,{path:"/pricing"},o.a.createElement(Ne,null)),o.a.createElement(c.d,{path:"/roadmap"},o.a.createElement(Te,null)),o.a.createElement(c.d,{path:"*"},o.a.createElement(Oe,null))),o.a.createElement("div",{className:"mt-auto"}),o.a.createElement(D,null),o.a.createElement(L,null))}function Pe(){var e=Object(c.k)();return o.a.useEffect((function(){return e.listen((function(){switch(e.action){case"PUSH":case"REPLACE":var t,a,n,o;null===(t=window)||void 0===t||t.scrollTo(0,0),null===(a=null===(o=document)||void 0===o?void 0:o.activeElement)||void 0===a||null===(n=a.blur)||void 0===n||n.call(a)}}))}),[e]),null}var Re=function(){return o.a.createElement(o.a.Fragment,null,o.a.createElement(r.a,{defaultTitle:m},o.a.createElement("meta",{name:"author",content:i})),o.a.createElement(s.BrowserRouter,null,o.a.createElement(Pe,null),o.a.createElement(Be,null)))};Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));Object(l.render)(o.a.createElement(o.a.StrictMode,null,o.a.createElement(Re,null)),document.getElementById("root")),"serviceWorker"
1in navigator&&navigator.serviceWorker.ready.then((function(e){e.unregister()})).catch((function(e){console.error(e.message)}))},95:function(e,t,a){e.exports=a.p+"static/media/support-button.bd4be98e.svg"},96:function(e,t,a){e.exports=a.p+"static/media/csharp-logo.a634d2be.svg"},97:function(e,t,a){e.exports=a.p+"static/media/golang-logo.ee3eb86c.svg"},98:function(e,t,a){e.exports=a.p+"static/media/ruby-logo.3ff74ef9.svg"},99:function(e,t,a){e.exports=a.p+"static/media/gnome-logo.73c76a42.svg"}},[[118,1,2]]]); 2//# sourceMappingURL=main.ff9706f7.chunk.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.