1 line
247 KiB
JavaScript
1 line
247 KiB
JavaScript
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[939],{9280:function(e,t,n){var r={"./authors":8712,"./authors.json":8712,"./guides":9552,"./guides.json":9552,"./guides/asymptotic-notation.md":3406,"./guides/avoid-render-blocking-javascript-with-async-defer.md":4109,"./guides/basic-authentication.md":4048,"./guides/big-o-notation.md":4340,"./guides/character-encodings.md":2963,"./guides/ci-cd.md":1123,"./guides/design-patterns-for-humans.md":5298,"./guides/dhcp-in-one-picture.md":8303,"./guides/dns-in-one-picture.md":6210,"./guides/history-of-javascript.md":5263,"./guides/http-caching.md":299,"./guides/journey-to-http2.md":2518,"./guides/jwt-authentication.md":3275,"./guides/levels-of-seniority.md":7824,"./guides/oauth.md":7118,"./guides/project-history.md":319,"./guides/proxy-servers.md":5282,"./guides/random-numbers.md":9177,"./guides/scaling-databases.md":5301,"./guides/session-authentication.md":4403,"./guides/ssl-tls-https-ssh.md":5740,"./guides/sso.md":2303,"./guides/token-authentication.md":5726,"./guides/torrent-client.md":9263,"./guides/unfamiliar-codebase.md":8686,"./guides/upcoming.md":4876,"./guides/what-are-web-vitals.md":9405,"./guides/what-is-internet.md":9069,"./guides/what-is-sli-slo-sla.md":8681,"./guides/why-build-it-and-they-will-come-wont-work-anymore.md":2935,"./pages/about.md":7480,"./pages/privacy.md":2612,"./pages/terms.md":9636,"./roadmaps":1662,"./roadmaps.json":1662,"./roadmaps/100-frontend/content-paths":8359,"./roadmaps/100-frontend/content-paths.json":8359,"./roadmaps/100-frontend/content/100-internet/100-how-does-the-internet-work.md":1080,"./roadmaps/100-frontend/content/100-internet/101-what-is-http.md":3592,"./roadmaps/100-frontend/content/100-internet/102-browsers-and-how-they-work.md":1995,"./roadmaps/100-frontend/content/100-internet/103-dns-and-how-it-works.md":2229,"./roadmaps/100-frontend/content/100-internet/104-what-is-domain-name.md":4898,"./roadmaps/100-frontend/content/100-internet/105-what-is-hosting.md":6747,"./roadmaps/100-frontend/content/100-internet/readme.md":2217,"./roadmaps/100-frontend/content/101-html/100-learn-the-basics.md":1244,"./roadmaps/100-frontend/content/101-html/101-writing-semantic-html.md":8234,"./roadmaps/100-frontend/content/101-html/102-forms-and-validations.md":3392,"./roadmaps/100-frontend/content/101-html/103-conventions-and-best-practices.md":102,"./roadmaps/100-frontend/content/101-html/104-accessibility.md":2053,"./roadmaps/100-frontend/content/101-html/105-seo-basics.md":2783,"./roadmaps/100-frontend/content/101-html/readme.md":6630,"./roadmaps/100-frontend/content/102-css/100-learn-the-basics.md":6729,"./roadmaps/100-frontend/content/102-css/101-making-layouts.md":8371,"./roadmaps/100-frontend/content/102-css/102-responsive-design-and-media-queries.md":9738,"./roadmaps/100-frontend/content/102-css/readme.md":4814,"./roadmaps/100-frontend/content/103-javascript/100-syntax-and-basic-constructs.md":9536,"./roadmaps/100-frontend/content/103-javascript/101-learn-dom-manipulation.md":4964,"./roadmaps/100-frontend/content/103-javascript/102-learn-fetch-api-ajax-xhr.md":7522,"./roadmaps/100-frontend/content/103-javascript/103-es6-and-modular-javascript.md":7919,"./roadmaps/100-frontend/content/103-javascript/104-concepts.md":2132,"./roadmaps/100-frontend/content/103-javascript/readme.md":2009,"./roadmaps/100-frontend/content/104-version-control-systems/100-basic-usage-of-git.md":1343,"./roadmaps/100-frontend/content/104-version-control-systems/readme.md":1688,"./roadmaps/100-frontend/content/105-repo-hosting-services/100-github.md":622,"./roadmaps/100-frontend/content/105-repo-hosting-services/101-gitlab.md":9597,"./roadmaps/100-frontend/content/105-repo-hosting-services/102-bitbucket.md":1752,"./roadmaps/100-frontend/content/105-repo-hosting-services/readme.md":5863,"./roadmaps/100-frontend/content/106-web-security-knowledge/100-https.md":3598,"./roadmaps/100-frontend/content/106-web-security-knowledge/101-content-security-policy.md":1342,"./roadmaps/100-frontend/content/106-web-security-knowledge/102-cors.md":8215,"./roadmaps/100-frontend/content/106-web-security-knowledge/103-owasp-security-risks.md":6432,"./roadmaps/100-frontend/content/106-web-security-knowledge/readme.md":9e3,"./roadmaps/100-frontend/content/107-package-managers/100-npm.md":7897,"./roadmaps/100-frontend/content/107-package-managers/101-yarn.md":6741,"./roadmaps/100-frontend/content/107-package-managers/readme.md":9897,"./roadmaps/100-frontend/content/108-css-architecture/100-bem.md":2002,"./roadmaps/100-frontend/content/108-css-architecture/101-oocss.md":9085,"./roadmaps/100-frontend/content/108-css-architecture/102-smacss.md":6235,"./roadmaps/100-frontend/content/108-css-architecture/readme.md":814,"./roadmaps/100-frontend/content/109-css-preprocessors/100-sass.md":1516,"./roadmaps/100-frontend/content/109-css-preprocessors/101-postcss.md":2238,"./roadmaps/100-frontend/content/109-css-preprocessors/102-less.md":3765,"./roadmaps/100-frontend/content/109-css-preprocessors/readme.md":8241,"./roadmaps/100-frontend/content/110-build-tools/100-task-runners/npm-scripts.md":1166,"./roadmaps/100-frontend/content/110-build-tools/100-task-runners/readme.md":3619,"./roadmaps/100-frontend/content/110-build-tools/101-module-bundlers/esbuild.md":5888,"./roadmaps/100-frontend/content/110-build-tools/101-module-bundlers/parcel.md":3593,"./roadmaps/100-frontend/content/110-build-tools/101-module-bundlers/readme.md":401,"./roadmaps/100-frontend/content/110-build-tools/101-module-bundlers/rollup.md":8107,"./roadmaps/100-frontend/content/110-build-tools/101-module-bundlers/vite.md":7261,"./roadmaps/100-frontend/content/110-build-tools/101-module-bundlers/webpack.md":7537,"./roadmaps/100-frontend/content/110-build-tools/102-linters-formatters/eslint.md":488,"./roadmaps/100-frontend/content/110-build-tools/102-linters-formatters/prettier.md":3518,"./roadmaps/100-frontend/content/110-build-tools/102-linters-formatters/readme.md":3247,"./roadmaps/100-frontend/content/110-build-tools/102-linters-formatters/standardjs.md":2483,"./roadmaps/100-frontend/content/110-build-tools/readme.md":749,"./roadmaps/100-frontend/content/111-pick-a-framework/100-react-js/mobx.md":5703,"./roadmaps/100-frontend/content/111-pick-a-framework/100-react-js/readme.md":355,"./roadmaps/100-frontend/content/111-pick-a-framework/100-react-js/recoil.md":3101,"./roadmaps/100-frontend/content/111-pick-a-framework/100-react-js/redux.md":687,"./roadmaps/100-frontend/content/111-pick-a-framework/101-angular/ngrx.md":6849,"./roadmaps/100-frontend/content/111-pick-a-framework/101-angular/readme.md":9092,"./roadmaps/100-frontend/content/111-pick-a-framework/101-angular/rxjs.md":6230,"./roadmaps/100-frontend/content/111-pick-a-framework/102-vue-js/readme.md":7917,"./roadmaps/100-frontend/content/111-pick-a-framework/102-vue-js/vuex.md":5325,"./roadmaps/100-frontend/content/111-pick-a-framework/readme.md":8111,"./roadmaps/100-frontend/content/112-modern-css/100-styled-components.md":7038,"./roadmaps/100-frontend/content/112-modern-css/101-css-modules.md":6533,"./roadmaps/100-frontend/content/112-modern-css/102-styled-jsx.md":509,"./roadmaps/100-frontend/content/112-modern-css/103-emotion.md":2719,"./roadmaps/100-frontend/content/112-modern-css/readme.md":7576,"./roadmaps/100-frontend/content/113-web-components/100-html-templates.md":5281,"./roadmaps/100-frontend/content/113-web-components/101-custom-elements.md":9013,"./roadmaps/100-frontend/content/113-web-components/102-shadow-dom.md":8696,"./roadmaps/100-frontend/content/113-web-components/readme.md":5689,"./roadmaps/100-frontend/content/114-css-frameworks/114-css-first/bootstrap.md":112,"./roadmaps/100-frontend/content/114-css-frameworks/114-css-first/bulma.md":6792,"./roadmaps/100-frontend/content/114-css-frameworks/114-css-first/readme.md":590,"./roadmaps/100-frontend/content/114-css-frameworks/114-js-first/chakra-ui.md":131,"./roadmaps/100-frontend/content/114-css-frameworks/114-js-first/material-ui.md":815,"./roadmaps/100-frontend/content/114-css-frameworks/114-js-first/radix-ui.md":2779,"./roadmaps/100-frontend/content/114-css-frameworks/114-js-first/readme.md":6121,"./roadmaps/100-frontend/content/114-css-frameworks/114-js-first/tailwind-css.md":5901,"./roadmaps/100-frontend/content/114-css-frameworks/readme.md":4093,"./roadmaps/100-frontend/content/115-testing-your-apps/100-jest.md":3303,"./roadmaps/100-frontend/content/115-testing-your-apps/101-react-testing-library.md":6832,"./roadmaps/100-frontend/content/115-testing-your-apps/102-cypress.md":5505,"./roadmaps/100-frontend/content/115-testing-your-apps/103-enzyme.md":4459,"./roadmaps/100-frontend/content/115-testing-your-apps/104-other-options.md":7814,"./roadmaps/100-frontend/content/115-testing-your-apps/readme.md":2632,"./roadmaps/100-frontend/content/116-type-checkers/100-typescript.md":846,"./roadmaps/100-frontend/content/116-type-checkers/101-flow.md":4835,"./roadmaps/100-frontend/content/116-type-checkers/readme.md":8285,"./roadmaps/100-frontend/content/117-progressive-web-apps/100-apis.md":2552,"./roadmaps/100-frontend/content/117-progressive-web-apps/101-performance.md":8030,"./roadmaps/100-frontend/content/117-progressive-web-apps/readme.md":9759,"./roadmaps/100-frontend/content/118-server-side-rendering/100-react-js/after-js.md":4071,"./roadmaps/100-frontend/content/118-server-side-rendering/100-react-js/next-js.md":5502,"./roadmaps/100-frontend/content/118-server-side-rendering/100-react-js/readme.md":2522,"./roadmaps/100-frontend/content/118-server-side-rendering/101-angular/readme.md":3669,"./roadmaps/100-frontend/content/118-server-side-rendering/101-angular/universal.md":8379,"./roadmaps/100-frontend/content/118-server-side-rendering/102-vue-js/nuxt-js.md":9454,"./roadmaps/100-frontend/content/118-server-side-rendering/102-vue-js/readme.md":2590,"./roadmaps/100-frontend/content/118-server-side-rendering/readme.md":583,"./roadmaps/100-frontend/content/119-graphql/100-apollo.md":1285,"./roadmaps/100-frontend/content/119-graphql/101-relay-modern.md":9135,"./roadmaps/100-frontend/content/119-graphql/readme.md":7175,"./roadmaps/100-frontend/content/120-static-site-generators/100-next-js.md":7505,"./roadmaps/100-frontend/content/120-static-site-generators/101-gatsbyjs.md":3683,"./roadmaps/100-frontend/content/120-static-site-generators/102-nuxt-js.md":4978,"./roadmaps/100-frontend/content/120-static-site-generators/103-vuepress.md":4264,"./roadmaps/100-frontend/content/120-static-site-generators/104-jekyll.md":6975,"./roadmaps/100-frontend/content/120-static-site-generators/105-hugo.md":1280,"./roadmaps/100-frontend/content/120-static-site-generators/106-gridsome.md":648,"./roadmaps/100-frontend/content/120-static-site-generators/107-eleventy.md":3221,"./roadmaps/100-frontend/content/120-static-site-generators/readme.md":6798,"./roadmaps/100-frontend/content/121-mobile-applications/100-react-native.md":368,"./roadmaps/100-frontend/content/121-mobile-applications/101-nativescript.md":5412,"./roadmaps/100-frontend/content/121-mobile-applications/102-flutter.md":9911,"./roadmaps/100-frontend/content/121-mobile-applications/103-ionic.md":342,"./roadmaps/100-frontend/content/121-mobile-applications/readme.md":1483,"./roadmaps/100-frontend/content/122-desktop-applications/100-electron.md":3557,"./roadmaps/100-frontend/content/122-desktop-applications/101-carlo.md":3759,"./roadmaps/100-frontend/content/122-desktop-applications/102-proton-native.md":3752,"./roadmaps/100-frontend/content/122-desktop-applications/readme.md":1027,"./roadmaps/100-frontend/content/123-web-assembly.md":7862,"./roadmaps/100-frontend/content/readme.md":5261,"./roadmaps/100-frontend/meta":9258,"./roadmaps/100-frontend/meta.json":9258,"./roadmaps/100-frontend/resources.md":3158,"./roadmaps/101-backend/meta":6782,"./roadmaps/101-backend/meta.json":6782,"./roadmaps/101-backend/resources.md":1325,"./roadmaps/102-devops/meta":4017,"./roadmaps/102-devops/meta.json":4017,"./roadmaps/102-devops/resources.md":8558,"./roadmaps/103-react/landscape.md":7499,"./roadmaps/103-react/meta":8477,"./roadmaps/103-react/meta.json":8477,"./roadmaps/103-react/resources.md":8274,"./roadmaps/104-angular/landscape.md":892,"./roadmaps/104-angular/meta":8834,"./roadmaps/104-angular/meta.json":8834,"./roadmaps/104-angular/resources.md":2710,"./roadmaps/105-android/landscape.md":8814,"./roadmaps/105-android/meta":9508,"./roadmaps/105-android/meta.json":9508,"./roadmaps/105-android/resources.md":2151,"./roadmaps/106-python/landscape.md":8751,"./roadmaps/106-python/meta":4099,"./roadmaps/106-python/meta.json":4099,"./roadmaps/106-python/resources.md":1894,"./roadmaps/107-golang/landscape.md":3331,"./roadmaps/107-golang/meta":2737,"./roadmaps/107-golang/meta.json":2737,"./roadmaps/107-golang/resources.md":3923,"./roadmaps/108-java/landscape.md":4464,"./roadmaps/108-java/meta":2507,"./roadmaps/108-java/meta.json":2507,"./roadmaps/108-java/resources.md":4764,"./roadmaps/109-postgresql-dba/landscape.md":4592,"./roadmaps/109-postgresql-dba/meta":8951,"./roadmaps/109-postgresql-dba/meta.json":8951,"./roadmaps/109-postgresql-dba/resources.md":165,"./roadmaps/110-aws/landscape.md":2014,"./roadmaps/110-aws/meta":7559,"./roadmaps/110-aws/meta.json":7559,"./roadmaps/110-aws/resources.md":3737,"./roadmaps/111-qa/landscape.md":611,"./roadmaps/111-qa/meta":3204,"./roadmaps/111-qa/meta.json":3204,"./roadmaps/111-qa/resources.md":4541,"./site":8641,"./site.json":8641,"./videos":1797,"./videos.json":1797,"./videos/acid-explained.md":5292,"./videos/all-about-http-caching.md":1568,"./videos/arrays-and-objects-in-javascript.md":8259,"./videos/async-javascript.md":7210,"./videos/big-o-notation.md":3501,"./videos/content-delivery-networks.md":1830,"./videos/dns-explained.md":9970,"./videos/dns-records.md":4997,"./videos/floating-point-arithmetic.md":8813,"./videos/freeze-and-seal-objects-in-javascript.md":6789,"./videos/how-to-use-css-variables.md":9320,"./videos/how-to-use-github-actions.md":7624,"./videos/javascript-fetch-api.md":6634,"./videos/load-balancers-101.md":4121,"./videos/osi-model.md":8635,"./videos/practical-intro-to-react.md":1051,"./videos/promises-in-javascript.md":5491,"./videos/random-number-generators.md":7730,"./videos/scaling-the-unscalable.md":9351,"./videos/ssh-ssl-tls.md":6765,"./videos/system-design-101.md":4322,"./videos/tcp-ip-model.md":2142,"./videos/transport-protocols-tcp-vs-udp.md":2034,"./videos/what-is-cap-theorem.md":6672,"./videos/what-is-dependency-injection.md":1454,"./videos/what-is-dom-shadow-dom-virtual-dom.md":6315,"./videos/what-is-eventual-consistency.md":104,"./videos/yaml-in-depth.md":8734};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=9280},1524:function(e,t,n){"use strict";n.d(t,{m:function(){return a}});var r=n(5893),o=n(8527);n(7294);function a(e){var t=e.title,n=e.subtitle,a=e.children,s=e.beforeTitle,i=void 0===s?null:s;return(0,r.jsxs)(o.xu,{pt:["25px","20px","45px"],pb:["20px","15px","30px"],borderBottomWidth:1,mb:"30px",children:[(0,r.jsxs)(o.W2,{maxW:"container.md",position:"relative",children:[i,(0,r.jsx)(o.X6,{as:"h1",color:"black",fontSize:["28px","33px","40px"],fontWeight:700,mb:["2px","2px","5px"],children:t}),(0,r.jsx)(o.xv,{fontSize:["13px","14px","15px"],children:n})]}),a&&(0,r.jsx)(o.W2,{maxW:"container.md",children:a})]})}},7480:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",null,"What is roadmap.sh?"),(0,r.kt)("p",null,"Roadmap.sh is the place containing community curated roadmaps, study plans, paths and resources for the budding\ndevelopers. It started as a ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://github.com/kamranahmedse/developer-roadmap"}),"set of charts to guide the developers"),"\nwho are confused about what should they learn next but that alone wasn't enough so I expanded it into the website to get\nmore contributors involved."),(0,r.kt)("h2",null,"What are the plans for roadmap.sh?"),(0,r.kt)("p",null,"The website started off as\na ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://github.com/kamranahmedse/developer-roadmap"}),"simple repository containing a few charts")," for developers and\nbased on my personal opinions but it could have been much more than that so I decided to expand it to a website where\npeople can contribute to study plans with their areas of expertise as well, add more roadmaps, write guides etc."),(0,r.kt)("p",null,"We haven't opened up the sign ups for now but we will be doing. My long term plans for this website are to turn it into\na goto place for the developers to seek guidance about their careers, help others, share their journeys, incentivize the\nlearnings, get feedbacks on their projects etc."),(0,r.kt)("h2",null,"How did you build roadmap.sh?"),(0,r.kt)("p",null,"The basic version of the website has been built with ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://github.com/zeit/next.js/"}),"Next.js"),", is opensource and can\nbe found on ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://github.com/kamranahmedse/roadmap.sh"}),"github"),". It was hastily done to get it out in front of the\npeople and get people to start contributing, so it might be rough on the edges, but that is where we need your help."),(0,r.kt)("h2",null,"How does it make money?"),(0,r.kt)("p",null,"It doesn't make any money. I have been using my personal time and budget to build it. I did not create this website with\nany intentions of monetization but as a good will, to help the people get out of the frustration that I was once in."),(0,r.kt)("p",null,"Having said that, I love teaching and my future plans are to be able to work full-time on roadmap.sh for which it has to\nmake enough money to pay for my rent, groceries, bills, travel expenses, etc but even if it doesn't it's likely I'll\ncontinue growing the site however I can. My focus at the moment is not making money from it and just add content that\ncreates value for the people."),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Sponsor the efforts by ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://github.com/sponsors/kamranahmedse"}),"paying as little as 5$ per month")," or with ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://paypal.me/kamranahmedse"}),"one time payment via paypal"),". Alternatively, reach out to me at ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"mailto:kamranahmed.se@gmail.com"}),"kamranahmed.se@gmail.com"),".")),(0,r.kt)("h2",null,"Can I contribute?"),(0,r.kt)("p",null,"You definitely can, infact you are encouraged to do that. Even your minor contributions such as typo fixes count. The\nsource code of the website can be ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://github.com/kamranahmedse/roadmap.sh"}),"found on Github"),". Your contributions can\nbe:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Adding a new roadmap"),(0,r.kt)("li",{parentName:"ul"},"Updating existing roadmap"),(0,r.kt)("li",{parentName:"ul"},"Suggesting changes to the existing roadmaps"),(0,r.kt)("li",{parentName:"ul"},"Writing a Guide"),(0,r.kt)("li",{parentName:"ul"},"Updating an existing guide"),(0,r.kt)("li",{parentName:"ul"},"Fixing grammar mistakes, typos on the website or the content"),(0,r.kt)("li",{parentName:"ul"},"Updating the UI of the website"),(0,r.kt)("li",{parentName:"ul"},"Refactoring the codebase"),(0,r.kt)("li",{parentName:"ul"},"Becoming a sponsor")),(0,r.kt)("p",null,"Just make sure\nto ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://github.com/kamranahmedse/roadmap.sh/tree/master/contributing"}),"follow the contribution guidelines")," when you\ndecide to contribute."),(0,r.kt)("h2",null,"Can I redistribute the content?"),(0,r.kt)("p",null,"No, the license of the content on this website does not allow you to redistribute any of the content on this website\nanywhere. You can use it for personal use or share the link to the content if you have to but redistribution is not\nallowed."),(0,r.kt)("h2",null,"What is the best way to contact you?"),(0,r.kt)("p",null,"Tweet or send me a message ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://twitter.com/kamranahmedse"}),"@kamranahmedse")," or email me\nat ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"mailto:kamranahmed.se@gmail.com"}),"kamranahmed.se@gmail.com"),". I get lots of messages so apologies in advance if you don't hear back\nfrom me soon but I do reply to everyone."))}s.isMDXComponent=!0},2612:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",null,"Privacy Policy"),(0,r.kt)("p",null,"By using or accessing the Services in any manner, you acknowledge that you accept the practices and policies outlined in this Privacy Policy, and you hereby consent that we will collect, use, and share your information in the following ways. Remember that your use of roadmap.sh\u2019s Services is at all times subject to the ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/terms"}),"Terms of Use"),", which incorporates this Privacy Policy. Any terms we use in this Policy without defining them have the definitions given to them in the Terms of Use."),(0,r.kt)("h2",null,"What does this Privacy Policy cover?"),(0,r.kt)("p",null,'This Privacy Policy covers our treatment of personally identifiable information ("Personal Information") that we gather when you are accessing or using our Services, but not to the practices of companies we don\u2019t own or control, or people that we don\u2019t manage. We gather various types of Personal Information from our users, as explained in more detail below, and we use this Personal Information internally in connection with our Services, including to personalize, provide, and improve our services, to allow you to set up a user account and profile, to contact you and allow other users to contact you, to fulfill your requests for certain products and services, and to analyze how you use the Services. In certain cases, we may also share some Personal Information with third parties, but only as described below.'),(0,r.kt)("p",null,"As noted in the Terms of Use, we do not knowingly collect or solicit personal information from anyone under the age of 13. If you are under 13, please do not attempt to register for the Services or send any personal information about yourself to us. If we learn that we have collected personal information from a child under age 13, we will delete that information as quickly as possible. If you believe that a child under 13 may have provided us personal information, please contact us at ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"mailto:kamranahmed.se@gmail.com"}),"kamranahmed.se@gmail.com"),"."),(0,r.kt)("h2",null,"Will roadmap.sh ever change this Privacy Policy?"),(0,r.kt)("p",null,"We\u2019re constantly trying to improve our Services, so we may need to change this Privacy Policy from time to time as well, but we will alert you to changes by updating the services on the website, placing a notice on the Services, by sending you an email, and/or by some other means. Please note that if you\u2019ve opted not to receive legal notice emails from us (or you haven\u2019t provided us with your email address), those legal notices will still govern your use of the Services, and you are still responsible for reading and understanding them. If you use the Services after any changes to the Privacy Policy have been posted, that means you agree to all of the changes. Use of information we collect now is subject to the Privacy Policy in effect at the time such information is used or collected."),(0,r.kt)("h2",null,"What Information does roadmap.sh Collect?"),(0,r.kt)("p",null,"Information You Provide to Us:"),(0,r.kt)("p",null,"We receive and store any information you knowingly provide to us. For example, through the registration process and/or through your account settings, we may collect Personal Information such as your name, title, email address, phone number, and third-party account credentials (for example, your log-in credentials for Twitter or other third party sites. If you provide your third-party account credentials to us or otherwise sign in to the Services through a third party site or service, you understand some content and/or information in those accounts (\u201cThird Party Account Information\u201d) may be transmitted into your account with us if you authorize such transmissions], and that Third Party Account Information transmitted to our Services is covered by this Privacy Policy. Certain information may be required to register with us or to take advantage of some of our features."),(0,r.kt)("p",null,"We may communicate with you if you\u2019ve provided us the means to do so. For example, if you\u2019ve given us your email address, we may send you promotional email offers on behalf of other businesses, or email you about your use of the Services. Also, we may receive a confirmation when you open an email from us. This confirmation helps us make our communications with you more interesting and improve our services. If you do not want to receive communications from us, please email us at ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"mailto:kamranahmed.se@gmail.com"}),"kamranahmed.se@gmail.com"),"."),(0,r.kt)("h2",null,"Information Collected Automatically"),(0,r.kt)("p",null,"Whenever you interact with our Services, we automatically receive and record information on our server logs from your browser or device, which may include your IP address, geolocation data, device identification, \u201ccookie\u201d information, the type of browser and/or device you\u2019re using to access our Services, and the page or feature you requested. \u201cCookies\u201d are identifiers we transfer to your browser or device that allow us to recognize your browser or device and tell us how and when pages and features in our Services are visited and by how many people. You may be able to change the preferences on your browser or device to prevent or limit your device\u2019s acceptance of cookies, but this may prevent you from taking advantage of some of our features. Our advertising partners may also transmit cookies to your browser or device, when you click on ads that appear on the Services. Also if you click on a link to a third party website or service, such third party may also transmit cookies to you. Again, this Privacy Policy does not cover the use of cookies by any third parties, and we aren\u2019t responsible for their privacy policies and practices."),(0,r.kt)("p",null,"When we collect the usage information described above, we only use this data in aggregate form, and not in a manner that would identify you personally. For example, this aggregate data can tell us how often users use a particular feature of the Services, and we can use that knowledge to make the Services interesting to as many users as possible."),(0,r.kt)("h2",null,"Will roadmap.sh Share Any of the Personal Information it Receives?"),(0,r.kt)("p",null,"We may share your Personal Information with third parties as described in this section:"),(0,r.kt)("p",null,"Information that\u2019s no longer personally identifiable. We may anonymize your Personal Information so that you are not individually identified, and provide that information to our partners. We may also provide aggregate usage information to our partners, who may use such information to understand how often and in what ways people use our Services, so that they, too, can provide you with an optimal online experience. However, we never disclose aggregate information to a partner in a manner that would identify you personally, as an individual."),(0,r.kt)("p",null,"Advertisers: We may allow advertisers and/or merchant partners (\u201cAdvertisers\u201d) to choose the demographic information of users who will see their advertisements and/or promotional offers and you agree that we may provide any of the information we have collected from you in non-personally identifiable form to an Advertiser, in order for that Advertiser to select the appropriate audience for those advertisements and/or offers. For example, we might use the fact you are located in San Francisco to show you ads or offers for San Francisco businesses, but we will not tell such businesses who you are. Note that if an advertiser asks us to show an ad to a certain audience or audience segment and you respond to that ad, the advertiser may conclude that you fit the description of the audience they were trying to reach."),(0,r.kt)("p",null,"We may deliver a file to you through the Services (known as a \u201cweb beacon\u201d) from an ad network. Web beacons allow ad networks to provide anonymized, aggregated auditing, research and reporting for us and for advertisers. Web beacons also enable ad networks to serve targeted advertisements to you when you visit other websites. Because your web browser must request these advertisements and web beacons from the ad network\u2019s servers, these companies can view, edit, or set their own cookies, just as if you had requested a web page from their site. You may be able to opt-out of web beacon tracking by adjusting the settings on your browser."),(0,r.kt)("p",null,"Affiliated Businesses: In certain situations, businesses or third party websites we\u2019re affiliated with may sell or provide products or services to you through or in connection with the Services (either alone or jointly with us). You can recognize when an affiliated business is associated with such a transaction or service, and we will share your Personal Information with that affiliated business only to the extent that it is related to such transaction or service. One such service may include the ability for you to automatically transmit Third Party Account Information to your Services profile or to automatically transmit information in your Services profile to your third party account; for example, you may sign into your roadmap.sh account using your Twitter account. We have no control over the policies and practices of third party websites or businesses as to privacy or anything else, so if you choose to take part in any transaction or service relating to an affiliated website or business, please review all such business\u2019 or websites\u2019 policies."),(0,r.kt)("p",null,"Our Agents: We employ other companies and people to perform tasks on our behalf and need to share your information with them to provide products or services to you. Unless we tell you differently, our agents do not have any right to use the Personal Information we share with them beyond what is necessary to assist us."),(0,r.kt)("p",null,"User Profiles and Submissions: Certain user profile information, including your name, location, and any video or image content that such user has uploaded to the Services, may be displayed to other users to facilitate user interaction within the Services or address your request for our services. Please remember that any content you upload to your public user profile, along with any Personal Information or content that you voluntarily disclose online in a manner other users can view (on discussion boards, in messages and chat areas, etc.) becomes publicly available, and can be collected and used by anyone. Your user name may also be displayed to other users if and when you send messages or comments or upload images or videos through the Services and other users can contact you through messages and comments. Additionally, if you sign into the Services through a third party social networking site or service, your list of \u201cfriends\u201d from that site or service may be automatically imported to the Services, and such \u201cfriends,\u201d if they are also registered users of the Services, may be able to access certain non-public information you have entered in your Services user profile. Again, we do not control the policies and practices of any other third party site or service."),(0,r.kt)("p",null,"Business Transfers: We may choose to buy or sell assets. In these types of transactions, customer information is typically one of the business assets that would be transferred. Also, if we (or our assets) are acquired, or if we go out of business, enter bankruptcy, or go through some other change of control, Personal Information could be one of the assets transferred to or acquired by a third party."),(0,r.kt)("p",null,"Protection of roadmap.sh and Others: We reserve the right to access, read, preserve, and disclose any information that we reasonably believe is necessary to comply with law or court order; enforce or apply our terms of use and other agreements; or protect the rights, property, or safety of roadmap.sh, our employees, our users, or others."),(0,r.kt)("h2",null,"Is Personal Information about me secure?"),(0,r.kt)("p",null,"Your account is protected by a password for your privacy and security. If you access your account via a third party site or service, you may have additional or different sign-on protections via that third party site or service. You must prevent unauthorized access to your account and Personal Information by selecting and protecting your password and/or other sign-on mechanism appropriately and limiting access to your computer or device and browser by signing off after you have finished accessing your account. We endeavor to protect the privacy of your account and other Personal Information we hold in our records, but unfortunately, we cannot guarantee complete security. Unauthorized entry or use, hardware or software failure, and other factors, may compromise the security of user information at any time."),(0,r.kt)("h2",null,"What Personal Information can I access?"),(0,r.kt)("p",null,"Through your account settings, you may access, and, in some cases, edit or delete the following information you\u2019ve provided to us:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"first and last name"),(0,r.kt)("li",{parentName:"ul"},"location of residence"),(0,r.kt)("li",{parentName:"ul"},"age or birthday"),(0,r.kt)("li",{parentName:"ul"},"username")),(0,r.kt)("p",null,"The information you can view, update, and delete may change as the Services change. If you have any questions about viewing or updating information we have on file about you, please contact us at ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"mailto:kamranahmed.se@gmail.com"}),"kamranahmed.se@gmail.com"),"."),(0,r.kt)("p",null,"Under California Civil Code Sections 1798.83-1798.84, California residents are entitled to ask us for a notice identifying the categories of Personal Information which we share with our affiliates and/or third parties for marketing purposes, and providing contact information for such affiliates and/or third parties. If you are a California resident and would like a copy of this notice, please submit a written request to: ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"mailto:kamranahmed.se@gmail.com"}),"kamranahmed.se@gmail.com"),"."),(0,r.kt)("h2",null,"What choices do I have?"),(0,r.kt)("p",null,"You can always opt not to disclose information to us, but keep in mind some information may be needed to register with us or to take advantage of some of our features."),(0,r.kt)("p",null,"You may be able to add, update, or delete information as explained above. When you update information, however, we may maintain a copy of the unrevised information in our records. You may request deletion of your account by contacting us at ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"mailto:kamranahmed.se@gmail.com"}),"kamranahmed.se@gmail.com")," and we will disassociate our email address and Twitter account from any content or other information provided to us. Some information may remain in our records after your deletion of such information from your account. We may use any aggregated data derived from or incorporating your Personal Information after you update or delete it, but not in a manner that would identify you personally."),(0,r.kt)("h2",null,"What if I have questions about this policy?"),(0,r.kt)("p",null,"If you have any questions or concerns regarding our privacy policies, please send us a detailed message to ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"mailto:kamranahmed.se@gmail.com"}),"kamranahmed.se@gmail.com"),", and we will try to resolve your concerns."))}s.isMDXComponent=!0},1080:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},3592:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},1995:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},2229:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},4898:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},6747:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},2217:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},1244:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},8234:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},3392:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},102:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},2053:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},2783:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},6630:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},6729:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},8371:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},9738:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},4814:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},9536:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},4964:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},7522:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},7919:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},2132:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},2009:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},1343:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},1688:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},622:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},9597:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},1752:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},5863:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},3598:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},1342:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},8215:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},6432:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},9e3:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},7897:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},6741:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},9897:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},2002:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},9085:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},6235:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},814:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},1516:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},2238:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},3765:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},8241:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},1166:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},3619:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},5888:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},3593:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},401:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},8107:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},7261:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},7537:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},488:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},3518:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},3247:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},2483:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},749:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},5703:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},355:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},3101:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},687:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},6849:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},9092:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},6230:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},7917:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},5325:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},8111:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},7038:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},6533:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},509:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},2719:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},7576:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},5281:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},9013:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},8696:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},5689:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},112:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},6792:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},590:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},131:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},815:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},2779:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},6121:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},5901:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},4093:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},3303:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},6832:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},5505:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},4459:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},7814:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},2632:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},846:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},4835:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},8285:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},2552:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},8030:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},9759:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},4071:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},5502:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},2522:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},3669:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},8379:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},9454:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},2590:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},583:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},1285:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},9135:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},7175:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},7505:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},3683:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},4978:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},4264:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},6975:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},1280:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},648:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},3221:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},6798:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},368:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},5412:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},9911:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},342:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},1483:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},3557:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},3759:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},3752:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},1027:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},7862:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},5261:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}))}s.isMDXComponent=!0},3158:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return l}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a,s=(a="BadgeLink",function(e){return console.warn("Component "+a+" was not imported, exported, or provided by MDXProvider as global scope"),(0,r.kt)("div",Object.assign({},e))}),i={};function l(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},i,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"alert alert-primary",style:{marginBottom:"-10px"}},"This page is incomplete and is being worked upon. Please check back later or ",(0,r.kt)("a",{href:"/signup"},"subscribe")," / ",(0,r.kt)("a",{href:"https://twitter.com/kamranahmedse"},"follow me on twitter")," to get notified. Also, feel free to contribute by suggesting the resources in ",(0,r.kt)("a",{href:"https://github.com/kamranahmedse/developer-roadmap"},"the issues"),"."),(0,r.kt)("h1",null,"Become a Frontend Developer"),(0,r.kt)("p",null,"Before I go ahead and list down the resources, please know that the roadmap and the list below is exhaustive and you don't need to know it all from the get go. For frontend development, all you need to get started with is learn some basic HTML, CSS and JavaScript and start working on projects; everything else you will learn along the way. "),(0,r.kt)("h2",null,"Internet and how it works?"),(0,r.kt)("p",null,"Get the basic understanding of internet, browsers, networks and other relevant knowledge. "),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Read",href:"/guides/what-is-internet",mdxType:"BadgeLink"},"What is Internet?")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Watch",href:"https://www.youtube.com/watch?v=7_LPdttKXPc",mdxType:"BadgeLink"},"How the internet works in 5 minutes")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Read",href:"https://kamranahmed.info/blog/2016/08/13/http-in-depth/",mdxType:"BadgeLink"},"What is HTTP and how it evolved?")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Read",href:"https://blog.cloudflare.com/http3-the-past-present-and-future/",mdxType:"BadgeLink"},"HTTP/3: the past, the present, and the future")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Read",href:"https://kinsta.com/blog/http3/",mdxType:"BadgeLink"},"What Is HTTP/3 \u2013 Lowdown on the Fast New UDP-Based Protocol")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Read",href:"https://www.html5rocks.com/en/tutorials/internals/howbrowserswork/",mdxType:"BadgeLink"},"How Browsers Work: Behind the scenes of modern web browsers")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Watch",href:"https://www.youtube.com/watch?v=Rck3BALhI5c",mdxType:"BadgeLink"},"DNS as Fast As Possible")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Read",href:"https://howdns.works/",mdxType:"BadgeLink"},"How DNS works?")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Read",href:"/guides/dns-in-one-picture",mdxType:"BadgeLink"},"DNS in One Picture"))),(0,r.kt)("h2",null,"Learn HTML"),(0,r.kt)("p",null,"HTML provides the skeleton of a webpage. Learn the basics of HTML; learn the basic tags, learn how to write semantic HTML, understand basic SEO, learn how to divide your pages into sections that will help you style them. "),(0,r.kt)("p",null,"Please know that I have put multiple links for each resource. While you may pick something new while going through each, you don't need to go through all of them - if you feel like you have understood the concepts and are just repeating what you learnt, you may skip the resource and move to exercises section."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Watch",href:"https://www.youtube.com/watch?v=UB1O30fR-EE",mdxType:"BadgeLink"},"HTML Crash Course For Absolute Beginners")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Read",href:"https://www.w3schools.com/html/default.asp",mdxType:"BadgeLink"},"W3Schools \u2013 HTML Tutorial")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Watch",href:"https://www.youtube.com/watch?v=pQN-pnXPaVg",mdxType:"BadgeLink"},"HTML Full Course - Build a Website Tutorial")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Read",href:"https://hacks.mozilla.org/2016/08/a-few-html-tips/",mdxType:"BadgeLink"},"A few HTML tips")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Read",href:"https://hackernoon.com/six-tips-to-set-up-a-better-html-document-ud1033z3z",mdxType:"BadgeLink"},"Six tips to set up a better HTML document")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Read",href:"https://www.w3schools.com/html/html5_semantic_elements.asp",mdxType:"BadgeLink"},"HTML Semantic Elements")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Read",href:"https://developer.mozilla.org/en-US/docs/Web/HTML/Element",mdxType:"BadgeLink"},"HTML elements reference"))),(0,r.kt)("h2",null,"Style your pages with CSS"),(0,r.kt)("p",null,"With the help of HTML, you create structure for your pages. CSS allows you to style your pages and make them pretty. If you take the analogy of human body, the skeleton would be the HTML, skin would be the CSS and muscles that help us move would be JavaScript - we will learn more about JavaScript in the coming sections."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Read",href:"https://www.w3schools.com/css/",mdxType:"BadgeLink"},"W3Schools \u2013 CSS Tutorial")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Watch",href:"https://www.youtube.com/watch?v=yfoY53QXEnI",mdxType:"BadgeLink"},"CSS Crash Course For Absolute Beginners")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Watch",href:"https://www.youtube.com/watch?v=Wm6CUkswsNw",mdxType:"BadgeLink"},"Build An HTML5 Website With A Responsive Layout")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Watch",href:"https://youtu.be/JJSoEo8JSnc?t=46",mdxType:"BadgeLink"},"Flexbox CSS In 20 Minutes"))),(0,r.kt)("h2",null,"Basics of JavaScript"),(0,r.kt)("p",null,"JavaScript allows you to add interactivity to your pages. Common examples that you may have seen on the websites are sliders, click interactions, popups and so on. In this section, you will learn the basics of JavaScript."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Read",href:"https://www.w3schools.com/js/",mdxType:"BadgeLink"},"W3Schools \u2013 JavaScript Tutorial")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Watch",href:"https://youtu.be/hdI2bqOjy3c?t=2",mdxType:"BadgeLink"},"JavaScript Crash Course for Beginners")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Watch",href:"https://youtu.be/P7t13SGytRk?t=22",mdxType:"BadgeLink"},"Build a Netflix Landing Page Clone with HTML, CSS & JS"))),(0,r.kt)("h2",null,"Version Control Systems and Git"),(0,r.kt)("p",null,"Version control systems allow you to track changes to your codebase/files over time. They allow you to go back to some previous version of the codebase without any issues. Also, they help in collaborating with people working on the same code \u2013 if you\u2019ve ever collaborated with other people on a project, you might already know the frustration of copying and merging the changes from someone else into your codebase; version control systems allow you to get rid of this issue."),(0,r.kt)("p",null,"In this section, you will learn what version control systems are and understand how to use Git which is the de facto VCS. "),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Watch",href:"https://www.youtube.com/watch?v=zbKdDsNNOhg",mdxType:"BadgeLink"},"Version Control System Introduction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Watch",href:"https://www.youtube.com/watch?v=SWYqp7iY_Tc",mdxType:"BadgeLink"},"Git & GitHub Crash Course For Beginners")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Watch",href:"https://youtu.be/Y9XZQO1n_7c?t=21",mdxType:"BadgeLink"},"Learn Git in 20 Minutes"))),(0,r.kt)("p",null,"Now that you know what git is go ahead and create an account on ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://github.com"}),"GitHub")," and push everything that you do from now on to GitHub so that you can get the practice and get it reviewed from the other people in the community."),(0,r.kt)("h2",null,"Modern JavaScript"),(0,r.kt)("p",null,'In this section you will learn how to use package managers and get started with the "modern JavaScript".'),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Read",href:"https://medium.com/the-node-js-collection/modern-javascript-explained-for-dinosaurs-f695e9747b70",mdxType:"BadgeLink"},"Modern JavaScript for Dinosaurs (Don't worry if you don't understand some parts of it)")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Watch",href:"https://www.youtube.com/watch?v=8Rmj5UY5mJk",mdxType:"BadgeLink"},"What is NPM and how to use it")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)(s,{badgeText:"Watch",href:"https://www.youtube.com/watch?v=jHDhaSSKmB0",mdxType:"BadgeLink"},"NPM Crash Course"))),(0,r.kt)("br",null),(0,r.kt)("br",null),(0,r.kt)("br",null),(0,r.kt)("br",null),(0,r.kt)("br",null),(0,r.kt)("br",null))}l.isMDXComponent=!0},1325:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},(0,r.kt)("strong",{parentName:"p"},"We are still preparing the resources"),". Please check back later or ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"subscribe to get notified"),".")),(0,r.kt)("p",null,"While we prepare the list, follow this simple advice to learn anything"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Just ",(0,r.kt)("strong",{parentName:"p"},"pick a project and start working on it"),", you will learn all that you need along the way.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u2192")," ","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps"}),"All Roadmaps")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/guides"}),"Programming guides")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"Subscribe")))}s.isMDXComponent=!0},8558:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},(0,r.kt)("strong",{parentName:"p"},"We are still preparing the resources"),". Please check back later or ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"subscribe to get notified"),".")),(0,r.kt)("p",null,"While we prepare the list, follow this simple advice to learn anything"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Just ",(0,r.kt)("strong",{parentName:"p"},"pick a project and start working on it"),", you will learn all that you need along the way.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u2192")," ","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps"}),"All Roadmaps")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/guides"}),"Programming guides")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"Subscribe")))}s.isMDXComponent=!0},7499:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The intent of this guide is to give you an idea about the React ecosystem and to help guide your learning if you are confused. We have another ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/frontend"}),"roadmap on the Frontend Development")," that focuses on the frontend development if you are interested in that."),(0,r.kt)("p",null,"Also, please note that the list below is exhaustive, and the items are listed in no particular order. You don't need to learn everything listed in the picture, however knowing what you don't know is as important as knowing things."),(0,r.kt)("p",null,(0,r.kt)("img",Object.assign({parentName:"p"},{src:"/roadmaps/react.png",alt:null}))),(0,r.kt)("p",null,"Please note that the list is opinionated, and you might have different opinions than those of the author. Having said that, ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://github.com/kamranahmedse/roadmap.sh/issues/new"}),"we would love to hear your opinions")," and incorporate them in the picture if suitable."))}s.isMDXComponent=!0},8274:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},(0,r.kt)("strong",{parentName:"p"},"We are still preparing the resources"),". Please check back later or ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"subscribe to get notified"),".")),(0,r.kt)("p",null,"While we prepare the list, follow this simple advice to learn anything"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Just ",(0,r.kt)("strong",{parentName:"p"},"pick a project and start working on it"),", you will learn all that you need along the way.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u2192")," ","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps"}),"All Roadmaps")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/guides"}),"Programming guides")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"Subscribe")))}s.isMDXComponent=!0},892:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The intent of this guide is to give you an idea about the Angular ecosystem and to help guide your learning if you are confused. We have another ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/frontend"}),"roadmap on the Frontend Development")," that focuses on the frontend development if you are interested in that."),(0,r.kt)("p",null,"Also, please note that the list below is exhaustive, and the items are listed in no particular order. You don't need to learn everything listed in the picture, however knowing what you don't know is as important as knowing things."),(0,r.kt)("p",null,(0,r.kt)("img",Object.assign({parentName:"p"},{src:"/roadmaps/angular.png",alt:null}))),(0,r.kt)("p",null,"Please note that the list is opinionated, and you might have different opinions than those of the author. Having said that, ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://github.com/kamranahmedse/roadmap.sh/issues/new"}),"we would love to hear your opinions")," and incorporate them in the picture if suitable."))}s.isMDXComponent=!0},2710:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},(0,r.kt)("strong",{parentName:"p"},"We are still preparing the resources"),". Please check back later or ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"subscribe to get notified"),".")),(0,r.kt)("p",null,"While we prepare the list, follow this simple advice to learn anything"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Just ",(0,r.kt)("strong",{parentName:"p"},"pick a project and start working on it"),", you will learn all that you need along the way.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u2192")," ","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps"}),"All Roadmaps")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/guides"}),"Programming guides")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"Subscribe")))}s.isMDXComponent=!0},8814:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The intent of this guide is to give you an idea about the Android development landscape and to help guide your learning if you are confused. Before we start, please note that the roadmap is opinionated, and you might have different opinions than those of the author. Having said that, ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://github.com/kamranahmedse/roadmap.sh/issues/new"}),"we would love to hear your opinions")," and incorporate them in the roadmap if suitable."),(0,r.kt)("p",null,"There are multiple ways to develop applications for the android; you can go down the path of hybrid application development where ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://flutter.dev/"}),"flutter"),", ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://reactnative.dev/"}),"react-native"),", or ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://www.nativescript.org/"}),"NativeScript")," are the most common contenders. Flutter uses Dart, whereas React Native and Native Script rely on JavaScript. Answering the question of hybrid vs native is out of the scope of this roadmap. This roadmap is focused on the native Android apps development but if you are interested in learning any hybrid framework, my personal preference is ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://reactnative.dev"}),"react-native")," and I would recommend you to checkout the ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/frontend"}),"Frontend Developer Roadmap"),"."),(0,r.kt)("h2",null,"Complete Roadmap"),(0,r.kt)("p",null,"Here is the full version of the roadmap in a single image and after that we have the broken down version with the resources and links to learn more about each of the boxes."),(0,r.kt)("p",null,(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps/android/roadmap.png"}),(0,r.kt)("img",Object.assign({parentName:"a"},{src:"/roadmaps/android/roadmap.svg",alt:null})))),(0,r.kt)("h2",null,"Broken Down Version"),(0,r.kt)("p",null,"Below is the broken down version of the roadmap with links and resources to learn more about each of the items listed in the complete roadmap above."),(0,r.kt)("h2",null,"Pick a Language"),(0,r.kt)("p",null,"For the languages, you can develop android apps either by using Kotlin or Java."),(0,r.kt)("p",null,(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps/android/pick-language.svg"}),(0,r.kt)("img",Object.assign({parentName:"a"},{src:"/roadmaps/android/pick-language.svg",alt:null})))),(0,r.kt)("p",null,"Although, you can use both ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://en.wikipedia.org/wiki/Kotlin_(programming_language)"}),"Kotlin")," and ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://en.wikipedia.org/wiki/Java_(programming_language)"}),"Java")," to develop native android apps, ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://android-developers.googleblog.com/2019/05/google-io-2019-empowering-developers-to-build-experiences-on-Android-Play.html"}),"Google announced in 2019")," to make Kotlin the preferred way of developing android applications. If you were to start learning android development today, Kotlin should be your language of choice."),(0,r.kt)("h2",null,"The Fundamentals"),(0,r.kt)("p",null,"Install the ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://developer.android.com/studio"}),"Android Studio")," and learn the basics of Kotlin to get started. "),(0,r.kt)("p",null,(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps/android/the-fundamentals.png"}),(0,r.kt)("img",Object.assign({parentName:"a"},{src:"/roadmaps/android/the-fundamentals.png",alt:null})))),(0,r.kt)("p",null,"We have also listed down some free resources which you can use for the items listed in the image above. If you have some better ones, please do suggest. Also, you don't need to go through all of them, just go through them and pick what you like."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://blog.teamtreehouse.com/absolute-beginners-guide-kotlin"}),"Learn the basics of Kotlin")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://kotlinlang.org/docs/reference/basic-syntax.html"}),"Kotlin Docs")," and ",(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://kotlinlang.org/docs/tutorials/"}),"Official Kotlin Tutorials")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.studytonight.com/data-structures/introduction-to-data-structures"}),"Data Structures and Algorithms"),". Also ",(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.tutorialspoint.com/data_structures_algorithms/index.htm"}),"check this"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://kotlinlang.org/docs/reference/collections-overview.html"}),"Kotlin DataStructures")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://github.com/bmaslakov/kotlin-algorithm-club"}),"Algorithms and DataStructures in Kotlin"))),(0,r.kt)("h2",null,"Version Control Systems"),(0,r.kt)("p",null,"Version control systems record your changes to the codebase and allow you to recall specific versions later. There are multiple Version Control Systems available but ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://git-scm.com/"}),"Git")," is the most common one these days."),(0,r.kt)("p",null,(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps/android/git-github.png"}),(0,r.kt)("img",Object.assign({parentName:"a"},{src:"/roadmaps/android/git-github.png",alt:null})))),(0,r.kt)("p",null,"Here are some of the resources to get you started. Feel free to google and find something else that you find easier."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.udacity.com/course/version-control-with-git--ud123"}),"Udacity \u2014 Version Control with Git")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://guides.github.com/activities/hello-world/"}),"GitHub Hello World"))),(0,r.kt)("h2",null,"Building an Application"),(0,r.kt)("p",null,"Here is the list of items that you are going to need when developing Android applications. Please note that, this is an exhaustive list, and you don't need to know it all from the get-go. Get an idea of the items listed, and just start building some apps and keep the items listed in the back of your mind and have a deep dive when using them. "),(0,r.kt)("p",null,(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps/android/build-an-application.png"}),(0,r.kt)("img",Object.assign({parentName:"a"},{src:"/roadmaps/android/build-an-application.png",alt:null})))),(0,r.kt)("p",null,"To learn more about the items listed in the image above, here are the links to the relevant docs"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://developer.android.com/guide/components/activities/intro-activities"}),"Using Activities and Activity Life Cycles")),(0,r.kt)("li",{parentName:"ul"},"Building Flexible Interfaces using ",(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://developer.android.com/guide/components/fragments"}),"Fragments")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://developer.android.com/studio/debug"}),"Debugging using Android Studio Debugger")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://developer.android.com/work/managed-configurations"}),"Handling App Configurations")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://developer.android.com/guide/components/intents-filters"}),"Using Intents and Intent Filters")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://guides.codepath.com/android/Using-Context"}),"Understand Context")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://developer.android.com/training/multiple-threads"}),"Learn about Multithreading")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.raywenderlich.com/6901838-data-privacy-for-android"}),"Data Privacy")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.raywenderlich.com/5634-securing-network-data-tutorial-for-android"}),"Securing Network Data")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://developer.android.com/training/dependency-injection"}),"Dependency Injection")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://developer.android.com/guide/topics/providers/content-providers"}),"Content Providers")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://github.com/bumptech/glide"}),"Glide"),", ",(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://square.github.io/retrofit/"}),"Retrofit"),", ",(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://firebase.google.com/docs/crashlytics/get-started"}),"Crashlytics"),", ",(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://github.com/google/gson"}),"GSON")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://developer.android.com/topic/libraries/architecture/room"}),"Room"),", ",(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://developer.android.com/guide/navigation/navigation-getting-started"}),"Navigation"),", ",(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://developer.android.com/topic/libraries/architecture/workmanager"}),"Work Manager"),", ",(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://developer.android.com/topic/libraries/architecture/livedata"}),"LiveData"),", ",(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://developer.android.com/topic/libraries/data-binding"}),"Data Binding")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://github.com/ReactiveX/RxJava"}),"RxJava"),", ",(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://github.com/ReactiveX/RxKotlin"}),"RxKotlin")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://developer.android.com/topic/performance/memory-overview"}),"Memory Management Overview")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://proandroiddev.com/diving-deeper-into-context-oriented-programming-in-kotlin-3ecb4ec38814"}),"Diving deeper into context-oriented programming in Kotlin")," ")),(0,r.kt)("p",null,"I would highly recommend watching ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://www.udacity.com/course/developing-android-apps-with-kotlin--ud9012"}),"this free course")," from google on Developing Android Apps with Kotlin. Also, here are some of the resources to learn more about the topics listed above."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.udacity.com/course/developing-android-apps-with-kotlin--ud9012"}),"Developing Android Apps with Kotlin")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://developer.android.com/guide"}),"Android Developer Guides")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.raywenderlich.com"}),"Raywenderlich"))),(0,r.kt)("h2",null,"Wrap Up"),(0,r.kt)("p",null,"That wraps it up for the android developer roadmap. Again, remember to not be exhausted by the list; just learn the basics and start working on some project, rest of the learnings will come along the way. Good luck!"),(0,r.kt)("p",null,"For any suggestions, improvements and feedback, feel free to ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://github.com/kamranahmedse/roadmap.sh"}),"submit an issue")," or reach out to me on twitter ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"https://twitter.com/kamranahmedse"}),"@kamranahmedse"),"."),(0,r.kt)("br",null),(0,r.kt)("br",null),(0,r.kt)("br",null))}s.isMDXComponent=!0},2151:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},(0,r.kt)("strong",{parentName:"p"},"We are still preparing the resources"),". Please check back later or ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"subscribe to get notified"),".")),(0,r.kt)("p",null,"While we prepare the list, follow this simple advice to learn anything"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Just ",(0,r.kt)("strong",{parentName:"p"},"pick a project and start working on it"),", you will learn all that you need along the way.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u2192")," ","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps"}),"All Roadmaps")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/guides"}),"Programming guides")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"Subscribe")))}s.isMDXComponent=!0},8751:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The intent of this guide is to give you an idea about the Python ecosystem and to help guide your learning if you are confused. We have another roadmap on the ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/backend"}),"Backend Development")," that focuses on the backend development if you are interested in that."),(0,r.kt)("p",null,"Also, please note that the list below is exhaustive, and the items are listed in no particular order. You don't need to learn everything listed in the picture, however knowing what you don't know is as important as knowing things."),(0,r.kt)("p",null,(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps/python.png"}),(0,r.kt)("img",Object.assign({parentName:"a"},{src:"/roadmaps/python.png",alt:null})))))}s.isMDXComponent=!0},1894:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},(0,r.kt)("strong",{parentName:"p"},"We are still preparing the resources"),". Please check back later or ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"subscribe to get notified"),".")),(0,r.kt)("p",null,"While we prepare the list, follow this simple advice to learn anything"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Just ",(0,r.kt)("strong",{parentName:"p"},"pick a project and start working on it"),", you will learn all that you need along the way.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u2192")," ","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps"}),"All Roadmaps")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/guides"}),"Programming guides")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"Subscribe")))}s.isMDXComponent=!0},3331:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The intent of this guide is to give you an idea about the Go ecosystem and to help guide your learning if you are confused. We have another roadmap on the ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/backend"}),"Backend Development")," that focuses on the backend development if you are interested in that."),(0,r.kt)("p",null,"Also, please note that the list below is exhaustive, and the items are listed in no particular order. You don't need to learn everything listed in the picture, however knowing what you don't know is as important as knowing things."),(0,r.kt)("p",null,(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps/golang.png"}),(0,r.kt)("img",Object.assign({parentName:"a"},{src:"/roadmaps/golang.png",alt:null})))))}s.isMDXComponent=!0},3923:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},(0,r.kt)("strong",{parentName:"p"},"We are still preparing the resources"),". Please check back later or ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"subscribe to get notified"),".")),(0,r.kt)("p",null,"While we prepare the list, follow this simple advice to learn anything"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Just ",(0,r.kt)("strong",{parentName:"p"},"pick a project and start working on it"),", you will learn all that you need along the way.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u2192")," ","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps"}),"All Roadmaps")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/guides"}),"Programming guides")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"Subscribe")))}s.isMDXComponent=!0},4464:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The intent of this guide is to give you an idea about the Java ecosystem and to help guide your learning if you are confused. We have another roadmap on the ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/backend"}),"Backend Development")," that focuses on the backend development if you are interested in that."),(0,r.kt)("p",null,"Also, please note that the list below is exhaustive, and the items are listed in no particular order. You don't need to learn everything listed in the picture, however knowing what you don't know is as important as knowing things."),(0,r.kt)("p",null,(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps/java.png"}),(0,r.kt)("img",Object.assign({parentName:"a"},{src:"/roadmaps/java.png",alt:null})))))}s.isMDXComponent=!0},4764:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},(0,r.kt)("strong",{parentName:"p"},"We are still preparing the resources"),". Please check back later or ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"subscribe to get notified"),".")),(0,r.kt)("p",null,"While we prepare the list, follow this simple advice to learn anything"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Just ",(0,r.kt)("strong",{parentName:"p"},"pick a project and start working on it"),", you will learn all that you need along the way.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u2192")," ","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps"}),"All Roadmaps")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/guides"}),"Programming guides")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"Subscribe")))}s.isMDXComponent=!0},4592:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The intent of this guide is to give you an idea about the DBA landscape and to help guide your learning if you are confused. The roadmap is highly opinionated \u2014 neither, knowing everything listed in the roadmap, nor the order of items given in the roadmap is required to be followed in order to be a DBA."),(0,r.kt)("h2",null,"Learn basic RDBMS terms and concepts"),(0,r.kt)("p",null,"Get basic understanding of Postgres key terms and basic RDBMS concepts."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Object model"),": data types, columns, rows, tables, schemas, databases, queries."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Relational model"),": domains, attributes, tuples, relations, constraints, NULL."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Databases high-level concepts"),": ACID, MVCC, transactions, write-ahead log, query processing."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Links"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.postgresql.org/docs/13/glossary.html"}),"Postgres Glossary")," "),(0,r.kt)("li",{parentName:"ul"},"SQL and Relational Theory - Christopher J. Date, 2009"),(0,r.kt)("li",{parentName:"ul"},"Database Design and Relational Theory - Christopher J. Date, 2012")))),(0,r.kt)("h2",null,"Learn how to install and run PostgreSQL"),(0,r.kt)("p",null,"Get practical skills of how to set up and run Postgres to get a working environment for further learning."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Using package managers (APT, YUM, etc.)"),(0,r.kt)("li",{parentName:"ul"},"Using ",(0,r.kt)("inlineCode",{parentName:"li"},"docker"),"."),(0,r.kt)("li",{parentName:"ul"},"Managing Postgres service using ",(0,r.kt)("inlineCode",{parentName:"li"},"systemd")," (start, stop, restart, reload)."),(0,r.kt)("li",{parentName:"ul"},"Managing Postgres service using ",(0,r.kt)("inlineCode",{parentName:"li"},"pg_ctl"),", or OS-specific tools (like ",(0,r.kt)("inlineCode",{parentName:"li"},"pg_ctlcluster"),")."),(0,r.kt)("li",{parentName:"ul"},"Connect to Postgres using ",(0,r.kt)("inlineCode",{parentName:"li"},"psql"),"."),(0,r.kt)("li",{parentName:"ul"},"Deploy database service in cloud environment (AWS, GCE, Azure, Heroku, DigitalOcean, etc...)."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Links"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.postgresql.org/download/"}),"Official download and install instructions")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://hub.docker.com/_/postgres"}),"Official Docker images")," ")))),(0,r.kt)("h2",null,"Learn SQL concepts"),(0,r.kt)("p",null,"Get practical skills of how to create and manipulate database objects and how to execute queries using ",(0,r.kt)("inlineCode",{parentName:"p"},"psql")," client."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Understand basic data types."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"DML queries"),": querying data, modifying data, filtering data, joining tables.",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Advanced topics"),": transactions, CTE, subqueries, lateral join, grouping, set operations."))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"DDL queries"),": managing tables and schemas (create, alter, drop)."),(0,r.kt)("li",{parentName:"ul"},"Import and export data using ",(0,r.kt)("inlineCode",{parentName:"li"},"COPY"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Links"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.db-fiddle.com/"}),"DB Fiddle")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.postgresqltutorial.com/"}),"PostgreSQL Tutorial")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.postgresql.org/docs/current/tutorial-sql.html"}),"PostgreSQL SQL Getting Started")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.postgresql.org/docs/current/sql.html"}),"The SQL Language"))))),(0,r.kt)("h2",null,"Learn how to configure Postgres"),(0,r.kt)("p",null,"Get understanding of the main aspects of how Postgres could be configured. Deep understanding of Postgres internals is not yet necessary here."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"postgresql.conf:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Resources usage"),(0,r.kt)("li",{parentName:"ul"},"Write-ahead Log"),(0,r.kt)("li",{parentName:"ul"},"Checkpoints and Background Writer"),(0,r.kt)("li",{parentName:"ul"},"Cost-based vacuum and auto-vacuum"),(0,r.kt)("li",{parentName:"ul"},"Replication"),(0,r.kt)("li",{parentName:"ul"},"Query planner"),(0,r.kt)("li",{parentName:"ul"},"Reporting, logging and statistics"),(0,r.kt)("li",{parentName:"ul"},"Adding extra extensions"),(0,r.kt)("li",{parentName:"ul"},"...keep exploring other configuration options"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Links"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"http://postgresqlco.nf/"}),"Postgresqlco.nf")," ")))),(0,r.kt)("h2",null,"Learn Postgres security concepts"),(0,r.kt)("p",null,"Get understanding about basic security concepts and common ways of how to deploy secure configurations."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Authentication models, roles, pg_hba.conf, SSL settings."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Objects privileges"),": grant/revoke, default privileges."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Advanced topics")," - row-level security, selinux."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Links"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.postgresql.org/docs/current/client-authentication.html"}),"Client authentication")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.postgresql.org/docs/current/user-manag.html"}),"Roles and users managements"))))),(0,r.kt)("h2",null,"Develop infrastructure DBA skills"),(0,r.kt)("p",null,"Get practical skills of how to deploy, extend, maintain and support Postgres installations and 3rd-party Postgres ecosystem software."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Replication"),": streaming replication, logical replication"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Backup/recovery tools"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Built-in: ",(0,r.kt)("inlineCode",{parentName:"li"},"pg_dump"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"pg_dumpall"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"pg_restore"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"pg_basebackup")),(0,r.kt)("li",{parentName:"ul"},"3rd-party: ",(0,r.kt)("inlineCode",{parentName:"li"},"barman"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"pgbackrest"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"pg_probackup"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"WAL-G")),(0,r.kt)("li",{parentName:"ul"},"Backup validation procedures"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Upgrading procedures"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Minor and major upgrades using ",(0,r.kt)("inlineCode",{parentName:"li"},"pg_upgrade")),(0,r.kt)("li",{parentName:"ul"},"Upgrades using logical replication"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Connection pooling"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Pgbouncer")),(0,r.kt)("li",{parentName:"ul"},"Alternatives: ",(0,r.kt)("inlineCode",{parentName:"li"},"Pgpool-II"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"Odyssey"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"Pgagroal")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Infrastructure monitoring"),": ",(0,r.kt)("inlineCode",{parentName:"li"},"Prometheus"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"Zabbix"),", other favourite monitoring solution"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"High availability and cluster management tools"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Patroni")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Alternatives"),": ",(0,r.kt)("inlineCode",{parentName:"li"},"Repmgr"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"Stolon"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"pg_auto_failover"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"PAF")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Applications Load Balancing and Service Discovery"),": ",(0,r.kt)("inlineCode",{parentName:"li"},"Haproxy"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"Keepalived"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"Consul"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"Etcd")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Deploy Postgres on ",(0,r.kt)("inlineCode",{parentName:"strong"},"Kubernetes")),": Simple ",(0,r.kt)("inlineCode",{parentName:"li"},"StatefulSet")," setup, ",(0,r.kt)("inlineCode",{parentName:"li"},"HELM"),", operators"),(0,r.kt)("li",{parentName:"ul"},"Resource usage and provisioning, capacity planning")),(0,r.kt)("h2",null,"Learn how to automate routines"),(0,r.kt)("p",null,"Get practical skills, learn automation tools and automate existing routine tasks."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Automation using shell scripts or any other favourite language (",(0,r.kt)("inlineCode",{parentName:"li"},"Bash"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"Python"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"Perl"),", etc)"),(0,r.kt)("li",{parentName:"ul"},"Configuration management: ",(0,r.kt)("inlineCode",{parentName:"li"},"Ansible"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"Salt"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"Chef"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"Puppet"))),(0,r.kt)("h2",null,"Develop application DBA skills"),(0,r.kt)("p",null,"Learn theory and get practical skills of how applications should work with Postgres"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Migrations"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"practical patterns and antipatterns"),(0,r.kt)("li",{parentName:"ul"},"tools: ",(0,r.kt)("inlineCode",{parentName:"li"},"liquibase"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"sqitch"),", language-specific tools"))),(0,r.kt)("li",{parentName:"ul"},"Data import/export, bulk loading and processing"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Queues"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"practical patterns and anti-patterns"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Skytools PGQ")))),(0,r.kt)("li",{parentName:"ul"},"Data partitioning and sharding patterns."),(0,r.kt)("li",{parentName:"ul"},"Database normalization and normal forms."),(0,r.kt)("li",{parentName:"ul"},"Books:",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"The Art of PostgreSQL - Dimitri Fontaine, 2020")))),(0,r.kt)("h2",null,"Learn Postgres advanced topics"),(0,r.kt)("p",null,"Here is important to continuously extend and develop existing knowledge about Postgres."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Low level internals"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Processes and memory architecture"),(0,r.kt)("li",{parentName:"ul"},"Vacuum processing"),(0,r.kt)("li",{parentName:"ul"},"Buffer management"),(0,r.kt)("li",{parentName:"ul"},"Lock management"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.postgresql.org/docs/current/storage.html"}),"Physical storage and file layout")," "),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.postgresql.org/docs/current/catalogs.html"}),"System catalog")," "))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Fine-grained tuning"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"Per-user, per-database settings"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.postgresql.org/docs/current/sql-createtable.html#SQL-CREATETABLE-STORAGE-PARAMETERS"}),"Storage parameters")," "),(0,r.kt)("li",{parentName:"ul"},"Workload-dependant tuning: OLTP, OLAP, HTAP"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Advanced SQL topics"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"PL/pgSQL, procedures and functions, triggers"),(0,r.kt)("li",{parentName:"ul"},"Aggregate and window functions"),(0,r.kt)("li",{parentName:"ul"},"Recursive CTE"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Links"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"http://www.interdb.jp/pg/index.html"}),"The Internals of PostgreSQL")," for database administrators and system developers"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.postgresql.org/docs/current/plpgsql.html"}),"PL/pgSQL Guide"))))),(0,r.kt)("h2",null,"Learn Postgres troubleshooting techniques"),(0,r.kt)("p",null,"Get basic understanding about troubleshooting tools and get practical skills of how to detect and resolve problems."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Operating system tools"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"top")," (",(0,r.kt)("inlineCode",{parentName:"li"},"htop"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"atop"),")"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"sysstat")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"iotop")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Postgres system views"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"pg_stat_activity")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"pg_stat_statements")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Postgres tools"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"pgcenter")," - ",(0,r.kt)("em",{parentName:"li"},"personal recommendation")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Query analyzing"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.postgresql.org/docs/current/sql-explain.html"}),"EXPLAIN")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://explain.depesz.com/"}),"Depesz")," online EXPLAIN visualization tool"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://tatiyants.com/pev/#/plans"}),"PEV")," online EXPLAIN visualization tool"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://explain.tensor.ru/"}),"Tensor")," online EXPLAIN visualization tool, RU language only"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Log analyzing"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"pgBadger")),(0,r.kt)("li",{parentName:"ul"},"Ad-hoc analyzing using ",(0,r.kt)("inlineCode",{parentName:"li"},"grep"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"awk"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"sed"),", etc."))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"External tracing/profiling tools"),": ",(0,r.kt)("inlineCode",{parentName:"li"},"gdb"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"strace"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"perf-tools"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"ebpf"),", core dumps"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Troubleshooting methods"),": USE, RED, Golden signals"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Links"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"http://www.brendangregg.com/linuxperf.html"}),"Linux Performance")," by Brendan Gregg"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"http://www.brendangregg.com/usemethod.html"}),"USE Method"))))),(0,r.kt)("h2",null,"Learn SQL optimization technics"),(0,r.kt)("p",null,"Get understanding and practical skills of how to optimize SQL queries."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Indexes, and their use cases"),": B-tree, Hash, GiST, SP-GiST, GIN, BRIN"),(0,r.kt)("li",{parentName:"ul"},"SQL queries patterns and anti-patterns"),(0,r.kt)("li",{parentName:"ul"},"SQL schema design patterns and anti-patterns"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Links"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://use-the-index-luke.com/"}),"Use the Index, Luke")," - a Guide to Database Performance for Developers"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Books"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"SQL Antipatterns: Avoiding the Pitfalls of Database Programming - Bill Karwin, 2010 ")))),(0,r.kt)("h2",null,"Develop architect skills"),(0,r.kt)("p",null,"Get deeper understanding of Postgres use cases and where Postgres is suitable and where is not."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Postgres forks and extensions"),": ",(0,r.kt)("inlineCode",{parentName:"li"},"Greenplum"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"Timescaledb"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"Citus"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"Postgres-XL"),", etc."),(0,r.kt)("li",{parentName:"ul"},"RDBMS in general, benefits and limitations"),(0,r.kt)("li",{parentName:"ul"},"Differences between Postgres and other RDBMS and NoSQL databases")),(0,r.kt)("h2",null,"Develop Postgres hacker skills"),(0,r.kt)("p",null,"Get involved to Postgres community and contribute to Postgres; be a useful member of Postgres, and the open source community; use personal experience to help other people."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Daily reading and answering in ",(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://www.postgresql.org/list/"}),"mailing lists"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"pgsql-general"),(0,r.kt)("li",{parentName:"ul"},"pgsql-admin"),(0,r.kt)("li",{parentName:"ul"},"pgsql-performance"),(0,r.kt)("li",{parentName:"ul"},"pgsql-hackers"),(0,r.kt)("li",{parentName:"ul"},"pgsql-bugs"))),(0,r.kt)("li",{parentName:"ul"},"Reviewing patches"),(0,r.kt)("li",{parentName:"ul"},"Writing patches, attending in ",(0,r.kt)("a",Object.assign({parentName:"li"},{href:"https://commitfest.postgresql.org/"}),"Commitfests"))),(0,r.kt)("br",null),(0,r.kt)("br",null),(0,r.kt)("br",null))}s.isMDXComponent=!0},165:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},(0,r.kt)("strong",{parentName:"p"},"We are still preparing the resources"),". Please check back later or ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"subscribe to get notified"),".")),(0,r.kt)("p",null,"While we prepare the list, follow this simple advice to learn anything"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Just ",(0,r.kt)("strong",{parentName:"p"},"pick a project and start working on it"),", you will learn all that you need along the way.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u2192")," ","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps"}),"All Roadmaps")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/guides"}),"Programming guides")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"Subscribe")))}s.isMDXComponent=!0},2014:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},(0,r.kt)("strong",{parentName:"p"},"Roadmap is not ready yet"),". Please check back later or ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"subscribe to get notified"),".")),(0,r.kt)("p",null,"While we prepare the roadmap, follow this simple advice to learn anything"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Just ",(0,r.kt)("strong",{parentName:"p"},"pick a project and start working on it"),", you will learn all that you need along the way.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u2192")," ","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps"}),"All Roadmaps")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/guides"}),"Programming guides")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"Subscribe")," "))}s.isMDXComponent=!0},3737:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},(0,r.kt)("strong",{parentName:"p"},"We are still preparing the resources"),". Please check back later or ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"subscribe to get notified"),".")),(0,r.kt)("p",null,"While we prepare the list, follow this simple advice to learn anything"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Just ",(0,r.kt)("strong",{parentName:"p"},"pick a project and start working on it"),", you will learn all that you need along the way.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u2192")," ","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps"}),"All Roadmaps")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/guides"}),"Programming guides")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"Subscribe")))}s.isMDXComponent=!0},611:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},(0,r.kt)("strong",{parentName:"p"},"Roadmap is not ready yet"),". Please check back later or ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"subscribe to get notified"),".")),(0,r.kt)("p",null,"While we prepare the roadmap, follow this simple advice to learn anything"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Just ",(0,r.kt)("strong",{parentName:"p"},"pick a project and start working on it"),", you will learn all that you need along the way.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u2192")," ","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps"}),"All Roadmaps")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/guides"}),"Programming guides")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"Subscribe")," "))}s.isMDXComponent=!0},4541:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return s}});n(7294);var r=n(4137);function o(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var a={};function s(e){var t=e.components,n=o(e,["components"]);return(0,r.kt)("wrapper",Object.assign({},a,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},(0,r.kt)("strong",{parentName:"p"},"We are still preparing the resources"),". Please check back later or ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"subscribe to get notified"),".")),(0,r.kt)("p",null,"While we prepare the list, follow this simple advice to learn anything"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Just ",(0,r.kt)("strong",{parentName:"p"},"pick a project and start working on it"),", you will learn all that you need along the way.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u2192")," ","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/roadmaps"}),"All Roadmaps")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/guides"}),"Programming guides")," ","\xa0","\u2022","\xa0"," ",(0,r.kt)("a",Object.assign({parentName:"p"},{href:"/signup"}),"Subscribe")))}s.isMDXComponent=!0},8712:function(e){"use strict";e.exports=JSON.parse('[{"username":"kamranahmedse","name":"Kamran Ahmed","twitter":"kamranahmedse","picture":"/authors/kamranahmedse.jpeg","bio":"Lead engineer at Tajawal. Lover of all things web and opensource. Created roadmap.sh to help the confused ones."},{"username":"jesse","name":"Jesse Li","twitter":"__jesse_li","picture":"/authors/jesse.png","bio":"Software engineer."},{"username":"dmytrobol","name":"Dmytro Bolkachov","twitter":"dmytrobol","picture":"/authors/dmytrobol.png","bio":"JavaScript Lad, Movie buff and coder interested in everything web related"},{"username":"spekulatius","name":"Peter Thaleikis","twitter":"spekulatius1984","picture":"/authors/spekulatius.jpg","bio":"Developer building side-projects for fun, lover of the web and open source"},{"username":"ebrahimbharmal007","name":"Ebrahim Bharmal","twitter":"BharmalEbrahim","picture":"/authors/ebrahimbharmal007.png","bio":"Love building projects using tools completely new to me. Python forever. Senior at University of Texas at Arlington (2021)"},{"username":"lesovsky","name":"Alexey Lesovsky","bio":"Linux system administrator and PostgreSQL DBA at DataEgret.","picture":"/authors/lesovsky.jpeg"}]')},9552:function(e){"use strict";e.exports=JSON.parse('[{"id":"avoid-render-blocking-javascript-with-async-defer","title":"Async and Defer Script Loading","description":"Learn how to avoid render blocking JavaScript using async and defer scripts.","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2021-09-10T19:59:14.191Z","createdAt":"2021-09-10T19:59:14.191Z"},{"id":"what-are-web-vitals","title":"What are Web Vitals?","description":"Learn what are the core web vitals and how to measure them.","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2021-09-05T19:59:14.191Z","createdAt":"2021-09-05T19:59:14.191Z"},{"id":"what-is-sli-slo-sla","title":"SLIs, SLOs and SLAs","description":"Learn what are different indicators for performance identification of any service.","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2021-08-31T19:59:14.191Z","createdAt":"2021-08-31T19:59:14.191Z"},{"id":"ci-cd","title":"What is CI and CD?","description":"Learn the basics of CI/CD and how to implement that with GitHub Actions.","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2021-07-09T19:59:14.191Z","createdAt":"2021-07-09T19:59:14.191Z"},{"id":"sso","title":"SSO \u2014 Single Sign On","description":"Learn the basics of SAML and understand how does Single Sign On work.","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2021-07-01T19:59:14.191Z","createdAt":"2021-07-01T19:59:14.191Z"},{"id":"oauth","title":"OAuth \u2014 Open Authorization","description":"Learn and understand what is OAuth and how it works","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2021-06-28T19:59:14.191Z","createdAt":"2021-06-28T19:59:14.191Z"},{"id":"jwt-authentication","title":"JWT Authentication","description":"Understand what is JWT authentication and how is it implemented","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2021-06-20T19:59:14.191Z","createdAt":"2021-06-20T19:59:14.191Z"},{"id":"token-authentication","title":"Token Based Authentication","description":"Understand what is token based authentication and how it is implemented","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2021-06-02T20:59:14.191Z","createdAt":"2021-06-02T20:59:14.191Z"},{"id":"session-authentication","title":"Session Based Authentication","description":"Understand what is session based authentication and how it is implemented","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2021-05-26T20:59:14.191Z","createdAt":"2021-05-26T20:59:14.191Z"},{"id":"basic-authentication","title":"Basic Authentication","description":"Understand what is basic authentication and how it is implemented","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2021-05-19T20:59:14.191Z","createdAt":"2021-05-19T20:59:14.191Z"},{"id":"character-encodings","title":"Character Encodings","description":"Covers the basics of character encodings and explains ASCII vs Unicode","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2021-05-14T20:59:14.191Z","createdAt":"2021-05-14T20:59:14.191Z"},{"id":"unfamiliar-codebase","title":"Unfamiliar Codebase","description":"Tips on getting getting familiar with an unfamiliar codebase","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2021-05-04T20:59:14.191Z","createdAt":"2021-05-04T20:59:14.191Z"},{"id":"why-build-it-and-they-will-come-wont-work-anymore","title":"Build it and they will come?","description":"Why \u201cbuild it and they will come\u201d alone won\u2019t work anymore","isPro":false,"authorUsername":"spekulatius","updatedAt":"2021-05-04T12:59:14.191Z","createdAt":"2021-05-04T12:59:14.191Z"},{"id":"dhcp-in-one-picture","title":"DHCP in One Picture","description":"Here is what happens when a new device joins the network.","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2021-04-28T15:48:21.191Z","createdAt":"2021-04-28T15:48:21.191Z"},{"id":"ssl-tls-https-ssh","title":"SSL vs TLS vs SSH","description":"Quick tidbit on the differences between SSL, TLS, HTTPS and SSH","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2021-04-22T15:48:21.191Z","createdAt":"2021-04-22T15:48:21.191Z"},{"id":"asymptotic-notation","title":"Asymptotic Notation","description":"Learn the basics of measuring the time and space complexity of algorithms","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2021-04-03T15:48:21.191Z","createdAt":"2021-04-03T15:48:21.191Z"},{"id":"big-o-notation","title":"Big-O Notation","description":"Easy to understand explanation of Big-O notation without any fancy terms","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2021-03-15T15:48:21.191Z","createdAt":"2021-03-15T15:48:21.191Z"},{"id":"random-numbers","title":"Random Numbers: Are they?","description":"Learn how they are generated and why they may not be truly random.","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2021-03-14T15:48:21.191Z","createdAt":"2021-03-14T15:48:21.191Z"},{"id":"scaling-databases","title":"Scaling Databases","description":"Learn the ups and downs of different database scaling strategies","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2021-02-18T15:48:21.191Z","createdAt":"2021-02-18T15:48:21.191Z"},{"id":"what-is-internet","title":"How does the internet work?","description":"Learn the basics of internet and everything involved with this short video series","isPro":false,"authorUsername":"dmytrobol","updatedAt":"2021-02-29T15:48:21.191Z","createdAt":"2021-02-29T15:48:21.191Z"},{"id":"torrent-client","title":"Building a BitTorrent Client","description":"Learn everything you need to know about BitTorrent by writing a client in Go","isPro":false,"authorUsername":"jesse","updatedAt":"2021-01-17T15:48:21.191Z","createdAt":"2021-01-17T15:48:21.191Z","canonical":"https://blog.jse.li/posts/torrent/"},{"id":"levels-of-seniority","title":"Levels of Seniority","description":"How to Step Up as a Junior, Mid Level or a Senior Developer?","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2020-12-03T12:13:00.860Z","createdAt":"2020-12-03T12:13:00.860Z"},{"id":"design-patterns-for-humans","title":"Design Patterns for Humans","description":"A language agnostic, ultra-simplified explanation to design patterns","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2019-10-09T12:00:00.860Z","createdAt":"2019-01-23T17:00:00.860Z"},{"id":"journey-to-http2","title":"Journey to HTTP/2","description":"The evolution of HTTP. How it all started and where we stand today","isPro":false,"authorUsername":"kamranahmedse","createdAt":"2018-12-04T12:00:00.860Z","updatedAt":"2018-12-04T12:00:00.860Z","isDraft":true},{"id":"dns-in-one-picture","title":"DNS in One Picture","description":"Quick illustrative guide on how a website is found on the internet.","isPro":false,"authorUsername":"kamranahmedse","updatedAt":"2018-12-04T12:00:00.860Z","createdAt":"2018-12-04T17:00:00.860Z"},{"id":"http-caching","title":"HTTP Caching","description":"Everything you need to know about web caching","isPro":false,"authorUsername":"kamranahmedse","createdAt":"2018-11-29T17:00:00.860Z","updatedAt":"2018-11-29T17:00:00.860Z"},{"id":"history-of-javascript","title":"Brief History of JavaScript","description":"How JavaScript was introduced and evolved over the years","isPro":false,"authorUsername":"kamranahmedse","createdAt":"2017-10-28T17:00:00.860Z","updatedAt":"2017-10-28T17:00:00.860Z"},{"id":"proxy-servers","title":"Proxy Servers","description":"How do proxy servers work and what are forward and reverse proxies?","isPro":false,"authorUsername":"ebrahimbharmal007","createdAt":"2017-10-24T17:00:00.860Z","updatedAt":"2017-10-24T17:00:00.860Z"}]')},1662:function(e){"use strict";e.exports=JSON.parse('[{"seo":{"title":"Learn to become a modern frontend developer","description":"Community driven, articles, resources, guides, interview questions, quizzes for modern frontend development. Learn to become a modern frontend developer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming a developer","guide to becoming a frontend developer","frontend developer","frontend engineer","frontend skills","frontend development","javascript developer","frontend development skills","frontend development skills test","frontend engineer roadmap","frontend developer roadmap","become a frontend developer","frontend developer career path","javascript developer","modern javascript developer","node developer","skills for frontend development","learn frontend development","what is frontend development","frontend developer quiz","frontend developer interview questions"]},"title":"Frontend Developer","description":"Step by step guide to becoming a modern frontend developer in 2021","featuredTitle":"Frontend","featuredDescription":"Step by step guide to becoming a frontend developer in 2021","author":{"name":"Kamran Ahmed","url":"https://twitter.com/kamranahmedse"},"featured":true,"imagePath":"/roadmaps/frontend.png","resourcesPath":"/roadmaps/100-frontend/resources.md","pdfUrl":"https://kamranahmedse.gumroad.com/l/frontend-roadmap","id":"frontend","metaPath":"/roadmaps/100-frontend/meta.json","isUpcoming":false},{"seo":{"title":"Learn to become a modern backend developer","description":"Community driven, articles, resources, guides, interview questions, quizzes for modern backend development. Learn to become a modern backend developer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming a developer","guide to becoming a backend developer","backend developer","backend engineer","backend skills","backend development","javascript developer","backend development skills","backend development skills test","backend engineer roadmap","backend developer roadmap","become a backend developer","backend developer career path","javascript developer","modern javascript developer","node developer","skills for backend development","learn backend development","what is backend development","backend developer quiz","backend developer interview questions"]},"title":"Backend Developer","description":"Step by step guide to becoming a modern backend developer in 2021","featuredTitle":"Backend","featuredDescription":"Step by step guide to becoming a backend developer in 2021","featured":true,"imagePath":"/roadmaps/backend.png","resourcesPath":"/roadmaps/101-backend/resources.md","author":{"name":"Kamran Ahmed","url":"https://twitter.com/kamranahmedse"},"pdfUrl":"https://kamranahmedse.gumroad.com/l/backend-roadmap","id":"backend","metaPath":"/roadmaps/101-backend/meta.json","isUpcoming":false},{"seo":{"title":"DevOps Roadmap: Learn to become a DevOps Engineer or SRE","description":"Community driven, articles, resources, guides, interview questions, quizzes for DevOps. Learn to become a modern DevOps engineer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming a devops enginer","devops roadmap","sre roadmap","site reliability engineer roadmap","operations roles","become devops","devops skills","modern devops skills","devops skills test","skills for devops","learn devops","what is devops","what is sre","devops quiz","devops interview questions"]},"title":"DevOps Roadmap","description":"Step by step guide for DevOps, SRE or any other Operations Role in 2021","featuredTitle":"DevOps","featuredDescription":"Step by step guide for DevOps or operations role in 2021","featured":true,"imagePath":"/roadmaps/devops.png","resourcesPath":"/roadmaps/102-devops/resources.md","versions":["latest","2018","2017"],"author":{"name":"Kamran Ahmed","url":"https://twitter.com/kamranahmedse"},"pdfUrl":"https://kamranahmedse.gumroad.com/l/devops-roadmap","id":"devops","metaPath":"/roadmaps/102-devops/meta.json","isUpcoming":false},{"seo":{"title":"React Developer Roadmap: Learn to become a React developer","description":"Community driven, articles, resources, guides, interview questions, quizzes for react development. Learn to become a modern React developer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming a react developer","react developer roadmap","react roadmap","become react developer","react developer skills","react skills test","skills for react development","learn react development","what is react","react quiz","react interview questions"]},"title":"React Developer","description":"Everything that is there to learn about React and the ecosystem in 2021.","featuredTitle":"React","featuredDescription":"Step by step guide to become a React Developer in 2021","isTextHeavy":false,"isCommunity":false,"featured":true,"contentPath":"/roadmaps/103-react/landscape.md","resourcesPath":"/roadmaps/103-react/resources.md","versions":["latest","2018","2017"],"author":{"name":"Kamran Ahmed","url":"https://twitter.com/kamranahmedse"},"pdfUrl":"https://kamranahmedse.gumroad.com/l/react-roadmap","id":"react","metaPath":"/roadmaps/103-react/meta.json","isUpcoming":false},{"seo":{"title":"Angular Developer Roadmap: Learn to become a Angular developer","description":"Community driven, articles, resources, guides, interview questions, quizzes for angular development. Learn to become a modern Angular developer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming a angular developer","angular developer roadmap","angular roadmap","become angular developer","angular developer skills","angular skills test","skills for angular development","learn angular development","what is angular","angular quiz","angular interview questions"]},"title":"Angular Developer","description":"Everything that is there to learn about Angular and the ecosystem in 2021.","featuredTitle":"Angular","featuredDescription":"Step by step guide to become a Angular Developer in 2021","isTextHeavy":false,"isCommunity":false,"featured":true,"contentPath":"/roadmaps/104-angular/landscape.md","resourcesPath":"/roadmaps/104-angular/resources.md","versions":["latest","2018","2017"],"author":{"name":"Kamran Ahmed","url":"https://twitter.com/kamranahmedse"},"pdfUrl":"https://kamranahmedse.gumroad.com/l/angular-roadmap","id":"angular","metaPath":"/roadmaps/104-angular/meta.json","isUpcoming":false},{"seo":{"title":"Android Developer Roadmap: Learn to become an Android developer","description":"Community driven, articles, resources, guides, interview questions, quizzes for android development. Learn to become a modern Android developer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming an android developer","android developer roadmap","android roadmap","become android developer","android developer skills","android skills test","skills for android development","learn android development","what is android","android quiz","android interview questions"]},"title":"Android Developer","description":"Step by step guide to becoming an Android developer in 2021","featuredTitle":"Android","featuredDescription":"Step by step guide to becoming an Android Developer in 2021","isTextHeavy":true,"isCommunity":false,"featured":true,"contentPath":"/roadmaps/105-android/landscape.md","resourcesPath":"/roadmaps/105-android/resources.md","versions":["latest","2018","2017"],"author":{"name":"Kamran Ahmed","url":"https://twitter.com/kamranahmedse"},"id":"android","metaPath":"/roadmaps/105-android/meta.json","isUpcoming":false},{"seo":{"title":"Learn to become a modern Python developer","description":"Community driven, articles, resources, guides, interview questions, quizzes for python development. Learn to become a modern Python developer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming an python developer","python developer roadmap","python roadmap","become python developer","python developer skills","python skills test","skills for python development","learn python development","what is python","python quiz","python interview questions"]},"title":"Python Developer","description":"Step by step guide to becoming a Python developer in 2021","featuredTitle":"Python","featuredDescription":"Step by step guide to becoming a Python Developer in 2021","isTextHeavy":true,"isCommunity":false,"featured":true,"resourcesPath":"/roadmaps/106-python/resources.md","contentPath":"/roadmaps/106-python/landscape.md","pdfUrl":"https://kamranahmedse.gumroad.com/l/python-roadmap","versions":["latest"],"author":{"name":"Kamran Ahmed","url":"https://twitter.com/kamranahmedse"},"id":"python","metaPath":"/roadmaps/106-python/meta.json","isUpcoming":false},{"seo":{"title":"Learn to become a Go developer","description":"Community driven, articles, resources, guides, interview questions, quizzes for react development. Learn to become a modern React developer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming a golang developer","guide to becoming a go developer","golang developer","go developer","guide to golang","guide to go","golang roadmap","go roadmap","golang skills","go skills","golang skills test","go skills test","skills for golang","skills for go","cloud development","what is golang","what is go","golang quiz","go quiz","golang interview questions","go interview questions"]},"title":"Go Developer","description":"Step by step guide to becoming a Go developer in 2021","featuredTitle":"Go","featuredDescription":"Step by step guide to becoming a Go developer in 2021","isTextHeavy":false,"isCommunity":false,"isUpcoming":false,"featured":true,"contentPath":"/roadmaps/107-golang/landscape.md","resourcesPath":"/roadmaps/107-golang/resources.md","pdfUrl":"https://kamranahmedse.gumroad.com/l/go-roadmap","versions":["latest","2018","2017"],"author":{"name":"Kamran Ahmed","url":"https://twitter.com/kamranahmedse"},"id":"golang","metaPath":"/roadmaps/107-golang/meta.json"},{"seo":{"title":"Learn to become a modern Java developer","description":"Community driven, articles, resources, guides, interview questions, quizzes for react development. Learn to become a modern React developer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming a developer","guide to becoming a java developer","java developer","java engineer","java skills","guide to java","java roadmap","java skills","java skills test","skills for java","cloud development","what is java","java quiz","java interview questions","java engineer roadmap","java developer roadmap","become a java developer","java developer career path","java developer","modern java developer"]},"title":"Java Developer","description":"Step by step guide to becoming a Java developer in 2021","featuredTitle":"Java","featuredDescription":"Step by step guide to becoming a Java Developer in 2021","isTextHeavy":false,"isCommunity":false,"isUpcoming":false,"featured":true,"contentPath":"/roadmaps/108-java/landscape.md","resourcesPath":"/roadmaps/108-java/resources.md","versions":["latest","2018","2017"],"author":{"name":"Kamran Ahmed","url":"https://twitter.com/kamranahmedse"},"pdfUrl":"https://kamranahmedse.gumroad.com/l/java-roadmap","id":"java","metaPath":"/roadmaps/108-java/meta.json"},{"seo":{"title":"DBA Roadmap: Learn to become a database administrator with PostgreSQL","description":"Community driven, articles, resources, guides, interview questions, quizzes for DevOps. Learn to become a modern DevOps engineer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming a database administrator","guide to becoming a DBA","dba roadmap","db administrator roadmap","database administrator roadmap","postgresql roadmap","dba skills","db administrator skills","become dba","postgresql skills","modern dba skills","dba skills test","skills for dba","skills for database administrator","learn dba","what is dba","database administrator quiz","dba interview questions"]},"title":"PostgreSQL DBA","description":"Step by step guide to becoming a modern PostgreSQL DB Administrator in 2021","featuredTitle":"DBA","featuredDescription":"Step by step guide to become a PostgreSQL DBA in 2021","contentPath":"/roadmaps/109-postgresql-dba/landscape.md","resourcesPath":"/roadmaps/109-postgresql-dba/resources.md","author":{"name":"Alexey Lesovsky","url":"https://github.com/lesovsky"},"isCommunity":false,"isTextHeavy":true,"featured":true,"detailed":false,"versions":[],"id":"postgresql-dba","metaPath":"/roadmaps/109-postgresql-dba/meta.json","isUpcoming":false},{"seo":{"title":"AWS Roadmap: Learn to use AWS","description":"Community driven, articles, resources, guides, interview questions, quizzes for react development. Learn to become a modern React developer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to aws","aws roadmap","aws skills","aws skills test","skills for aws","cloud development","what is aws","aws quiz","aws interview questions"]},"title":"AWS","description":"Everything that is there to learn about AWS and the ecosystem in 2021.","featuredTitle":"AWS","featuredDescription":"Step by step guide to learn AWS in 2021","isTextHeavy":false,"isCommunity":false,"isUpcoming":true,"featured":true,"contentPath":"/roadmaps/110-aws/landscape.md","resourcesPath":"/roadmaps/110-aws/resources.md","versions":["latest","2018","2017"],"author":{"name":"Kamran Ahmed","url":"https://twitter.com/kamranahmedse"},"id":"aws","metaPath":"/roadmaps/110-aws/meta.json"},{"seo":{"title":"QA Roadmap: Learn to become a modern QA engineer","description":"Community driven, articles, resources, guides, interview questions, quizzes for modern QA development. Learn to become a modern QA engineer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming a QA engineer","QA engineer","QA skills","QA development skills","QA development skills test","QA engineer roadmap","become a QA engineer","QA engineer career path","skills for QA development","what is QA engineer","QA engineer quiz","QA engineer interview questions"]},"title":"QA Engineer","description":"Steps to follow in order to become a modern QA Engineer in 2021","featuredTitle":"QA","featuredDescription":"Step by step guide to becoming a modern QA Engineer in 2021","isUpcoming":true,"featured":true,"contentPath":"/roadmaps/111-qa/landscape.md","resourcesPath":"/roadmaps/111-qa/resources.md","author":{"name":"Anas Fitiani","url":"https://github.com/anas-qa"},"id":"qa","metaPath":"/roadmaps/111-qa/meta.json"}]')},8359:function(e){"use strict";e.exports=JSON.parse('{"home":"/100-frontend/content/readme.md","internet":"/100-frontend/content/100-internet/readme.md","internet:how-does-the-internet-work":"/100-frontend/content/100-internet/100-how-does-the-internet-work.md","internet:what-is-http":"/100-frontend/content/100-internet/101-what-is-http.md","internet:browsers-and-how-they-work":"/100-frontend/content/100-internet/102-browsers-and-how-they-work.md","internet:dns-and-how-it-works":"/100-frontend/content/100-internet/103-dns-and-how-it-works.md","internet:what-is-domain-name":"/100-frontend/content/100-internet/104-what-is-domain-name.md","internet:what-is-hosting":"/100-frontend/content/100-internet/105-what-is-hosting.md","html":"/100-frontend/content/101-html/readme.md","html:learn-the-basics":"/100-frontend/content/101-html/100-learn-the-basics.md","html:writing-semantic-html":"/100-frontend/content/101-html/101-writing-semantic-html.md","html:forms-and-validations":"/100-frontend/content/101-html/102-forms-and-validations.md","html:conventions-and-best-practices":"/100-frontend/content/101-html/103-conventions-and-best-practices.md","html:accessibility":"/100-frontend/content/101-html/104-accessibility.md","html:seo-basics":"/100-frontend/content/101-html/105-seo-basics.md","css":"/100-frontend/content/102-css/readme.md","css:learn-the-basics":"/100-frontend/content/102-css/100-learn-the-basics.md","css:making-layouts":"/100-frontend/content/102-css/101-making-layouts.md","css:responsive-design-and-media-queries":"/100-frontend/content/102-css/102-responsive-design-and-media-queries.md","javascript":"/100-frontend/content/103-javascript/readme.md","javascript:syntax-and-basic-constructs":"/100-frontend/content/103-javascript/100-syntax-and-basic-constructs.md","javascript:learn-dom-manipulation":"/100-frontend/content/103-javascript/101-learn-dom-manipulation.md","javascript:learn-fetch-api-ajax-xhr":"/100-frontend/content/103-javascript/102-learn-fetch-api-ajax-xhr.md","javascript:es6-and-modular-javascript":"/100-frontend/content/103-javascript/103-es6-and-modular-javascript.md","javascript:concepts":"/100-frontend/content/103-javascript/104-concepts.md","version-control-systems":"/100-frontend/content/104-version-control-systems/readme.md","version-control-systems:basic-usage-of-git":"/100-frontend/content/104-version-control-systems/100-basic-usage-of-git.md","repo-hosting-services":"/100-frontend/content/105-repo-hosting-services/readme.md","repo-hosting-services:github":"/100-frontend/content/105-repo-hosting-services/100-github.md","repo-hosting-services:gitlab":"/100-frontend/content/105-repo-hosting-services/101-gitlab.md","repo-hosting-services:bitbucket":"/100-frontend/content/105-repo-hosting-services/102-bitbucket.md","web-security-knowledge":"/100-frontend/content/106-web-security-knowledge/readme.md","web-security-knowledge:cors":"/100-frontend/content/106-web-security-knowledge/102-cors.md","web-security-knowledge:https":"/100-frontend/content/106-web-security-knowledge/100-https.md","web-security-knowledge:content-security-policy":"/100-frontend/content/106-web-security-knowledge/101-content-security-policy.md","web-security-knowledge:owasp-security-risks":"/100-frontend/content/106-web-security-knowledge/103-owasp-security-risks.md","package-managers":"/100-frontend/content/107-package-managers/readme.md","package-managers:npm":"/100-frontend/content/107-package-managers/100-npm.md","package-managers:yarn":"/100-frontend/content/107-package-managers/101-yarn.md","css-architecture":"/100-frontend/content/108-css-architecture/readme.md","css-architecture:bem":"/100-frontend/content/108-css-architecture/100-bem.md","css-architecture:oocss":"/100-frontend/content/108-css-architecture/101-oocss.md","css-architecture:smacss":"/100-frontend/content/108-css-architecture/102-smacss.md","css-preprocessors":"/100-frontend/content/109-css-preprocessors/readme.md","css-preprocessors:sass":"/100-frontend/content/109-css-preprocessors/100-sass.md","css-preprocessors:postcss":"/100-frontend/content/109-css-preprocessors/101-postcss.md","css-preprocessors:less":"/100-frontend/content/109-css-preprocessors/102-less.md","build-tools":"/100-frontend/content/110-build-tools/readme.md","build-tools:task-runners":"/100-frontend/content/110-build-tools/100-task-runners/readme.md","build-tools:100-task-runners/npm-scripts":"/100-frontend/content/110-build-tools/100-task-runners/npm-scripts.md","build-tools:linters-formatters":"/100-frontend/content/110-build-tools/102-linters-formatters/readme.md","build-tools:102-linters-formatters/prettier":"/100-frontend/content/110-build-tools/102-linters-formatters/prettier.md","build-tools:102-linters-formatters/eslint":"/100-frontend/content/110-build-tools/102-linters-formatters/eslint.md","build-tools:102-linters-formatters/standardjs":"/100-frontend/content/110-build-tools/102-linters-formatters/standardjs.md","build-tools:module-bundlers":"/100-frontend/content/110-build-tools/101-module-bundlers/readme.md","build-tools:101-module-bundlers/webpack":"/100-frontend/content/110-build-tools/101-module-bundlers/webpack.md","build-tools:101-module-bundlers/esbuild":"/100-frontend/content/110-build-tools/101-module-bundlers/esbuild.md","build-tools:101-module-bundlers/rollup":"/100-frontend/content/110-build-tools/101-module-bundlers/rollup.md","build-tools:101-module-bundlers/parcel":"/100-frontend/content/110-build-tools/101-module-bundlers/parcel.md","build-tools:101-module-bundlers/vite":"/100-frontend/content/110-build-tools/101-module-bundlers/vite.md","pick-a-framework":"/100-frontend/content/111-pick-a-framework/readme.md","pick-a-framework:react-js":"/100-frontend/content/111-pick-a-framework/100-react-js/readme.md","pick-a-framework:100-react-js/recoil":"/100-frontend/content/111-pick-a-framework/100-react-js/recoil.md","pick-a-framework:100-react-js/redux":"/100-frontend/content/111-pick-a-framework/100-react-js/redux.md","pick-a-framework:100-react-js/mobx":"/100-frontend/content/111-pick-a-framework/100-react-js/mobx.md","pick-a-framework:angular":"/100-frontend/content/111-pick-a-framework/101-angular/readme.md","pick-a-framework:101-angular/rxjs":"/100-frontend/content/111-pick-a-framework/101-angular/rxjs.md","pick-a-framework:101-angular/ngrx":"/100-frontend/content/111-pick-a-framework/101-angular/ngrx.md","pick-a-framework:vue-js":"/100-frontend/content/111-pick-a-framework/102-vue-js/readme.md","pick-a-framework:102-vue-js/vuex":"/100-frontend/content/111-pick-a-framework/102-vue-js/vuex.md","modern-css":"/100-frontend/content/112-modern-css/readme.md","modern-css:styled-components":"/100-frontend/content/112-modern-css/100-styled-components.md","modern-css:css-modules":"/100-frontend/content/112-modern-css/101-css-modules.md","modern-css:styled-jsx":"/100-frontend/content/112-modern-css/102-styled-jsx.md","modern-css:emotion":"/100-frontend/content/112-modern-css/103-emotion.md","web-components":"/100-frontend/content/113-web-components/readme.md","web-components:html-templates":"/100-frontend/content/113-web-components/100-html-templates.md","web-components:custom-elements":"/100-frontend/content/113-web-components/101-custom-elements.md","web-components:shadow-dom":"/100-frontend/content/113-web-components/102-shadow-dom.md","css-frameworks":"/100-frontend/content/114-css-frameworks/readme.md","css-frameworks:js-first":"/100-frontend/content/114-css-frameworks/114-js-first/readme.md","css-frameworks:114-js-first/chakra-ui":"/100-frontend/content/114-css-frameworks/114-js-first/chakra-ui.md","css-frameworks:114-js-first/material-ui":"/100-frontend/content/114-css-frameworks/114-js-first/material-ui.md","css-frameworks:114-js-first/radix-ui":"/100-frontend/content/114-css-frameworks/114-js-first/radix-ui.md","css-frameworks:114-js-first/tailwind-css":"/100-frontend/content/114-css-frameworks/114-js-first/tailwind-css.md","css-frameworks:css-first":"/100-frontend/content/114-css-frameworks/114-css-first/readme.md","css-frameworks:114-css-first/bootstrap":"/100-frontend/content/114-css-frameworks/114-css-first/bootstrap.md","css-frameworks:114-css-first/bulma":"/100-frontend/content/114-css-frameworks/114-css-first/bulma.md","testing-your-apps":"/100-frontend/content/115-testing-your-apps/readme.md","testing-your-apps:jest":"/100-frontend/content/115-testing-your-apps/100-jest.md","testing-your-apps:react-testing-library":"/100-frontend/content/115-testing-your-apps/101-react-testing-library.md","testing-your-apps:cypress":"/100-frontend/content/115-testing-your-apps/102-cypress.md","testing-your-apps:enzyme":"/100-frontend/content/115-testing-your-apps/103-enzyme.md","testing-your-apps:other-options":"/100-frontend/content/115-testing-your-apps/104-other-options.md","type-checkers":"/100-frontend/content/116-type-checkers/readme.md","type-checkers:typescript":"/100-frontend/content/116-type-checkers/100-typescript.md","type-checkers:flow":"/100-frontend/content/116-type-checkers/101-flow.md","progressive-web-apps":"/100-frontend/content/117-progressive-web-apps/readme.md","progressive-web-apps:performance":"/100-frontend/content/117-progressive-web-apps/101-performance.md","progressive-web-apps:apis":"/100-frontend/content/117-progressive-web-apps/100-apis.md","server-side-rendering":"/100-frontend/content/118-server-side-rendering/readme.md","server-side-rendering:react-js":"/100-frontend/content/118-server-side-rendering/100-react-js/readme.md","server-side-rendering:100-react-js/next-js":"/100-frontend/content/118-server-side-rendering/100-react-js/next-js.md","server-side-rendering:100-react-js/after-js":"/100-frontend/content/118-server-side-rendering/100-react-js/after-js.md","server-side-rendering:angular":"/100-frontend/content/118-server-side-rendering/101-angular/readme.md","server-side-rendering:101-angular/universal":"/100-frontend/content/118-server-side-rendering/101-angular/universal.md","server-side-rendering:vue-js":"/100-frontend/content/118-server-side-rendering/102-vue-js/readme.md","server-side-rendering:102-vue-js/nuxt-js":"/100-frontend/content/118-server-side-rendering/102-vue-js/nuxt-js.md","graphql":"/100-frontend/content/119-graphql/readme.md","graphql:apollo":"/100-frontend/content/119-graphql/100-apollo.md","graphql:relay-modern":"/100-frontend/content/119-graphql/101-relay-modern.md","static-site-generators":"/100-frontend/content/120-static-site-generators/readme.md","static-site-generators:next-js":"/100-frontend/content/120-static-site-generators/100-next-js.md","static-site-generators:gatsbyjs":"/100-frontend/content/120-static-site-generators/101-gatsbyjs.md","static-site-generators:nuxt-js":"/100-frontend/content/120-static-site-generators/102-nuxt-js.md","static-site-generators:vuepress":"/100-frontend/content/120-static-site-generators/103-vuepress.md","static-site-generators:jekyll":"/100-frontend/content/120-static-site-generators/104-jekyll.md","static-site-generators:hugo":"/100-frontend/content/120-static-site-generators/105-hugo.md","static-site-generators:gridsome":"/100-frontend/content/120-static-site-generators/106-gridsome.md","static-site-generators:eleventy":"/100-frontend/content/120-static-site-generators/107-eleventy.md","mobile-applications":"/100-frontend/content/121-mobile-applications/readme.md","mobile-applications:react-native":"/100-frontend/content/121-mobile-applications/100-react-native.md","mobile-applications:nativescript":"/100-frontend/content/121-mobile-applications/101-nativescript.md","mobile-applications:flutter":"/100-frontend/content/121-mobile-applications/102-flutter.md","mobile-applications:ionic":"/100-frontend/content/121-mobile-applications/103-ionic.md","desktop-applications":"/100-frontend/content/122-desktop-applications/readme.md","desktop-applications:electron":"/100-frontend/content/122-desktop-applications/100-electron.md","desktop-applications:carlo":"/100-frontend/content/122-desktop-applications/101-carlo.md","desktop-applications:proton-native":"/100-frontend/content/122-desktop-applications/102-proton-native.md","web-assembly":"/100-frontend/content/123-web-assembly.md"}')},9258:function(e){"use strict";e.exports=JSON.parse('{"seo":{"title":"Learn to become a modern frontend developer","description":"Community driven, articles, resources, guides, interview questions, quizzes for modern frontend development. Learn to become a modern frontend developer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming a developer","guide to becoming a frontend developer","frontend developer","frontend engineer","frontend skills","frontend development","javascript developer","frontend development skills","frontend development skills test","frontend engineer roadmap","frontend developer roadmap","become a frontend developer","frontend developer career path","javascript developer","modern javascript developer","node developer","skills for frontend development","learn frontend development","what is frontend development","frontend developer quiz","frontend developer interview questions"]},"title":"Frontend Developer","description":"Step by step guide to becoming a modern frontend developer in 2021","featuredTitle":"Frontend","featuredDescription":"Step by step guide to becoming a frontend developer in 2021","author":{"name":"Kamran Ahmed","url":"https://twitter.com/kamranahmedse"},"featured":true,"imagePath":"/roadmaps/frontend.png","resourcesPath":"./resources.md","pdfUrl":"https://kamranahmedse.gumroad.com/l/frontend-roadmap"}')},6782:function(e){"use strict";e.exports=JSON.parse('{"seo":{"title":"Learn to become a modern backend developer","description":"Community driven, articles, resources, guides, interview questions, quizzes for modern backend development. Learn to become a modern backend developer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming a developer","guide to becoming a backend developer","backend developer","backend engineer","backend skills","backend development","javascript developer","backend development skills","backend development skills test","backend engineer roadmap","backend developer roadmap","become a backend developer","backend developer career path","javascript developer","modern javascript developer","node developer","skills for backend development","learn backend development","what is backend development","backend developer quiz","backend developer interview questions"]},"title":"Backend Developer","description":"Step by step guide to becoming a modern backend developer in 2021","featuredTitle":"Backend","featuredDescription":"Step by step guide to becoming a backend developer in 2021","featured":true,"imagePath":"/roadmaps/backend.png","resourcesPath":"./resources.md","author":{"name":"Kamran Ahmed","url":"https://twitter.com/kamranahmedse"},"pdfUrl":"https://kamranahmedse.gumroad.com/l/backend-roadmap"}')},4017:function(e){"use strict";e.exports=JSON.parse('{"seo":{"title":"DevOps Roadmap: Learn to become a DevOps Engineer or SRE","description":"Community driven, articles, resources, guides, interview questions, quizzes for DevOps. Learn to become a modern DevOps engineer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming a devops enginer","devops roadmap","sre roadmap","site reliability engineer roadmap","operations roles","become devops","devops skills","modern devops skills","devops skills test","skills for devops","learn devops","what is devops","what is sre","devops quiz","devops interview questions"]},"title":"DevOps Roadmap","description":"Step by step guide for DevOps, SRE or any other Operations Role in 2021","featuredTitle":"DevOps","featuredDescription":"Step by step guide for DevOps or operations role in 2021","featured":true,"imagePath":"/roadmaps/devops.png","resourcesPath":"./resources.md","versions":["latest","2018","2017"],"author":{"name":"Kamran Ahmed","url":"https://twitter.com/kamranahmedse"},"pdfUrl":"https://kamranahmedse.gumroad.com/l/devops-roadmap"}')},8477:function(e){"use strict";e.exports=JSON.parse('{"seo":{"title":"React Developer Roadmap: Learn to become a React developer","description":"Community driven, articles, resources, guides, interview questions, quizzes for react development. Learn to become a modern React developer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming a react developer","react developer roadmap","react roadmap","become react developer","react developer skills","react skills test","skills for react development","learn react development","what is react","react quiz","react interview questions"]},"title":"React Developer","description":"Everything that is there to learn about React and the ecosystem in 2021.","featuredTitle":"React","featuredDescription":"Step by step guide to become a React Developer in 2021","isTextHeavy":false,"isCommunity":false,"featured":true,"contentPath":"./landscape.md","resourcesPath":"./resources.md","versions":["latest","2018","2017"],"author":{"name":"Kamran Ahmed","url":"https://twitter.com/kamranahmedse"},"pdfUrl":"https://kamranahmedse.gumroad.com/l/react-roadmap"}')},8834:function(e){"use strict";e.exports=JSON.parse('{"seo":{"title":"Angular Developer Roadmap: Learn to become a Angular developer","description":"Community driven, articles, resources, guides, interview questions, quizzes for angular development. Learn to become a modern Angular developer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming a angular developer","angular developer roadmap","angular roadmap","become angular developer","angular developer skills","angular skills test","skills for angular development","learn angular development","what is angular","angular quiz","angular interview questions"]},"title":"Angular Developer","description":"Everything that is there to learn about Angular and the ecosystem in 2021.","featuredTitle":"Angular","featuredDescription":"Step by step guide to become a Angular Developer in 2021","isTextHeavy":false,"isCommunity":false,"featured":true,"contentPath":"./landscape.md","resourcesPath":"./resources.md","versions":["latest","2018","2017"],"author":{"name":"Kamran Ahmed","url":"https://twitter.com/kamranahmedse"},"pdfUrl":"https://kamranahmedse.gumroad.com/l/angular-roadmap"}')},9508:function(e){"use strict";e.exports=JSON.parse('{"seo":{"title":"Android Developer Roadmap: Learn to become an Android developer","description":"Community driven, articles, resources, guides, interview questions, quizzes for android development. Learn to become a modern Android developer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming an android developer","android developer roadmap","android roadmap","become android developer","android developer skills","android skills test","skills for android development","learn android development","what is android","android quiz","android interview questions"]},"title":"Android Developer","description":"Step by step guide to becoming an Android developer in 2021","featuredTitle":"Android","featuredDescription":"Step by step guide to becoming an Android Developer in 2021","isTextHeavy":true,"isCommunity":false,"featured":true,"contentPath":"./landscape.md","resourcesPath":"./resources.md","versions":["latest","2018","2017"],"author":{"name":"Kamran Ahmed","url":"https://twitter.com/kamranahmedse"}}')},4099:function(e){"use strict";e.exports=JSON.parse('{"seo":{"title":"Learn to become a modern Python developer","description":"Community driven, articles, resources, guides, interview questions, quizzes for python development. Learn to become a modern Python developer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming an python developer","python developer roadmap","python roadmap","become python developer","python developer skills","python skills test","skills for python development","learn python development","what is python","python quiz","python interview questions"]},"title":"Python Developer","description":"Step by step guide to becoming a Python developer in 2021","featuredTitle":"Python","featuredDescription":"Step by step guide to becoming a Python Developer in 2021","isTextHeavy":true,"isCommunity":false,"featured":true,"resourcesPath":"./resources.md","contentPath":"./landscape.md","pdfUrl":"https://kamranahmedse.gumroad.com/l/python-roadmap","versions":["latest"],"author":{"name":"Kamran Ahmed","url":"https://twitter.com/kamranahmedse"}}')},2737:function(e){"use strict";e.exports=JSON.parse('{"seo":{"title":"Learn to become a Go developer","description":"Community driven, articles, resources, guides, interview questions, quizzes for react development. Learn to become a modern React developer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming a golang developer","guide to becoming a go developer","golang developer","go developer","guide to golang","guide to go","golang roadmap","go roadmap","golang skills","go skills","golang skills test","go skills test","skills for golang","skills for go","cloud development","what is golang","what is go","golang quiz","go quiz","golang interview questions","go interview questions"]},"title":"Go Developer","description":"Step by step guide to becoming a Go developer in 2021","featuredTitle":"Go","featuredDescription":"Step by step guide to becoming a Go developer in 2021","isTextHeavy":false,"isCommunity":false,"isUpcoming":false,"featured":true,"contentPath":"./landscape.md","resourcesPath":"./resources.md","pdfUrl":"https://kamranahmedse.gumroad.com/l/go-roadmap","versions":["latest","2018","2017"],"author":{"name":"Kamran Ahmed","url":"https://twitter.com/kamranahmedse"}}')},2507:function(e){"use strict";e.exports=JSON.parse('{"seo":{"title":"Learn to become a modern Java developer","description":"Community driven, articles, resources, guides, interview questions, quizzes for react development. Learn to become a modern React developer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming a developer","guide to becoming a java developer","java developer","java engineer","java skills","guide to java","java roadmap","java skills","java skills test","skills for java","cloud development","what is java","java quiz","java interview questions","java engineer roadmap","java developer roadmap","become a java developer","java developer career path","java developer","modern java developer"]},"title":"Java Developer","description":"Step by step guide to becoming a Java developer in 2021","featuredTitle":"Java","featuredDescription":"Step by step guide to becoming a Java Developer in 2021","isTextHeavy":false,"isCommunity":false,"isUpcoming":false,"featured":true,"contentPath":"./landscape.md","resourcesPath":"./resources.md","versions":["latest","2018","2017"],"author":{"name":"Kamran Ahmed","url":"https://twitter.com/kamranahmedse"},"pdfUrl":"https://kamranahmedse.gumroad.com/l/java-roadmap"}')},8951:function(e){"use strict";e.exports=JSON.parse('{"seo":{"title":"DBA Roadmap: Learn to become a database administrator with PostgreSQL","description":"Community driven, articles, resources, guides, interview questions, quizzes for DevOps. Learn to become a modern DevOps engineer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming a database administrator","guide to becoming a DBA","dba roadmap","db administrator roadmap","database administrator roadmap","postgresql roadmap","dba skills","db administrator skills","become dba","postgresql skills","modern dba skills","dba skills test","skills for dba","skills for database administrator","learn dba","what is dba","database administrator quiz","dba interview questions"]},"title":"PostgreSQL DBA","description":"Step by step guide to becoming a modern PostgreSQL DB Administrator in 2021","featuredTitle":"DBA","featuredDescription":"Step by step guide to become a PostgreSQL DBA in 2021","contentPath":"./landscape.md","resourcesPath":"./resources.md","author":{"name":"Alexey Lesovsky","url":"https://github.com/lesovsky"},"isCommunity":false,"isTextHeavy":true,"featured":true,"detailed":false,"versions":[]}')},7559:function(e){"use strict";e.exports=JSON.parse('{"seo":{"title":"AWS Roadmap: Learn to use AWS","description":"Community driven, articles, resources, guides, interview questions, quizzes for react development. Learn to become a modern React developer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to aws","aws roadmap","aws skills","aws skills test","skills for aws","cloud development","what is aws","aws quiz","aws interview questions"]},"title":"AWS","description":"Everything that is there to learn about AWS and the ecosystem in 2021.","featuredTitle":"AWS","featuredDescription":"Step by step guide to learn AWS in 2021","isTextHeavy":false,"isCommunity":false,"isUpcoming":true,"featured":true,"contentPath":"./landscape.md","resourcesPath":"./resources.md","versions":["latest","2018","2017"],"author":{"name":"Kamran Ahmed","url":"https://twitter.com/kamranahmedse"}}')},3204:function(e){"use strict";e.exports=JSON.parse('{"seo":{"title":"QA Roadmap: Learn to become a modern QA engineer","description":"Community driven, articles, resources, guides, interview questions, quizzes for modern QA development. Learn to become a modern QA engineer by following the steps, skills, resources and guides listed in this roadmap.","keywords":["guide to becoming a QA engineer","QA engineer","QA skills","QA development skills","QA development skills test","QA engineer roadmap","become a QA engineer","QA engineer career path","skills for QA development","what is QA engineer","QA engineer quiz","QA engineer interview questions"]},"title":"QA Engineer","description":"Steps to follow in order to become a modern QA Engineer in 2021","featuredTitle":"QA","featuredDescription":"Step by step guide to becoming a modern QA Engineer in 2021","isUpcoming":true,"featured":true,"contentPath":"./landscape.md","resourcesPath":"./resources.md","author":{"name":"Anas Fitiani","url":"https://github.com/anas-qa"}}')},1797:function(e){"use strict";e.exports=JSON.parse('[{"id":"what-is-eventual-consistency","title":"What is Eventual Consistency?","description":"Learn about the different consistency models in distributed systems","isPro":false,"youtubeLink":"https://www.youtube.com/watch?v=rpqsSkTIdAw","authorUsername":"kamranahmedse","duration":"5 minutes","updatedAt":"2021-11-30T19:59:14.191Z","createdAt":"2021-11-30T19:59:14.191Z"},{"id":"ssh-ssl-tls","title":"SSH vs TLS vs SSL","description":"Learn the difference between SSH, TLS and SSL","isPro":false,"youtubeLink":"https://www.youtube.com/watch?v=k3rFFLmQCuY","authorUsername":"kamranahmedse","duration":"3 minutes","updatedAt":"2021-11-25T19:59:14.191Z","createdAt":"2021-11-25T19:59:14.191Z"},{"id":"async-javascript","title":"Asynchronous JavaScript","description":"Learn how to write asynchronous JavaScript using Async/Await","isPro":false,"youtubeLink":"https://www.youtube.com/watch?v=VyIK6SV5f7o","authorUsername":"kamranahmedse","duration":"15 minutes","updatedAt":"2021-11-14T19:59:14.191Z","createdAt":"2021-11-14T19:59:14.191Z"},{"id":"random-number-generators","title":"Random Number Generators","description":"How do random number generators work?","isPro":false,"youtubeLink":"https://www.youtube.com/watch?v=nDv3yXdD0rk","authorUsername":"kamranahmedse","duration":"8 minutes","updatedAt":"2021-11-03T19:59:14.191Z","createdAt":"2021-11-03T19:59:14.191Z"},{"id":"big-o-notation","title":"Big O Notation","description":"Learn what the Big-O notation is and how to calculate the time complexity of an algorithm.","isPro":false,"youtubeLink":"https://www.youtube.com/watch?v=Z0bH0cMY0E8","authorUsername":"kamranahmedse","duration":"8 minutes","updatedAt":"2021-10-25T19:59:14.191Z","createdAt":"2021-10-25T19:59:14.191Z"},{"id":"yaml-in-depth","title":"YAML in Depth","description":"Everything you need to know about YAML","isPro":false,"youtubeLink":"https://www.youtube.com/watch?v=ImHSpwUlNVc","authorUsername":"kamranahmedse","duration":"8 minutes","updatedAt":"2021-10-18T19:59:14.191Z","createdAt":"2021-10-18T19:59:14.191Z"},{"id":"floating-point-arithmetic","title":"Floating Point Arithmetic","description":"Learn how ow the arithmetic operations work on floating-point numbers and why the results might be different from what you may expect.","isPro":false,"youtubeLink":"https://www.youtube.com/watch?v=RIiq4tTt6rI","authorUsername":"kamranahmedse","duration":"4 minutes","updatedAt":"2021-10-10T19:59:14.191Z","createdAt":"2021-10-10T19:59:14.191Z"},{"id":"what-is-cap-theorem","title":"What is CAP Theorem?","description":"An illustrated explanation to CAP theorem with examples and proof.","isPro":false,"youtubeLink":"https://www.youtube.com/watch?v=_RbsFXWRZ10","authorUsername":"kamranahmedse","duration":"8 minutes","updatedAt":"2021-10-05T19:59:14.191Z","createdAt":"2021-10-05T19:59:14.191Z"},{"id":"acid-explained","title":"ACID Explained","description":"Learn what it means for a database to be ACID compliant with examples.","isPro":false,"youtubeLink":"https://www.youtube.com/watch?v=yaQ5YMWkxq4","authorUsername":"kamranahmedse","duration":"5 minutes","updatedAt":"2021-09-26T19:59:14.191Z","createdAt":"2021-09-26T19:59:14.191Z"},{"id":"transport-protocols-tcp-vs-udp","title":"Transport Protocols: TCP vs UDP","description":"Learn about the Transport Layer of the TCP/IP model and different transport protocols.","isPro":false,"youtubeLink":"https://www.youtube.com/watch?v=37AFBZv4_6Y","authorUsername":"kamranahmedse","duration":"10 minutes","updatedAt":"2020-11-21T19:59:14.191Z","createdAt":"2020-11-21T19:59:14.191Z"},{"id":"tcp-ip-model","title":"TCP/IP Model Explained","description":"Learn what is TCP/IP Model and the different layers involved.","isPro":false,"authorUsername":"kamranahmedse","youtubeLink":"https://www.youtube.com/watch?v=F5rni9fr1yE","duration":"5 minutes","updatedAt":"2020-11-06T19:59:14.191Z","createdAt":"2020-11-06T19:59:14.191Z"},{"id":"osi-model","title":"OSI Model Explained","description":"Learn what is OSI Model and the different layers involved.","isPro":false,"youtubeLink":"https://www.youtube.com/watch?v=dV8mjZd1OtU","authorUsername":"kamranahmedse","duration":"7 minutes","updatedAt":"2020-10-24T19:59:14.191Z","createdAt":"2020-10-24T19:59:14.191Z"},{"id":"freeze-and-seal-objects-in-javascript","title":"Freeze and Seal in JavaScript","description":"Learn what is OSI Model and the different layers involved.","youtubeLink":"https://www.youtube.com/watch?v=O3uT2l6vgZ8","isPro":false,"authorUsername":"kamranahmedse","duration":"6 minutes","updatedAt":"2020-10-16T19:59:14.191Z","createdAt":"2020-10-16T19:59:14.191Z"},{"id":"all-about-http-caching","title":"All about HTTP Caching","description":"Learn what is HTTP caching, places for caching and different caching headers.","youtubeLink":"https://www.youtube.com/watch?v=HiBDZgTNpXY","isPro":false,"authorUsername":"kamranahmedse","duration":"13 minutes","updatedAt":"2020-10-04T19:59:14.191Z","createdAt":"2020-10-04T19:59:14.191Z"},{"id":"content-delivery-networks","title":"Content Delivery Networks","description":"Learn what the CDNs are and the difference between push CDN vs pull CDN.","youtubeLink":"https://www.youtube.com/watch?v=6DXEPcXKQNY","isPro":false,"authorUsername":"kamranahmedse","duration":"4 minutes","updatedAt":"2020-09-26T19:59:14.191Z","createdAt":"2020-09-26T19:59:14.191Z"},{"id":"load-balancers-101","title":"Load Balancers 101","description":"Learn the basics of load balancers, types and different algorithms.","youtubeLink":"https://www.youtube.com/watch?v=galcDRNd5Ow","isPro":false,"authorUsername":"kamranahmedse","duration":"9 minutes","updatedAt":"2020-09-18T19:59:14.191Z","createdAt":"2020-09-18T19:59:14.191Z"},{"id":"dns-records","title":"DNS Records","description":"Learn what the DNS is and how a website is found on the internet.","youtubeLink":"https://www.youtube.com/watch?v=7lxgpKh_fRY","isPro":false,"authorUsername":"kamranahmedse","duration":"6 minutes","updatedAt":"2020-08-31T19:59:14.191Z","createdAt":"2020-08-31T19:59:14.191Z"},{"id":"dns-explained","title":"DNS and how does it work?","description":"Learn what the DNS is and how a website is found on the internet.","youtubeLink":"https://www.youtube.com/watch?v=Wj0od2ag5sk","isPro":false,"authorUsername":"kamranahmedse","duration":"5 minutes","updatedAt":"2020-08-17T19:59:14.191Z","createdAt":"2020-08-17T19:59:14.191Z"},{"id":"system-design-101","title":"System Design 101","description":"Learn about all the bits and pieces of system design.","youtubeLink":"https://www.youtube.com/watch?v=Y-Gl4HEyeUQ","isPro":false,"authorUsername":"kamranahmedse","duration":"7 minutes","updatedAt":"2020-08-08T19:59:14.191Z","createdAt":"2020-08-08T19:59:14.191Z"},{"id":"javascript-fetch-api","title":"JavaScript Fetch API","description":"Learn how to use JavaScript\'s Fetch API to interact with remote API.","youtubeLink":"https://www.youtube.com/watch?v=-ZI0ea5O2oA","isPro":false,"authorUsername":"kamranahmedse","duration":"3 minutes","updatedAt":"2020-08-02T19:59:14.191Z","createdAt":"2020-08-02T19:59:14.191Z"},{"id":"scaling-the-unscalable","title":"Scaling the Unscalable","description":"Learn the basics of System Design and understand how to build a scalable application.","youtubeLink":"https://www.youtube.com/watch?v=a2rcgzludDU","isPro":false,"authorUsername":"kamranahmedse","duration":"10 minutes","updatedAt":"2020-07-26T19:59:14.191Z","createdAt":"2020-07-26T19:59:14.191Z"},{"id":"promises-in-javascript","title":"All about Promises in JavaScript","youtubeLink":"https://www.youtube.com/watch?v=BvrkobaCVVE","description":"Learn how to write asynchronous code in JavaScript using promises.","isPro":false,"authorUsername":"kamranahmedse","duration":"8 minutes","updatedAt":"2020-07-20T19:59:14.191Z","createdAt":"2020-07-20T19:59:14.191Z"},{"id":"how-to-use-github-actions","title":"Automate with GitHub Actions","description":"Learn how to implement CI/CD with GitHub Actions","youtubeLink":"https://www.youtube.com/watch?v=nyKZTKQS_EQ","isPro":false,"authorUsername":"kamranahmedse","duration":"6 minutes","updatedAt":"2020-07-13T19:59:14.191Z","createdAt":"2020-07-13T19:59:14.191Z"},{"id":"what-is-dependency-injection","title":"What is Dependency Injection?","description":"Learn what is dependency injection and how to write better code with the help of it.","youtubeLink":"https://www.youtube.com/watch?v=0yc2UANSDiw","isPro":false,"authorUsername":"kamranahmedse","duration":"3 minutes","updatedAt":"2020-07-04T19:59:14.191Z","createdAt":"2020-07-04T19:59:14.191Z"},{"id":"how-to-use-css-variables","title":"How to use CSS Variables?","description":"Learn how to write scalable CSS using CSS Variables.","youtubeLink":"https://www.youtube.com/watch?v=lgaxU7CRmxU","isPro":false,"authorUsername":"kamranahmedse","duration":"5 minutes","updatedAt":"2020-07-03T19:59:14.191Z","createdAt":"2020-07-03T19:59:14.191Z"},{"id":"what-is-dom-shadow-dom-virtual-dom","title":"DOM, Shadow DOM, Virtual DOM","description":"Learn what is DOM, Shadow DOM and Virtual DOM and how they work.","youtubeLink":"https://www.youtube.com/watch?v=7Tok22qxPzQ","isPro":false,"authorUsername":"kamranahmedse","duration":"6 minutes","updatedAt":"2020-07-20T19:59:14.191Z","createdAt":"2020-07-20T19:59:14.191Z"},{"id":"practical-intro-to-react","title":"Practical Introduction to React","description":"Learn how to create a React Application with practical example.","youtubeLink":"https://www.youtube.com/watch?v=NyG7YJWJd6s&list=PLkZYeFmDuaN3NDLnBG01-sH2-nwn43mYu","isPro":false,"authorUsername":"kamranahmedse","duration":"40 minutes","updatedAt":"2020-07-09T19:59:14.191Z","createdAt":"2020-07-09T19:59:14.191Z"},{"id":"arrays-and-objects-in-javascript","title":"Arrays and Objects in JavaScript","description":"Learn how to manipulate arrays and objects in JavaScript.","youtubeLink":"https://www.youtube.com/watch?v=n3NKGsM3iEw","isPro":false,"authorUsername":"kamranahmedse","duration":"12 minutes","updatedAt":"2020-05-09T19:59:14.191Z","createdAt":"2020-05-09T19:59:14.191Z"}]')}}]); |