diff --git a/.astro/settings.json b/.astro/settings.json index 6bf0f5b99..0b2c6e461 100644 --- a/.astro/settings.json +++ b/.astro/settings.json @@ -3,6 +3,6 @@ "enabled": false }, "_variables": { - "lastUpdateCheck": 1721975455427 + "lastUpdateCheck": 1721257136269 } } \ No newline at end of file diff --git a/contributing.md b/contributing.md index 384816d97..84859504e 100644 --- a/contributing.md +++ b/contributing.md @@ -76,8 +76,6 @@ It's important to add a valid type, this will help us categorize the content and -

Write meaningful commit messages
Meaningful commit messages help speed up the review process as well as help other contributors in gaining a good overview of the repositories commit history without having to dive into every commit. - - (See the following guide on how to write good [commit messages](https://www.freecodecamp.org/news/how-to-write-better-git-commit-messages/)).

-

Look at the existing issues/pull requests before opening new ones

diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..8bd87ca84 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,12019 @@ +{ + "name": "roadmap.sh", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "roadmap.sh", + "version": "1.0.0", + "dependencies": { + "@astrojs/node": "^8.3.2", + "@astrojs/react": "^3.6.0", + "@astrojs/sitemap": "^3.1.6", + "@astrojs/tailwind": "^5.1.0", + "@fingerprintjs/fingerprintjs": "^4.4.1", + "@nanostores/react": "^0.7.2", + "@napi-rs/image": "^1.9.2", + "@resvg/resvg-js": "^2.6.2", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "astro": "^4.11.3", + "clsx": "^2.1.1", + "dayjs": "^1.11.11", + "dom-to-image": "^2.6.0", + "dracula-prism": "^2.1.16", + "gray-matter": "^4.0.3", + "htm": "^3.1.1", + "image-size": "^1.1.1", + "jose": "^5.6.2", + "js-cookie": "^3.0.5", + "lucide-react": "^0.399.0", + "nanoid": "^5.0.7", + "nanostores": "^0.10.3", + "node-html-parser": "^6.1.13", + "npm-check-updates": "^16.14.20", + "playwright": "^1.45.0", + "prismjs": "^1.29.0", + "react": "^18.3.1", + "react-calendar-heatmap": "^1.9.0", + "react-confetti": "^6.1.0", + "react-dom": "^18.3.1", + "react-tooltip": "^5.27.0", + "reactflow": "^11.11.4", + "rehype-external-links": "^3.0.0", + "remark-parse": "^11.0.0", + "roadmap-renderer": "^1.0.6", + "satori": "^0.10.13", + "satori-html": "^0.3.2", + "sharp": "^0.33.4", + "slugify": "^1.6.6", + "tailwind-merge": "^2.3.0", + "tailwindcss": "^3.4.4", + "unified": "^11.0.5", + "zustand": "^4.5.4" + }, + "devDependencies": { + "@playwright/test": "^1.45.0", + "@tailwindcss/typography": "^0.5.13", + "@types/dom-to-image": "^2.6.7", + "@types/js-cookie": "^3.0.6", + "@types/prismjs": "^1.26.4", + "@types/react-calendar-heatmap": "^1.6.7", + "csv-parser": "^3.0.0", + "gh-pages": "^6.1.1", + "js-yaml": "^4.1.0", + "markdown-it": "^14.1.0", + "openai": "^4.52.2", + "prettier": "^3.3.2", + "prettier-plugin-astro": "^0.14.0", + "prettier-plugin-tailwindcss": "^0.6.5", + "tsx": "^4.16.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@astrojs/compiler": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.9.2.tgz", + "integrity": "sha512-Vpu0Ffsj8SoV+N0DFHlxxOMKHwSC9059Xy/OlG1t6uFYSoJXxkBC2WyF6igO7x10V+8uJrhOxaXr3nA90kJXow==" + }, + "node_modules/@astrojs/internal-helpers": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.4.1.tgz", + "integrity": "sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g==" + }, + "node_modules/@astrojs/markdown-remark": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-5.2.0.tgz", + "integrity": "sha512-vWGM24KZXz11jR3JO+oqYU3T2qpuOi4uGivJ9SQLCAI01+vEkHC60YJMRvHPc+hwd60F7euNs1PeOEixIIiNQw==", + "dependencies": { + "@astrojs/prism": "3.1.0", + "github-slugger": "^2.0.0", + "hast-util-from-html": "^2.0.1", + "hast-util-to-text": "^4.0.2", + "import-meta-resolve": "^4.1.0", + "mdast-util-definitions": "^6.0.0", + "rehype-raw": "^7.0.0", + "rehype-stringify": "^10.0.0", + "remark-gfm": "^4.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.1.0", + "remark-smartypants": "^3.0.2", + "shiki": "^1.10.3", + "unified": "^11.0.5", + "unist-util-remove-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.1", + "vfile": "^6.0.2" + } + }, + "node_modules/@astrojs/node": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/@astrojs/node/-/node-8.3.2.tgz", + "integrity": "sha512-Upv0D+9b3RXp7XViQTtrijaDqihHWbVHLdJQ2sxtPOEtw2GDrVxuC6LmXIUew5YvJ9Ylmpst6KizVwO8d/K9/Q==", + "dependencies": { + "send": "^0.18.0", + "server-destroy": "^1.0.1" + }, + "peerDependencies": { + "astro": "^4.2.0" + } + }, + "node_modules/@astrojs/prism": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.1.0.tgz", + "integrity": "sha512-Z9IYjuXSArkAUx3N6xj6+Bnvx8OdUSHA8YoOgyepp3+zJmtVYJIl/I18GozdJVW1p5u/CNpl3Km7/gwTJK85cw==", + "dependencies": { + "prismjs": "^1.29.0" + }, + "engines": { + "node": "^18.17.1 || ^20.3.0 || >=21.0.0" + } + }, + "node_modules/@astrojs/react": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@astrojs/react/-/react-3.6.0.tgz", + "integrity": "sha512-YGLxy5jCU9xKG/HAvYsWMcvrQVIhqVe0Sda3Z5UtP32rfXeG6B9J1xQvnx+kRSFTpIrj+7AwPSDSehLbCHJ56w==", + "dependencies": { + "@vitejs/plugin-react": "^4.3.1", + "ultrahtml": "^1.5.3" + }, + "engines": { + "node": "^18.17.1 || ^20.3.0 || >=21.0.0" + }, + "peerDependencies": { + "@types/react": "^17.0.50 || ^18.0.21", + "@types/react-dom": "^17.0.17 || ^18.0.6", + "react": "^17.0.2 || ^18.0.0 || ^19.0.0-beta", + "react-dom": "^17.0.2 || ^18.0.0 || ^19.0.0-beta" + } + }, + "node_modules/@astrojs/sitemap": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.1.6.tgz", + "integrity": "sha512-1Qp2NvAzVImqA6y+LubKi1DVhve/hXXgFvB0szxiipzh7BvtuKe4oJJ9dXSqaubaTkt4nMa6dv6RCCAYeB6xaQ==", + "dependencies": { + "sitemap": "^7.1.2", + "stream-replace-string": "^2.0.0", + "zod": "^3.23.8" + } + }, + "node_modules/@astrojs/tailwind": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@astrojs/tailwind/-/tailwind-5.1.0.tgz", + "integrity": "sha512-BJoCDKuWhU9FT2qYg+fr6Nfb3qP4ShtyjXGHKA/4mHN94z7BGcmauQK23iy+YH5qWvTnhqkd6mQPQ1yTZTe9Ig==", + "dependencies": { + "autoprefixer": "^10.4.15", + "postcss": "^8.4.28", + "postcss-load-config": "^4.0.2" + }, + "peerDependencies": { + "astro": "^3.0.0 || ^4.0.0", + "tailwindcss": "^3.0.24" + } + }, + "node_modules/@astrojs/telemetry": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.1.0.tgz", + "integrity": "sha512-/ca/+D8MIKEC8/A9cSaPUqQNZm+Es/ZinRv0ZAzvu2ios7POQSsVD+VOj7/hypWNsNM3T7RpfgNq7H2TU1KEHA==", + "dependencies": { + "ci-info": "^4.0.0", + "debug": "^4.3.4", + "dlv": "^1.1.3", + "dset": "^3.1.3", + "is-docker": "^3.0.0", + "is-wsl": "^3.0.0", + "which-pm-runs": "^1.1.0" + }, + "engines": { + "node": "^18.17.1 || ^20.3.0 || >=21.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.9.tgz", + "integrity": "sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.9.tgz", + "integrity": "sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.9", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-module-transforms": "^7.24.9", + "@babel/helpers": "^7.24.8", + "@babel/parser": "^7.24.8", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.9", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.10.tgz", + "integrity": "sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==", + "dependencies": { + "@babel/types": "^7.24.9", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", + "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", + "dependencies": { + "@babel/compat-data": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz", + "integrity": "sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.8.tgz", + "integrity": "sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==", + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz", + "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.24.7.tgz", + "integrity": "sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz", + "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz", + "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz", + "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.8", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.8", + "@babel/types": "^7.24.8", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.9.tgz", + "integrity": "sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==", + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@emnapi/core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.2.0.tgz", + "integrity": "sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w==", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.0.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", + "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz", + "integrity": "sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@fingerprintjs/fingerprintjs": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@fingerprintjs/fingerprintjs/-/fingerprintjs-4.4.3.tgz", + "integrity": "sha512-sm0ZmDp5Oeq8hQTf+bAHKsuuteVAYme/YOY9UPP/GrUBrR5Fzl1P5oOv6F5LvyBrO7qLjU5HQkfU0MmFte/8xA==", + "dependencies": { + "tslib": "^2.4.1" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.4.tgz", + "integrity": "sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==", + "dependencies": { + "@floating-ui/utils": "^0.2.4" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.7.tgz", + "integrity": "sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.4" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.4.tgz", + "integrity": "sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==" + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.4.tgz", + "integrity": "sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "glibc": ">=2.26", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.2" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.4.tgz", + "integrity": "sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "glibc": ">=2.26", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.2" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.2.tgz", + "integrity": "sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "macos": ">=11", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.2.tgz", + "integrity": "sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "macos": ">=10.13", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.2.tgz", + "integrity": "sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.28", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.2.tgz", + "integrity": "sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.26", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.2.tgz", + "integrity": "sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.28", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.2.tgz", + "integrity": "sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.26", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.2.tgz", + "integrity": "sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "musl": ">=1.2.2", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.2.tgz", + "integrity": "sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "musl": ">=1.2.2", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.4.tgz", + "integrity": "sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.28", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.2" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.4.tgz", + "integrity": "sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.26", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.2" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.4.tgz", + "integrity": "sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.31", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.2" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.4.tgz", + "integrity": "sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "glibc": ">=2.26", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.2" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.4.tgz", + "integrity": "sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "musl": ">=1.2.2", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.2" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.4.tgz", + "integrity": "sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "musl": ">=1.2.2", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.2" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.4.tgz", + "integrity": "sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==", + "cpu": [ + "wasm32" + ], + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.1.1" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.4.tgz", + "integrity": "sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.4.tgz", + "integrity": "sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0", + "yarn": ">=3.2.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nanostores/react": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@nanostores/react/-/react-0.7.2.tgz", + "integrity": "sha512-e3OhHJFv3NMSFYDgREdlAQqkyBTHJM91s31kOZ4OvZwJKdFk5BLk0MLbh51EOGUz9QGX2aCHfy1RvweSi7fgwA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "nanostores": "^0.9.0 || ^0.10.0", + "react": ">=18.0.0" + } + }, + "node_modules/@napi-rs/image": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@napi-rs/image/-/image-1.9.2.tgz", + "integrity": "sha512-CvTC3XL5/BzHaVkJOZy31xOJLNSY3rBuUIQixaE/LwEQNSUdaxWa9gUyUkC9lUekkUp26CzaLLj2w7l7bxB1ag==", + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@napi-rs/image-android-arm64": "1.9.2", + "@napi-rs/image-darwin-arm64": "1.9.2", + "@napi-rs/image-darwin-x64": "1.9.2", + "@napi-rs/image-freebsd-x64": "1.9.2", + "@napi-rs/image-linux-arm-gnueabihf": "1.9.2", + "@napi-rs/image-linux-arm64-gnu": "1.9.2", + "@napi-rs/image-linux-arm64-musl": "1.9.2", + "@napi-rs/image-linux-x64-gnu": "1.9.2", + "@napi-rs/image-linux-x64-musl": "1.9.2", + "@napi-rs/image-wasm32-wasi": "1.9.2", + "@napi-rs/image-win32-ia32-msvc": "1.9.2", + "@napi-rs/image-win32-x64-msvc": "1.9.2" + } + }, + "node_modules/@napi-rs/image-android-arm64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@napi-rs/image-android-arm64/-/image-android-arm64-1.9.2.tgz", + "integrity": "sha512-DQNI06ukKqpF4eogz9zyxfU+GYp11TfDqSNWKmk/IRU2oiB0DEgskuj7ZzaKMPJWFRZjI86V233UrrNRh76h2Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/image-darwin-arm64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@napi-rs/image-darwin-arm64/-/image-darwin-arm64-1.9.2.tgz", + "integrity": "sha512-w+0X87sORbC2uDpH7NAdELOnvzhu3dB19h2oMaD+YIv/+CVXV5eK2PS3zkRgMLCinVtFOZFZK3dFbHU3kncCRw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/image-darwin-x64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@napi-rs/image-darwin-x64/-/image-darwin-x64-1.9.2.tgz", + "integrity": "sha512-8SnFDcgUSoL6Y38lstXi5FYECD1f4dJqQe2UCTwciED8gZnpC8Pju7JYJWcYgHHXn1JnKP9T1lPlSaX+L56EgA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/image-freebsd-x64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@napi-rs/image-freebsd-x64/-/image-freebsd-x64-1.9.2.tgz", + "integrity": "sha512-oS0+iSb8AekjaHgTZdARKceqTPxSokByLzNQ9vGf2lZlTwlRFmXGq4XYutyzqzRuLT3BATLwtGMXiguMEYMuUw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/image-linux-arm-gnueabihf": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@napi-rs/image-linux-arm-gnueabihf/-/image-linux-arm-gnueabihf-1.9.2.tgz", + "integrity": "sha512-bsbZSvw3wa7yaLVvz4M5VhJaB9LmgjAL3W7rnmXaX5BgpaQImNDm9MrxPG8ennr9Pbn6qDtCSioOz53ZgWUtgg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/image-linux-arm64-gnu": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@napi-rs/image-linux-arm64-gnu/-/image-linux-arm64-gnu-1.9.2.tgz", + "integrity": "sha512-tiN9RMwEIcA8TodvmxdeJqsRdUGKAmxQ2aa0FkYjshdkmChG/sqUtUoL9LdmDf1tw1IACrSuT2Wj4LevxBdIJA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/image-linux-arm64-musl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@napi-rs/image-linux-arm64-musl/-/image-linux-arm64-musl-1.9.2.tgz", + "integrity": "sha512-w6Sx1j9PtqO2bP3Jl6nuMryzxA3zsoc1U8u1H7AZketyhxXIxqVm0oGomZGs5Bgshzau45bcWinp6GWrlSwt6A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/image-linux-x64-gnu": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@napi-rs/image-linux-x64-gnu/-/image-linux-x64-gnu-1.9.2.tgz", + "integrity": "sha512-yB/s9wNB/9YHpQ4TwN8NWMA1tEK1gPLQwtysa68yMdHczb+7BTCKCIYIHD9rUulyT1Q/VgLIJCUMoxve0pIoeg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/image-linux-x64-musl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@napi-rs/image-linux-x64-musl/-/image-linux-x64-musl-1.9.2.tgz", + "integrity": "sha512-x9dRlo27xYXonh+gZZTqQL4lAfi/lhi8K8LE2hczbZffqmXvWU7NuHSgPVVeU/nvcMMqw1Cjzn81h7ny44SLbQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/image-wasm32-wasi": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@napi-rs/image-wasm32-wasi/-/image-wasm32-wasi-1.9.2.tgz", + "integrity": "sha512-BeA1wzzIG4+tdAwXWaAjObBOC6SzIbq0IhykSQ1xCGvYwd8stsn7ktPRz5b55PDo+Doj65PCT4H/xUgFcSiLCw==", + "cpu": [ + "wasm32" + ], + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@napi-rs/image-win32-ia32-msvc": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@napi-rs/image-win32-ia32-msvc/-/image-win32-ia32-msvc-1.9.2.tgz", + "integrity": "sha512-JDJP04Hg9Qru5Pth4gfBkXz9hZd/otx6ymi2VTuSKDFjpJIjk4tyUr9+BIE1ghFCHDzeJGVe7CDGdF/NTA1xrg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/image-win32-x64-msvc": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@napi-rs/image-win32-x64-msvc/-/image-win32-x64-msvc-1.9.2.tgz", + "integrity": "sha512-baRyTED6FkTsPliSOH7x8TV/cyAST9y6L1ClSgSCVEx7+W8MKKig90fF302kEa2PwMAyrXM3Ytq9KuIC7xJ+eA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", + "integrity": "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.1.0", + "@emnapi/runtime": "^1.1.0", + "@tybys/wasm-util": "^0.9.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/git": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz", + "integrity": "sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==", + "dependencies": { + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/@npmcli/git/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", + "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/move-file/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "dependencies": { + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", + "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@playwright/test": { + "version": "1.45.2", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.45.2.tgz", + "integrity": "sha512-JxG9eq92ET75EbVi3s+4sYbcG7q72ECeZNbdBlaMkGcNbiDQ4cAi8U2QP5oKkOx+1gpaiL1LDStmzCaEM1Z6fQ==", + "dev": true, + "dependencies": { + "playwright": "1.45.2" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/@pnpm/npm-conf": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", + "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", + "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@reactflow/background": { + "version": "11.3.14", + "resolved": "https://registry.npmjs.org/@reactflow/background/-/background-11.3.14.tgz", + "integrity": "sha512-Gewd7blEVT5Lh6jqrvOgd4G6Qk17eGKQfsDXgyRSqM+CTwDqRldG2LsWN4sNeno6sbqVIC2fZ+rAUBFA9ZEUDA==", + "dependencies": { + "@reactflow/core": "11.11.4", + "classcat": "^5.0.3", + "zustand": "^4.4.1" + }, + "peerDependencies": { + "react": ">=17", + "react-dom": ">=17" + } + }, + "node_modules/@reactflow/controls": { + "version": "11.2.14", + "resolved": "https://registry.npmjs.org/@reactflow/controls/-/controls-11.2.14.tgz", + "integrity": "sha512-MiJp5VldFD7FrqaBNIrQ85dxChrG6ivuZ+dcFhPQUwOK3HfYgX2RHdBua+gx+40p5Vw5It3dVNp/my4Z3jF0dw==", + "dependencies": { + "@reactflow/core": "11.11.4", + "classcat": "^5.0.3", + "zustand": "^4.4.1" + }, + "peerDependencies": { + "react": ">=17", + "react-dom": ">=17" + } + }, + "node_modules/@reactflow/core": { + "version": "11.11.4", + "resolved": "https://registry.npmjs.org/@reactflow/core/-/core-11.11.4.tgz", + "integrity": "sha512-H4vODklsjAq3AMq6Np4LE12i1I4Ta9PrDHuBR9GmL8uzTt2l2jh4CiQbEMpvMDcp7xi4be0hgXj+Ysodde/i7Q==", + "dependencies": { + "@types/d3": "^7.4.0", + "@types/d3-drag": "^3.0.1", + "@types/d3-selection": "^3.0.3", + "@types/d3-zoom": "^3.0.1", + "classcat": "^5.0.3", + "d3-drag": "^3.0.0", + "d3-selection": "^3.0.0", + "d3-zoom": "^3.0.0", + "zustand": "^4.4.1" + }, + "peerDependencies": { + "react": ">=17", + "react-dom": ">=17" + } + }, + "node_modules/@reactflow/minimap": { + "version": "11.7.14", + "resolved": "https://registry.npmjs.org/@reactflow/minimap/-/minimap-11.7.14.tgz", + "integrity": "sha512-mpwLKKrEAofgFJdkhwR5UQ1JYWlcAAL/ZU/bctBkuNTT1yqV+y0buoNVImsRehVYhJwffSWeSHaBR5/GJjlCSQ==", + "dependencies": { + "@reactflow/core": "11.11.4", + "@types/d3-selection": "^3.0.3", + "@types/d3-zoom": "^3.0.1", + "classcat": "^5.0.3", + "d3-selection": "^3.0.0", + "d3-zoom": "^3.0.0", + "zustand": "^4.4.1" + }, + "peerDependencies": { + "react": ">=17", + "react-dom": ">=17" + } + }, + "node_modules/@reactflow/node-resizer": { + "version": "2.2.14", + "resolved": "https://registry.npmjs.org/@reactflow/node-resizer/-/node-resizer-2.2.14.tgz", + "integrity": "sha512-fwqnks83jUlYr6OHcdFEedumWKChTHRGw/kbCxj0oqBd+ekfs+SIp4ddyNU0pdx96JIm5iNFS0oNrmEiJbbSaA==", + "dependencies": { + "@reactflow/core": "11.11.4", + "classcat": "^5.0.4", + "d3-drag": "^3.0.0", + "d3-selection": "^3.0.0", + "zustand": "^4.4.1" + }, + "peerDependencies": { + "react": ">=17", + "react-dom": ">=17" + } + }, + "node_modules/@reactflow/node-toolbar": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@reactflow/node-toolbar/-/node-toolbar-1.3.14.tgz", + "integrity": "sha512-rbynXQnH/xFNu4P9H+hVqlEUafDCkEoCy0Dg9mG22Sg+rY/0ck6KkrAQrYrTgXusd+cEJOMK0uOOFCK2/5rSGQ==", + "dependencies": { + "@reactflow/core": "11.11.4", + "classcat": "^5.0.3", + "zustand": "^4.4.1" + }, + "peerDependencies": { + "react": ">=17", + "react-dom": ">=17" + } + }, + "node_modules/@resvg/resvg-js": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js/-/resvg-js-2.6.2.tgz", + "integrity": "sha512-xBaJish5OeGmniDj9cW5PRa/PtmuVU3ziqrbr5xJj901ZDN4TosrVaNZpEiLZAxdfnhAe7uQ7QFWfjPe9d9K2Q==", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@resvg/resvg-js-android-arm-eabi": "2.6.2", + "@resvg/resvg-js-android-arm64": "2.6.2", + "@resvg/resvg-js-darwin-arm64": "2.6.2", + "@resvg/resvg-js-darwin-x64": "2.6.2", + "@resvg/resvg-js-linux-arm-gnueabihf": "2.6.2", + "@resvg/resvg-js-linux-arm64-gnu": "2.6.2", + "@resvg/resvg-js-linux-arm64-musl": "2.6.2", + "@resvg/resvg-js-linux-x64-gnu": "2.6.2", + "@resvg/resvg-js-linux-x64-musl": "2.6.2", + "@resvg/resvg-js-win32-arm64-msvc": "2.6.2", + "@resvg/resvg-js-win32-ia32-msvc": "2.6.2", + "@resvg/resvg-js-win32-x64-msvc": "2.6.2" + } + }, + "node_modules/@resvg/resvg-js-android-arm-eabi": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-android-arm-eabi/-/resvg-js-android-arm-eabi-2.6.2.tgz", + "integrity": "sha512-FrJibrAk6v29eabIPgcTUMPXiEz8ssrAk7TXxsiZzww9UTQ1Z5KAbFJs+Z0Ez+VZTYgnE5IQJqBcoSiMebtPHA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-android-arm64": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-android-arm64/-/resvg-js-android-arm64-2.6.2.tgz", + "integrity": "sha512-VcOKezEhm2VqzXpcIJoITuvUS/fcjIw5NA/w3tjzWyzmvoCdd+QXIqy3FBGulWdClvp4g+IfUemigrkLThSjAQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-darwin-arm64": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-darwin-arm64/-/resvg-js-darwin-arm64-2.6.2.tgz", + "integrity": "sha512-nmok2LnAd6nLUKI16aEB9ydMC6Lidiiq2m1nEBDR1LaaP7FGs4AJ90qDraxX+CWlVuRlvNjyYJTNv8qFjtL9+A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-darwin-x64": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-darwin-x64/-/resvg-js-darwin-x64-2.6.2.tgz", + "integrity": "sha512-GInyZLjgWDfsVT6+SHxQVRwNzV0AuA1uqGsOAW+0th56J7Nh6bHHKXHBWzUrihxMetcFDmQMAX1tZ1fZDYSRsw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-linux-arm-gnueabihf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm-gnueabihf/-/resvg-js-linux-arm-gnueabihf-2.6.2.tgz", + "integrity": "sha512-YIV3u/R9zJbpqTTNwTZM5/ocWetDKGsro0SWp70eGEM9eV2MerWyBRZnQIgzU3YBnSBQ1RcxRZvY/UxwESfZIw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-linux-arm64-gnu": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm64-gnu/-/resvg-js-linux-arm64-gnu-2.6.2.tgz", + "integrity": "sha512-zc2BlJSim7YR4FZDQ8OUoJg5holYzdiYMeobb9pJuGDidGL9KZUv7SbiD4E8oZogtYY42UZEap7dqkkYuA91pg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-linux-arm64-musl": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm64-musl/-/resvg-js-linux-arm64-musl-2.6.2.tgz", + "integrity": "sha512-3h3dLPWNgSsD4lQBJPb4f+kvdOSJHa5PjTYVsWHxLUzH4IFTJUAnmuWpw4KqyQ3NA5QCyhw4TWgxk3jRkQxEKg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-linux-x64-gnu": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-gnu/-/resvg-js-linux-x64-gnu-2.6.2.tgz", + "integrity": "sha512-IVUe+ckIerA7xMZ50duAZzwf1U7khQe2E0QpUxu5MBJNao5RqC0zwV/Zm965vw6D3gGFUl7j4m+oJjubBVoftw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-linux-x64-musl": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-musl/-/resvg-js-linux-x64-musl-2.6.2.tgz", + "integrity": "sha512-UOf83vqTzoYQO9SZ0fPl2ZIFtNIz/Rr/y+7X8XRX1ZnBYsQ/tTb+cj9TE+KHOdmlTFBxhYzVkP2lRByCzqi4jQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-win32-arm64-msvc": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-arm64-msvc/-/resvg-js-win32-arm64-msvc-2.6.2.tgz", + "integrity": "sha512-7C/RSgCa+7vqZ7qAbItfiaAWhyRSoD4l4BQAbVDqRRsRgY+S+hgS3in0Rxr7IorKUpGE69X48q6/nOAuTJQxeQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-win32-ia32-msvc": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-ia32-msvc/-/resvg-js-win32-ia32-msvc-2.6.2.tgz", + "integrity": "sha512-har4aPAlvjnLcil40AC77YDIk6loMawuJwFINEM7n0pZviwMkMvjb2W5ZirsNOZY4aDbo5tLx0wNMREp5Brk+w==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@resvg/resvg-js-win32-x64-msvc": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-x64-msvc/-/resvg-js-win32-x64-msvc-2.6.2.tgz", + "integrity": "sha512-ZXtYhtUr5SSaBrUDq7DiyjOFJqBVL/dOBN7N/qmi/pO0IgiWW/f/ue3nbvu9joWE5aAKDoIzy/CxsY0suwGosQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.1.tgz", + "integrity": "sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.1.tgz", + "integrity": "sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.1.tgz", + "integrity": "sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.1.tgz", + "integrity": "sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.1.tgz", + "integrity": "sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.1.tgz", + "integrity": "sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.1.tgz", + "integrity": "sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.1.tgz", + "integrity": "sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.1.tgz", + "integrity": "sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.1.tgz", + "integrity": "sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.1.tgz", + "integrity": "sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.1.tgz", + "integrity": "sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.1.tgz", + "integrity": "sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.1.tgz", + "integrity": "sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.1.tgz", + "integrity": "sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.1.tgz", + "integrity": "sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@shikijs/core": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.10.3.tgz", + "integrity": "sha512-D45PMaBaeDHxww+EkcDQtDAtzv00Gcsp72ukBtaLSmqRvh0WgGMq3Al0rl1QQBZfuneO75NXMIzEZGFitThWbg==", + "dependencies": { + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shuding/opentype.js": { + "version": "1.4.0-beta.0", + "resolved": "https://registry.npmjs.org/@shuding/opentype.js/-/opentype.js-1.4.0-beta.0.tgz", + "integrity": "sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==", + "dependencies": { + "fflate": "^0.7.3", + "string.prototype.codepointat": "^0.2.1" + }, + "bin": { + "ot": "bin/ot" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@sigstore/bundle": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", + "integrity": "sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==", + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", + "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz", + "integrity": "sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==", + "dependencies": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "make-fetch-happen": "^11.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/tuf": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz", + "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==", + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0", + "tuf-js": "^1.1.7" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@tailwindcss/typography": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.13.tgz", + "integrity": "sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==", + "dev": true, + "dependencies": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "postcss-selector-parser": "6.0.10" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tufjs/canonical-json": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", + "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz", + "integrity": "sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==", + "dependencies": { + "@tufjs/canonical-json": "1.0.0", + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", + "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" + }, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==" + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", + "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==" + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==" + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==" + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==" + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==" + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==" + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", + "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==" + }, + "node_modules/@types/d3-selection": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.10.tgz", + "integrity": "sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg==" + }, + "node_modules/@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" + }, + "node_modules/@types/d3-transition": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.8.tgz", + "integrity": "sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==", + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/dom-to-image": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/@types/dom-to-image/-/dom-to-image-2.6.7.tgz", + "integrity": "sha512-me5VbCv+fcXozblWwG13krNBvuEOm6kA5xoa4RrjDJCNFOZSWR3/QLtOXimBHk1Fisq69Gx3JtOoXtg1N1tijg==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/geojson": { + "version": "7946.0.14", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", + "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + }, + "node_modules/@types/js-cookie": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.6.tgz", + "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==", + "dev": true + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + }, + "node_modules/@types/nlcst": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", + "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/node": { + "version": "18.19.41", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.41.tgz", + "integrity": "sha512-LX84pRJ+evD2e2nrgYCHObGWkiQJ1mL+meAgbvnwk/US6vmMY7S2ygBTGV2Jw91s9vUsLSXeDEkUHZIJGLrhsg==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", + "dev": true, + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/prismjs": { + "version": "1.26.4", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.4.tgz", + "integrity": "sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" + }, + "node_modules/@types/react": { + "version": "18.3.3", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", + "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-calendar-heatmap": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@types/react-calendar-heatmap/-/react-calendar-heatmap-1.6.7.tgz", + "integrity": "sha512-xWBS9iOvw+aCidPk8QwCH69OCO7jnj6/9TjooqGQ9W+rA5m1aw36GjQMlSYKAg86otDeg9dzA+hSAIcvw/y9Rg==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/sax": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", + "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/semver-utils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/semver-utils/-/semver-utils-1.1.3.tgz", + "integrity": "sha512-T+YwkslhsM+CeuhYUxyAjWm7mJ5am/K10UX40RuA6k6Lc7eGtq8iY2xOzy7Vq0GOqhl/xZl5l2FwURZMTPTUww==" + }, + "node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz", + "integrity": "sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==", + "dependencies": { + "@babel/core": "^7.24.5", + "@babel/plugin-transform-react-jsx-self": "^7.24.5", + "@babel/plugin-transform-react-jsx-source": "^7.24.1", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "deprecated": "This package is no longer supported.", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-iterate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", + "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/astro": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/astro/-/astro-4.12.1.tgz", + "integrity": "sha512-KwBoXYL4L1XLTTjoj4z6q1g/tZfWDKR1pKSTAshVqt5FH2eu82pnGW737SxcT/Ssg/hLlb9KnWiclXmqWpcbCQ==", + "dependencies": { + "@astrojs/compiler": "^2.9.0", + "@astrojs/internal-helpers": "0.4.1", + "@astrojs/markdown-remark": "5.2.0", + "@astrojs/telemetry": "3.1.0", + "@babel/core": "^7.24.9", + "@babel/generator": "^7.24.10", + "@babel/parser": "^7.24.8", + "@babel/plugin-transform-react-jsx": "^7.24.7", + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.9", + "@types/babel__core": "^7.20.5", + "@types/cookie": "^0.6.0", + "acorn": "^8.12.1", + "aria-query": "^5.3.0", + "axobject-query": "^4.1.0", + "boxen": "7.1.1", + "chokidar": "^3.6.0", + "ci-info": "^4.0.0", + "clsx": "^2.1.1", + "common-ancestor-path": "^1.0.1", + "cookie": "^0.6.0", + "cssesc": "^3.0.0", + "debug": "^4.3.5", + "deterministic-object-hash": "^2.0.2", + "devalue": "^5.0.0", + "diff": "^5.2.0", + "dlv": "^1.1.3", + "dset": "^3.1.3", + "es-module-lexer": "^1.5.4", + "esbuild": "^0.21.5", + "estree-walker": "^3.0.3", + "execa": "^8.0.1", + "fast-glob": "^3.3.2", + "flattie": "^1.1.1", + "github-slugger": "^2.0.0", + "gray-matter": "^4.0.3", + "html-escaper": "^3.0.3", + "http-cache-semantics": "^4.1.1", + "js-yaml": "^4.1.0", + "kleur": "^4.1.5", + "magic-string": "^0.30.10", + "mrmime": "^2.0.0", + "ora": "^8.0.1", + "p-limit": "^6.1.0", + "p-queue": "^8.0.1", + "path-to-regexp": "^6.2.2", + "preferred-pm": "^4.0.0", + "prompts": "^2.4.2", + "rehype": "^13.0.1", + "semver": "^7.6.2", + "shiki": "^1.10.3", + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "tsconfck": "^3.1.1", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.2", + "vite": "^5.3.4", + "vitefu": "^0.2.5", + "which-pm": "^3.0.0", + "yargs-parser": "^21.1.1", + "zod": "^3.23.8", + "zod-to-json-schema": "^3.23.1" + }, + "bin": { + "astro": "astro.js" + }, + "engines": { + "node": "^18.17.1 || ^20.3.0 || >=21.0.0", + "npm": ">=9.6.5", + "pnpm": ">=7.1.0" + }, + "optionalDependencies": { + "sharp": "^0.33.3" + } + }, + "node_modules/astro/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base-64": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", + "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==" + }, + "node_modules/base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/boxen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/boxen/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/boxen/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", + "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001640", + "electron-to-chromium": "^1.4.820", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/cacache": { + "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^7.0.3", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request": { + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "dependencies": { + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/camelize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", + "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001642", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz", + "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", + "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/classcat": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/classcat/-/classcat-5.0.5.tgz", + "integrity": "sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==" + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-table3/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/common-ancestor-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==" + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "dependencies": { + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/yeoman/configstore?sponsor=1" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/css-background-parser": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/css-background-parser/-/css-background-parser-0.1.0.tgz", + "integrity": "sha512-2EZLisiZQ+7m4wwur/qiYJRniHX4K5Tc9w93MT3AS0WS1u5kaZ4FKXlOTBhOjc+CgEgPiGY+fX1yWD8UwpEqUA==" + }, + "node_modules/css-box-shadow": { + "version": "1.0.0-3", + "resolved": "https://registry.npmjs.org/css-box-shadow/-/css-box-shadow-1.0.0-3.tgz", + "integrity": "sha512-9jaqR6e7Ohds+aWwmhe6wILJ99xYQbfmK9QQB9CcMjDbTxPZjwEmUQpU91OG05Xgm8BahT5fW+svbsQGjS/zPg==" + }, + "node_modules/css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-to-react-native": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", + "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/csv-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-3.0.0.tgz", + "integrity": "sha512-s6OYSXAK3IdKqYO33y09jhypG/bSDHPuyCme/IdEHfWpLf/jKcpitVFyOC6UemgGk8v7Q5u2XE0vvwmanxhGlQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "csv-parser": "bin/csv-parser" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dayjs": { + "version": "1.11.12", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.12.tgz", + "integrity": "sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==" + }, + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/deterministic-object-hash": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/deterministic-object-hash/-/deterministic-object-hash-2.0.2.tgz", + "integrity": "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==", + "dependencies": { + "base-64": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/devalue": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.0.0.tgz", + "integrity": "sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-to-image": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/dom-to-image/-/dom-to-image-2.6.0.tgz", + "integrity": "sha512-Dt0QdaHmLpjURjU7Tnu3AgYSF2LuOmksSGsUcE6ItvJoCWTBEmiMXcqBdNSAm9+QbbwD7JMoVsuuKX6ZVQv1qA==" + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dracula-prism": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/dracula-prism/-/dracula-prism-2.1.16.tgz", + "integrity": "sha512-fNZU8sMYOFYq/K8WFtsVUJEHemYlQJy7E3wm+Lndp3hTWG+Hp3+sCcbQdWVvQTfw+xIJeI+mIrjfUWHb9Q/s2Q==" + }, + "node_modules/dset": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.3.tgz", + "integrity": "sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.830", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.830.tgz", + "integrity": "sha512-TrPKKH20HeN0J1LHzsYLs2qwXrp8TF4nHdu4sq61ozGbzMpWhI7iIOPYPPkxeq1azMT9PZ8enPFcftbs/Npcjg==" + }, + "node_modules/email-addresses": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz", + "integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==" + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-memoize": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==" + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fflate": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.7.4.tgz", + "integrity": "sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==" + }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up-simple": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", + "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-yarn-workspace-root2": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz", + "integrity": "sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==", + "dependencies": { + "micromatch": "^4.0.2", + "pkg-dir": "^4.2.0" + } + }, + "node_modules/flattie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", + "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data-encoder": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", + "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", + "dev": true + }, + "node_modules/formdata-node": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", + "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", + "dev": true, + "dependencies": { + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" + }, + "engines": { + "node": ">= 12.20" + } + }, + "node_modules/formdata-node/node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/fp-and-or": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/fp-and-or/-/fp-and-or-0.1.4.tgz", + "integrity": "sha512-+yRYRhpnFPWXSly/6V4Lw9IfOV26uu30kynGJ03PW+MnjOEQe45RZ141QcS0aJehYBYA50GfCDnsRbFJdhssRw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "deprecated": "This package is no longer supported.", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/gauge/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/gauge/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/gauge/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", + "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-tsconfig": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz", + "integrity": "sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/gh-pages": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-6.1.1.tgz", + "integrity": "sha512-upnohfjBwN5hBP9w2dPE7HO5JJTHzSGMV1JrLrHvNuqmjoYHg6TBrCcnEoorjG/e0ejbuvnwyKMdTyM40PEByw==", + "dev": true, + "dependencies": { + "async": "^3.2.4", + "commander": "^11.0.0", + "email-addresses": "^5.0.0", + "filenamify": "^4.3.0", + "find-cache-dir": "^3.3.1", + "fs-extra": "^11.1.1", + "globby": "^6.1.0" + }, + "bin": { + "gh-pages": "bin/gh-pages.js", + "gh-pages-clean": "bin/gh-pages-clean.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/got": { + "version": "12.6.1", + "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", + "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/got/node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "engines": { + "node": ">= 14.17" + } + }, + "node_modules/got/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/gray-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/gray-matter/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "node_modules/has-yarn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-util-from-html": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.1.tgz", + "integrity": "sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", + "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^8.0.0", + "property-information": "^6.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.4.tgz", + "integrity": "sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.1.tgz", + "integrity": "sha512-hZOofyZANbyWo+9RP75xIDV/gq+OUKx+T46IlwERnKmfpwp81XBFbT9mi26ws+SJchA4RVUQwIBJpqEOBhMzEQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-raw": "^9.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", + "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", + "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hex-rgb": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/hex-rgb/-/hex-rgb-4.3.0.tgz", + "integrity": "sha512-Ox1pJVrDCyGHMG9CFg1tmrRUMRPRsAWYc/PinY0XzJU4K7y7vjNoLKIQ7BR5UJMCxNN8EM1MNDmHWA/B3aZUuw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/htm": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/htm/-/htm-3.1.1.tgz", + "integrity": "sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==" + }, + "node_modules/html-escaper": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", + "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==" + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", + "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/image-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz", + "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/is-absolute-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz", + "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-ci/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" + }, + "node_modules/is-npm": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", + "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-unicode-supported": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", + "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-yarn-global": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", + "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==" + }, + "node_modules/jose": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/jose/-/jose-5.6.3.tgz", + "integrity": "sha512-1Jh//hEEwMhNYPDDLwXHa2ePWgWiFNNUadVmguAAw2IJ6sj9mNxV5tGXJNqlMkJAybF6Lgw1mISDxTePP/187g==", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "engines": { + "node": ">=14" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/json-parse-helpfulerror": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", + "integrity": "sha512-XgP0FGR77+QhUxjXkwOMkC94k3WtqEBfcnjWqhRd82qTat4SWKRE+9kUnynz/shm3I4ea2+qISvTIeGTNU7kJg==", + "dependencies": { + "jju": "^1.1.0" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonlines": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsonlines/-/jsonlines-0.1.1.tgz", + "integrity": "sha512-ekDrAGso79Cvf+dtm+mL8OBI2bmAOt3gssYs833De/C9NmIpWDWyUO4zPgB5x2/OhY366dkhgfPMYfwZF7yOZA==" + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/latest-version": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", + "dependencies": { + "package-json": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/linebreak": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.1.0.tgz", + "integrity": "sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==", + "dependencies": { + "base64-js": "0.0.8", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/load-yaml-file": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz", + "integrity": "sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==", + "dependencies": { + "graceful-fs": "^4.1.5", + "js-yaml": "^3.13.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/load-yaml-file/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/load-yaml-file/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/load-yaml-file/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/load-yaml-file/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "0.399.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.399.0.tgz", + "integrity": "sha512-UyTNa3djBISdzL2UktgCrESXexQXaDQWi/WsDkbw6fBFfHlapajR58WoR+gxQ4laxfEyiHmoFrEIM3V+5XOVQg==", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdown-table": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", + "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-definitions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz", + "integrity": "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", + "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", + "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz", + "integrity": "sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", + "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-json-stream/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.7.tgz", + "integrity": "sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, + "node_modules/nanostores": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/nanostores/-/nanostores-0.10.3.tgz", + "integrity": "sha512-Nii8O1XqmawqSCf9o2aWqVxhKRN01+iue9/VEd1TiJCr9VT5XxgPFbF1Edl1XN6pwJcZRsl8Ki+z01yb/T/C2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nlcst-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", + "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", + "dependencies": { + "@types/nlcst": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.13 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp/node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/node-gyp/node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/cacache/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/node-gyp/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/node-gyp/node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/node-gyp/node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/node-gyp/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gyp/node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/node-html-parser": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgz", + "integrity": "sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==", + "dependencies": { + "css-select": "^5.1.0", + "he": "1.2.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.17.tgz", + "integrity": "sha512-Ww6ZlOiEQfPfXM45v17oabk77Z7mg5bOt7AjDyzy7RjK9OrLrLC8dyZQoAPEOtFX9SaNf1Tdvr5gRJWdTJj7GA==" + }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "dependencies": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-package-data/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-bundled": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", + "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-check-updates": { + "version": "16.14.20", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-16.14.20.tgz", + "integrity": "sha512-sYbIhun4DrjO7NFOTdvs11nCar0etEhZTsEjL47eM0TuiGMhmYughRCxG2SpGRmGAQ7AkwN7bw2lWzoE7q6yOQ==", + "dependencies": { + "@types/semver-utils": "^1.1.1", + "chalk": "^5.3.0", + "cli-table3": "^0.6.3", + "commander": "^10.0.1", + "fast-memoize": "^2.5.2", + "find-up": "5.0.0", + "fp-and-or": "^0.1.4", + "get-stdin": "^8.0.0", + "globby": "^11.0.4", + "hosted-git-info": "^5.1.0", + "ini": "^4.1.1", + "js-yaml": "^4.1.0", + "json-parse-helpfulerror": "^1.0.3", + "jsonlines": "^0.1.1", + "lodash": "^4.17.21", + "make-fetch-happen": "^11.1.1", + "minimatch": "^9.0.3", + "p-map": "^4.0.0", + "pacote": "15.2.0", + "parse-github-url": "^1.0.2", + "progress": "^2.0.3", + "prompts-ncu": "^3.0.0", + "rc-config-loader": "^4.1.3", + "remote-git-tags": "^3.0.0", + "rimraf": "^5.0.5", + "semver": "^7.5.4", + "semver-utils": "^1.1.4", + "source-map-support": "^0.5.21", + "spawn-please": "^2.0.2", + "strip-ansi": "^7.1.0", + "strip-json-comments": "^5.0.1", + "untildify": "^4.0.0", + "update-notifier": "^6.0.2" + }, + "bin": { + "ncu": "build/src/bin/cli.js", + "npm-check-updates": "build/src/bin/cli.js" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/npm-check-updates/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-check-updates/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm-check-updates/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/npm-check-updates/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "engines": { + "node": ">=14" + } + }, + "node_modules/npm-check-updates/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-check-updates/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm-check-updates/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-install-checks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-install-checks/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg/node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/npm-package-arg/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-packlist": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", + "dependencies": { + "ignore-walk": "^6.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz", + "integrity": "sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==", + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-pick-manifest/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-registry-fetch": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", + "dependencies": { + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "deprecated": "This package is no longer supported.", + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/openai": { + "version": "4.52.7", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.52.7.tgz", + "integrity": "sha512-dgxA6UZHary6NXUHEDj5TWt8ogv0+ibH+b4pT5RrWMjiRZVylNwLcw/2ubDrX5n0oUmHX/ZgudMJeemxzOvz7A==", + "dev": true, + "dependencies": { + "@types/node": "^18.11.18", + "@types/node-fetch": "^2.6.4", + "abort-controller": "^3.0.0", + "agentkeepalive": "^4.2.1", + "form-data-encoder": "1.7.2", + "formdata-node": "^4.3.2", + "node-fetch": "^2.6.7", + "web-streams-polyfill": "^3.2.1" + }, + "bin": { + "openai": "bin/cli" + } + }, + "node_modules/ora": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.0.1.tgz", + "integrity": "sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/p-limit": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.1.0.tgz", + "integrity": "sha512-H0jc0q1vOzlEk0TqAKXKZxdl7kX3OFUzCnNVUnq5Pc3DGo0kpeaMuPqxQn235HibwBEb0/pm9dgKTjXy66fBkg==", + "dependencies": { + "yocto-queue": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.0.1.tgz", + "integrity": "sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==", + "dependencies": { + "eventemitter3": "^5.0.1", + "p-timeout": "^6.1.2" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz", + "integrity": "sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", + "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", + "dependencies": { + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==" + }, + "node_modules/package-json/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pacote": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz", + "integrity": "sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==", + "dependencies": { + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^5.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.3.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==" + }, + "node_modules/parse-css-color": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/parse-css-color/-/parse-css-color-0.2.1.tgz", + "integrity": "sha512-bwS/GGIFV3b6KS4uwpzCFj4w297Yl3uqnSgIPsoQkx7GMLROXfMnWvxfNkL0oh8HVhZA4hvJoEoEIqonfJ3BWg==", + "dependencies": { + "color-name": "^1.1.4", + "hex-rgb": "^4.1.0" + } + }, + "node_modules/parse-css-color/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/parse-github-url": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.3.tgz", + "integrity": "sha512-tfalY5/4SqGaV/GIGzWyHnFjlpTPTNpENR9Ea2lLldSJ8EWXMsvacWucqY3m3I4YPtas15IxTLQVQ5NSYXPrww==", + "bin": { + "parse-github-url": "cli.js" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-latin": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", + "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", + "dependencies": { + "@types/nlcst": "^2.0.0", + "@types/unist": "^3.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-modify-children": "^4.0.0", + "unist-util-visit-children": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + }, + "node_modules/path-to-regexp": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", + "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/playwright": { + "version": "1.45.2", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.45.2.tgz", + "integrity": "sha512-ReywF2t/0teRvNBpfIgh5e4wnrI/8Su8ssdo5XsQKpjxJj+jspm00jSoz9BTg91TT0c9HRjXO7LBNVrgYj9X0g==", + "dependencies": { + "playwright-core": "1.45.2" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.45.2", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.45.2.tgz", + "integrity": "sha512-ha175tAWb0dTK0X4orvBIqi3jGEt701SMxMhyujxNrgd8K0Uy5wMSwwcQHtyB4om7INUkfndx02XnQ2p6dvLDw==", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/postcss": { + "version": "8.4.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", + "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-nested/node_modules/postcss-selector-parser": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", + "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/preferred-pm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-4.0.0.tgz", + "integrity": "sha512-gYBeFTZLu055D8Vv3cSPox/0iTPtkzxpLroSYYA7WXgRi31WCJ51Uyl8ZiPeUUjyvs2MBzK+S8v9JVUgHU/Sqw==", + "dependencies": { + "find-up-simple": "^1.0.0", + "find-yarn-workspace-root2": "1.2.16", + "which-pm": "^3.0.0" + }, + "engines": { + "node": ">=18.12" + } + }, + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-astro": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-astro/-/prettier-plugin-astro-0.14.1.tgz", + "integrity": "sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==", + "dev": true, + "dependencies": { + "@astrojs/compiler": "^2.9.1", + "prettier": "^3.0.0", + "sass-formatter": "^0.7.6" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/prettier-plugin-tailwindcss": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.5.tgz", + "integrity": "sha512-axfeOArc/RiGHjOIy9HytehlC0ZLeMaqY09mm8YCkMzznKiDkwFzOpBvtuhuv3xG5qB73+Mj7OCe2j/L1ryfuQ==", + "dev": true, + "engines": { + "node": ">=14.21.3" + }, + "peerDependencies": { + "@ianvs/prettier-plugin-sort-imports": "*", + "@prettier/plugin-pug": "*", + "@shopify/prettier-plugin-liquid": "*", + "@trivago/prettier-plugin-sort-imports": "*", + "@zackad/prettier-plugin-twig-melody": "*", + "prettier": "^3.0", + "prettier-plugin-astro": "*", + "prettier-plugin-css-order": "*", + "prettier-plugin-import-sort": "*", + "prettier-plugin-jsdoc": "*", + "prettier-plugin-marko": "*", + "prettier-plugin-organize-attributes": "*", + "prettier-plugin-organize-imports": "*", + "prettier-plugin-sort-imports": "*", + "prettier-plugin-style-order": "*", + "prettier-plugin-svelte": "*" + }, + "peerDependenciesMeta": { + "@ianvs/prettier-plugin-sort-imports": { + "optional": true + }, + "@prettier/plugin-pug": { + "optional": true + }, + "@shopify/prettier-plugin-liquid": { + "optional": true + }, + "@trivago/prettier-plugin-sort-imports": { + "optional": true + }, + "@zackad/prettier-plugin-twig-melody": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + }, + "prettier-plugin-css-order": { + "optional": true + }, + "prettier-plugin-import-sort": { + "optional": true + }, + "prettier-plugin-jsdoc": { + "optional": true + }, + "prettier-plugin-marko": { + "optional": true + }, + "prettier-plugin-organize-attributes": { + "optional": true + }, + "prettier-plugin-organize-imports": { + "optional": true + }, + "prettier-plugin-sort-imports": { + "optional": true + }, + "prettier-plugin-style-order": { + "optional": true + }, + "prettier-plugin-svelte": { + "optional": true + } + } + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prompts-ncu": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prompts-ncu/-/prompts-ncu-3.0.0.tgz", + "integrity": "sha512-qyz9UxZ5MlPKWVhWrCmSZ1ahm2GVYdjLb8og2sg0IPth1KRuhcggHGuijz0e41dkx35p1t1q3GRISGH7QGALFA==", + "dependencies": { + "kleur": "^4.0.1", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/prompts/node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pupa": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", + "dependencies": { + "escape-goat": "^4.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc-config-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz", + "integrity": "sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==", + "dependencies": { + "debug": "^4.3.4", + "js-yaml": "^4.1.0", + "json5": "^2.2.2", + "require-from-string": "^2.0.2" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-calendar-heatmap": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/react-calendar-heatmap/-/react-calendar-heatmap-1.9.0.tgz", + "integrity": "sha512-mGed9any6QLOVckxwxC/eeP9s9wE8mTUW/FCE0V27xF9WOaCGuOftGSRH8DSDoSwgzMSVF6uuH7M1xvc+aZ8sg==", + "dependencies": { + "memoize-one": "^5.0.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-confetti": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/react-confetti/-/react-confetti-6.1.0.tgz", + "integrity": "sha512-7Ypx4vz0+g8ECVxr88W9zhcQpbeujJAVqL14ZnXJ3I23mOI9/oBVTQ3dkJhUmB0D6XOtCZEM6N0Gm9PMngkORw==", + "dependencies": { + "tween-functions": "^1.2.0" + }, + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "react": "^16.3.0 || ^17.0.1 || ^18.0.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-tooltip": { + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-5.27.1.tgz", + "integrity": "sha512-a+micPXcMOMt11CYlwJD4XShcqGziasHco4NPe1OFw298WBTILMyzUgNC1LAFViAe791JdHNVSJIpzhZm2MvDA==", + "dependencies": { + "@floating-ui/dom": "^1.6.1", + "classnames": "^2.3.0" + }, + "peerDependencies": { + "react": ">=16.14.0", + "react-dom": ">=16.14.0" + } + }, + "node_modules/reactflow": { + "version": "11.11.4", + "resolved": "https://registry.npmjs.org/reactflow/-/reactflow-11.11.4.tgz", + "integrity": "sha512-70FOtJkUWH3BAOsN+LU9lCrKoKbtOPnz2uq0CV2PLdNSwxTXOhCbsZr50GmZ+Rtw3jx8Uv7/vBFtCGixLfd4Og==", + "dependencies": { + "@reactflow/background": "11.3.14", + "@reactflow/controls": "11.2.14", + "@reactflow/core": "11.11.4", + "@reactflow/minimap": "11.7.14", + "@reactflow/node-resizer": "2.2.14", + "@reactflow/node-toolbar": "1.3.14" + }, + "peerDependencies": { + "react": ">=17", + "react-dom": ">=17" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-package-json": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", + "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==", + "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.", + "dependencies": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/read-package-json/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/registry-auth-token": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "dependencies": { + "@pnpm/npm-conf": "^2.1.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/registry-url": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rehype": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.1.tgz", + "integrity": "sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==", + "dependencies": { + "@types/hast": "^3.0.0", + "rehype-parse": "^9.0.0", + "rehype-stringify": "^10.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-external-links": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rehype-external-links/-/rehype-external-links-3.0.0.tgz", + "integrity": "sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==", + "dependencies": { + "@types/hast": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-is-element": "^3.0.0", + "is-absolute-url": "^4.0.0", + "space-separated-tokens": "^2.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.0.tgz", + "integrity": "sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-html": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-stringify": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.0.tgz", + "integrity": "sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-to-html": "^9.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", + "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz", + "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-smartypants": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.2.tgz", + "integrity": "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==", + "dependencies": { + "retext": "^9.0.0", + "retext-smartypants": "^6.0.0", + "unified": "^11.0.4", + "unist-util-visit": "^5.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remote-git-tags": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remote-git-tags/-/remote-git-tags-3.0.0.tgz", + "integrity": "sha512-C9hAO4eoEsX+OXA4rla66pXZQ+TLQ8T9dttgQj18yuKlPMTVkIkdYXvlMC55IuUsIkV6DpmQYi10JKFLaU+l7w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/retext": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", + "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==", + "dependencies": { + "@types/nlcst": "^2.0.0", + "retext-latin": "^4.0.0", + "retext-stringify": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-latin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz", + "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==", + "dependencies": { + "@types/nlcst": "^2.0.0", + "parse-latin": "^7.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-smartypants": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.1.0.tgz", + "integrity": "sha512-LDPXg95346bqFZnDMHo0S7Rq5p64+B+N8Vz733+wPMDtwb9rCOs9LIdIEhrUOU+TAywX9St+ocQWJt8wrzivcQ==", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retext-stringify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz", + "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==", + "dependencies": { + "@types/nlcst": "^2.0.0", + "nlcst-to-string": "^4.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.9.tgz", + "integrity": "sha512-3i7b8OcswU6CpU8Ej89quJD4O98id7TtVM5U4Mybh84zQXdrFmDLouWBEEaD/QfO3gDDfH+AGFCGsR7kngzQnA==", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "14 >=14.20 || 16 >=16.20 || >=18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/roadmap-renderer": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/roadmap-renderer/-/roadmap-renderer-1.0.6.tgz", + "integrity": "sha512-IQejjIfr9RIvesNwp3SyhEq1DMQ2RdJfJhgsb1AyPuKXsfJgOG8F++Cz1p3SIcY0bnB57Q16Ke2VJLjiUVwI3Q==" + }, + "node_modules/rollup": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.1.tgz", + "integrity": "sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A==", + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.18.1", + "@rollup/rollup-android-arm64": "4.18.1", + "@rollup/rollup-darwin-arm64": "4.18.1", + "@rollup/rollup-darwin-x64": "4.18.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.1", + "@rollup/rollup-linux-arm-musleabihf": "4.18.1", + "@rollup/rollup-linux-arm64-gnu": "4.18.1", + "@rollup/rollup-linux-arm64-musl": "4.18.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.1", + "@rollup/rollup-linux-riscv64-gnu": "4.18.1", + "@rollup/rollup-linux-s390x-gnu": "4.18.1", + "@rollup/rollup-linux-x64-gnu": "4.18.1", + "@rollup/rollup-linux-x64-musl": "4.18.1", + "@rollup/rollup-win32-arm64-msvc": "4.18.1", + "@rollup/rollup-win32-ia32-msvc": "4.18.1", + "@rollup/rollup-win32-x64-msvc": "4.18.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/s.color": { + "version": "0.0.15", + "resolved": "https://registry.npmjs.org/s.color/-/s.color-0.0.15.tgz", + "integrity": "sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "optional": true + }, + "node_modules/sass-formatter": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/sass-formatter/-/sass-formatter-0.7.9.tgz", + "integrity": "sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==", + "dev": true, + "dependencies": { + "suf-log": "^2.5.3" + } + }, + "node_modules/satori": { + "version": "0.10.14", + "resolved": "https://registry.npmjs.org/satori/-/satori-0.10.14.tgz", + "integrity": "sha512-abovcqmwl97WKioxpkfuMeZmndB1TuDFY/R+FymrZyiGP+pMYomvgSzVPnbNMWHHESOPosVHGL352oFbdAnJcA==", + "dependencies": { + "@shuding/opentype.js": "1.4.0-beta.0", + "css-background-parser": "^0.1.0", + "css-box-shadow": "1.0.0-3", + "css-to-react-native": "^3.0.0", + "emoji-regex": "^10.2.1", + "escape-html": "^1.0.3", + "linebreak": "^1.1.0", + "parse-css-color": "^0.2.1", + "postcss-value-parser": "^4.2.0", + "yoga-wasm-web": "^0.3.3" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/satori-html": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/satori-html/-/satori-html-0.3.2.tgz", + "integrity": "sha512-wjTh14iqADFKDK80e51/98MplTGfxz2RmIzh0GqShlf4a67+BooLywF17TvJPD6phO0Hxm7Mf1N5LtRYvdkYRA==", + "dependencies": { + "ultrahtml": "^1.2.0" + } + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-utils": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/semver-utils/-/semver-utils-1.1.4.tgz", + "integrity": "sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==" + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==" + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/sharp": { + "version": "0.33.4", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.4.tgz", + "integrity": "sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==", + "hasInstallScript": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.0" + }, + "engines": { + "libvips": ">=8.15.2", + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.4", + "@img/sharp-darwin-x64": "0.33.4", + "@img/sharp-libvips-darwin-arm64": "1.0.2", + "@img/sharp-libvips-darwin-x64": "1.0.2", + "@img/sharp-libvips-linux-arm": "1.0.2", + "@img/sharp-libvips-linux-arm64": "1.0.2", + "@img/sharp-libvips-linux-s390x": "1.0.2", + "@img/sharp-libvips-linux-x64": "1.0.2", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.2", + "@img/sharp-libvips-linuxmusl-x64": "1.0.2", + "@img/sharp-linux-arm": "0.33.4", + "@img/sharp-linux-arm64": "0.33.4", + "@img/sharp-linux-s390x": "0.33.4", + "@img/sharp-linux-x64": "0.33.4", + "@img/sharp-linuxmusl-arm64": "0.33.4", + "@img/sharp-linuxmusl-x64": "0.33.4", + "@img/sharp-wasm32": "0.33.4", + "@img/sharp-win32-ia32": "0.33.4", + "@img/sharp-win32-x64": "0.33.4" + } + }, + "node_modules/sharp/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shiki": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.10.3.tgz", + "integrity": "sha512-eneCLncGuvPdTutJuLyUGS8QNPAVFO5Trvld2wgEq1e002mwctAhJKeMGWtWVXOIEzmlcLRqcgPSorR6AVzOmQ==", + "dependencies": { + "@shikijs/core": "1.10.3", + "@types/hast": "^3.0.4" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sigstore": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz", + "integrity": "sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==", + "dependencies": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "@sigstore/sign": "^1.0.0", + "@sigstore/tuf": "^1.0.3", + "make-fetch-happen": "^11.0.1" + }, + "bin": { + "sigstore": "bin/sigstore.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/sitemap": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.2.tgz", + "integrity": "sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==", + "dependencies": { + "@types/node": "^17.0.5", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.2.4" + }, + "bin": { + "sitemap": "dist/cli.js" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.6.0" + } + }, + "node_modules/sitemap/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/slugify": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", + "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/spawn-please": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/spawn-please/-/spawn-please-2.0.2.tgz", + "integrity": "sha512-KM8coezO6ISQ89c1BzyWNtcn2V2kAVtwIXd3cN/V5a0xPYc1F/vydrRc01wsKFEQ/p+V1a4sw4z2yMITIXrgGw==", + "dependencies": { + "cross-spawn": "^7.0.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==" + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + }, + "node_modules/ssri": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ssri/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stdin-discarder": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stream-replace-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stream-replace-string/-/stream-replace-string-2.0.0.tgz", + "integrity": "sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.codepointat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", + "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==" + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.1.tgz", + "integrity": "sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/suf-log": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/suf-log/-/suf-log-2.5.3.tgz", + "integrity": "sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==", + "dev": true, + "dependencies": { + "s.color": "0.0.15" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwind-merge": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.4.0.tgz", + "integrity": "sha512-49AwoOQNKdqKPd9CViyH5wJoSKsCDjUlzL8DxuGp3P1FsGY36NJDAa18jLZcaHAUUuTj+JB8IAo8zWgBNvBF7A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.6.tgz", + "integrity": "sha512-1uRHzPB+Vzu57ocybfZ4jh5Q3SdlH7XW23J5sQoM9LhE9eIOlzxer/3XPSsycvih3rboRsvt0QCmzSrqyOYUIA==", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tailwindcss/node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/tailwindcss/node_modules/postcss-selector-parser": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", + "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + }, + "node_modules/tsconfck": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.1.tgz", + "integrity": "sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==", + "bin": { + "tsconfck": "bin/tsconfck.js" + }, + "engines": { + "node": "^18 || >=20" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/tsx": { + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.16.2.tgz", + "integrity": "sha512-C1uWweJDgdtX2x600HjaFaucXTilT7tgUZHbOE4+ypskZ1OP8CRCSDkCxG6Vya9EwaFIVagWwpaVAn5wzypaqQ==", + "dev": true, + "dependencies": { + "esbuild": "~0.21.5", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tuf-js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.7.tgz", + "integrity": "sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==", + "dependencies": { + "@tufjs/models": "1.0.4", + "debug": "^4.3.4", + "make-fetch-happen": "^11.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tween-functions": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tween-functions/-/tween-functions-1.2.0.tgz", + "integrity": "sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==" + }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true + }, + "node_modules/ultrahtml": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.5.3.tgz", + "integrity": "sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==" + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unist-util-find-after": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-modify-children": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", + "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==", + "dependencies": { + "@types/unist": "^3.0.0", + "array-iterate": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", + "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-children": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", + "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-notifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", + "dependencies": { + "boxen": "^7.0.0", + "chalk": "^5.0.1", + "configstore": "^6.0.0", + "has-yarn": "^3.0.0", + "import-lazy": "^4.0.0", + "is-ci": "^3.0.1", + "is-installed-globally": "^0.4.0", + "is-npm": "^6.0.0", + "is-yarn-global": "^0.4.0", + "latest-version": "^7.0.0", + "pupa": "^3.1.0", + "semver": "^7.3.7", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/vfile": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.2.tgz", + "integrity": "sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", + "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.4.tgz", + "integrity": "sha512-Cw+7zL3ZG9/NZBB8C+8QbQZmR54GwqIz+WMI4b3JgdYJvX+ny9AjJXqkGQlDXSXRP9rP0B4tbciRMOVEKulVOA==", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.39", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vitefu": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", + "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-pm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-3.0.0.tgz", + "integrity": "sha512-ysVYmw6+ZBhx3+ZkcPwRuJi38ZOTLJJ33PSHaitLxSKUMsh0LkKd0nC69zZCwt5D+AYUcMK2hhw4yWny20vSGg==", + "dependencies": { + "load-yaml-file": "^0.2.0" + }, + "engines": { + "node": ">=18.12" + } + }, + "node_modules/which-pm-runs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wide-align/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wide-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/wide-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wide-align/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/widest-line/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/xdg-basedir": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yaml": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", + "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoga-wasm-web": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/yoga-wasm-web/-/yoga-wasm-web-0.3.3.tgz", + "integrity": "sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==" + }, + "node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.23.1", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.23.1.tgz", + "integrity": "sha512-oT9INvydob1XV0v1d2IadrR74rLtDInLvDFfAa1CG0Pmg/vxATk7I2gSelfj271mbzeM4Da0uuDQE/Nkj3DWNw==", + "peerDependencies": { + "zod": "^3.23.3" + } + }, + "node_modules/zustand": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.4.tgz", + "integrity": "sha512-/BPMyLKJPtFEvVL0E9E9BTUM63MNyhPGlvxk1XjrfWTUlV+BR8jufjsovHzrtR6YNcBEcL7cMHovL1n9xHawEg==", + "dependencies": { + "use-sync-external-store": "1.2.0" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/src/components/CommandMenu/CommandMenu.tsx b/src/components/CommandMenu/CommandMenu.tsx index fcfb8a8e8..b944f5029 100644 --- a/src/components/CommandMenu/CommandMenu.tsx +++ b/src/components/CommandMenu/CommandMenu.tsx @@ -243,7 +243,7 @@ export function CommandMenu() { const groupChanged = prevPage && prevPage.group !== page.group; return ( - + {groupChanged && (
)} diff --git a/src/components/RelatedRoadmaps.astro b/src/components/RelatedRoadmaps.astro index e971f3fc3..9678a6142 100644 --- a/src/components/RelatedRoadmaps.astro +++ b/src/components/RelatedRoadmaps.astro @@ -85,7 +85,7 @@ const relatedQuestionDetails = await getQuestionGroupsByIds(relatedQuestions); href={`/${relatedRoadmap.id}`} class='flex flex-col gap-0.5 rounded-md border bg-white px-3.5 py-2 hover:bg-gray-50 sm:flex-row sm:gap-0' > - + {relatedRoadmap.frontmatter.briefTitle} diff --git a/src/components/TopicDetail/TopicDetail.tsx b/src/components/TopicDetail/TopicDetail.tsx index aa6b578af..2cf8b0e42 100644 --- a/src/components/TopicDetail/TopicDetail.tsx +++ b/src/components/TopicDetail/TopicDetail.tsx @@ -366,7 +366,7 @@ export function TopicDetail(props: TopicDetailProps) { className="flex w-full items-center justify-center rounded-md bg-gray-800 p-2 text-sm text-white transition-colors hover:bg-black hover:text-white disabled:bg-green-200 disabled:text-black" > - Add Learning Resources + Help us Improve this Content )} @@ -448,9 +448,9 @@ export function TopicDetail(props: TopicDetailProps) {

- Help us improve this introduction and submit a link to a - good article, podcast, video, or any other self-vetted - resource that helped you understand this topic better. + This popup should be a brief introductory paragraph for the topic and a few links + to good articles, videos, or any other self-vetted resources. Please consider + submitting a PR to improve this content.

- Add Learning Resources + Help us Improve this Content )} diff --git a/src/data/guides/backend-languages.md b/src/data/guides/backend-languages.md index 8a7baeb00..9fc1d75b5 100644 --- a/src/data/guides/backend-languages.md +++ b/src/data/guides/backend-languages.md @@ -61,7 +61,7 @@ Python's versatility is evident in its applicability across a spectrum of indust So, let's talk about Django – it's like the superhero of web frameworks, at least in the world of Python. This high-level powerhouse is all about that "batteries-included" style, giving you a whole package of tools and features that make development lightning-fast. It follows the [Model-View-Controller](https://www.crio.do/blog/understand-mvc-architecture/) (MVC) architecture that gives your web applications a solid structure, making them scalable and easy to keep up. -Part of that whole “batteries-included” motto means that it comes with an admin panel, an [ORM](https://www.freecodecamp.org/news/what-is-an-orm-the-meaning-of-object-relational-mapping-database-tools/) (Object-Relational Mapping) for smooth data handling, and security features that make sure your project is secured out-of-the-box. All these goodies work together, making Django a top choice for projects, whether they're a walk in the park or a brain-bending challenge. +Part of that whole “batteries-included” motto means that it comes with an admin panel, an ORM (Object-Relational Mapping) for smooth data handling, and security features that make sure your project is secured out-of-the-box. All these goodies work together, making Django a top choice for projects, whether they're a walk in the park or a brain-bending challenge. ##### Flask diff --git a/src/data/guides/devops-vs-sre.md b/src/data/guides/devops-vs-sre.md index 5b72862a7..71193551a 100644 --- a/src/data/guides/devops-vs-sre.md +++ b/src/data/guides/devops-vs-sre.md @@ -23,37 +23,51 @@ tags: When it comes to managing and enhancing software development and operations, companies often adopt sets of practices and processes such as Development Operations (DevOps) or Site Reliability Engineering (SRE). These approaches increase their ability to deliver applications scalably and maintain a fast pace. -In fact, companies and individuals seeking to deliver applications and services at a higher velocity are increasingly moving away from traditional software development and infrastructure management. They achieve this by either combining selected DevOps and SRE practices or opting for one over the other. +In fact, companies and individuals seeking to deliver applications and services at a higher velocity are increasingly moving away from traditional software development and infrastructure management. They achieve this by either combining selected [DevOps](https://roadmap.sh/devops) and SRE practices or opting for one over the other. Despite their shared goal of improving the software delivery process, some nuances set DevOps and SRE apart. -This article provides an in-depth discussion of the key differences between each approach, what they entail, similarities, and the tools and technologies involved. Finally, it offers roadmaps for your DevOps or SRE journey. +This guide provides an in-depth discussion of the key differences between each approach, what they entail, similarities, and the tools and technologies involved.Finally, it offers roadmaps for your DevOps or SRE journey. ## Differences between DevOps and SRE -The main difference between [DevOps](https://roadmap.sh/devops) and SRE lies in their primary **goals**. DevOps aims to improve the software development lifecycle (SDLC), while SRE **focuses** on maintaining stability and resilience after application deployment. In addition, they also differ in **scope**, **metrics**, and **team structure**. +The primary difference between DevOps and SRE lies in their primary **goals**. DevOps aims to improve the software development lifecycle (SDLC), while SRE **focuses** on maintaining stability and resilience after application deployment. In addition, they also differ in **scope**, **metrics**, and **team structure**. Let’s look at these points in detail: -1. **Goals:** DevOps' primary goal is to improve the (SDLC) through process automation, enhance collaboration, and promote continuous improvement. SRE aims to create easily maintained systems by automating repetitive and manual tasks, implementing monitoring and alerting systems, and designing for scale and resilience. +![DevOps vs SRE](https://assets.roadmap.sh/guest/the-difference-between-devops-and-sre-85kpt.JPG) -2. **Roles and ownership:** In DevOps, developers, and other related stakeholders are often involved in operational tasks, sharing ownership of the entire software delivery process from development through to production. In contrast, the SRE model promotes a clear separation between development and operations. The development team is focused on building and maintaining features, while the SRE team is responsible for the reliability and availability of services. +### Goals -3. **Scope and mindset:** DevOps is typically applied to self-contained applications or services, encouraging experimentation and innovation with opportunities to learn from failures. In contrast, SRE is applied to entire systems and platforms, primarily focusing on minimizing human errors and downtime. +DevOps engineers' primary focus is to improve the (SDLC) through process automation, enhance collaboration, and promote continuous improvement. Site Reliability Engineers aims to create easily maintained systems by automating processes, manual and repetitive tasks, implementing monitoring and alerting systems, and designing for scale and resilience. -4. **Metrics:** In measuring success, DevOps tracks metrics such as the time from code commit to deployment, deployment frequency, failure rate, and overall system performance. On the other hand, SRE focuses on metrics related to service level objectives like Mean Time to Recover (MTTR), Mean Time Between Failures (MTBF), latency, traffic, and the frequency of errors occurring in the system. +### Roles and ownership -5. **Team structure and processes:** DevOps teams work more like an Agile development team, collaborating with members across development and operations. They often break projects into smaller features and use [continuous integration(CI) and continuous delivery (CD)](https://roadmap.sh/guides/ci-cd) to prioritize delivery based on business needs. +In DevOps culture, developers, and other related stakeholders are often involved in operational tasks, sharing ownership of the entire software delivery process from development through to production. - In contrast, SRE teams are highly specialized teams as compared to DevOps. They see the production environment as a highly available service and implement measures to address threats and failures that may arise from deployed features and integrations. +In contrast, the SRE model promotes a clear separation between development and operations. The development team is focused on building and maintaining features, while the SRE team is responsible for the reliability and availability of services. -Both DevOps and SRE aim to enhance software development and operations. DevOps primarily focuses on software development and delivery, while SRE concentrates on software operations and maintenance after deployment, emphasizing reliability and scalability strongly. +### Scope and mindset + +DevOps is typically applied to self-contained applications or services, encouraging experimentation and innovation with opportunities to learn from failures. In contrast, SRE is applied to entire systems and platforms, primarily focusing on minimizing human error and downtime for the operations teams. + +### Metrics + +In measuring success, DevOps teams track metrics such as the time from code commit to deployment, deployment frequency, failure rate, and overall system performance. On the other hand, Site Reliability Engineers focus on metrics related to service level objectives like Mean Time to Recover (MTTR), Mean Time Between Failures (MTBF), latency, traffic, and the frequency of errors occurring in the system. + +### Team structure and processes + +DevOps teams work more like an Agile development team, ensuring collaboration between development and operations teams. They often break projects into smaller features and use [continuous integration(CI) / continuous delivery (CD)](https://roadmap.sh/guides/ci-cd) to prioritize delivery based on business needs. + +In contrast, SRE teams are highly specialized teams as compared to DevOps. They see the production environment as a highly available service and implement measures to address threats and failures that may arise from deployed features and integrations. + +Both DevOps and SRE aim to enhance the software development process and operations. DevOps primarily focuses on software development and delivery, while SRE concentrates on software operations and maintenance after deployment, emphasizing reliability and scalability strongly. ## Key components of DevOps -According to [Statista](https://www.statista.com/statistics/1234098/software-development-process-changes/), DevOps adoption is expected to grow, with **21% of respondents having integrated it into their source code management**. Recruiters are also actively hiring for DevOps roles, [**with demand currently at 35.5%**](https://www.statista.com/statistics/1296668/top-in-demand-tech-skills-worldwide/)**.** +According to [Statista](https://www.statista.com/statistics/1234098/software-development-process-changes/), DevOps adoption is expected to grow, with **21% of respondents having integrated it into their source code management**. Recruiters are also actively hiring for DevOps job roles, [**with demand currently at 35.5%**](https://www.statista.com/statistics/1296668/top-in-demand-tech-skills-worldwide/)**.** -One core principle of DevOps is automating manual processes within the SDLC, focusing on reducing costs and minimizing errors. In addition, DevOps embraces continuous integration, enabling companies to adapt and accommodate changes to end-users' needs or business expansions. +One core principle of DevOps is automating manual processes within the SDLC, focusing on reducing costs and minimizing errors. In addition, DevOps embraces continuous integration, enabling companies to adapt and accommodate changes to end-users' needs or business requirements. The following are key aspects of DevOps: @@ -61,43 +75,53 @@ The following are key aspects of DevOps: One of the fundamental principles of DevOps is to facilitate faster release cycles for software. This is achieved by continuously integrating code into a repository and automatically deploying it to the required environment. +![ci/cd](https://assets.roadmap.sh/guest/cicd-xrwy2.JPG) + ### Automation Development processes such as testing, deployment, and infrastructural provisioning can be tedious, error-prone, and manual. DevOps addresses these challenges through automation. +![automation](https://assets.roadmap.sh/guest/automation-mdtdr.jpeg) + ### Monitoring -Monitoring application performance, health, availability, and customer experience are some of the key principles of DevOps. With this capability, companies can identify issues quickly, iterate on solutions, and continuously improve. +Proactive monitoring of application performance, health, availability, and customer experience are some of the key principles of DevOps. With this capability, companies can identify issues quickly, iterate on solutions, and continuously improve. + +![metric](https://assets.roadmap.sh/guest/monitoring-uyfmx.jpeg) ### Collaboration and communication -The overall goal of shipping secure and reliable software involves stakeholders like the developments, operations, and other relevant teams to adhere to DevOps practices of collaborating and actively communicating throughout the SDLC. +The overall goal of shipping secure and reliable software involves stakeholders like the development teams, operations teams, and other relevant teams to adhere to DevOps practices of collaborating and actively communicating throughout the SDLC. + +![collaboration & communication](https://assets.roadmap.sh/guest/collaboration-t3wa1.jpeg) ### Infrastructure as Code Using scripts or declarative definitions to provision and configure infrastructure is a key component in DevOps. This approach enables teams to be consistent, efficiently manage resources, and reproduce environment-specific bugs. +![iac](https://assets.roadmap.sh/guest/infrastructure-as-code-gj75w.jpeg) + ### Continuous learning and improvement In DevOps, teams are encouraged to share knowledge across teams, conduct service failure postmortem, and experiment with new ideas and potential solutions. ## Key components of SRE -SRE can function as a tool, a set of best practices, or a strategy to automate IT operations tasks such as production system management, change management, and incident response. It empowers system administrators to manage large systems using code rather than manual methods. +Site Reliability Engineering can function as a tool, a set of best practices, or a strategy to automate IT operations tasks such as production system management, change management, and incident response. It empowers system administrators to manage large systems using code rather than manual methods. The following are the key aspects of SRE: ### Automation -One key principle followed by SRE is establishing a workflow to reduce manual and repetitive work related to operational tasks. +One key principle followed by Site Reliability Engineering is establishing a workflow to reduce manual and repetitive work related to operational tasks. SRE ensures that every team member has access to updated automation tools and technologies. ### Monitoring and alerting -A core principle of SRE is using real-time monitored metrics and alerts to detect and respond to issues promptly. With these systems in place, SRE teams can diagnose and resolve potential issues before they impact the system. +A core principle of SRE is using real-time monitored metrics and alerts to detect and respond to issues promptly before they impact the development teams and end users. With these systems in place, SRE teams can diagnose and resolve potential issues before they impact the system. ### Forecast and planning -Due to user traffic and workload, systems can experience increased demand and heavy resource usage. SRE implements measures to ensure that such demand is properly handled by forecasting resources and managing related infrastructure. +Due to user traffic and workload, systems can experience increased demand and heavy resource usage. Site Reliability Engineering implements measures to ensure that such demand is properly handled by forecasting resources and managing related infrastructure. ### Incident management @@ -105,64 +129,67 @@ SRE teams define clear processes for detecting, diagnosing, and resolving incide ### Service Level Objectives (SLOs) -SRE aims to deliver higher availability percentages, uptime, and other metrics such as error rates and response time to system customers or users. +Site Reliability Engineering aims to deliver higher availability percentages, uptime, and other metrics such as error rates and response time to system customers or users. + +These processes help software developers build and deliver software more efficiently. ## Similarities between DevOps and SRE +![Similarities](https://assets.roadmap.sh/guest/similarities-devops-sre-eqa7p.jpeg) DevOps and SRE principles have become popular and widely adopted by organizations because they create robust and bug-free systems with continuous improvement in mind. Below are some key similarities between DevOps and SRE: -- Both advocate automating repetitive tasks like testing, deployment, monitoring, etc. -- They promote the use of CI and CD for software releases -- There is a strong emphasis on real-time monitoring and collection of metrics for diagnosis and performance monitoring -- Both focus on collaboration and encourage a culture of continuous learning and improvement -- They prioritize building systems with a great user experience, quick recovery from disruptions, and reliability. +- Both advocate automating repetitive tasks like continuous testing, deployment, monitoring, etc. +- They promote the use of CI and CD for software releases. +- There is a strong emphasis on real-time monitoring and collection of metrics for diagnosis and performance monitoring. +- Both focus on reducing organizational silos through collaboration and encourage a culture of continuous learning and improvement. +- They prioritize building reliable systems with a great user experience, quick recovery from disruptions, reliability, and effective operations lifecycle management. ## What is the role of a DevOps engineer? -[DevOps engineers](https://roadmap.sh/devops) are integral to any organization looking to bridge the gap between development and operations. They collaborate closely with developers, quality assurance teams, and other stakeholders to achieve this goal. Here are some key responsibilities of a DevOps engineer: +[DevOps engineers](https://roadmap.sh/devops) are integral to any organization looking to bridge the gap between development and operations teams. They collaborate closely with software engineers, quality assurance teams, and other stakeholders to achieve this goal. Here are some key responsibilities of a DevOps engineer: -- Adopts the agile methodology and automation to remove bottlenecks in the SDLC -- Set up monitoring and logging mechanisms to track the performance, availability, and health of systems -- Provision resources, deploy, and manage applications on cloud platforms like [AWS](https://roadmap.sh/aws), Azure, Google Cloud, etc -- Creates standards and manages configuration to enforce and maintain system integrity across multiple environments -- Creates a plan to optimize system performance and resource utilization -- Promotes knowledge sharing by carefully documenting processes, procedures, and best practices +- Adopts the agile methodology and automation to remove bottlenecks in the SDLC. +- Set up monitoring and logging mechanisms to track the performance, availability, and health of systems. +- Provision resources, deploy, and manage applications on cloud platforms like [AWS](https://roadmap.sh/aws), Azure, Google Cloud, etc. +- Creates standards and manages configuration to enforce and maintain system integrity across multiple environments. +- Creates a plan to optimize system performance and resource utilization. +- Promotes knowledge sharing by carefully documenting processes, procedures, and best practices. -To perform these responsibilities, the DevOps team uses many tools to automate and improve their workflow. Here are some of the tools commonly used: +To perform these responsibilities, the DevOps team uses many tools to automate and improve their workflow. Here are some of the DevOps tools commonly used: -- **Docker:** [Docker](https://roadmap.sh/docker) is an open-source platform that enables developers to build, deploy, and run containerized applications. -- **Kubernetes:** [Kubernetes](https://roadmap.sh/kubernetes) is an open-source orchestration platform for automating the deployment, scaling, and managing containerized applications -- **Jenkins:** Jenkins is an automation server used for performing CI and CD in a software project -- **Git:** Git is a distributed version control system for tracking changes in source code during development -- **Prometheus:** Prometheus is an open-source application for event monitoring and alerting. -- **Grafana:** Grafana is an open-source analytics and visualization application -- **Ansible:** Ansible is an open-source engine for automating resource provision, configuration management, application deployment, and other IT-related tasks +- **Docker**: [Docker](https://roadmap.sh/docker) is an open-source platform that enables developers to build, deploy, and run containerized applications. +- **Kubernetes**: [Kubernetes](https://roadmap.sh/kubernetes) is an open-source orchestration platform for automating the deployment processes, scaling, and managing containerized applications. +- **Jenkins**: Jenkins is an automation server used for performing CI and CD in a software project. +- **Git**: Git is a distributed version control system for tracking changes in source code during software development. +- **Prometheus**: Prometheus is an open-source application for event monitoring and alerting. +- **Grafana**: Grafana is an open-source analytics and visualization application that helps identify issues and improve the performance of software systems. +- **Ansible**: Ansible is an open-source engine for automating resource provision, configuration management, application deployment, and other IT-related tasks. ## What is the role of an SRE engineer? -Similar to the DevOps team, SRE engineers are also an integral part of any organization looking to build systems and services that are reliable, available, scalable, and performant. Here are some key responsibilities of an SRE engineer: +Similar to the DevOps engineers, SRE engineers are also an integral part of any organization looking to build systems and services that are reliable, available, scalable, and performant. SREs have a narrow focus on specific practices and metrics that allow for improved collaboration and service delivery. Here are some key responsibilities of an SRE engineer: -- Responsible for maintaining and ensuring system reliability and uptime -- Collaborate with the development team to design and architect applications -- Automate tasks by developing tools and scripts for deployment, alerting, and incident response -- Analyze and plan resources to cater for future growth and scale -- Creates plans to mitigate or eliminate events or system failures -- Promotes knowledge sharing by documenting system configuration, procedures, and best practices +- Responsible for maintaining and ensuring system reliability and uptime. +- Collaborate with the development team to design and architect applications. +- Automate tasks by developing tools and scripts for deployment, alerting, and incident response. +- Analyze and plan resources to cater for future growth and scale. +- Creates plans to mitigate or eliminate events or system failures. +- Promotes knowledge sharing by documenting system configuration, procedures, and best practices. To perform these responsibilities, the SRE team uses various tools to tackle infrastructure and operational problems. Here are some of the tools commonly used: -- **Kibana:** Kibana is an open-source data visualization platform for monitoring metrics and events -- **Datadog:** Datadog is a cloud monitoring tool for events, infrastructure hosts, and much more -- **NetApp Cloud Insights:** NetApp Cloud Insights is a tool used to monitor IT infrastructure -- **Terraform:** Terraform is an infrastructure as code tool used to automate infrastructure tasks -- **Ansible:** Ansible is an open-source engine for automating resource provision, configuration management, application deployment, and other IT-related tasks -- **New Relic:** New Relic is a cloud-based full-stack observability platform for monitoring and analyzing metrics -- **Opsgenie:** Opsgenie is an incident response solution with functionalities like on-call scheduling, reporting, analytics, and alerting +- **Kibana**: Kibana is an open-source data visualization platform for monitoring metrics and events +- **Datadog**: Datadog is a cloud monitoring tool for events, infrastructure hosts, and much more +- **NetApp Cloud Insights**: NetApp Cloud Insights is a tool used to monitor IT infrastructure +- **Terraform**: Terraform is an infrastructure as code tool used to automate infrastructure tasks +- **Ansible**: Ansible is an open-source engine for automating resource provision, configuration management, application deployment, and other IT-related tasks +- **New Relic**: New Relic is a cloud-based full-stack observability platform for monitoring and analyzing metrics +- **Opsgenie**: Opsgenie is an incident response solution with functionalities like on-call scheduling, reporting, analytics, and alerting -In summary, DevOps focuses on developing and delivering software, and SRE works on the deployed software to ensure it functions as intended and is reliable. They both have similarities and differences that organizations actively adopt when building and maintaining scalable applications. +In summary, [DevOps](https://roadmap.sh/devops) focuses on developing and delivering software, and SRE works on the deployed software to ensure it functions as intended and is reliable. They both have similarities and differences that organizations actively adopt when building and maintaining scalable applications. Whether you're an experienced developer aiming to improve your skills or a beginner exploring a career as a DevOps or SRE engineer, you might have seen tons of resources available online and maybe get overwhelmed without a clear path on the way to go. Well, not anymore, roadmap.sh provides a comprehensive guide on any of the career paths you choose to follow. You will be able to: -- Stay updated with a new roadmap, track your progress, and share it on your roadmap.sh profile -- Learn with like-minded individuals by joining a supportive community when you [sign up](https://roadmap.sh/signup) on roadmap.sh platform -- [Generate a new roadmap](https://roadmap.sh/ai) with AI. +- Stay updated with a new roadmap, track your progress, and share it on your roadmap.sh profile. +- Learn with like-minded individuals by joining a supportive community when you [sign up](https://roadmap.sh/signup) on roadmap.sh platform. +- [Generate a new roadmap with AI](https://roadmap.sh/ai). diff --git a/src/data/guides/frontend-languages.md b/src/data/guides/frontend-languages.md index f080ecc10..b4697181c 100644 --- a/src/data/guides/frontend-languages.md +++ b/src/data/guides/frontend-languages.md @@ -6,7 +6,7 @@ excludedBySlug: '/frontend/languages' seo: title: 'What Front End Programming Languages Should You Learn?' description: 'Get ahead in web development. Discover the essential frontend languages every pro developer uses!' - ogImageUrl: 'https://assets.roadmap.sh/guest/frontend-languages-8gh0j.jpg' + ogImageUrl: 'https://assets.roadmap.sh/guest/best-front-end-languages-gzngm.png' isNew: false type: 'textual' date: 2024-05-02 @@ -19,98 +19,221 @@ tags: - 'guide-sitemap' --- -![The best frontend languages to learn.](https://assets.roadmap.sh/guest/frontend-languages-8gh0j.jpg) +![The best frontend languages to learn.](https://assets.roadmap.sh/guest/best-front-end-languages-gzngm.png) Just starting out in web or mobile development? You may feel swamped by all the programming languages, libraries, and frameworks. With new options popping up daily, it's easy to get overwhelmed. This guide will help you navigate that initial confusion. As someone who's been through this process for over a decade, I’ve made this post to make your learning journey smoother. -I'll focus on the essential front-end languages, libraries, and frameworks, equipping you with the knowledge you need to make informed decisions, a roadmap to help you focus on the right skills, and build a rewarding career in front-end development. +I'll focus on the essential front-end languages and recommend a few important frameworks and libraries. This will equip you with the knowledge needed to make informed decisions, provide a roadmap to help you focus on the right skills, and help you build a rewarding career in [front](https://roadmap.sh/frontend)[-](https://roadmap.sh/frontend)[end](https://roadmap.sh/frontend) [development](https://roadmap.sh/frontend). +## What are Languages, Libraries, and Frameworks? -## Top front-end programming languages to learn in 2024 +Before we explore the front end languages, libraries, and frameworks to learn in 2024, it is important to understand what they are and the differences between them. -Here are the front-end programming languages you should learn in 2024. +**Languages** +Languages are the core programming languages that developers use to write code. They have defined syntax, semantics, and rules for writing instructions that computers can execute and understand. Examples include: -For web front-end development: +- JavaScript +- TypeScript +- Dart +- Kotlin + +**Libraries** +Libraries are collections of pre-written code that developers can use to perform specific tasks. They save time and improve productivity because developers don’t have to write code from scratch. Libraries extend the functionality of a programming language by providing functions, methods, and classes that can be imported and used. Examples include: + +- React +- Anime.js +- Chart.js +- JQuery + +**Frameworks** +Frameworks are more comprehensive than libraries as they provide a structure or skeleton with sets of rules for building applications. They enforce architecture and offer tools, libraries, and components to streamline developments. Examples include: + +- Vue +- Angular +- Flutter + +The major differences are that languages are used to write code, libraries provide reusable functions, and frameworks offer a structured approach to developing applications. + +## Top front-end languages to learn in 2024 + +![frontend languages](https://assets.roadmap.sh/guest/top-frontend-languages-to-learn-pofrf.JPG) + +These are the best front-end languages you should learn in 2024: + +**For web front-end development**: - HyperText Markup Language (HTML) -- Cascading Style Sheet (CSS) +- Cascading Style Sheets (CSS) - JavaScript - TypeScript -For mobile front-end development: +**For mobile front-end development**: - Dart - Swift - Kotlin -## Front-end programming languages for web development +### HyperText Markup Language (HTML) -Web development involves building websites, web applications, and web services that users interact with through web browsers. Front-end development focuses on the user interface (UI) and user experience (UX) aspects of web applications, ensuring that the content is visually appealing, interactive, and responsive. +![HTML HyperText Markup Language](https://assets.roadmap.sh/guest/html-bmvj9.png) -### HyperText Markup Language (HTML) -HTML serves as the backbone for building all web pages. It defines the structure and layout of content within a web browser, allowing for the display of text, images, videos, and more that users interact with. HTML is beginner-friendly, supported across multiple browsers, and fundamental to web development. +HTML is the standard markup language for creating web pages. It defines the structure and layout of content within a web browser, allowing for the display of text, images, videos, and more that users interact with. HTML is beginner-friendly, supported across multiple browsers, and fundamental to web development. + +HTML depends on languages like CSS and JavaScript to achieve full functionality, and it is mostly limited to web-based projects. Beyond being the backbone of web applications, it also plays an integral role in improving application accessibility, enhancing search engine optimization (SEO), and enabling assistive technologies to interpret and present content accurately. + +**Why is it important** -HTML depends on languages like CSS and JavaScript to achieve full functionality, and it is mostly limited to web-based projects. +- HTML is the foundational language for creating web pages. +- It defines the structure and content of the web pages. +- It is widely accepted and quick to grasp. -### Cascading Style Sheet (CSS) +**Why you should learn it** + +- It is the starting point of anything web development. +- It is the foundation for structuring content effectively. +- Required for creating or understanding web content. +- It is easy to test and debug. + +### Cascading Style Sheets (CSS) + +![CSS](https://assets.roadmap.sh/guest/css-logo-u45d6.png) CSS plays a crucial role in determining the appearance and organization of web content. When used in conjunction with HTML, it enhances the appearance and layout of web pages, enabling the creation of responsive designs that adapt to various screen sizes. CSS handles colors, fonts, spacing, and more, allowing developers to create visually appealing user interfaces. -CSS has powerful styling options, is easy to start with, and has a great ecosystem of libraries and frameworks like Tailwind CSS, Bootstrap, Foundation, etc., to build aesthetically pleasing user interfaces. +Despite advancements in web technologies, CSS remains a powerful styling tool that is easy to start with. It has a robust ecosystem of libraries and frameworks, such as Tailwind CSS, Bootstrap, and Foundation, which facilitate the creation of aesthetically pleasing user interfaces. + +**Why is it important** -CSS can present inconsistent designs, as browsers may interpret it differently. Additionally, managing CSS in a large project can be difficult, as there are no strict rules for writing it. +- It is crucial for styling and visually enhancing web pages. +- It controls the overall appearance of the web by defining layouts, colors, and fonts. +- It promotes consistency across platforms. + +**Why you should learn it** + +- It is an integral skill for front-end developers. +- It helps you improve the application’s user experience (UX). +- It enables the creation of visually appealing applications and websites. ### JavaScript -[JavaScript](https://roadmap.sh/javascript) is a versatile programming language used in conjunction with HTML and CSS to enhance the interaction of web pages. With features like excellent speed and cross-browser compatibility, JavaScript enables developers to add dynamic elements such as content updates, animations, 2D/3D graphics, and other interactive features to web applications. +![JavaScript](https://assets.roadmap.sh/guest/javascript-logo-vf4vv.png) + +JavaScript is a versatile front end language used in conjunction with HTML and CSS to enhance the interaction of web pages. With features like excellent speed and cross-browser compatibility, JavaScript enables developers to add dynamic elements such as form validation, animations, 2D/3D graphics, dynamic updates to web pages without requiring a page refresh, and other interactive features to web applications. JavaScript is essential for web development and has a vast ecosystem of libraries and frameworks for building applications across multiple platforms. JavaScript implementation varies across different browsers, creating vulnerabilities for users. They may face threats such as unauthorized data access and system manipulation by injecting malicious code. Additionally, if JavaScript is disabled in a browser, certain features and functionality might not work, adversely affecting the user experience. +**Why is it important** + +- It is a versatile scripting language for adding interaction and dynamism to web content. +- It is widely supported by all modern web browsers. +- Seamlessly integrate with other languages. + +**Why you should learn it** + +- It is essential for creating interactive web pages +- Beyond the web, you can use it for mobile app and server-side development. +- Foundation for various libraries and frameworks across all platforms. + +Want to get started with JavaScript or expand your current skills? [You can explore the complete JavaScript roadmap](https://roadmap.sh/javascript). + ### TypeScript -[TypeScript](https://roadmap.sh/typescript) is a robust and widely used programming language developed by Microsoft, which extends JavaScript by adding static typing and other advanced features. TypeScript code transpiles to JavaScript and can run seamlessly wherever JavaScript runs, making it a highly versatile programming language for front-end development. +![TypeScript](https://assets.roadmap.sh/guest/image3-y7ryl.png) + +TypeScript is a robust and widely used front end language developed by Microsoft, which extends JavaScript by adding static typing and other advanced features. TypeScript code transpiles to JavaScript and can run seamlessly wherever JavaScript runs, making it a highly versatile programming language for front-end development. + +Web developers love TypeScript because it enhances their experience by identifying runtime errors during development and providing fixes, speeding up the development process. + +TypeScript has a steeper learning curve than JavaScript, and it reduces development speed because an additional compilation step is required. -TypeScript enhances your developer experience by identifying errors during development and providing fixes, speeding up the development process. +**Why is it important** -TypeScript has a steeper learning curve than JavaScript, and it reduces development speed because an additional compilation step is required. +- Adds static types to your codebase. +- Makes it easy to write and maintain large-scale applications. +- Improves code quality as errors catch early. -## Front-end programming languages for mobile development +**Why you should learn it** -Mobile development involves building applications for mobile devices such as smartphones and tablets. Front-end development for mobile applications focuses on creating user interfaces that are optimized for mobile platforms, ensuring a seamless user experience. +- Increasingly adopted for building enterprise-level applications. +- Enhances JavaScript with type safety and modern features + +Want to get started with TypeScript or expand your current skills? [You can explore the complete TypeScript roadmap](https://roadmap.sh/typescript). ### Dart -Dart is a powerful, multi-purpose programming language designed for building high-quality applications on various platforms. It offers features such as sound null safety, object-oriented programming (OOP), pattern matching, and more, enabling developers to build and model robust software. +![Dart](https://assets.roadmap.sh/guest/dart-logo-1yr28.png) + +Dart is a powerful, multi-purpose, and modern programming language designed for building high-quality applications on various platforms. It offers features such as sound null safety, object-oriented programming (OOP), pattern matching, and more, enabling developers to build and model robust software. + +Dart is the primary language for [Flutter](https://roadmap.sh/flutter), a cross-platform runtime environment that enables compilation to native code. Flutter provides portability and speed for building applications across web and mobile platforms using a single codebase. + +Dart is strongly integrated with the Flutter framework, which may limit its support and resources outside of the framework. Moreover, Dart has limited adoption compared to other front end languages, restricting its usage in other domains. -Dart is the primary language for [Flutter](https://roadmap.sh/flutter), enabling compilation to native code and providing portability and speed for building applications across web and mobile platforms using a single codebase. +**Why is it important** -Dart is strongly integrated with the Flutter framework, which may limit its support and resources outside of the framework. moreover, Dart has limited adoption compared to other programming languages, restricting its usage in other domains. +- It is optimized for web, mobile, and server applications. +- It has a smooth developer experience and fast performance. + +**Why you should learn it** + +- It enables cross-platform development from a single codebase. +- Gaining popularity and is widely adopted due to Flutter (Google’s UI Kit). ### Swift -Swift is a high-level, multi-paradigm, compiled programming language developed for all Apple platforms. It was released in 2014 to replace Apple’s earlier programming language, Objective-C. Swift is known for its speed, modernity, and safety, making it ideal for building iOS (mobile) applications, macOS (desktop), and other Apple platforms. +![Swift](https://assets.roadmap.sh/guest/swift-logo-5vk0f.jpg) + +Swift is a high-level, multi-paradigm, compiled programming language developed for all Apple platforms. It was released in 2014 to replace Apple’s earlier programming language, Objective-C. Swift is known for its speed, modernity, and safety, making it ideal for building iOS (mobile apps), macOS (desktop), and other Apple platforms. + +Swift is a fast, secure, and versatile language that offers automatic memory management and a smaller memory footprint due to its integrated standard libraries. + +Swift is primarily designed to support Apple's operating systems and has limited support for cross-platform development. + +**Why is it important** + +- It is the main language for iOS development. +- It offers modern features, safety, and performance. + +**Why you should learn it** -Swift is fast, secure, and has a smaller memory footprint due to its standard libraries being integrated by default. +- It is essential for developing applications within Apple’s ecosystem. +- Relatively easy to learn and use, yet powerful for professional native development. -Swift is primarily designed to support the Apple platform and has limited support for cross-platform development. ### Kotlin -Kotlin is a cross-platform, statically typed, general-purpose programming language renowned for building robust and scalable applications. It serves as Google’s preferred language for Android app development. Initially released in July 2011, Kotlin has rapidly expanded its adoption beyond mobile app development. It is now employed for server-side, full stack, and data science applications. +![Kotlin](https://assets.roadmap.sh/guest/kotlin-logo-0fbjy.png) -Kotlin is based on Java but with enhanced capabilities, reliability, and ease of maintenance. It is the go-to language for developing modern Android applications and is backed by major organizations. +Kotlin is a cross-platform, statically typed, general-purpose programming language renowned for building robust and scalable applications. It serves as Google’s preferred language for Android app development. Initially released in July 2011, Kotlin has rapidly expanded its adoption beyond mobile app development. Thanks to its modern syntax and elegant design, it is now employed for server-side, full-stack, and data science applications. + +Kotlin draws inspiration from multiple programming languages, combining the best aspects of each. Based on Java but with enhanced capabilities, reliability, and ease of maintenance, Kotlin is the go-to language for developing modern Android applications and is backed by major organizations. However, it’s worth noting that compared to Java, job opportunities and adoption of Kotlin across software development are limited. +**Why is it important** + +- It is the preferred language for Android app development. +- It offers modern features, safety, and performance. + +**Why you should learn it** + +- It is becoming the standard for Android development. +- It is concise, safe, and compatible with existing Java codes. +- Can be used for both Android and server-side development. + +The table below shows a quick summary of each language’s use cases as a front end language. + +![use cases](https://assets.roadmap.sh/guest/use-cases-qwm5k.JPG) + ## Top front-end frameworks and libraries to learn in 2024 -While programming languages are essential for creating robust applications that meet business needs, they can become burdensome when developing medium to large applications. Issues like lack of code reusability, maintainability challenges, time-consuming development, and repetition may arise. +While front end languages are essential for creating robust applications that meet business needs, they can become burdensome when developing medium to large applications. Issues like lack of code reusability, maintainability challenges, time-consuming development, and repetition may arise. -Frameworks and libraries offer a solution by providing a structured approach to application development. They offer pre-written code, reusable functions, coding standards, and architectural patterns that developers can leverage for common tasks, thus saving time and effort. Additionally, frameworks often have built-in security, scalability, and performance optimization features, enhancing overall software quality. +Frameworks and libraries offer a solution by providing a structured approach to application development. They include pre-written code, reusable functions, coding standards, and architectural patterns that developers can leverage for common tasks, saving time and effort. Additionally, frameworks often have built-in security features that help JavaScript code execute safely on users' computers. They also enhance scalability and performance optimization, improving overall software quality. You should explore these frontend frameworks and libraries in 2024: @@ -126,25 +249,31 @@ You should explore these frontend frameworks and libraries in 2024: ### React -[React](https://roadmap.sh/react) is a widely adopted JavaScript library developed by Meta and a vibrant community of individual contributors. It empowers developers to construct interfaces by assembling individual pieces known as components. React provides a reusable modular architecture through reusable components and a sophisticated rendering engine, facilitating the creation and management of small- to large applications. +React is a widely adopted JavaScript library developed by Meta and a vibrant community of individual contributors. It empowers developers to construct interactive user interfaces by assembling individual pieces known as components. React provides a reusable modular architecture through reusable components and a sophisticated rendering engine, facilitating the creation and management of small-to-large applications. + +Over the years, React has undergone technological advancements and has become the foundation for various frameworks such as Next.js, Gatsby, and Remix. These frameworks build upon React's core capabilities, offering additional features and functionalities to streamline frontend development. -Over the years, React has undergone technological advancements and has become the foundation for various frameworks such as Next.js, Gatsby, and Remix. These frameworks build upon React's core capabilities, offering additional features and functionalities to streamline the development of web applications. +You can learn more details by exploring the [React roadmap](https://roadmap.sh/react). ### Vue -[Vue](https://roadmap.sh/vue) is a JavaScript framework designed for developing user interfaces, leveraging the model-view-view model (MVVM) architecture to separate the user interface from the application's business logic. Vue extends HTML elements to facilitate the creation of reusable code components. It provides several built-in features, including templating, reactivity, and transitions. Additionally, Vue offers support for various libraries, making it suitable for developing applications like Single-Page Applications (SPAs), desktop and mobile applications of various scales, from small projects to large enterprise applications. +Vue is a progressive JavaScript framework designed for developing interactive web applications, leveraging the model-view-view model (MVVM) architecture to separate the user interface from the application's business logic. Vue extends HTML elements to facilitate the creation of reusable code components. It provides several built-in features, including templating, reactivity, and transitions. Additionally, Vue offers support for various libraries, making it suitable for developing applications like Single-Page Applications (SPAs), desktop and mobile applications of various scales, from small projects to large enterprise applications. -Vue has also become the foundation of frameworks like Nuxt.js, VuePress, and Vuetify, offering pre-built components, server-side rendering, themes, and much more for building complex websites and applications. +Vue has also become the foundation of frameworks like Nuxt.js, VuePress, and Vuetify, offering pre-built components, server-side rendering, themes, and much more for building complex websites and applications. Its gentle learning curve makes it a popular choice for beginners starting front-end development. + +You can learn more details by exploring the [Vue roadmap](https://roadmap.sh/vue). ### Angular -[Angular](https://roadmap.sh/angular) is an open-source front-end framework developed by the Angular team at Google, along with contributions from individual developers. Built on TypeScript, Angular provides a well-structured framework with features like two-way data binding, reactive programming, dependency injection, and modular architecture. These features are particularly beneficial and make Angular trusted for building enterprise-grade applications. +Angular is an open source JavaScript framework developed by the Angular team at Google with contributions from individual developers. Built on TypeScript, Angular provides a well-structured framework with features like two-way data binding, reactive programming, dependency injection, and modular architecture. These features enable developers to build enterprise-grade applications. + +Although Angular has a steep learning curve, it has significantly influenced the web development community. Many other frameworks and open-source libraries have drawn inspiration from Angular's paradigm and architectural patterns, attesting to its influence and popularity. -Notably, many other frameworks and open-source libraries have drawn inspiration from Angular's paradigm and architectural patterns, attesting to its influence and popularity within the web development community. +You can learn more details by exploring the [Angular roadmap](https://roadmap.sh/angular). ### Svelte -Svelte is an open-source component-based front-end framework for building web applications. It follows the paradigm of existing web frameworks but takes a unique approach with less code, no virtual Document Object Model (DOM), and reactivity. Svelte also powers frameworks like SvelteKit, a library for building production-ready applications. +Svelte is an open-source component-based front-end framework for building web applications. It adheres to the paradigm of existing web frameworks but introduces a unique approach that involves less code, no virtual Document Object Model (DOM), and built-in reactivity. Svelte also serves as the foundation for frameworks like SvelteKit, which is a library for building user interfaces compatible with both legacy and modern web browsers. ### Solid.js @@ -160,15 +289,17 @@ Like Next.js, Remix is a full-stack web development framework built on React’s ### Nuxt -Nuxt is an open-source framework for building full-stack web applications powered by Vue. It comes with features like file-based routing, data fetching, server routes, TypeScript support, middleware, and more, making it ideal for building scalable applications. +Nuxt is an open-source framework for building full-stack web applications powered by Vue. It comes with features like file-based routing, data fetching, server routes, TypeScript support, middleware, and more, making it ideal for building dynamic web pages. ### Astro Astro is an open-source web framework for building content-heavy websites like e-commerce platforms, blogs, and marketing websites. Compared to other frameworks, it reduces JavaScript overhead, loads faster, and has excellent SEO support. Additionally, it features Island, a component-based architecture optimized for content-driven websites. It is UI-agnostic, supporting other UI libraries such as Vue, Svelte, React, web components, etc. -### Other innovative front-end languages and frameworks +## Other innovative front-end languages and frameworks -Web and mobile platforms become increasingly powerful as more use cases are unlocked. This trend has led to increased technology actively creating bridges to integrate front-end usage in libraries and frameworks, enhancing user experience. Below are some languages and frameworks bridging the gap to make front-end development even more accessible: +Web and mobile platforms become increasingly powerful as more use cases are unlocked. This trend has led to increased technology actively creating bridges to integrate front-end usage in libraries and frameworks, enhancing user experience. + +These are some of the languages and frameworks bridging the gap to make front-end development even more accessible: ### HTMX @@ -176,9 +307,12 @@ HTMX is a dependency-free UI library for the web, which can replace traditional ### React Native -[React Native](https://roadmap.sh/react-native) enables the development of cross-platform mobile applications, such as Android and iOS, using React.js. It compiles to native mobile code, which allows you to “write once and ship everywhere.” Thanks to the complimentary React.js community, React Native also features a rich tooling and plugin ecosystem. +React Native enables the development of cross-platform mobile applications, such as Android and iOS, using React.js. It compiles to native mobile code, which allows you to “write once and ship everywhere.” Thanks to the complimentary React.js community, React Native also features a rich tooling and plugin ecosystem. + +You can learn more details by exploring the [React Native roadmap](https://roadmap.sh/react-native). ### WebAssembly and front-end development +![WebAssembly](https://assets.roadmap.sh/guest/webassembly-logo-lugnl.png) WebAssembly (or Wasm) is a binary instruction format serving as a compilation target for programming languages, enabling them to run efficiently in web browsers. It empowers developers to write high-performance code in languages like C, [C++](https://roadmap.sh/cpp), and [Rust](https://roadmap.sh/rust), which can then be seamlessly integrated into web applications, enhancing web front-end development capabilities. @@ -186,10 +320,9 @@ Beyond the web, WebAssembly has also gained adoption in various domains, such as Companies like Figma, AutoCAD, and cloud-native companies actively leverage WebAssembly to meet their performance needs and contribute to the WebAssembly ecosystem by building libraries, tools, and packages that enhance its capabilities. +## How do you select the right front-end language? -## How do you select the right front-end programming language? - -Choosing the right front-end programming language to learn is an important decision. It shouldn’t be taken lightly, as it significantly impacts your career trajectory and success. This section examines some points to help you select a front-end programming language to learn in 2024. +Choosing the right front end language to learn is an important decision. It shouldn’t be taken lightly, as it significantly impacts your career trajectory and success. This section examines some points to help you select a front end language to learn in 2024. The points are: @@ -210,7 +343,9 @@ The answers will help narrow your options and focus on languages that suit the p ### Targeted platform -The web, mobile, TV, and other screen-enabled electronic devices present users with interfaces they touch, see and interact with. Having a good understanding of the supported languages on such platforms is important. For example, building an application for the Apple platform involves using languages like Swift, Dart (via [Flutter](https://roadmap.sh/flutter)), and JavaScript (via [React Native](https://roadmap.sh/react-native)). +The web, mobile, TV, and other screen-enabled electronic devices present users with interfaces they touch, see and interact with. It is important to have a good understanding of the supported languages on such platforms. + +For example, building an application for the Apple platform involves using languages like Swift, Dart (via [Flutter](https://roadmap.sh/flutter)), and JavaScript (via [React Native](https://roadmap.sh/react-native)). Additionally, it is essential to learn to use the associated frameworks and their application programming interfaces (APIs). ### Career trajectory and opportunity @@ -228,5 +363,4 @@ Furthermore, users' evolving needs will continue to directly impact the approach Staying informed about these changes is critical, as is knowing the appropriate path to follow when learning or adopting new technology. The [front-end r](https://roadmap.sh/frontend)[oadmap](https://roadmap.sh/frontend) is a reliable source of truth for developers seeking to stay updated and informed about the changes that may arise in front-end development. -Beyond having access to a reliable roadmap, an essential aspect of learning is monitoring your progress, demonstrating your skills to potential employers, and joining a supportive community. [Sign up to get started](https://roadmap.sh/signup) on the frontend roadmap while tracking your progress. - +Beyond having access to a reliable roadmap, an essential aspect of learning is monitoring your progress, demonstrating your skills to potential employers, and joining a supportive community. [Sign up to get started](https://roadmap.sh/signup) on the frontend roadmap while tracking your progress. diff --git a/src/data/guides/full-stack-vs-software-engineer.md b/src/data/guides/full-stack-vs-software-engineer.md index eb0a85b39..2244fad94 100644 --- a/src/data/guides/full-stack-vs-software-engineer.md +++ b/src/data/guides/full-stack-vs-software-engineer.md @@ -6,7 +6,7 @@ excludedBySlug: '/full-stack/vs-software-engineer' seo: title: 'Full Stack Developer or Software Engineer – Which Way to Go?' description: 'Unsure about your dev career path? Compare full stack developer and software engineer roles to make an informed decision.' - ogImageUrl: 'https://assets.roadmap.sh/guest/full-stack-developer-vs-software-engineer-yy0dk.jpg' + ogImageUrl: 'https://assets.roadmap.sh/guest/full-stack-developer-vs-software-engineer-ol28u.png' isNew: false type: 'textual' date: 2024-05-02 @@ -19,68 +19,98 @@ tags: - 'guide-sitemap' --- -![Choosing between full stack developer or software engineer.](https://assets.roadmap.sh/guest/full-stack-developer-vs-software-engineer-yy0dk.jpg) +![Choosing between full stack developer or software engineer.](https://assets.roadmap.sh/guest/full-stack-developer-vs-software-engineer-ol28u.png) -Have you ever heard the saying that **all full-stack developers are software engineers, but not all software engineers are full-stack developers**? +Have you ever heard the saying that **all full stack developers are software engineers, but not all software engineers are full stack developers**? -A full-stack developer is responsible for the user-facing side and the behind-the-scenes logic that makes everything work, while a software engineer may specialize in just one of these areas. -Despite their differences, both roles require similar problem-solving skills, even though their toolkits may vary. +A full stack developer is responsible for the user-facing side of web applications, user interfaces, and the behind-the-scenes logic and web architecture that makes everything work, while a software engineer may specialize in just one of these areas. -This article provides an in-depth discussion of what each role entails, their similarities and differences, the necessary skills, and the growth potential in these fields. -It will also touch on salary ranges, help you determine which path fits you best, and provide roadmaps for your software engineering or full-stack development journey. +Despite the differences between full stack developers and software engineers, both roles require similar problem-solving skills, even though their toolkits may vary. -The table below summarizes the major differences between a full stack developer and software engineer +This guide provides a detailed explanation of the following: -| **Full-Stack Developer** | **Software Engineer** | -|---------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------| -| Focuses on end-to-end development of applications (both front-end and back-end) | Specializes and practices in one domain and has a deep knowledge of it. | -| Mostly limited to just front-end and back-end development | There are a broad range of domain options to choose from. e.g front-end, back-end, mobile, desktop, embedded systems. | +- Full stack development and software engineering roles. +- Skills required to be a full stack developer and a software engineer. +- Similarities and differences between a full stack developer and a software engineer. +- Growth opportunities in full stack development and software engineering. +- Average salary of a full stack developer and software engineer. +- Guidance if you should go for full stack development or software engineering. +- Provide full stack developer and software engineer roadmaps. -Here’s each role in detail. +The table below summarizes a full stack developer vs software engineer roles. + +| **Full Stack Developer** | **Software Engineer** | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Full stack web developer also known as a full stack engineer work on end-to-end web development side of applications (both front-end and back-end web programming) | A software engineer specializes in new technologies and practices in one domain or a particular project and has a deep knowledge of it. | +| A full stack developer role is mostly limited to just front-end(web design elements) and back-end | A software engineer has a broader range of domain options to choose from. e.g front-end, back-end, web apps, mobile, desktop, embedded systems, native apps, web development | + +![Full stack developer vs Software engineer](https://assets.roadmap.sh/guest/full-stack-vs-software-engineer-e3ozc.jpg) + +Let me take you through each role so you see what they’re like and I’ll help you decide which is best suited to your ambitions and interest. ## Who is a full stack developer? -A [full stack developer](https://roadmap.sh/full-stack) possesses the knowledge and technical skill sets to work proficiently in a software application's front-end and back-end. The application's front-end encompasses everything the user can see while interacting with it, i.e., the user interface. The back-end consists of the server-side logic, the database, and the server. +A [full stack developer](https://roadmap.sh/full-stack) also known as a full stack programmer possesses the knowledge and technical skill sets to work proficiently in a software application's front-end and back-end. + +An application's front-end encompasses everything the user can see while interacting with it, i.e., the user interface. The back-end of a web application consists of the server-side programming, the database, and the server. Full stack developers typically are responsible for building the front-end and back-end of software applications. -Let's take a look at front-end and back-end development in greater detail. +Let's take a look at both the front-end and back-end in greater detail. +### Front-end development -- **Front-end development** refers to everything a user can see and interact with. It is also known as the client side of an application. It is concerned primarily with the user interface (UI) and user experience (UX). +It refers to everything a user can see and interact with. It is also known as the client side of an application. It is concerned primarily with the client-side development, user interface (UI) and user experience (UX). +The common programming languages used in front-end development by a full stack developer include HTML, Cascading Style Sheets (CSS), and JavaScript. HTML defines the markup of the web page. CSS builds upon HTML and represents the style and format of the webpage. JavaScript is a programming language often used for front-end development and adds logic to your web page. You’ll find an excellent guide and roadmap to learning [JavaScript](https://roadmap.sh/javascript) on our platform. - The common languages used in front-end development include HTML, Cascading Style Sheets (CSS), and JavaScript. HTML defines the markup of the web page. CSS builds upon HTML and represents the style and format of the webpage. JavaScript is a programming language often used for front-end development and adds logic to your web page. You’ll find an excellent guide and roadmap to learning [JavaScript](https://roadmap.sh/javascript) on our platform. - - There are quite a few front-end frameworks out there. Some of the common ones are [React](https://roadmap.sh/react), [Vue](https://roadmap.sh/vue), and [Angular](https://roadmap.sh/angular). You can look at the [front-end beginners roadmap](https://roadmap.sh/frontend?r=frontend-beginner) or the [advanced front-end roadmap](https://roadmap.sh/frontend?r=frontend) for a more detailed guide. +There are quite a few front-end web development frameworks out there used by full stack developers. Some of the common ones are [React](https://roadmap.sh/react), [Vue](https://roadmap.sh/vue), and [Angular](https://roadmap.sh/angular). You can look at the [front-end beginners roadmap](https://roadmap.sh/frontend?r=frontend-beginner) or the [advanced front-end roadmap](https://roadmap.sh/frontend?r=frontend) for a more detailed guide. -- **Back-end development** includes everything the user *cannot* see. It is sometimes referred to as the server side of an application. It focuses on the application's functionality and *business logic*. Examples of back-end components include data storage, security, and handling of business logic. +### Back-end development - Back-end development mainly involves creating API endpoints consumed by the application's front-end. Some common back-end programming languages include C#, Java, Rust, Golang, and Python. Check out the [back-end developer](https://roadmap.sh/backend) roadmap. +It includes everything the user *cannot* see. It is sometimes referred to as the server side of an application. It focuses on the application's functionality and *business logic*. Examples of back-end components include data storage, security, and handling of business logic. -## Skills required to be a full stack developer +Back end development mainly involves creating API endpoints consumed by the application's front-end. Backend developers usually work with languages such as Python , Java , or Ruby , along with frameworks like Node.js , Django , or Ruby on Rails. Check out the [back-end developer](https://roadmap.sh/backend) roadmap. + +### Full stack developers' skills The necessary technical skills to be a full stack developer include: - Knowledge of HTML, CSS, and [JavaScript](https://roadmap.sh/javascript)/[TypeScript](https://roadmap.sh/typescript). - Knowledge of at least one JavaScript framework e.g. [React](https://roadmap.sh/react), [Vue js](https://roadmap.sh/vue), [Angular](https://roadmap.sh/angular). -- Knowledge of at least one back-end language. You can transfer your knowledge of JavaScript to the back-end for back-end development with Node JS. -- In-depth understanding of server-side rendering and web security. +- Knowledge of at least one of the back-end programming languages. You can transfer your knowledge of JavaScript to the back-end with Node JS. +- Solid understanding of server-side rendering and web security. - Knowledge of APIs. - Understanding of database management systems and database architecture. +- Knowledge of data structures and algorithm - Basic knowledge of [DevOps](https://roadmap.sh/devops). +- Project management skills. + +![Full stack developer skills](https://assets.roadmap.sh/guest/fullstack-developer-skills-gbnoy.jpg) ## Who is a software engineer? -A software engineer is a specialist with a deep understanding of software development, computer systems, and programming languages. They design and create software programs and applications that solve real-world problems. Software engineers are specialists who focus on a specific aspect of software development. They produce high-quality software solutions. +A software engineer is a specialist with a deep understanding of software development, computer systems, and programming languages. A software engineer designs and creates software programs and web applications that solve real-world problems. + +Software engineers are specialists who focus on a specific aspect of software development. A software engineer produces high quality software solutions and ensures high software performance. They can specialize in parts of development such as database management, web development, mobile development and more. There are two primary types of software engineers: applications and systems software engineers. -**Application software engineers:** Client-focused software engineers design and develop software users interact with. They could be front-end, back-end, or full-stack developers. They also develop applications for operating systems such as iOS, Android, Windows, Linux, and many more. +### Application software engineers + +An application software engineer is also known as s client-focused software engineer. These software engineers design and develop software applications users interact with. -**Systems software engineers:** These software engineers develop systems and networks that drive the user-facing applications developed by the application software engineers. They are specialists in either hardware or software engineering or both. They can also integrate different software products into a single platform; for example, [DevOps](https://roadmap.sh/devops) engineers can use tools like [Docker](https://roadmap.sh/docker) and [Kubernetes](https://roadmap.sh/kubernetes) to deploy and orchestrate applications. +An application software engineer could be a front-end engineer, a back-end engineer, or full-stack software engineer. They also develop applications for operating systems such as iOS, Android, Windows, Linux, and many more. -System software engineers often serve as IT or system architects who design and enforce industry tech standards. They are experts in software design and mostly design back-end systems that users do not directly interact with. +### Systems software engineers -Software systems are complex, and much thought goes into building them. Software engineers use their broad knowledge to break down these complex systems, and the usual software development life cycle looks like the following. +These software engineers develop systems and networks that drive the user-facing applications developed by the application software engineers. A system software engineer is a specialist in either hardware or software engineering or both. + +System software engineers can also integrate different software products into a single platform; for example, [DevOps](https://roadmap.sh/devops) engineers can use tools like [Docker](https://roadmap.sh/docker) and [Kubernetes](https://roadmap.sh/kubernetes) to deploy and orchestrate applications. + +System software engineers often serve as IT or system architects or backend software developers who design, test software and enforce industry tech standards. A system software engineer is an expert in software design and mostly design back-end systems and operating system that users do not directly interact with. + +Software systems are complex, and much thought goes into building them. Software engineers use their broad knowledge of coding languages and engineering principles to break down these complex systems and build software. + +The usual software project development and management life cycle looks like the following: - They design the whole system, typically employing the principles of [system design](https://roadmap.sh/system-design) and [software design architecture](https://roadmap.sh/software-design-architecture). They decide on the software architecture to use for the application by weighing the pros and cons of different system architectures that might be suitable. Some standard architectures are monolith architecture, micro-services architecture, event-driven architecture, etc. @@ -90,65 +120,96 @@ Software systems are complex, and much thought goes into building them. Software - Building the system involves several iterations. Still, the target is usually to produce the minimum viable product (MVP), the application's basic functionalities. A lot of software testing is done by quality assurance personnel and the application's users. -**It is important to note that this process is iterative.** +**It is important to note that this entire process is iterative.** -Full-stack developers and software engineers are in high demand in various sectors. According to the [U.S. Bureau of Labor Statistics](https://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm), jobs in software development are expected to grow by 25% between 2022 and 2032. +### Software engineers skills -Also, according to [Statista](https://www.statista.com/statistics/1367003/in-demand-it-roles/), full-stack developers and software engineers are among the top technical positions demanded by recruiters worldwide in 2023. Indeed reported that the average software engineer's annual salary is $105,624, and that of a [full-stack software developer](https://www.indeed.com/career/full-stack-developer/salaries?from=top_sb) is $124,120. - -## Skills required to be a software engineer - -While software engineering requires a strong specialization in a domain, the following core skills are required for the role: +The following core technical skills and soft skills are required for the software engineering role: - Knowledge of [computer science fundamentals](https://roadmap.sh/computer-science), software development, and [system design](https://roadmap.sh/system-design). -- Knowledge of a programming language +- Knowledge of at least one of the common programming languages - Strong analytical and problem-solving skills - Knowledge of operating systems - Understanding of networks and security - Knowledge of cloud platforms and DevOps systems -- Knowledge of testing and debugging processes/systems +- Knowledge of testing e.g. unit testing, integration test, end-to-end test +- Well-versed in debugging processes/systems +- Project management skills +- Technical support skills + +![Software engineer skills](https://assets.roadmap.sh/guest/software-engineer-skills.jpg) + +## Full Stack Developer vs Software Engineer: Key differences to consider -## Choosing your path: Key differences to consider +You might be wondering which specialization you should pursue, either being a full stack developer or a software engineer. When choosing a path, consider the following points: -You might be wondering which specialization you should pursue. When choosing a path, consider the following points: +- Focus and expertise +- Accessibility and entry point -- **Focus and expertise**: Full-stack developers have broad expertise. They are experts in both front-end and back-end development. The opposite is the case for software engineers in practice. They specialize in a particular field and thus typically have a deeper, more specialized knowledge. For example, they could focus on only front-end development and have extensive knowledge of that aspect. +### Focus and expertise + +Full-stack developers have broad expertise. Full-stack developers are experts in both front-end and back end development. The opposite is the case for software engineers in practice. Software engineers specialize in a particular field and thus typically have a deeper, more specialized knowledge. + +A software engineer could focus on only front-end development and have extensive knowledge of that aspect while a full-stack developer focuses on the overall software lifecycle. -- **Accessibility and entry point**: Two major pathways exist to becoming a full-stack developer or software engineer: self-taught and a formal education with a degree. +### Accessibility and entry point + +Two major pathways exist to becoming a full-stack developer or software engineer: self-taught and a formal education with a degree. + +For the formal pathway, you will be taught and develop a strong computer science background, which is the core of software development and web development. Self-taught full stack developers and software engineers learn specific, industry-relevant skills on their own time. + +One advantage of the formal education path is gaining hands-on full stack development and software engineering experience while studying through internships. + +## Common full stack developer and software engineer skills + +Despite the differences between full-stack developers and software engineers, they share some common grounds and skills as they are both crucial in the software development lifecycle. They include: + +- Collaboration and teamwork +- Technical knowledge +- Lifelong learning +- Job description - For the formal pathway, you will be taught and develop a strong computer science - background, which is the core of software development. Self-taught developers learn specific, industry-relevant skills on their own time. One advantage of the formal education path is gaining hands-on experience while studying through internships. +### Collaboration and teamwork -Software development and engineering open the door to many employment opportunities. Individuals can work in other tech fields, such as data science and analytics, machine learning, and artificial intelligence. There are numerous opportunities for career growth in both fields, starting with internships and progressing to senior levels, which come with years of experience and expertise. +Full-stack developers and software engineers primarily work in collaborative environments. They work with a tech team comprising other developers and engineers, designers, product managers, QA testers, business analysts, etc. They must collaborate with other team members to achieve a goal. -## Common ground and shared skills +### Technical knowledge -Despite the differences between full-stack developers and software engineers, they share some common grounds and skills as they are both crucial in the software development lifecycle. +A full stack developer and software engineer require a good understanding of core programming principles such as object-oriented programming (OOP), separation of concerns, clean code, SOLID principles, etc. They also require strong problem-solving and analytical skills, which are critical in the roles and in getting the job done. -- **Collaboration and teamwork**: Full-stack developers and software engineers primarily work in a tech team comprising other developers and engineers, designers, product managers, QA testers, etc. They must collaborate with other team members to achieve a goal. +### Lifelong learning -- **Technical knowledge**: Both specializations require a good understanding of core programming principles such as object-oriented programming (OOP), separation of concerns, clean code, SOLID principles, etc. They also require strong problem-solving and analytical skills, which are critical in the roles and in getting the job done. +This is a common ground shared amongst all fields in tech. As tech continually and rapidly evolves, a software engineer and full stack developer must stay up to date, which involves continuous learning to stay ahead. They continually update their technical and soft skills to remain relevant in the tech industry. -- **Lifelong learning:** This is a common ground shared amongst all fields in tech. As tech continually and rapidly evolves, they must stay up to date, which involves continuous learning to stay ahead. They continually update their technical and soft skills to remain relevant in the tech industry. +### Job description -- **Job description**: Full-stack developers and software engineers share some common responsibilities, which can be reflected in their job descriptions. Some of these responsibilities include: +Full-stack developers and software engineers share some common responsibilities, which can be reflected in their job descriptions. Some of these responsibilities include: - - Collaborating with other front-end, back-end, and full-stack developers to improve efficiency and identify and resolve blockers. - - Collaborating with cross-functional teams. - - Implementing new software features. - - Conceptualizing and designing software architecture for the front-end and back-end. - - Documenting the software development process. - - Troubleshooting, debugging, and upgrading existing systems. - - Complying with project plans and industry standards. +- They both collaborate with front-end, back-end, full stack engineers and other team members to improve efficiency and identify and resolve blockers. +- Full stack developers and software engineers collaborate with cross-functional teams. +- Full stack developers and software engineers implement new software features. +- A full stack developer and software developer conceptualizes and designs software architecture for the front-end and back-end. +- A full stack developer and software engineer document the software development process. +- A full stack developer and software engineer troubleshoots, debugs, and upgrades existing systems. +- Full stack developers and software engineers comply with project plans and industry standards. + +## Full stack developer vs software engineer salaries + +Full-stack software developers and software engineers are in high demand in various sectors. According to the [U.S. Bureau of Labor Statistics](https://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm), jobs in software development are expected to grow by 25% between 2022 and 2032. + +According to [Statista](https://www.statista.com/statistics/1367003/in-demand-it-roles/), full-stack software developers and software developers are among the top technical positions demanded by recruiters worldwide in 2023. Indeed reported that the average software engineer's annual salary is $105,624, and that of a [full-stack software developer](https://www.indeed.com/career/full-stack-developer/salaries?from=top_sb) is $124,120. + +Experience and expertise are key factors that determine the salaries of full stack developers and software engineers. The table below shows the difference in average salaries of [full stack developers](https://www.payscale.com/research/US/Job=Full_Stack_Software_Developer/Salary) and [software engineers](https://www.payscale.com/research/US/Job=Software_Engineer/Salary) based on their years of experience. + +![Full stack developer vs Software engineer salaries](https://assets.roadmap.sh/guest/full-stack-salaries-04wtl.jpg) ## How do I become a full stack developer or software engineer? -As you’ve seen, becoming a full stack developer requires various skill sets. roadmap.sh provides a step-by-step guide on how to become a [f](https://roadmap.sh/full-stack)[ull](https://roadmap.sh/full-stack)[-](https://roadmap.sh/full-stack)[s](https://roadmap.sh/full-stack)[tack](https://roadmap.sh/full-stack) [d](https://roadmap.sh/full-stack)[eveloper](https://roadmap.sh/full-stack) and by signing up, you will be able to: +As you’ve seen, becoming a full stack developer requires various skill sets. roadmap.sh provides a step-by-step guide on how to become a [full-stack programmer or developer](https://roadmap.sh/full-stack), and by signing up, you will be able to: - Keep track of your learning progress and share it on your public roadmap.sh profile. - Draw your roadmap, either as an individual learner or for [Dev](https://roadmap.sh/teams) [t](https://roadmap.sh/teams)[eams](https://roadmap.sh/teams). -- [Generate new roadmaps](https://roadmap.sh/ai) with AI. +- [Generate new roadmaps with AI](https://roadmap.sh/ai). - Collaborate on official roadmaps. - -Recall that a software engineer, as defined above, specializes in different areas in the software development cycle. roadmap.sh provides learning paths for various software engineering specializations. You can also sign up for the [computer science](https://roadmap.sh/computer-science), [data structures and algorithms,](https://roadmap.sh/datastructures-and-algorithms) [software design and architecture](https://roadmap.sh/software-design-architecture), and [system design](https://roadmap.sh/system-design) roadmaps. - + +Recall that a software engineer, as defined above, specializes in different areas in the software development cycle and possesses a thorough knowledge of coding languages and engineering principles. roadmap.sh provides learning paths for various software engineering specializations. You can also sign up for [computer science](https://roadmap.sh/computer-science), [data structures and algorithms,](https://roadmap.sh/datastructures-and-algorithms) [software design and architecture](https://roadmap.sh/software-design-architecture), and [system design](https://roadmap.sh/system-design) roadmaps. diff --git a/src/data/guides/how-to-become-devops-engineer.md b/src/data/guides/how-to-become-devops-engineer.md index acf4a900d..57af63252 100644 --- a/src/data/guides/how-to-become-devops-engineer.md +++ b/src/data/guides/how-to-become-devops-engineer.md @@ -21,159 +21,189 @@ tags: ![How to become a DevOps engineer.](https://assets.roadmap.sh/guest/become-devops-engineer-4x2p7.jpg) -If you are trying to get into tech or are already in tech and have been exploring roles across the industry, you must have come across Development and Operations (DevOps). In fact, DevOps is one of the highest-paying roles in the tech industry. But **what is DevOps, and how is it different from other roles?** +If you are trying to get into tech or are already in tech and have been exploring roles across the industry, you must have come across Development and Operations (DevOps). In fact, [DevOps](https://roadmap.sh/devops) is one of the highest-paying roles in the tech industry. -**DevOps is a software engineering approach that combines development (Dev) and operations (Ops) to shorten the software development lifecycle** (feature development, bug fixes, updates) by embracing automation. It is a bridge between the development and the operations team. While the primary goal of a software engineer is to design and build software solutions, a DevOps engineer has a key role in streamlining the software delivery pipeline, automating infrastructure provisioning, and enhancing the deployment process. +But **what is DevOps, and how is it different from other roles?** -This article provides in-depth knowledge on how to become a DevOps engineer, highlighting the mindset and technical skills(including DevOps tools) required to become one. +**DevOps is a software engineering approach that combines development (Dev) and operations (Ops) to shorten the software development lifecycle** by embracing automation. It is a bridge between the development and operations teams. -**TL;DR:** DevOps combines development and operations to automate software delivery. To become a DevOps engineer, you should adopt a mindset of automation, risk awareness, systems thinking, and continuous learning. In addition to the mindset, follow the steps below: +While the primary goal of a software engineer is to design and build software solutions, a DevOps engineer has a key role in streamlining the software development and deployment pipeline, automating infrastructure provisioning, and enhancing the deployment process. + +This guide provides in-depth knowledge on how to become a DevOps engineer, highlighting the mindset of DevOps engineers and the technical skills(including DevOps tools) required to become one. It also guides you on how you can find DevOps engineer jobs. + +## **TL;DR:** + +DevOps combines development and operations to automate software delivery. To become a DevOps engineer, you should adopt a mindset of automation, risk awareness, systems thinking, and continuous learning. In addition to the mindset, follow the steps below: - Step 1: Learn a programming language - Step 2: Get comfortable with Linux and terminal - Step 3: Version control and code hosting platforms - Step 4: Networking fundamentals - Step 5: Containerization -- Step 6: Cloud platform +- Step 6: Cloud services - Step 7: Continuous integration and delivery -Let’s dive into the essential skills required for a [DevOps engineer](https://roadmap.sh/devops). +Let’s dive into the essential skills required for a DevOps engineer. -## Skills required to become a DevOps Engineer - -### Operating system +## Skills required to become a DevOps engineer +### Operating system A DevOps engineer should understand the operating system, especially Linux (distribution or any variant). This is because most of the servers in use are Linux-based, so having a solid foundation in the Linux OS is imperative for infrastructure management and troubleshooting. ### Solid programming fundamentals +As a DevOps engineer, you will use your knowledge of programming languages and scripting languages (bash scripting, shell scripting, etc) to: -As a DevOps engineer, you will use your knowledge of programming and scripting language to: - -- Automate frequent and boring tasks +- Automate processes and frequent tasks - Patch a security bug exposing your internal application to outside users - Create automation tools, monitoring tools, and logging tools +- Create monitoring dashboards to visualize workload and resource usage -Hence, hands-on experience with programming is crucial. +Hence, hands-on experience with programming is crucial to excel in your DevOps career. ### Version control - -Knowledge of version control is essential in all software engineering roles. As a DevOps engineer, you will likely work in a team rather than alone. Version control systems like Git facilitate collaboration in a team while providing a centralized repository for the code. +A basic understanding of version control is one of the essential DevOps skills required for DevOps engineer jobs. In your DevOps career, you will likely work in a team rather than alone. Systems like Git facilitate collaboration in a team while providing a centralized repository for the code. ### Networking fundamentals - Many modern-day applications are distributed systems that rely on networking. For instance, a single application could be composed of a frontend, backend, database, file server, etc., each residing on a separate server. For a seamless user experience, these separate entities should be able to communicate smoothly. ### Containerization and orchestration +Containerization (or container technology) and orchestration help solve the issues of software deployment and resource utilization. Knowledge of containerization and orchestration helps reduce deployment time and allows you to scale applications quickly without downtime, resulting in a better user experience. -[Containerization](https://roadmap.sh/docker) and [orchestration](https://roadmap.sh/kubernetes) help solve the issues of software deployment and resource utilization. Knowledge of containerization and orchestration helps reduce deployment time and allows you to scale applications quickly without downtime, resulting in a better user experience. - -### Cloud platforms - -Procuring hardware to deploy the software is not always feasible and beneficial. Furthermore, once you purchase the hardware, you need more time and resources to manage the new hardware. Depending upon the complexity of the application, choosing cloud platforms instead of on-premise hardware can significantly reduce deployment time and cost. +### Cloud deployment +Procuring hardware to deploy the software is not always feasible and beneficial. Furthermore, once you purchase the hardware, you need more time and resources to manage the new hardware. Depending upon the complexity of the application, choosing the cloud instead of on-premise hardware can significantly reduce deployment time and cost. ### Infrastructure as Code (IaC) - IaC can be seen as a superior form of automation for a DevOps engineer. IaC tools like Terraform and Amazon Cloud CDK allow the operations team to set up and manage infrastructure by simply changing a configuration file. This makes it easier to manage and scale the application. -So, how do you learn these essential skills? In what sequence do you acquire these skills? The following section presents a complete roadmap on how you can learn these skills and become a DevOps engineer. +So, how do you learn these essential skills? In what sequence do you acquire these skills? + +The following section presents a complete DevOps roadmap on how you can learn these skills and become a DevOps engineer. -## How to become a DevOps Engineer +## How to become a DevOps engineer: the DevOps roadmap -The internet is full of resources for learning DevOps and DevOps tools. Many of these guides lack structure and organization, resulting in a dilemma of where to start. To help beginners learn DevOps in a structured manner, [roadmap.sh](https://roadmap.sh) has a beginner-friendly [DevOps roadmap](https://roadmap.sh/devops?r=devops-beginner). +The internet is full of resources for learning DevOps and DevOps tools. Many of these guides lack structure and organization, resulting in a dilemma of where to start. -This section presents a concise version of the DevOps roadmap. It is recommended that you implement real-world projects recommended in each stage of the roadmap. In the end, you can publish these DevOps projects to GitHub as an open-source project repository, and the repository will act as your portfolio. +To help beginners learn DevOps in a structured manner, [roadmap.sh](http://roadmap.sh/) has a beginner-friendly [DevOps engineer roadmap](https://roadmap.sh/devops?r=devops-beginner) that will help you land into DevOps engineer positions. + +This section presents a concise version of the DevOps engineering roadmap. It is recommended that you implement real-world projects recommended in each stage of the roadmap. In the end, you can publish these DevOps projects to GitHub as an open-source project repository, and the repository will act as your portfolio and increase your exposure in the DevOps community. ### Step 1: Learn a programming language -Programming language is essential to a DevOps engineer. I recommend you start with either Python or Go. [Python](https://roadmap.sh/python) is a popular programming language that is easier to learn and used in various projects involving [backend](https://roadmap.sh/backend) development, writing machine learning algorithms, automating everyday tasks, etc. +Programming language is essential to a DevOps engineer. I recommend you start with either Python or Go. [Python](https://roadmap.sh/python) is a popular language that is easier to learn and used in various projects involving [backend](https://roadmap.sh/backend) development, writing machine learning algorithms, automating everyday tasks, etc. + -[Automate the Boring Stuff with Python](https://automatetheboringstuff.com/) is an excellent resource for learning Python and basic programming concepts. It will also come in handy when building automation tools. To demonstrate your understanding of Python, you can create a web scraper that extracts a list of hotels, their address, prices, reviews, and locations from a site like [booking.com](http://booking.com/). +![Popular programming languages](https://assets.roadmap.sh/guest/learn-a-programming-language-he481.jpeg) + + +[Automate the Boring Stuff with Python](https://automatetheboringstuff.com/) is an excellent resource for learning Python and basic programming concepts. It will also come in handy when building automation tools. + +To demonstrate your understanding of Python, you can create a web scraper (or other coding projects) that extracts a list of hotels, their address, prices, reviews, and locations from a site like [booking.com](http://booking.com/). ### Step 2: Get comfortable with Linux and the terminal -According to [Gitnux](https://gitnux.org/linux-statistics/), 92.4% of the world’s top 1 million servers run on Linux, and about 96.3% of the world’s top 1 million websites are powered by Unix-like operating systems, with Linux being the most popular. This makes Linux a popular tool for all software engineers. +According to [Gitnux](https://gitnux.org/linux-statistics/), 92.4% of the world’s top 1 million servers run on Linux, and about 96.3% of the world’s top 1 million websites are powered by Unix-like operating systems, with Linux being one of the most widely used operating systems. This makes Linux a popular tool for all software engineers. + +![The most popular operating systems today](https://assets.roadmap.sh/guest/most-popular-operating-systems-exdwq.jpeg) Furthermore, you should make the terminal your best friend. Some programs and packages may not have a GUI counterpart, and even when they exist, using the CLI(Command Line Interface) alternative is faster and easier to automate. -An excellent way to practice Linux is to install it on a thumb drive and try to do everyday tasks like changing the directory, creating new files and folders, editing files, searching for files and folders, etc., using Linux commands instead of using the GUI interface. +An excellent way to practice Linux for DevOps engineers is to install it on a thumb drive and try to do everyday tasks like changing the directory, creating new files and folders, editing files, searching for files and folders, etc., using Linux commands instead of using the GUI interface. ### Step 3: Version control and code hosting platforms Version control systems like Git make it easier for developers to track changes in their source code by maintaining a history of the changes. Combined with platforms like GitHub or Bitbucket, Git can facilitate developers to work collaboratively with each other. -[This tutorial](https://www.atlassian.com/git) will help you learn Git basics and how to use Git for collaboration using Bitbucket, a code hosting platform. For advanced concepts on git branching, [refer this site.](https://learngitbranching.js.org) Once you go through the tutorial, you can easily switch from Bitbucket to GitHub and GitLab, which are more popular among developers. +![Git and GitHub](https://assets.roadmap.sh/guest/git-and-github-kui4q.jpeg) -### Step 4: Networking fundamentals +[This tutorial](https://www.atlassian.com/git) will help you learn Git basics and how to use Git for collaboration using Bitbucket, a code hosting platform. + +For advanced concepts on git branching, [refer to this site.](https://learngitbranching.js.org/) Once you go through the tutorial, you can easily switch from Bitbucket to GitHub and GitLab, which are more popular among developers. +### Step 4: Networking fundamentals Learning networking fundamentals becomes vital to the DevOps team when working with software components constantly communicating with other services. Knowledge of networks comes in handy when setting up resources in the public cloud. At a minimum, you should clearly understand standard protocols(TCP/IP, UDP), routing, IP addressing, subnetting, and ports. -A DevOps engineer should have a sound knowledge of web servers like Nginx. Nginx allows you to serve your application on the web while handling reverse proxy and load balancing. [Apache](https://httpd.apache.org) is another web server that provides similar features. +A DevOps engineer should have a sound knowledge of web servers like Nginx. Nginx allows you to serve your application on the web while handling reverse proxy and load balancing. [Apache](https://httpd.apache.org/) is another web server that provides similar features. + +![Nginx and Apache](https://assets.roadmap.sh/guest/nginx-and-apache-psljm.jpeg) For your practice, you can create a simple frontend (or clone it from GitHub) and deploy it using Nginx or Apache. ### Step 5: Containerization -An application developed by one developer may not work on other machines due to the difference in environment. To eliminate this issue, DevOps engineers use containerization tools like Docker. Docker allows engineers to create consistent development, testing, and production environments. It also ensures the developed application is portable across different platforms. +An application developed by one developer may not work on other machines due to the difference in environment. To eliminate this issue, DevOps engineers use containerization tools like Docker. + +Docker allows engineers to create consistent development, testing, and production environments. It also ensures the developed application is portable across different platforms. + +![Docker and Kubernetes](https://assets.roadmap.sh/guest/docker-and-kubernetes-fxplh.jpeg) + Applications rely on multiple containers that communicate with each other. To facilitate the orchestration of these containers, you can use container orchestration tools like [Kubernetes](https://roadmap.sh/kubernetes). The [Docker Roadmap](https://roadmap.sh/docker) provides essential resources to help you master Docker and Kubernetes. -You can demonstrate your understanding of containerization tools by creating a simple project with frontend and back deployed as two separate containers. If you have already developed these components in the previous stages of the roadmap, re-use them to save time. +You can demonstrate your understanding of containerization tools by creating a simple project with frontend and back deployed as two separate containers. If you have already developed these components in the previous stages of the roadmap, re-use them to save time. + +Alternatively, certifications like Docker Certified Associate and Certified Kubernetes Administrator can help you prove your knowledge. + +### Step 6: Cloud services -### Step 6: Cloud platform +Cloud services like [AWS](https://roadmap.sh/aws), Azure, and Google Cloud Platform are some popular cloud providers that allow you to deploy your projects without investing in expensive hardware. Many cloud services across these cloud platforms are analogous. -Cloud platforms like [AWS](https://roadmap.sh/aws), Azure, and Google Cloud Platform are some popular cloud providers that allow you to deploy your projects without investing in expensive hardware. Many cloud services across these cloud platforms are analogous. So, if you are a beginner, start with AWS, as it is the most widely used cloud platform. Once you are comfortable with AWS’s services and key concepts, you can deploy the application created in earlier stages to the AWS. +If you are a beginner, start with AWS. It is the most widely used cloud platform. Once you are comfortable with AWS’s services and key concepts, you can deploy the application created in earlier stages to the AWS. -Alternatively, you could demonstrate your understanding by taking the [certification exam from AWS](https://aws.amazon.com/certification/). +Alternatively, you could demonstrate your understanding by taking the [certification exam from AWS](https://aws.amazon.com/certification/?trk=dc557659-52ab-4a28-b2b8-0b1fb90235db&sc_channel=ps&ef_id=CjwKCAjw88yxBhBWEiwA7cm6pRXCRcI-uDNNigl81tPxsbbyV9RqT6MsdSM_x5EzoFnfxcr6N22rvBoCS7IQAvD_BwE:G:s&s_kwcid=AL!4422!3!465713397254!e!!g!!aws%20certification!11138243015!111694711080&gclid=CjwKCAjw88yxBhBWEiwA7cm6pRXCRcI-uDNNigl81tPxsbbyV9RqT6MsdSM_x5EzoFnfxcr6N22rvBoCS7IQAvD_BwE). Becoming an AWS certified DevOps engineer helps you gain credibility for your DevOps skills. -Once comfortable launching your infrastructure using the GUI, you should learn about Infrastructure as Code(IaC). I recommend using [Terraform](https://www.terraform.io/) for IaC as it is cloud-agnostic. Terraform allows you to set up and make changes to infrastructure resources by editing a configuration file. +![Top cloud providers](https://assets.roadmap.sh/guest/top-cloud-providers-76zj5.jpeg) + + +Once comfortable launching your infrastructure using the GUI, you should learn about Infrastructure as Code(IaC). I recommend using [Terraform](https://www.terraform.io/) for IaC as it is cloud-agnostic and popular among software developers and operations teams. Terraform allows you to set up and make changes to infrastructure resources by editing a configuration file, resulting in infrastructure automation. ### Step 7: Continuous integration and delivery +[Continuous Integration and Continuous Delivery](https://www.youtube.com/watch?v=nyKZTKQS_EQ) (or Continuous Deployment) (CI/CD) is a set of practices aimed at automating and streamlining software changes from development to production. -[Continuous Integration and Continuous Delivery](https://www.youtube.com/watch?v=nyKZTKQS_EQ) (or Continuous Deployment) (CI/CD) is a set of practices aimed at automating and streamlining software changes from development to production. Today, in practice, when you commit and push your changes to the remote repository (say GitHub), the tests kick off; if the tests pass successfully, your changes are merged and then deployed to the staging and production server. +Today, in practice, when you commit and push your changes to the remote repository (say GitHub), the tests kick-off; if the tests pass successfully, your changes are merged and then deployed to the staging and production server. + +![CI/CD](https://assets.roadmap.sh/guest/ci-cd-hndye.jpeg) CI/CD is a combination of three skills: programming, writing configuration files, and Git. As such, you don’t need to learn new skills to implement CI/CD. However, some organizations use tools like CircleCI and Jenkins to simplify the process. -You can practice CI/CD using GitHub actions. [GitHub provides a set of tutorials](https://docs.github.com/en/actions/learn-github-actions) for the same. You can follow along those tutorials to get a good grasp of Continuous Integration and Continuous Deployment. Then, you can implement CICD in one of your projects created while learning previous skills in this roadmap. +You can practice CI/CD using GitHub actions. [GitHub provides a set of tutorials](https://docs.github.com/en/actions/learn-github-actions) for the same. You can follow along those tutorials to get a good grasp of Continuous Integration and Continuous Deployment. + +Finally, you can implement CICD in one of your projects created while learning previous skills in this roadmap. Next, let’s discuss the mindset needed to become a DevOps engineer. -## DevOps Engineer’s mindset +## DevOps engineer’s mindset -To become a successful DevOps engineer, you must orient your thoughts around the following: +To become a successful DevOps engineer and successfully embrace the DevOps culture, you must orient your thoughts around the following: ### Automation - -Software products or systems are prone to various errors, including human errors. Stress during work and the race against deadlines can increase the frequency of these errors. Automation helps reduce human error and eliminate boring tasks. +Software products or systems are prone to various errors, including human errors. Stress during work and the race against deadlines can increase the frequency of these errors. Automating processes helps reduce human error and eliminate boring tasks. ### Risk awareness - DevOps engineers must understand the risks entangled with changes to a software system and deployment infrastructures. The risk should be minimized by utilizing automated testing, monitoring, and incremental changes. ### Systems thinking - -DevOps engineers must understand how different components within a system communicate and interact with each other to deliver the desired solution. A graphical representation of the system can come in handy when fixing issues or knowledge transfer. +DevOps professionals or any member of the operations teams must understand how different components within a system communicate and interact with each other to deliver the desired solution. A graphical representation of the system can come in handy when fixing issues or knowledge transfer within the DevOps teams. ### Continuous learning - -A continuous learning and continuous improvement mindset is essential across all roles in software engineering, but its importance is amplified for a DevOps engineer. A DevOps engineer must continually learn about new technologies, tools, and best practices and implement the ones best suited to the project. +A continuous learning and continuous improvement mindset is essential across all roles in software engineering, but its importance is amplified for a DevOps engineer. A DevOps engineer must continually learn about new technologies, tools, DevOps principles, and DevOps practices and implement the ones best suited to the project. You may not have the DevOps mindset, but that is okay. You can build this mindset as you learn and grow into the role. Let us look at some technical skills required to become a DevOps engineer. -## Who can become a DevOps Engineer? +## Who can become a DevOps engineer? -Anyone with the right skillset can become a DevOps engineer. Typically, it is easier to transition into a DevOps role if you are a, +Anyone with the right skillset can become a DevOps engineer. Typically, it is easier to transition into a DevOps engineer role if you are a, - Systems Engineer - Backend Engineer - Infrastructure Engineer -If you are a newbie in software engineering, you are encouraged to learn the above skills and concepts. You can then apply for a DevOps intern position. You may look for vacancies in local companies or remote job boards. +If you are one of the aspiring DevOps engineers, you are encouraged to learn the above skills and concepts. You can then apply for entry-level DevOps engineer jobs and intern DevOps positions. You may look for DevOps openings in local companies or remote job boards advertising DevOps engineer roles. -Depending on your current skill set and practical experience, the time to transition into a DevOps role will vary. However, following a structured learning path will help you speed up and ease the process. +Depending on your current skill set and practical experience, the time to transition into a DevOps role will vary. However, following a structured learning path will help you gain a head start in your DevOps career. ## What next? -The [roadmap](https://roadmap.sh) simplifies the [DevOps](https://roadmap.sh/devops) journey by breaking it into learnable skills via the DevOps roadmap. To effectively use the site, I encourage you to [sign up](https://roadmap.sh/signup) on the platform and learn the desired skill by following the structured roadmap. You could explore additional roadmaps and advanced topics utilizing the search bar on the platform. The platform also allows you to: +The roadmap simplifies the DevOps journey by breaking it into learnable skills via the [DevOps engineer roadmap](https://roadmap.sh/devops). To effectively use the site, I encourage you to [sign up](https://roadmap.sh/signup) on the platform and learn the desired skill by following the structured roadmap. You could explore additional roadmaps and advanced topics utilizing the search bar on the platform. The platform also allows you to: - Keep track of your journey as you progress through a roadmap - Draw your own roadmap or generate one using AI diff --git a/src/data/guides/java-developer-skills.md b/src/data/guides/java-developer-skills.md index 14f63fd35..0e64bbafc 100644 --- a/src/data/guides/java-developer-skills.md +++ b/src/data/guides/java-developer-skills.md @@ -1,12 +1,12 @@ --- -title: 'Must-Have Java Full-stack Developer Skills in @currentYear@' +title: '13 Must-Have Java Full-stack Developer Skills in @currentYear@' description: 'Master the essential skills every Java full stack developer needs. Boost your career with our expert tips!' authorId: william excludedBySlug: '/java/developer-skills' seo: - title: 'Must-Have Java Full-stack Developer Skills in @currentYear@' + title: '13 Must-Have Java Full-stack Developer Skills in @currentYear@' description: 'Master the essential skills every Java full stack developer needs. Boost your career with our expert tips!' - ogImageUrl: 'https://assets.roadmap.sh/guest/java-full-stack-developer-skills-sjzbd.png' + ogImageUrl: 'https://assets.roadmap.sh/guest/java-full-stack-developer-skills-ft8ta.png' isNew: false type: 'textual' date: 2024-05-01 @@ -19,21 +19,39 @@ tags: - 'guide-sitemap' --- -![The best java full stack developer skills to learn.](https://assets.roadmap.sh/guest/java-full-stack-developer-skills-sjzbd.png) +![The best java full stack developer skills to learn.](https://assets.roadmap.sh/guest/java-full-stack-developer-skills-ft8ta.png) -Java has been a popular programming language for the past 28 years and remains in the top four programming languages today. This is due to its use in many Java-based platforms and the growing demand for specialized Java developers in big data, machine learning, and financial services. +Java has been a popular programming language for the past 28 years and remains in the top four programming languages today. This is due to its use in many Java-based platforms and the growing demand for specialized [Java developers](https://roadmap.sh/java) in big data, machine learning, and financial services. If you are building web applications, the ability to work on both front-end and back-end development using Java is valuable. Fundamental and advanced Java skills such as multithreading, concurrency, JVM tuning, and object-oriented design are vital in enterprise environments. -To remain competitive as a Java developer, you must continuously improve your skill sets to meet evolving industry demands. +To remain competitive as a Java developer, you must continuously improve your skill sets to meet evolving industry demands. -This article will equip you with the skills required in 2024. You’ll understand the landscape of Java demand, adoption, diverse applications, and strategies for excelling as a Java developer. By the end of this article, you will be confident about pursuing a Java development career. +This guide will equip you with the skills required in 2024. You’ll understand the landscape of Java demand, adoption, diverse applications, and strategies for excelling as a Java developer. By the end of this guide, you will be confident about pursuing a Java development career. -## Who is a Java full stack developer? +These are the skills we will cover in this guide: -A full stack developer creates applications for software's [Front-End (client)](https://roadmap.sh/frontend) and [Back-End (server)](https://roadmap.sh/backend) development. They understand frameworks and tools for designing user interfaces (UIs) and managing application states, databases, and APIs. +- HTML and CSS +- JavaScript +- TypeScript +- Accessibility standards and compatibility +- Java programming language +- Database management system +- Java frameworks +- Version control +- Version control providers +- Deployment mechanism +- Application Programming Interface (API) +- Web Security +- Caching + +Let’s look at these points in detail. + +## Top skills required as Java full stack developer -### Required skills for front-end Java development +The required skills can be classified into [front-end (client)](https://roadmap.sh/frontend) and [back-end (server)](https://roadmap.sh/backend) development. As a Java full stack developer, you will be required to build applications that run seamlessly on both the client and the server. + +## Required skills for front-end Java development Here are the front-end skills you should learn in 2024: @@ -42,22 +60,41 @@ Here are the front-end skills you should learn in 2024: - TypeScript - Accessibility standards and compatibility -1. **HTML and CSS:** HyperText Markup Language (HTML) is the building block for all web pages. It dictates users' content and structure when interacting with a website or application, including text, images, videos, and more. +![front end java development](https://assets.roadmap.sh/guest/front-end-java-development-m9zv6.JPG) + +### HTML and CSS + +HyperText Markup Language (HTML) is the building block for all web pages. It dictates users' content and structure when interacting with a website or application, including text, images, videos, and more. + +Whereas HTML provides the structure of web pages, Cascading Style Sheets (CSS) enhance their appearance and layout. CSS determines how the content on a web page is styled and presented, including aspects like colors, fonts, spacing, and more. Additionally, CSS helps you create responsive designs that adapt to various screen sizes. + +![HTML and CSS](https://assets.roadmap.sh/guest/html-and-css-kktts.JPG) + +### JavaScript + +JavaScript is a programming language used alongside HTML and CSS to enhance the functionality and interactivity of web pages. Whereas HTML and CSS are responsible for creating the structure and design of web pages, [JavaScript](https://roadmap.sh/javascript) adds dynamic elements such as content updates, animations, 2D/3D graphics, and other interactive features. Over the years, JavaScript has evolved significantly, introducing powerful frameworks such as [React](https://roadmap.sh/react), [Vue](https://roadmap.sh/vue), and [Angular](https://roadmap.sh/angular), among others. These frameworks empower you to build software ranging from small applications to large-scale enterprise systems. - Whereas HTML provides the structure of web pages, Cascading Style Sheets (CSS) enhance their appearance and layout. CSS determines how the content on a web page is styled and presented, including aspects like colors, fonts, spacing, and more. Additionally, CSS helps you create responsive designs that adapt to various screen sizes. +![JavaScript](https://jbstechinfo.com/wp-content/uploads/2023/08/JavaScript-Symbol.png) -2. **JavaScript:** JavaScript is a programming language used alongside HTML and CSS to enhance the functionality and interactivity of web pages. Whereas HTML and CSS are responsible for creating the structure and design of web pages, [JavaScript](https://roadmap.sh/javascript) adds dynamic elements such as content updates, animations, 2D/3D graphics, and other interactive features. Over the years, JavaScript has evolved significantly, introducing powerful frameworks such as [React](https://roadmap.sh/react), [Vue](https://roadmap.sh/vue), and [Angular](https://roadmap.sh/angular), among others. These frameworks empower you to build software ranging from small applications to large-scale enterprise systems. +### TypeScript -3. **TypeScript**: Typescript is an extension of JavaScript with static typing and other advanced features. [TypeScript](https://roadmap.sh/typescript) code transpiles to JavaScript and can run seamlessly wherever JavaScript runs, making it a highly versatile programming language for front-end development. The knowledge enhances your productivity by allowing you to build robust applications, detect errors, and catch issues as they happen. +Typescript is an extension of JavaScript with static typing and other advanced features. [TypeScript](https://roadmap.sh/typescript) code transpiles to JavaScript and can run seamlessly wherever JavaScript runs, making it a highly versatile programming language for front-end development. The knowledge enhances your productivity by allowing you to build robust applications, detect errors, and catch issues as they happen. -4. **Accessibility standards and compatibility:** As a Java full stack developer, having a solid understanding of accessibility and browser compatibility is important. The knowledge enables you to create web applications usable by people with disabilities, promoting inclusivity, complying with accessibility regulations, and ensuring a solid user experience. +![TypeScript](https://media.licdn.com/dms/image/D4D12AQHLiHtRbPUoAA/article-cover_image-shrink_600_2000/0/1696134741709?e=2147483647&v=beta&t=CajO9eTDp6iKznPn753F6ZUyTgaPf6DOzihN1AMMJew) -### Required skills for back-end Java development +### Accessibility standards and compatibility + +As a Java full-stack web developer, having a solid understanding of accessibility and browser compatibility is important. The knowledge enables you to create web applications usable by people with disabilities, promoting inclusivity, complying with accessibility regulations, and ensuring a solid user experience. + +![Accessibility](https://t3.ftcdn.net/jpg/05/42/09/62/360_F_542096212_pgNANUD1JMjdifjHQZ6LDK9s98TQENFP.jpg) + +## Required skills for back-end Java development Here are the back-end skills you should learn in 2024: +- Java programming language +- Database management system - Java frameworks -- Database management - Version control - Version control providers - Deployment mechanism @@ -65,23 +102,49 @@ Here are the back-end skills you should learn in 2024: - Web Security - Caching -1. **Java frameworks:** Frameworks are pre-written and thoroughly tested collections of code, classes, components, templates, and other structures that you can utilize to streamline the development process of applications. They come equipped with standard functionalities such as security measures, data retrieval mechanisms, and predefined project structures. Leveraging frameworks allows you to build applications more efficiently without starting from scratch or recreating existing solutions. +### Java programming language: + +A deep understanding of Java fundamentals is essential to becoming a full stack developer. Having a strong grasp of Java's core concepts, such as classes, inheritance, abstraction, etc., is crucial for developing full stack applications running on the web or mobile platforms. Java's versatility and robustness make it a popular choice for backend development, and proficiency in Java allows developers to build scalable and secure server-side components for their applications. Some popular database management systems are MySQL, SQL, PostgreSQL, MongoDB, and Oracle. + +### Database management system + +The choice of database and data storage methods significantly impacts how data is retrieved and utilized in applications. You must consider various factors, such as whether to use a NoSQL or SQL database, employ stored procedures or Object Relational Mapping (ORM), and opt for self-hosting or cloud-based hosting. It's essential to address these questions in your journey to become a full stack developer. + +### Java frameworks + +Frameworks are pre-written and thoroughly tested collections of code, classes, components, templates, and other structures that you can utilize to streamline the development process of applications. They come equipped with standard functionalities such as security measures, data retrieval mechanisms, and predefined project structures. Leveraging frameworks allows you to build applications more efficiently without starting from scratch or recreating existing solutions. + +While Java has several frameworks for building full stack applications, it's crucial to consider each framework's associated pros and cons, adoption rates, and how effectively they address the intended business requirements. One particularly renowned framework is the Java [Spring](https://roadmap.sh/spring-boot) framework, celebrated for simplifying the web development process for small-scale and enterprise-level Java applications. In addition to its user-friendliness, it boasts a vast ecosystem and a thriving community of developers. + +### Version control - While Java has several frameworks for building full stack applications, it's crucial to consider each framework's associated pros and cons, adoption rates, and how effectively they address the intended business requirements. One particularly renowned framework is the Java [Spring Boot](https://roadmap.sh/spring-boot), celebrated for simplifying the development process for small-scale and enterprise-level Java applications. In addition to its user-friendliness, it boasts a vast ecosystem and a thriving community of developers. +Version control systems facilitates teamwork by allowing you and your team members to collaborate on a project simultaneously. It enables the management of changes to code and files over time without disrupting the workflow. -2. **Database management:** The choice of database and data storage methods significantly impacts how data is retrieved and utilized in applications. You must consider various factors, such as whether to use a NoSQL or SQL database, employ stored procedures or Object Relational Mapping (ORM), and opt for self-hosting or cloud-based hosting. It's essential to address these questions in your journey toward full stack development. +In your full stack journey, it's crucial to grasp version control features like branching, pull requests, merge requests, commits, commit history, and more. -3. **Version control:** Version control facilitates teamwork by allowing you and your team members to collaborate on a project simultaneously. It enables the management of changes to code and files over time without disrupting the workflow. In your full stack journey, it's crucial to grasp version control features like branching, pull requests, merge requests, commits, commit history, and more. +### Version control providers -4. **Version control providers**: Popular providers like [GitHub](http://github.com/) offer unique tools, such as user interfaces (UIs) and Command Line Interfaces (CLIs), for individuals and organizations to effectively manage and collaborate on code. Additionally, they offer a platform to search for and contribute to open-source projects, serving as a valuable resource for your learning and giving back to the community. +One of the essential Java full stack developer skills is familiarity with popular providers like [GitHub](http://github.com/) offer unique tools, such as user interfaces (UIs) and Command Line Interfaces (CLIs), for individuals and organizations to effectively manage and collaborate on code. Additionally, they offer a platform to search for and contribute to open-source projects, serving as a valuable resource for your learning and giving back to the community. -5. **Deployment mechanism:** The ultimate objective of application development is to deliver accessible solutions to end users. Deploying software involves various steps, such as packaging, configuring, releasing, and monitoring. Although these processes can overlap and business requirements may evolve, it is crucial to establish a reliable mechanism for building, testing, and deploying code to meet the desired objectives. In your journey as a full stack web developer, your responsibilities extend beyond creating applications. You must have a good understanding of tools such as [Docker](https://roadmap.sh/docker), [Kubernetes](https://roadmap.sh/kubernetes), and Jenkins and be proficient in [DevOps](https://roadmap.sh/devops) best practices. Additionally, familiarity with popular cloud platforms like Azure, [AWS](https://roadmap.sh/aws), and GCP is essential for efficient deployment and scalability of applications. +### Deployment mechanism -6. **Application Programming Interfaces (APIs)**: APIs are rules and protocols that allow different software applications to communicate with each other. They give access to services or functionality other software systems provide, enabling developers to integrate these capabilities into their applications without understanding the underlying implementation details. A solid understanding of how APIs work, the standards they follow, and how they are exposed for utilization is important in full stack development. +The ultimate objective of application development is to deliver accessible solutions to end users. Deploying software involves various steps, such as packaging, configuring, releasing, and monitoring. Although these processes can overlap and business requirements may evolve, it is crucial to establish a reliable mechanism for building, testing, and deploying code to meet the desired objectives. -7. **Web security**: As a Java full-stack developer, a good understanding of protecting web resources is essential. Knowing when to utilize tools like JSON Web Token (JWT), OAuth, and [API security best practices](https://roadmap.sh/best-practices/api-security) is crucial. Knowing when to build solutions from scratch or leverage third-party offerings based on project requirements is key to successful development. +In your journey as a full stack java developer, your responsibilities extend beyond creating applications. You must have a good understanding of tools such as [Docker](https://roadmap.sh/docker), [Kubernetes](https://roadmap.sh/kubernetes), and Jenkins and be proficient in [DevOps](https://roadmap.sh/devops) best practices. Additionally, familiarity with popular cloud platforms like Azure, [AWS](https://roadmap.sh/aws), and GCP is essential for efficient deployment and scalability of applications. -8. **Caching**: Caching is the process of storing data so that future requests for that same data can be served faster. It typically involves using temporary storage that sits between the front-end and the back-end. Caching speeds up application performance, increases efficiency, and enhances overall user experience. As a Java full-stack developer, having a solid understanding of caching techniques and technologies like Redis is crucial. +### Application Programming Interfaces (APIs) + +APIs are rules and protocols that allow different software applications to communicate with each other. They give access to services or functionality other software systems provide, enabling developers to integrate these capabilities into their applications without understanding the underlying implementation details. A solid understanding of how APIs work, the standards they follow, and how they are exposed for utilization is important in full stack development. + +### Web security + +One of a Java developer's key skills is having a good understanding of how to protect web resources. Knowing when to utilize tools like JSON Web Token (JWT), OAuth, and [API security best practices](https://roadmap.sh/best-practices/api-security) is crucial. Deciding when to build solutions from scratch or leverage third-party offerings based on project requirements is key to successful development. + +![Web security](https://assets.roadmap.sh/guest/web-security-g8b4s.JPG) + +### Caching + +Caching is the process of storing data so that future requests for that same data can be served faster. It typically involves using temporary storage that sits between the front-end and the back-end. Caching speeds up application performance, increases efficiency, and enhances overall user experience. As a Java full-stack developer, having a solid understanding of caching techniques and technologies like Redis is crucial. ## How to stand out as a Java full stack developer @@ -101,15 +164,19 @@ The JVM is a virtual machine that loads, verifies, and executes Java programs. I ### Jakarta Server Pages -Jakarta Server Pages (JSP), previously known as Java Server Pages, is a suite of technologies that enables you to generate dynamic web pages. It facilitates the integration of Java code within static web markup, which is then compiled and executed on the server to deliver dynamic content. +Jakarta Server Pages (JSP), previously known as Java Server Pages, is a suite of technologies that enables you to generate dynamic web pages. It facilitates the integration of Java code within static web markup, which is then compiled and executed on the server to deliver dynamic web applications. + +![Jakarta server pages](https://jakarta.ee/images/jakarta/jakarta-ee-logo-color.svg) ### Front-end frameworks -While Java can work with HTML, CSS, and JavaScript, there are scenarios where businesses need a clear separation between front-end and back-end development. This requirement could arise from diverse factors such as deployment strategies, continuous delivery pipelines, virtual (2D/3D) rendering demands, and performance optimizations. Therefore, knowledge of popular front-end frameworks like [React](https://roadmap.sh/react), [Vue](https://roadmap.sh/vue), [Angular](https://roadmap.sh/angular), etc. is critical. +While Java can work with HTML, CSS, and JavaScript, there are scenarios where businesses need a clear separation between front-end and back-end development. This requirement could arise from diverse factors such as deployment strategies, continuous delivery pipelines, virtual (2D/3D) rendering demands, dynamic user interfaces, and performance optimizations. Therefore, knowledge of popular JavaScript frameworks like [React](https://roadmap.sh/react), [Vue](https://roadmap.sh/vue), [Angular](https://roadmap.sh/angular), etc. is critical for building scalable user interfaces. + +![react, angular & vue logos](https://assets.roadmap.sh/guest/react-angular-vue-logos-se584.png) ### Design patterns -Design patterns are proven approaches to solving specific design challenges and promoting code reusability, maintainability, and scalability. A solid understanding of patterns like dependency injection, factory method patterns, builder patterns, etc., will prove invaluable when addressing common software design problems encountered during application development. These patterns provide developers with established solutions and best practices for effectively structuring their code and solving recurring design issues. +Design patterns are proven approaches to solving specific design challenges and promoting code reusability, maintainability, and scalability. A solid understanding of software architecture patterns like dependency injection, factory method patterns, builder patterns, etc., will prove invaluable when addressing common software design problems encountered during application development. These patterns provide developers with established solutions and best practices for effectively structuring their code and solving recurring design issues. ### Community @@ -131,25 +198,27 @@ While staying informed about changes in the ecosystem can be overwhelming, espec Developed by James Gosling at [Sun Microsystems](https://en.wikipedia.org/wiki/Sun_Microsystems) in the 1990s, Java initially targeted interactive television but transitioned to Internet programming for its advanced features. The public release of Java 1.0 in 1996 introduced "[write once, run anywhere](https://en.wikipedia.org/wiki/Write_once,_run_anywhere)" (WORA), offering no-cost runtimes across platforms and revolutionizing software development. Since then, Java has evolved significantly with numerous versions, runtimes, and platform support. -![Evolution of Java](https://assets.roadmap.sh/guest/evolution-of-java-xjbal.jpeg) +![Java adoption](https://assets.roadmap.sh/guest/java-adoption-tq5x4.jpeg) -The WORA mantra empowers developers to write Java programs capable of running on any device. These programs are compiled into standard bytecode, which allows them to execute on any device equipped with a [Java virtual machine](https://en.wikipedia.org/wiki/Java_virtual_machine). Due to its seamless cross-platform compatibility, Java has been widely adopted for building applications on various platforms, including web, mobile, and other digital devices. Below are some areas where Java has been massively adopted beyond its general usage: +The WORA mantra empowers developers to write Java programs that are capable of running on any device. These programs are compiled into standard bytecode, which allows them to execute on any device equipped with a [Java virtual machine](https://en.wikipedia.org/wiki/Java_virtual_machine). Due to its seamless cross-platform compatibility, Java has been widely adopted for building applications on various platforms, including web, mobile, and other digital devices. Below are some areas where Java has been massively adopted beyond its general usage: ### Java in virtual reality, augmented reality, and mixed reality Java has also been widely adopted for building applications that support interactivity and immersive experiences, particularly in the realms of virtual reality (VR), augmented reality (AR), and mixed reality (XR). -For example, in e-commerce, developers can use Java’s capabilities to create realistic and virtual environments that allow customers to visualize how different clothing items and footwear will look on them before making a purchase. +For example, in e-commerce, full stack developers can use Java’s capabilities to create realistic and virtual environments that allow customers to visualize how different clothing items and footwear will look on them before making a purchase. ### Java in AI Another field in which Java is gaining adoption is AI. Java's maintainability, object-oriented approach, enhanced security, garbage collection, and platform independence have positioned it as a vital tool for modeling and powering AI applications. These features make Java well-suited for developing robust and scalable AI solutions that can effectively handle complex data processing and analysis tasks. +![Java usage](https://assets.roadmap.sh/guest/java-usage-8bazm.JPG) + ## What is the demand for Java developers? According to Statista, [Java is one of the most widely embraced programming languages among developers,](https://www.statista.com/statistics/793628/worldwide-developer-survey-most-used-languages/) owing to its speed, security, and reliability. Its versatility has led to widespread adoption across industries, including big data, banking, retail, and stock markets. -![Most used programming language statistics](https://assets.roadmap.sh/guest/most-used-programming-languages.png) +![Most used programming language statistics](https://assets.roadmap.sh/guest/most-used-programming-languages-lqmoo.png) Based on the recently concluded [Stack Overflow survey](https://survey.stackoverflow.co/2023/#technology), it was found that 30.49% of the respondents utilize Java in their professional endeavors, while 35.17% are in the process of adopting Java to fulfill their programming needs. diff --git a/src/data/roadmaps/angular/angular.json b/src/data/roadmaps/angular/angular.json index 59f599a5a..5d7200728 100644 --- a/src/data/roadmaps/angular/angular.json +++ b/src/data/roadmaps/angular/angular.json @@ -1,5859 +1,7216 @@ { - "mockup": { - "controls": { - "control": [ - { - "ID": "2968", - "typeID": "Arrow", - "zOrder": "0", - "w": "1", - "h": "92", - "measuredW": "150", - "measuredH": "100", - "x": "705", - "y": "401", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": -0.3346582539068095, - "y": 0 - }, - "p1": { - "x": 0.5209787928221856, - "y": 0.005742251223491234 - }, - "p2": { - "x": -0.3346582539068095, - "y": 91.5 - } - } - }, - { - "ID": "2969", - "typeID": "Arrow", - "zOrder": "1", - "w": "1", - "h": "92", - "measuredW": "150", - "measuredH": "100", - "x": "705", - "y": "238", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": -0.3346582539068095, - "y": 0 - }, - "p1": { - "x": 0.5209787928221856, - "y": 0.005742251223491234 - }, - "p2": { - "x": -0.3346582539068095, - "y": 91.5 - } - } - }, - { - "ID": "2970", - "typeID": "Arrow", - "zOrder": "2", - "w": "1", - "h": "108", - "measuredW": "150", - "measuredH": "100", - "x": "707", - "y": "130", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": -0.3346582539068095, - "y": 0 - }, - "p1": { - "x": 0.5209787928221856, - "y": 0.005742251223491234 - }, - "p2": { - "x": -0.3346582539068095, - "y": 108 - } - } - }, - { - "ID": "2971", - "typeID": "Arrow", - "zOrder": "3", - "w": "147", - "h": "139", - "measuredW": "150", - "measuredH": "100", - "x": "476", - "y": "2250", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 146.93535762737952, - "y": -0.4256786899632061 - }, - "p1": { - "x": 0.5656811947576953, - "y": -0.05547089302042055 - }, - "p2": { - "x": -0.43820569842159784, - "y": 138.13066289839662 - } - } - }, - { - "ID": "2972", - "typeID": "Arrow", - "zOrder": "4", - "w": "137", - "h": "97", - "measuredW": "150", - "measuredH": "100", - "x": "481", - "y": "2243", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 137.79594489989745, - "y": -0.30749565311725746 - }, - "p1": { - "x": 0.5656811947576953, - "y": -0.055470893020420554 - }, - "p2": { - "x": 0.38433587934019897, - "y": 96.9750594056843 - } - } - }, - { - "ID": "2973", - "typeID": "Arrow", - "zOrder": "5", - "w": "152", - "h": "67", - "measuredW": "150", - "measuredH": "100", - "x": "475", - "y": "2161", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 152.30816846754254, - "y": 67.10012108806256 - }, - "p1": { - "x": 0.5245584633234497, - "y": 0.05852778135877274 - }, - "p2": { - "x": 0.30417618816505865, - "y": 0.21836448513636242 - } - } - }, - { - "ID": "2974", - "typeID": "Arrow", - "zOrder": "6", - "w": "148", - "h": "47", - "measuredW": "150", - "measuredH": "100", - "x": "463", - "y": "2238", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 148.4997532704873, - "y": -0.17162340605727877 - }, - "p1": { - "x": 0.5656811947576955, - "y": -0.055470893020420554 - }, - "p2": { - "x": 0.1438568058148917, - "y": 47.2536221851085 - } - } - }, - { - "ID": "2975", - "typeID": "Arrow", - "zOrder": "7", - "w": "145", - "h": "15", - "measuredW": "150", - "measuredH": "100", - "x": "473", - "y": "2216", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 144.5799129616624, - "y": 14.532184964532576 - }, - "p1": { - "x": 0.5205160087037614, - "y": 0.039011501398818746 - }, - "p2": { - "x": -0.127887688304952, - "y": -0.060198294287715726 - } - } - }, - { - "ID": "2976", - "typeID": "Arrow", - "zOrder": "8", - "w": "136", - "h": "5", - "measuredW": "150", - "measuredH": "100", - "x": "950", - "y": "2032", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 136, - "y": 0 - }, - "p1": { - "x": 0.5718039173147684, - "y": -0.006974564311454232 - }, - "p2": { - "x": -0.33608340984960705, - "y": 5.057669186803878 - } - } - }, - { - "ID": "2977", - "typeID": "Arrow", - "zOrder": "9", - "w": "104", - "h": "40", - "measuredW": "150", - "measuredH": "100", - "x": "946", - "y": "1986", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 104.43216501804841, - "y": 0.3172722921526656 - }, - "p1": { - "x": 0.5205160087037611, - "y": 0.039011501398818815 - }, - "p2": { - "x": 0.3887527462180742, - "y": 40.556174604332455 - } - } - }, - { - "ID": "2978", - "typeID": "Arrow", - "zOrder": "10", - "w": "136", - "h": "5", - "measuredW": "150", - "measuredH": "100", - "x": "950", - "y": "1980", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 136, - "y": 0 - }, - "p1": { - "x": 0.5718039173147684, - "y": -0.006974564311454232 - }, - "p2": { - "x": -0.33608340984960705, - "y": 5.057669186803878 - } - } - }, - { - "ID": "2979", - "typeID": "Arrow", - "zOrder": "11", - "w": "4", - "h": "617", - "measuredW": "150", - "measuredH": "100", - "x": "790", - "y": "2042", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": 3.6653417460931905, - "y": 616.945330548373 - }, - "p1": { - "x": 0.5209787928221856, - "y": 0.0057422512234912276 - }, - "p2": { - "x": 3.6653417460931905, - "y": -0.1453471090021594 - } - } - }, - { - "ID": "2980", - "typeID": "Arrow", - "zOrder": "12", - "w": "274", - "h": "90", - "measuredW": "150", - "measuredH": "100", - "x": "439", - "y": "1888", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": 273.85853278458967, - "y": 90.7596536600604 - }, - "p1": { - "x": 0.5394209656837318, - "y": 0.08127816093452517 - }, - "p2": { - "x": 0.2417599083887012, - "y": 0.49483933119245194 - } - } - }, - { - "ID": "2981", - "typeID": "Arrow", - "zOrder": "13", - "w": "1", - "h": "82", - "measuredW": "150", - "measuredH": "100", - "x": "407", - "y": "1894", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 0.6653417460931905, - "y": 82.26052647176084 - }, - "p1": { - "x": 0.5209787928221856, - "y": 0.005742251223491229 - }, - "p2": { - "x": 0.6653417460931905, - "y": -0.1453471090021594 - } - } - }, - { - "ID": "2982", - "typeID": "Arrow", - "zOrder": "14", - "w": "1", - "h": "82", - "measuredW": "150", - "measuredH": "100", - "x": "291", - "y": "1882", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 0.6653417460931905, - "y": 82.26052647176084 - }, - "p1": { - "x": 0.5209787928221856, - "y": 0.005742251223491229 - }, - "p2": { - "x": 0.6653417460931905, - "y": -0.1453471090021594 - } - } - }, - { - "ID": "2983", - "typeID": "Arrow", - "zOrder": "15", - "w": "165", - "h": "4", - "measuredW": "150", - "measuredH": "100", - "x": "429", - "y": "1878", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": 165.29974235933003, - "y": 3.223922187594326 - }, - "p1": { - "x": 0.5209787928221858, - "y": 0.0057422512234912345 - }, - "p2": { - "x": 0.2387810888058084, - "y": -0.32883026031754525 - } - } - }, - { - "ID": "2984", - "typeID": "Arrow", - "zOrder": "16", - "w": "1", - "h": "87", - "measuredW": "150", - "measuredH": "100", - "x": "1060", - "y": "1598", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 0.6653417460931905, - "y": 86.60548396943796 - }, - "p1": { - "x": 0.5209787928221857, - "y": 0.005742251223491228 - }, - "p2": { - "x": 0.6653417460931905, - "y": -0.18809294361221873 - } - } - }, - { - "ID": "2985", - "typeID": "Arrow", - "zOrder": "17", - "w": "110", - "h": "48", - "measuredW": "150", - "measuredH": "100", - "x": "406", - "y": "1696", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 110.1089405697204, - "y": 0.09286914910626365 - }, - "p1": { - "x": 0.5902039507828301, - "y": -0.08117284189966499 - }, - "p2": { - "x": -0.08142479985480122, - "y": 47.76718365292663 - } - } - }, - { - "ID": "2986", - "typeID": "Arrow", - "zOrder": "18", - "w": "232", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "678", - "y": "1690", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": 231.23278894059456, - "y": 0.2239221875943258 - }, - "p1": { - "x": 0.5209787928221857, - "y": 0.005742251223491235 - }, - "p2": { - "x": -0.3346582539068095, - "y": 0.2239221875944395 - } - } - }, - { - "ID": "2987", - "typeID": "Arrow", - "zOrder": "19", - "w": "1", - "h": "205", - "measuredW": "150", - "measuredH": "100", - "x": "584", - "y": "1579", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": -0.3346582539068095, - "y": 205.1628221932308 - }, - "p1": { - "x": 0.5160009912864776, - "y": -0.006662715401372748 - }, - "p2": { - "x": -0.3346582539068095, - "y": -0.1453471090021594 - } - } - }, - { - "ID": "2988", - "typeID": "Arrow", - "zOrder": "20", - "w": "121", - "h": "93", - "measuredW": "150", - "measuredH": "100", - "x": "398", - "y": "1578", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 120.93806896294319, - "y": 93.17429394896112 - }, - "p1": { - "x": 0.516182454167905, - "y": 0.07501328692757027 - }, - "p2": { - "x": -0.31766348911210684, - "y": -0.0011636194603852346 - } - } - }, - { - "ID": "2989", - "typeID": "Arrow", - "zOrder": "21", - "w": "137", - "h": "3", - "measuredW": "150", - "measuredH": "100", - "x": "385", - "y": "1687", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 137, - "y": 3 - }, - "p1": { - "x": 0.5718039173147684, - "y": -0.006974564311454229 - }, - "p2": { - "x": -0.08142479985480122, - "y": 0.7671836529266329 - } - } - }, - { - "ID": "2990", - "typeID": "Arrow", - "zOrder": "22", - "w": "122", - "h": "54", - "measuredW": "150", - "measuredH": "100", - "x": "392", - "y": "1626", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 121.83256443864616, - "y": 54.10892686648094 - }, - "p1": { - "x": 0.516182454167905, - "y": 0.07501328692757032 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "2991", - "typeID": "Arrow", - "zOrder": "23", - "w": "160", - "h": "188", - "measuredW": "150", - "measuredH": "100", - "x": "662", - "y": "1491", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": -0.3841804878131825, - "y": 188.49997944514098 - }, - "p1": { - "x": 0.49884332978224843, - "y": -0.21997537262096778 - }, - "p2": { - "x": 159.6653417460932, - "y": 0.2239221875944395 - } - } - }, - { - "ID": "2992", - "typeID": "Arrow", - "zOrder": "24", - "w": "112", - "h": "19", - "measuredW": "150", - "measuredH": "100", - "x": "870", - "y": "1489", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 111.98622841182782, - "y": 19.46557788118912 - }, - "p1": { - "x": 0.49235273148208303, - "y": -0.056041280138932066 - }, - "p2": { - "x": -0.33487112270768193, - "y": 0.31993591507512065 - } - } - }, - { - "ID": "2993", - "typeID": "Arrow", - "zOrder": "25", - "w": "110", - "h": "36", - "measuredW": "150", - "measuredH": "100", - "x": "868", - "y": "1441", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 110.15710001860498, - "y": -0.18235706574705546 - }, - "p1": { - "x": 0.5205160087037611, - "y": 0.03901150139881878 - }, - "p2": { - "x": 0.3887527462180742, - "y": 35.556174604332455 - } - } - }, - { - "ID": "2994", - "typeID": "Arrow", - "zOrder": "26", - "w": "121", - "h": "93", - "measuredW": "150", - "measuredH": "100", - "x": "399", - "y": "1377", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 120.93806896294319, - "y": 93.17429394896112 - }, - "p1": { - "x": 0.516182454167905, - "y": 0.07501328692757027 - }, - "p2": { - "x": -0.31766348911210684, - "y": -0.0011636194603852346 - } - } - }, - { - "ID": "2995", - "typeID": "Arrow", - "zOrder": "27", - "w": "153", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "660", - "y": "1482", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": 152.30933474099322, - "y": 0.48329069395197166 - }, - "p1": { - "x": 0.5209787928221856, - "y": 0.0057422512234912345 - }, - "p2": { - "x": -0.3346582539068095, - "y": 1.2239221875944395 - } - } - }, - { - "ID": "2996", - "typeID": "Arrow", - "zOrder": "28", - "w": "137", - "h": "3", - "measuredW": "150", - "measuredH": "100", - "x": "386", - "y": "1486", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 137, - "y": 3 - }, - "p1": { - "x": 0.5718039173147684, - "y": -0.006974564311454229 - }, - "p2": { - "x": -0.08142479985480122, - "y": 0.7671836529266329 - } - } - }, - { - "ID": "2997", - "typeID": "Arrow", - "zOrder": "29", - "w": "122", - "h": "54", - "measuredW": "150", - "measuredH": "100", - "x": "393", - "y": "1425", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 121.83256443864616, - "y": 54.10892686648094 - }, - "p1": { - "x": 0.516182454167905, - "y": 0.07501328692757032 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "2998", - "typeID": "Arrow", - "zOrder": "30", - "w": "162", - "h": "253", - "measuredW": "150", - "measuredH": "100", - "x": "593", - "y": "1216", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": -0.3084915658236014, - "y": 252.89791781788676 - }, - "p1": { - "x": 0.45433123552684945, - "y": -0.17593627878712412 - }, - "p2": { - "x": 162, - "y": 0 - } - } - }, - { - "ID": "2999", - "typeID": "Arrow", - "zOrder": "31", - "w": "137", - "h": "97", - "measuredW": "150", - "measuredH": "100", - "x": "545", - "y": "1209", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 137.79594489989745, - "y": -0.30749565311725746 - }, - "p1": { - "x": 0.5656811947576953, - "y": -0.055470893020420554 - }, - "p2": { - "x": 0.38433587934019897, - "y": 96.9750594056843 - } - } - }, - { - "ID": "3000", - "typeID": "Arrow", - "zOrder": "32", - "w": "152", - "h": "67", - "measuredW": "150", - "measuredH": "100", - "x": "539", - "y": "1127", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 152.30816846754254, - "y": 67.10012108806256 - }, - "p1": { - "x": 0.5245584633234497, - "y": 0.05852778135877274 - }, - "p2": { - "x": 0.30417618816505865, - "y": 0.21836448513636242 - } - } - }, - { - "ID": "3001", - "typeID": "Arrow", - "zOrder": "33", - "w": "148", - "h": "47", - "measuredW": "150", - "measuredH": "100", - "x": "527", - "y": "1204", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 148.4997532704873, - "y": -0.17162340605727877 - }, - "p1": { - "x": 0.5656811947576955, - "y": -0.055470893020420554 - }, - "p2": { - "x": 0.1438568058148917, - "y": 47.2536221851085 - } - } - }, - { - "ID": "3002", - "typeID": "Arrow", - "zOrder": "34", - "w": "145", - "h": "15", - "measuredW": "150", - "measuredH": "100", - "x": "537", - "y": "1182", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 144.5799129616624, - "y": 14.532184964532576 - }, - "p1": { - "x": 0.5205160087037614, - "y": 0.039011501398818746 - }, - "p2": { - "x": -0.127887688304952, - "y": -0.060198294287715726 - } - } - }, - { - "ID": "3003", - "typeID": "Arrow", - "zOrder": "35", - "w": "1", - "h": "109", - "measuredW": "150", - "measuredH": "100", - "x": "652", - "y": "868", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 0.6653417460931905, - "y": 108.91512571003409 - }, - "p1": { - "x": 0.5209787928221856, - "y": 0.005742251223491229 - }, - "p2": { - "x": 0.6653417460931905, - "y": -0.1453471090021594 - } - } - }, - { - "ID": "3004", - "typeID": "Arrow", - "zOrder": "36", - "w": "2", - "h": "212", - "measuredW": "150", - "measuredH": "100", - "x": "754", - "y": "976", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": 2, - "y": 211.63760017984214 - }, - "p1": { - "x": 0.5232067510548527, - "y": -0.004219409282700418 - }, - "p2": { - "x": -0.36468620791185913, - "y": -0.28900271550764955 - } - } - }, - { - "ID": "3005", - "typeID": "Arrow", - "zOrder": "37", - "w": "133", - "h": "72", - "measuredW": "150", - "measuredH": "100", - "x": "474", - "y": "973", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 133.14610551279748, - "y": 0.35325766066625874 - }, - "p1": { - "x": 0.54496644295302, - "y": -0.04519015659955244 - }, - "p2": { - "x": -0.10087148815074443, - "y": 72.101629891946 - } - } - }, - { - "ID": "3006", - "typeID": "Arrow", - "zOrder": "38", - "w": "153", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "820", - "y": "744", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 152.30933474099322, - "y": 0.48329069395197166 - }, - "p1": { - "x": 0.5209787928221856, - "y": 0.0057422512234912345 - }, - "p2": { - "x": -0.3346582539068095, - "y": 1.2239221875944395 - } - } - }, - { - "ID": "3007", - "typeID": "Arrow", - "zOrder": "39", - "w": "152", - "h": "16", - "measuredW": "150", - "measuredH": "100", - "x": "464", - "y": "970", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 152.11465204170747, - "y": 0.7908157952633701 - }, - "p1": { - "x": 0.5449664429530199, - "y": -0.04519015659955239 - }, - "p2": { - "x": -0.35063894976218535, - "y": 16.165466987680475 - } - } - }, - { - "ID": "3008", - "typeID": "Arrow", - "zOrder": "40", - "w": "137", - "h": "47", - "measuredW": "150", - "measuredH": "100", - "x": "473", - "y": "913", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 136.70854737820036, - "y": 47.54104833365204 - }, - "p1": { - "x": 0.5198780554566916, - "y": 0.06964721983543047 - }, - "p2": { - "x": -0.38209242085218875, - "y": 0.1358738236992849 - } - } - }, - { - "ID": "3009", - "typeID": "Arrow", - "zOrder": "41", - "w": "1", - "h": "137", - "measuredW": "150", - "measuredH": "100", - "x": "1080", - "y": "907", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 0.6653417460931905, - "y": 137 - }, - "p1": { - "x": 0.5209787928221855, - "y": 0.00574225122349123 - }, - "p2": { - "x": 0.6653417460931905, - "y": -0.1453471090021594 - } - } - }, - { - "ID": "3010", - "typeID": "Arrow", - "zOrder": "42", - "w": "194", - "h": "4", - "measuredW": "150", - "measuredH": "100", - "x": "763", - "y": "973", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": 194, - "y": 4 - }, - "p1": { - "x": 0.5232067510548526, - "y": -0.00421940928270042 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "3011", - "typeID": "Arrow", - "zOrder": "43", - "w": "137", - "h": "97", - "measuredW": "150", - "measuredH": "100", - "x": "477", - "y": "750", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 137.79594489989745, - "y": -0.30749565311725746 - }, - "p1": { - "x": 0.5656811947576953, - "y": -0.055470893020420554 - }, - "p2": { - "x": 0.38433587934019897, - "y": 96.9750594056843 - } - } - }, - { - "ID": "3012", - "typeID": "Arrow", - "zOrder": "44", - "w": "152", - "h": "67", - "measuredW": "150", - "measuredH": "100", - "x": "471", - "y": "668", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 152.30816846754254, - "y": 67.10012108806256 - }, - "p1": { - "x": 0.5245584633234497, - "y": 0.05852778135877274 - }, - "p2": { - "x": 0.30417618816505865, - "y": 0.21836448513636242 - } - } - }, - { - "ID": "3013", - "typeID": "Arrow", - "zOrder": "45", - "w": "148", - "h": "47", - "measuredW": "150", - "measuredH": "100", - "x": "459", - "y": "745", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 148.4997532704873, - "y": -0.17162340605727877 - }, - "p1": { - "x": 0.5656811947576955, - "y": -0.055470893020420554 - }, - "p2": { - "x": 0.1438568058148917, - "y": 47.2536221851085 - } - } - }, - { - "ID": "3014", - "typeID": "Arrow", - "zOrder": "46", - "w": "145", - "h": "15", - "measuredW": "150", - "measuredH": "100", - "x": "469", - "y": "723", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 144.5799129616624, - "y": 14.532184964532576 - }, - "p1": { - "x": 0.5205160087037614, - "y": 0.039011501398818746 - }, - "p2": { - "x": -0.127887688304952, - "y": -0.060198294287715726 - } - } - }, - { - "ID": "3015", - "typeID": "Arrow", - "zOrder": "47", - "w": "161", - "h": "20", - "measuredW": "150", - "measuredH": "100", - "x": "820", - "y": "1771", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": -0.47029652980143055, - "y": 0.29397476431574887 - }, - "p1": { - "x": 0.37221269296741016, - "y": -0.07547169811320738 - }, - "p2": { - "x": 161.00476611133257, - "y": 16.43596323437623 - } - } - }, - { - "ID": "3016", - "typeID": "Arrow", - "zOrder": "48", - "w": "140", - "h": "16", - "measuredW": "150", - "measuredH": "100", - "x": "822", - "y": "1805", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": -0.29036382738183875, - "y": 15.570879075617313 - }, - "p1": { - "x": 0.41689655172413825, - "y": 0.047241379310345256 - }, - "p2": { - "x": 140.06334432619047, - "y": 0.02442632057955052 - } - } - }, - { - "ID": "3017", - "typeID": "Arrow", - "zOrder": "49", - "w": "383", - "h": "90", - "measuredW": "150", - "measuredH": "100", - "x": "659", - "y": "1794", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": 383.4921388017138, - "y": -0.13930809626481278 - }, - "p1": { - "x": 0.30117092560179964, - "y": 0.12278545856721967 - }, - "p2": { - "x": 0.2417599083887012, - "y": 88.49483933119245 - } - } - }, - { - "ID": "3018", - "typeID": "Arrow", - "zOrder": "50", - "w": "226", - "h": "473", - "measuredW": "150", - "measuredH": "100", - "x": "708", - "y": "495", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": 0.017448325447617208, - "y": 0.3860827641242395 - }, - "p1": { - "x": 0.5879572479383793, - "y": -0.1722762652301552 - }, - "p2": { - "x": 226, - "y": 473 - } - } - }, - { - "ID": "3019", - "typeID": "Arrow", - "zOrder": "51", - "w": "131", - "h": "37", - "measuredW": "150", - "measuredH": "100", - "x": "846", - "y": "485", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 130.47867928563346, - "y": 37.061364879539155 - }, - "p1": { - "x": 0.54496644295302, - "y": -0.04519015659955236 - }, - "p2": { - "x": -0.49385068294191115, - "y": 0.483451104531639 - } - } - }, - { - "ID": "3020", - "typeID": "Arrow", - "zOrder": "52", - "w": "109", - "h": "5", - "measuredW": "150", - "measuredH": "100", - "x": "860", - "y": "473", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 108.21915036869632, - "y": -0.4958086220839846 - }, - "p1": { - "x": 0.5209787928221856, - "y": 0.005742251223491233 - }, - "p2": { - "x": -0.3346582539068095, - "y": 4.2239221875944395 - } - } - }, - { - "ID": "3021", - "typeID": "Arrow", - "zOrder": "53", - "w": "117", - "h": "50", - "measuredW": "150", - "measuredH": "100", - "x": "850", - "y": "421", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 117.03921766627673, - "y": -0.41284752854630824 - }, - "p1": { - "x": 0.5198780554566917, - "y": 0.06964721983543032 - }, - "p2": { - "x": 0.22588012673645608, - "y": 49.14432597307683 - } - } - }, - { - "ID": "3022", - "typeID": "Arrow", - "zOrder": "54", - "w": "107", - "h": "107", - "measuredW": "150", - "measuredH": "100", - "x": "466", - "y": "488", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 107.85873396459311, - "y": -0.1566834906291774 - }, - "p1": { - "x": 0.5656811947576953, - "y": -0.05547089302042045 - }, - "p2": { - "x": 0.4400484352249805, - "y": 106.9113622910445 - } - } - }, - { - "ID": "3023", - "typeID": "Arrow", - "zOrder": "55", - "w": "126", - "h": "56", - "measuredW": "150", - "measuredH": "100", - "x": "458", - "y": "420", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 126, - "y": 56 - }, - "p1": { - "x": 0.5245584633234497, - "y": 0.058527781358772735 - }, - "p2": { - "x": -0.07217513242011364, - "y": -0.19723681479831612 - } - } - }, - { - "ID": "3024", - "typeID": "Arrow", - "zOrder": "56", - "w": "130", - "h": "59", - "measuredW": "150", - "measuredH": "100", - "x": "455", - "y": "482", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 130, - "y": 0 - }, - "p1": { - "x": 0.5656811947576954, - "y": -0.055470893020420554 - }, - "p2": { - "x": 0.49576099110981886, - "y": 59.405957008703695 - } - } - }, - { - "ID": "3025", - "typeID": "Arrow", - "zOrder": "57", - "w": "137", - "h": "6", - "measuredW": "150", - "measuredH": "100", - "x": "453", - "y": "477", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 137, - "y": 1 - }, - "p1": { - "x": 0.5205160087037611, - "y": 0.039011501398818746 - }, - "p2": { - "x": 0.0636971146398082, - "y": -0.04373571775238361 - } - } - }, - { - "ID": "3026", - "typeID": "__group__", - "zOrder": "58", - "measuredW": "240", - "measuredH": "49", - "w": "240", - "h": "49", - "x": "232", - "y": "397", - "properties": { - "controlName": "100-typescript-basics:what-is-typescript" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "240", - "h": "49", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "w": "141", - "measuredW": "150", - "measuredH": "25", - "x": "55", - "y": "12", - "properties": { - "text": "What is TypeScript?", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3027", - "typeID": "__group__", - "zOrder": "59", - "measuredW": "240", - "measuredH": "50", - "w": "240", - "h": "50", - "x": "232", - "y": "509", - "properties": { - "controlName": "102-typescript-basics:structural-typing" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "240", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "w": "131", - "measuredW": "128", - "measuredH": "25", - "x": "54", - "y": "12", - "properties": { - "text": "Structural Typing", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3028", - "typeID": "__group__", - "zOrder": "60", - "measuredW": "240", - "measuredH": "50", - "w": "240", - "h": "50", - "x": "232", - "y": "565", - "properties": { - "controlName": "103-typescript-basics:type-inference" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "240", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "w": "118", - "measuredW": "116", - "measuredH": "25", - "x": "61", - "y": "12", - "properties": { - "text": "Type Inference", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3029", - "typeID": "Label", - "zOrder": "61", - "measuredW": "97", - "measuredH": "36", - "x": "663", - "y": "347", - "properties": { - "size": "28", - "text": "Angular" - } - }, - { - "ID": "3030", - "typeID": "__group__", - "zOrder": "62", - "measuredW": "350", - "measuredH": "141", - "w": "350", - "h": "141", - "x": "910", - "y": "168", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "350", - "h": "141", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "314", - "measuredH": "25", - "x": "14", - "y": "17", - "properties": { - "size": "17", - "text": "Find the detailed version of this roadmap" - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "319", - "measuredH": "25", - "x": "14", - "y": "45", - "properties": { - "size": "17", - "text": "along with resources and other roadmaps" - } - }, - { - "ID": "3", - "typeID": "__group__", - "zOrder": "3", - "measuredW": "320", - "measuredH": "45", - "w": "320", - "h": "45", - "x": "15", - "y": "81", - "properties": { - "controlName": "ext_link:roadmap.sh" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "320", - "h": "45", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "borderColor": "4273622", - "color": "4273622" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "105", - "measuredH": "28", - "x": "141", - "y": "8", - "properties": { - "color": "16777215", - "size": "20", - "text": "roadmap.sh" - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "45", - "measuredH": "28", - "x": "65", - "y": "8", - "properties": { - "color": "16777215", - "size": "20", - "text": "https" - } - }, - { - "ID": "3", - "typeID": "Label", - "zOrder": "3", - "measuredW": "5", - "measuredH": "28", - "x": "113", - "y": "8", - "properties": { - "color": "16777215", - "size": "20", - "text": ":" - } - }, - { - "ID": "4", - "typeID": "Label", - "zOrder": "4", - "measuredW": "10", - "measuredH": "28", - "x": "120", - "y": "9", - "properties": { - "color": "16777215", - "size": "20", - "text": "/" - } - }, - { - "ID": "5", - "typeID": "Label", - "zOrder": "5", - "measuredW": "10", - "measuredH": "28", - "x": "128", - "y": "9", - "properties": { - "color": "16777215", - "size": "20", - "text": "/" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "3031", - "typeID": "__group__", - "zOrder": "63", - "measuredW": "303", - "measuredH": "52", - "w": "303", - "h": "52", - "x": "555", - "y": "457", - "properties": { - "controlName": "100-typescript-basics" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "303", - "h": "52", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "197", - "measuredH": "26", - "x": "53", - "y": "13", - "properties": { - "text": "Learn TypeScript Basics", - "size": "18" - } - } - ] - } - } - }, - { - "ID": "3032", - "typeID": "__group__", - "zOrder": "64", - "measuredW": "240", - "measuredH": "50", - "w": "240", - "h": "50", - "x": "232", - "y": "452", - "properties": { - "controlName": "101-typescript-basics:why-use-typescript" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "240", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "w": "160", - "measuredW": "157", - "measuredH": "25", - "x": "40", - "y": "12", - "properties": { - "text": "Why use TypeScript?", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3033", - "typeID": "__group__", - "zOrder": "65", - "measuredW": "222", - "measuredH": "50", - "w": "222", - "h": "50", - "x": "953", - "y": "396", - "properties": { - "controlName": "104-typescript-basics:union-types" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "222", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "95", - "measuredH": "25", - "x": "63", - "y": "12", - "properties": { - "text": "Union Types", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3034", - "typeID": "__group__", - "zOrder": "66", - "measuredW": "222", - "measuredH": "50", - "w": "222", - "h": "50", - "x": "953", - "y": "451", - "properties": { - "controlName": "105-typescript-basics:builtin-types" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "222", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "100", - "measuredH": "25", - "x": "61", - "y": "12", - "properties": { - "text": "Built-in types", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3035", - "typeID": "__group__", - "zOrder": "67", - "measuredW": "222", - "measuredH": "50", - "w": "222", - "h": "50", - "x": "953", - "y": "507", - "properties": { - "controlName": "106-typescript-basics:type-guard" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "222", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "w": "94", - "measuredW": "97", - "measuredH": "25", - "x": "64", - "y": "12", - "properties": { - "text": "Type Guards", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3036", - "typeID": "__group__", - "zOrder": "68", - "measuredW": "262", - "measuredH": "50", - "w": "262", - "h": "50", - "x": "596", - "y": "722", - "properties": { - "controlName": "101-rxjs-basics" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "262", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "145", - "measuredH": "25", - "x": "63", - "y": "12", - "properties": { - "text": "Learn RxJS Basics", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3037", - "typeID": "__group__", - "zOrder": "69", - "measuredW": "256", - "measuredH": "50", - "w": "256", - "h": "50", - "x": "231", - "y": "645", - "properties": { - "controlName": "100-rxjs-basics:observable-pattern" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "256", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "210", - "measuredH": "25", - "x": "23", - "y": "12", - "properties": { - "text": "What is Observable Pattern", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3038", - "typeID": "__group__", - "zOrder": "70", - "measuredW": "256", - "measuredH": "50", - "w": "256", - "h": "50", - "x": "231", - "y": "700", - "properties": { - "controlName": "101-rxjs-basics:observable-lifecycle" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "256", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "161", - "measuredH": "25", - "x": "47", - "y": "12", - "properties": { - "text": "Observable Lifecycle", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3039", - "typeID": "__group__", - "zOrder": "71", - "measuredW": "256", - "measuredH": "50", - "w": "256", - "h": "50", - "x": "231", - "y": "756", - "properties": { - "controlName": "102-rxjs-basics:marble-diagrams" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "256", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "133", - "measuredH": "25", - "x": "61", - "y": "12", - "properties": { - "text": "Marble Diagrams", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3040", - "typeID": "__group__", - "zOrder": "72", - "measuredW": "256", - "measuredH": "50", - "w": "256", - "h": "50", - "x": "231", - "y": "812", - "properties": { - "controlName": "103-rxjs-basics:rxjs-vs-promises" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "256", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "137", - "measuredH": "25", - "x": "59", - "y": "12", - "properties": { - "text": "RxJS vs Promises", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3041", - "typeID": "__group__", - "zOrder": "73", - "measuredW": "262", - "measuredH": "50", - "w": "262", - "h": "50", - "x": "911", - "y": "945", - "properties": { - "controlName": "102-angular-basics" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "262", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "176", - "measuredH": "25", - "x": "48", - "y": "12", - "properties": { - "text": "Understand the Basics", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3042", - "typeID": "__group__", - "zOrder": "74", - "measuredW": "262", - "measuredH": "50", - "w": "262", - "h": "50", - "x": "910", - "y": "886", - "properties": { - "controlName": "100-angular-basics:angularjs-vs-angular" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "262", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "158", - "measuredH": "25", - "x": "52", - "y": "12", - "properties": { - "text": "Angular.js vs Angular", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3043", - "typeID": "Canvas", - "zOrder": "75", - "w": "198", - "h": "393", - "measuredW": "100", - "measuredH": "70", - "x": "974", - "y": "1011" - }, - { - "ID": "3044", - "typeID": "Label", - "zOrder": "76", - "measuredW": "101", - "measuredH": "26", - "x": "1022", - "y": "1028", - "properties": { - "text": "What are __", - "size": "18" - } - }, - { - "ID": "3045", - "typeID": "__group__", - "zOrder": "77", - "measuredW": "222", - "measuredH": "50", - "w": "222", - "h": "50", - "x": "667", - "y": "1176", - "properties": { - "controlName": "104-templates" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "222", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "80", - "measuredH": "25", - "x": "71", - "y": "12", - "properties": { - "text": "Templates", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3046", - "typeID": "__group__", - "zOrder": "78", - "measuredW": "157", - "measuredH": "50", - "w": "157", - "h": "50", - "x": "231", - "y": "1105", - "properties": { - "controlName": "100-templates:interpolation" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "157", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "98", - "measuredH": "25", - "x": "30", - "y": "11", - "properties": { - "text": "Interpolation", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3047", - "typeID": "__group__", - "zOrder": "79", - "measuredW": "161", - "measuredH": "50", - "w": "161", - "h": "50", - "x": "394", - "y": "1105", - "properties": { - "controlName": "101-templates:property-binding" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "161", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "128", - "measuredH": "25", - "x": "17", - "y": "11", - "properties": { - "text": "Property Binding", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3048", - "typeID": "__group__", - "zOrder": "80", - "measuredW": "126", - "measuredH": "50", - "w": "126", - "h": "50", - "x": "701", - "y": "1742", - "properties": { - "controlName": "100-state-management:ngxs" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "126", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "46", - "measuredH": "25", - "x": "40", - "y": "12", - "properties": { - "text": "NGXS", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3049", - "typeID": "__group__", - "zOrder": "81", - "measuredW": "126", - "measuredH": "50", - "w": "126", - "h": "50", - "x": "701", - "y": "1799", - "properties": { - "controlName": "101-state-management:ngrx" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "126", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "48", - "measuredH": "25", - "x": "39", - "y": "12", - "properties": { - "size": "17", - "text": "NGRX" - } - } - ] - } - } - }, - { - "ID": "3050", - "typeID": "__group__", - "zOrder": "82", - "measuredW": "255", - "measuredH": "50", - "w": "255", - "h": "50", - "x": "232", - "y": "2138", - "properties": { - "controlName": "100-testing-angular-apps:testing-pipes" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "255", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "104", - "measuredH": "25", - "x": "76", - "y": "12", - "properties": { - "size": "17", - "text": "Testing Pipes" - } - } - ] - } - } - }, - { - "ID": "3051", - "typeID": "__group__", - "zOrder": "83", - "measuredW": "255", - "measuredH": "50", - "w": "255", - "h": "50", - "x": "232", - "y": "2193", - "properties": { - "controlName": "101-testing-angular-apps:testing-services" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "255", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "219", - "measuredH": "25", - "x": "18", - "y": "12", - "properties": { - "size": "17", - "text": "Services with Dependencies" - } - } - ] - } - } - }, - { - "ID": "3052", - "typeID": "__group__", - "zOrder": "84", - "measuredW": "576", - "measuredH": "105", - "w": "576", - "h": "105", - "x": "585", - "y": "2467", - "properties": { - "controlName": "ext_link:roadmap.sh/frontend" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "576", - "h": "105", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "502", - "measuredH": "32", - "x": "40", - "y": "22", - "properties": { - "size": "24", - "text": "Frontend Roadmap after Framework Selection" - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "171", - "measuredH": "26", - "x": "205", - "y": "58", - "properties": { - "text": "roadmap.sh/frontend", - "size": "18", - "color": "10027263" - } - } - ] - } - } - }, - { - "ID": "3053", - "typeID": "__group__", - "zOrder": "85", - "measuredW": "243", - "measuredH": "50", - "w": "243", - "h": "50", - "x": "589", - "y": "950", - "properties": { - "controlName": "103-angular-cli" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "243", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "91", - "measuredH": "25", - "x": "76", - "y": "12", - "properties": { - "text": "Angular CLI", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3054", - "typeID": "Canvas", - "zOrder": "86", - "w": "253", - "h": "188", - "measuredW": "100", - "measuredH": "70", - "x": "231", - "y": "887" - }, - { - "ID": "3055", - "typeID": "__group__", - "zOrder": "87", - "measuredW": "123", - "measuredH": "50", - "w": "123", - "h": "50", - "x": "245", - "y": "901", - "properties": { - "controlName": "100-angular-cli:ng-build" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "123", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "61", - "measuredH": "25", - "x": "33", - "y": "12", - "properties": { - "text": "ng build", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3056", - "typeID": "__group__", - "zOrder": "88", - "measuredW": "94", - "measuredH": "50", - "w": "94", - "h": "50", - "x": "374", - "y": "901", - "properties": { - "controlName": "101-angular-cli:ng-serve" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "94", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "67", - "measuredH": "25", - "x": "16", - "y": "12", - "properties": { - "text": "ng serve", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3057", - "typeID": "__group__", - "zOrder": "89", - "measuredW": "123", - "measuredH": "50", - "w": "123", - "h": "50", - "x": "246", - "y": "956", - "properties": { - "controlName": "102-angular-cli:ng-generate" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "123", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "95", - "measuredH": "25", - "x": "17", - "y": "12", - "properties": { - "text": "ng generate", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3058", - "typeID": "__group__", - "zOrder": "90", - "measuredW": "94", - "measuredH": "50", - "w": "94", - "h": "50", - "x": "375", - "y": "956", - "properties": { - "controlName": "103-angular-cli:ng-test" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "94", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "53", - "measuredH": "25", - "x": "22", - "y": "12", - "properties": { - "text": "ng test", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3059", - "typeID": "__group__", - "zOrder": "91", - "measuredW": "145", - "measuredH": "50", - "w": "145", - "h": "50", - "x": "589", - "y": "849", - "properties": { - "controlName": "106-angular-cli:schematics" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "145", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "90", - "measuredH": "25", - "x": "28", - "y": "12", - "properties": { - "size": "17", - "text": "Schematics" - } - } - ] - } - } - }, - { - "ID": "3060", - "typeID": "__group__", - "zOrder": "92", - "measuredW": "123", - "measuredH": "49", - "w": "123", - "h": "49", - "x": "245", - "y": "1012", - "properties": { - "controlName": "104-angular-cli:ng-e2e" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "123", - "h": "49", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "55", - "measuredH": "25", - "x": "36", - "y": "12", - "properties": { - "text": "ng e2e", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3061", - "typeID": "__group__", - "zOrder": "93", - "measuredW": "94", - "measuredH": "49", - "w": "94", - "h": "49", - "x": "374", - "y": "1012", - "properties": { - "controlName": "105-angular-cli:ng-new" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "94", - "h": "49", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "56", - "measuredH": "25", - "x": "21", - "y": "12", - "properties": { - "text": "ng new", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3062", - "typeID": "__group__", - "zOrder": "94", - "measuredW": "222", - "measuredH": "274", - "w": "222", - "h": "274", - "x": "951", - "y": "577", - "properties": { - "controlName": "104-rxjs-basics:operators" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "222", - "h": "274", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "83", - "measuredH": "26", - "x": "59", - "y": "13", - "properties": { - "text": "Operators", - "size": "18" - } - } - ] - } - } - }, - { - "ID": "3063", - "typeID": "__group__", - "zOrder": "95", - "measuredW": "196", - "measuredH": "50", - "w": "196", - "h": "50", - "x": "965", - "y": "626", - "properties": { - "controlName": "100-rxjs-basics:operators:filtering" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "196", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "63", - "measuredH": "25", - "x": "70", - "y": "12", - "properties": { - "text": "Filtering", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3064", - "typeID": "__group__", - "zOrder": "96", - "measuredW": "195", - "measuredH": "50", - "w": "195", - "h": "50", - "x": "965", - "y": "680", - "properties": { - "controlName": "101-rxjs-basics:operators:rate-limiting" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "195", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "102", - "measuredH": "25", - "x": "51", - "y": "12", - "properties": { - "text": "Rate Limiting", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3065", - "typeID": "__group__", - "zOrder": "97", - "measuredW": "197", - "measuredH": "50", - "w": "197", - "h": "50", - "x": "964", - "y": "736", - "properties": { - "controlName": "102-rxjs-basics:operators:transformation" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "197", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "116", - "measuredH": "25", - "x": "45", - "y": "12", - "properties": { - "text": "Transformation", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3066", - "typeID": "__group__", - "zOrder": "98", - "measuredW": "197", - "measuredH": "50", - "w": "197", - "h": "50", - "x": "964", - "y": "791", - "properties": { - "controlName": "103-rxjs-basics:operators:combination" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "197", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "98", - "measuredH": "25", - "x": "54", - "y": "12", - "properties": { - "text": "Combination", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "3067", - "typeID": "__group__", - "zOrder": "99", - "measuredW": "236", - "measuredH": "50", - "w": "236", - "h": "50", - "x": "925", - "y": "1064", - "properties": { - "controlName": "101-angular-basics:angular-components" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "236", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "99", - "measuredH": "25", - "x": "68", - "y": "12", - "properties": { - "size": "17", - "text": "Components" - } - } - ] - } - } - }, - { - "ID": "3068", - "typeID": "__group__", - "zOrder": "100", - "measuredW": "236", - "measuredH": "50", - "w": "236", - "h": "50", - "x": "925", - "y": "1118", - "properties": { - "controlName": "102-angular-basics:angular-templates" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "236", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "80", - "measuredH": "25", - "x": "78", - "y": "12", - "properties": { - "size": "17", - "text": "Templates" - } - } - ] - } - } - }, - { - "ID": "3069", - "typeID": "__group__", - "zOrder": "101", - "measuredW": "236", - "measuredH": "50", - "w": "236", - "h": "50", - "x": "925", - "y": "1173", - "properties": { - "controlName": "103-angular-basics:angular-modules" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "236", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "66", - "measuredH": "25", - "x": "85", - "y": "12", - "properties": { - "size": "17", - "text": "Modules" - } - } - ] - } - } - }, - { - "ID": "3070", - "typeID": "__group__", - "zOrder": "102", - "measuredW": "324", - "measuredH": "50", - "w": "324", - "h": "50", - "x": "231", - "y": "1160", - "properties": { - "controlName": "102-templates:template-statements" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "324", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "163", - "measuredH": "25", - "x": "80", - "y": "12", - "properties": { - "size": "17", - "text": "Template Statements" - } - } - ] - } - } - }, - { - "ID": "3071", - "typeID": "__group__", - "zOrder": "103", - "measuredW": "324", - "measuredH": "50", - "w": "324", - "h": "50", - "x": "231", - "y": "1216", - "properties": { - "controlName": "103-templates:binding-data-props-attrs-events" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "324", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "267", - "measuredH": "25", - "x": "19", - "y": "12", - "properties": { - "size": "17", - "text": "Binding (Data, Props, Attrs, Events)" - } - } - ] - } - } - }, - { - "ID": "3072", - "typeID": "__group__", - "zOrder": "104", - "measuredW": "154", - "measuredH": "50", - "w": "154", - "h": "50", - "x": "231", - "y": "1271", - "properties": { - "controlName": "104-templates:reference-vars" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "154", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "119", - "measuredH": "25", - "x": "17", - "y": "12", - "properties": { - "size": "17", - "text": "Reference Vars" - } - } - ] - } - } - }, - { - "ID": "3073", - "typeID": "__group__", - "zOrder": "105", - "measuredW": "164", - "measuredH": "50", - "w": "164", - "h": "50", - "x": "391", - "y": "1271", - "properties": { - "controlName": "105-templates:input-output" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "164", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "131", - "measuredH": "25", - "x": "18", - "y": "12", - "properties": { - "size": "17", - "text": "@Input, @Output" - } - } - ] - } - } - }, - { - "ID": "3074", - "typeID": "__group__", - "zOrder": "106", - "measuredW": "236", - "measuredH": "50", - "w": "236", - "h": "50", - "x": "925", - "y": "1228", - "properties": { - "controlName": "104-angular-basics:dependency-injection" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "236", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "168", - "measuredH": "25", - "x": "34", - "y": "12", - "properties": { - "size": "17", - "text": "Dependency Injection" - } - } - ] - } - } - }, - { - "ID": "3075", - "typeID": "__group__", - "zOrder": "107", - "measuredW": "236", - "measuredH": "50", - "w": "236", - "h": "50", - "x": "925", - "y": "1283", - "properties": { - "controlName": "105-angular-basics:services" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "236", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "67", - "measuredH": "25", - "x": "84", - "y": "12", - "properties": { - "size": "17", - "text": "Services" - } - } - ] - } - } - }, - { - "ID": "3076", - "typeID": "__group__", - "zOrder": "108", - "measuredW": "236", - "measuredH": "50", - "w": "236", - "h": "50", - "x": "925", - "y": "1339", - "properties": { - "controlName": "106-angular-basics:routing" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "236", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "60", - "measuredH": "25", - "x": "88", - "y": "12", - "properties": { - "size": "17", - "text": "Routing" - } - } - ] - } - } - }, - { - "ID": "3077", - "typeID": "__group__", - "zOrder": "109", - "measuredW": "186", - "measuredH": "50", - "w": "186", - "h": "50", - "x": "499", - "y": "1458", - "properties": { - "controlName": "105-rendering-topics" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "186", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "135", - "measuredH": "25", - "x": "25", - "y": "12", - "properties": { - "size": "17", - "text": "Rendering Topics" - } - } - ] - } - } - }, - { - "ID": "3078", - "typeID": "__group__", - "zOrder": "110", - "measuredW": "178", - "measuredH": "50", - "w": "178", - "h": "50", - "x": "231", - "y": "1354", - "properties": { - "controlName": "100-rendering-topics:builtin-directives" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "178", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "135", - "measuredH": "25", - "x": "21", - "y": "12", - "properties": { - "size": "17", - "text": "Built-in Directives" - } - } - ] - } - } - }, - { - "ID": "3079", - "typeID": "__group__", - "zOrder": "111", - "measuredW": "178", - "measuredH": "50", - "w": "178", - "h": "50", - "x": "231", - "y": "1409", - "properties": { - "controlName": "101-rendering-topics:builtin-pipes" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "178", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "102", - "measuredH": "25", - "x": "38", - "y": "12", - "properties": { - "size": "17", - "text": "Built-in Pipes" - } - } - ] - } - } - }, - { - "ID": "3080", - "typeID": "__group__", - "zOrder": "112", - "measuredW": "178", - "measuredH": "50", - "w": "178", - "h": "50", - "x": "231", - "y": "1463", - "properties": { - "controlName": "102-rendering-topics:change-detection" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "178", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "141", - "measuredH": "25", - "x": "18", - "y": "12", - "properties": { - "size": "17", - "text": "Change Detection" - } - } - ] - } - } - }, - { - "ID": "3081", - "typeID": "__group__", - "zOrder": "113", - "measuredW": "133", - "measuredH": "50", - "w": "133", - "h": "50", - "x": "755", - "y": "1458", - "properties": { - "controlName": "106-forms" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "133", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "48", - "measuredH": "25", - "x": "43", - "y": "12", - "properties": { - "size": "17", - "text": "Forms" - } - } - ] - } - } - }, - { - "ID": "3082", - "typeID": "__group__", - "zOrder": "114", - "measuredW": "212", - "measuredH": "50", - "w": "212", - "h": "50", - "x": "961", - "y": "1424", - "properties": { - "controlName": "100-forms:reactive-forms" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "212", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "120", - "measuredH": "25", - "x": "46", - "y": "12", - "properties": { - "size": "17", - "text": "Reactive Forms" - } - } - ] - } - } - }, - { - "ID": "3083", - "typeID": "__group__", - "zOrder": "115", - "measuredW": "212", - "measuredH": "50", - "w": "212", - "h": "50", - "x": "961", - "y": "1479", - "properties": { - "controlName": "101-forms:template-driven-forms" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "212", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "177", - "measuredH": "25", - "x": "17", - "y": "12", - "properties": { - "size": "17", - "text": "Template-driven Forms" - } - } - ] - } - } - }, - { - "ID": "3084", - "typeID": "__group__", - "zOrder": "116", - "measuredW": "186", - "measuredH": "50", - "w": "186", - "h": "50", - "x": "499", - "y": "1654", - "properties": { - "controlName": "107-routing" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "186", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "60", - "measuredH": "25", - "x": "63", - "y": "12", - "properties": { - "size": "17", - "text": "Routing" - } - } - ] - } - } - }, - { - "ID": "3085", - "typeID": "__group__", - "zOrder": "117", - "measuredW": "178", - "measuredH": "50", - "w": "178", - "h": "50", - "x": "503", - "y": "1550", - "properties": { - "controlName": "100-routing:configuration" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "178", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "103", - "measuredH": "25", - "x": "37", - "y": "12", - "properties": { - "size": "17", - "text": "Configuration" - } - } - ] - } - } - }, - { - "ID": "3086", - "typeID": "__group__", - "zOrder": "118", - "measuredW": "178", - "measuredH": "50", - "w": "178", - "h": "50", - "x": "231", - "y": "1559", - "properties": { - "controlName": "101-routing:router-outlets" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "178", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "113", - "measuredH": "25", - "x": "32", - "y": "12", - "properties": { - "size": "17", - "text": "Router Outlets" - } - } - ] - } - } - }, - { - "ID": "3087", - "typeID": "__group__", - "zOrder": "119", - "measuredW": "178", - "measuredH": "50", - "w": "178", - "h": "50", - "x": "231", - "y": "1669", - "properties": { - "controlName": "103-routing:router-events" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "178", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "110", - "measuredH": "25", - "x": "34", - "y": "12", - "properties": { - "size": "17", - "text": "Router Events" - } - } - ] - } - } - }, - { - "ID": "3088", - "typeID": "__group__", - "zOrder": "120", - "measuredW": "178", - "measuredH": "50", - "w": "178", - "h": "50", - "x": "231", - "y": "1614", - "properties": { - "controlName": "102-routing:router-links" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "178", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "98", - "measuredH": "25", - "x": "40", - "y": "12", - "properties": { - "size": "17", - "text": "Router Links" - } - } - ] - } - } - }, - { - "ID": "3089", - "typeID": "__group__", - "zOrder": "121", - "measuredW": "285", - "measuredH": "50", - "w": "285", - "h": "50", - "x": "888", - "y": "1665", - "properties": { - "controlName": "108-services-remote-data" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "285", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "207", - "measuredH": "25", - "x": "39", - "y": "12", - "properties": { - "size": "17", - "text": "Services and Remote Data" - } - } - ] - } - } - }, - { - "ID": "3090", - "typeID": "__group__", - "zOrder": "122", - "measuredW": "178", - "measuredH": "50", - "w": "178", - "h": "50", - "x": "231", - "y": "1725", - "properties": { - "controlName": "104-routing:guards" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "178", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "56", - "measuredH": "25", - "x": "61", - "y": "12", - "properties": { - "size": "17", - "text": "Guards" - } - } - ] - } - } - }, - { - "ID": "3091", - "typeID": "__group__", - "zOrder": "123", - "measuredW": "285", - "measuredH": "50", - "w": "285", - "h": "50", - "x": "888", - "y": "1719", - "properties": { - "controlName": "109-lifecycle-hooks" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "285", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "121", - "measuredH": "25", - "x": "82", - "y": "12", - "properties": { - "size": "17", - "text": "Lifecycle Hooks" - } - } - ] - } - } - }, - { - "ID": "3092", - "typeID": "__group__", - "zOrder": "124", - "measuredW": "212", - "measuredH": "50", - "w": "212", - "h": "50", - "x": "961", - "y": "1570", - "properties": { - "controlName": "100-services-remote-data:dependency-injection" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "212", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "168", - "measuredH": "25", - "x": "22", - "y": "12", - "properties": { - "size": "17", - "text": "Dependency Injection" - } - } - ] - } - } - }, - { - "ID": "3093", - "typeID": "__group__", - "zOrder": "125", - "measuredW": "154", - "measuredH": "50", - "w": "154", - "h": "50", - "x": "503", - "y": "1757", - "properties": { - "controlName": "105-routing:lazy-loading" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "154", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "100", - "measuredH": "25", - "x": "27", - "y": "12", - "properties": { - "size": "17", - "text": "Lazy Loading" - } - } - ] - } - } - }, - { - "ID": "3094", - "typeID": "__group__", - "zOrder": "126", - "measuredW": "126", - "measuredH": "50", - "w": "126", - "h": "50", - "x": "550", - "y": "1858", - "properties": { - "controlName": "111-zones" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "126", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "49", - "measuredH": "25", - "x": "38", - "y": "12", - "properties": { - "size": "17", - "text": "Zones" - } - } - ] - } - } - }, - { - "ID": "3095", - "typeID": "__group__", - "zOrder": "127", - "measuredW": "286", - "measuredH": "50", - "w": "286", - "h": "50", - "x": "887", - "y": "1773", - "properties": { - "controlName": "110-state-management" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "286", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "148", - "measuredH": "25", - "x": "69", - "y": "12", - "properties": { - "size": "17", - "text": "State Management" - } - } - ] - } - } - }, - { - "ID": "3096", - "typeID": "__group__", - "zOrder": "128", - "measuredW": "227", - "measuredH": "50", - "w": "227", - "h": "50", - "x": "231", - "y": "1857", - "properties": { - "controlName": "112-creating-a-custom-x" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "227", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "177", - "measuredH": "25", - "x": "23", - "y": "12", - "properties": { - "size": "17", - "text": "Creating a custom ___" - } - } - ] - } - } - }, - { - "ID": "3097", - "typeID": "__group__", - "zOrder": "129", - "measuredW": "121", - "measuredH": "50", - "w": "121", - "h": "50", - "x": "231", - "y": "1939", - "properties": { - "controlName": "100-creating-a-custom-x:directive" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "121", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "68", - "measuredH": "25", - "x": "27", - "y": "12", - "properties": { - "size": "17", - "text": "Directive" - } - } - ] - } - } - }, - { - "ID": "3098", - "typeID": "__group__", - "zOrder": "130", - "measuredW": "100", - "measuredH": "50", - "w": "100", - "h": "50", - "x": "358", - "y": "1939", - "properties": { - "controlName": "101-creating-a-custom-x:pipe" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "35", - "measuredH": "25", - "x": "32", - "y": "12", - "properties": { - "size": "17", - "text": "Pipe" - } - } - ] - } - } - }, - { - "ID": "3099", - "typeID": "__group__", - "zOrder": "131", - "measuredW": "227", - "measuredH": "50", - "w": "227", - "h": "50", - "x": "231", - "y": "1993", - "properties": { - "controlName": "102-creating-a-custom-x:library" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "227", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "53", - "measuredH": "25", - "x": "87", - "y": "12", - "properties": { - "size": "17", - "text": "Library" - } - } - ] - } - } - }, - { - "ID": "3100", - "typeID": "__group__", - "zOrder": "132", - "measuredW": "272", - "measuredH": "50", - "w": "272", - "h": "50", - "x": "598", - "y": "2215", - "properties": { - "controlName": "115-testing-angular-apps" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "272", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "162", - "measuredH": "25", - "x": "55", - "y": "12", - "properties": { - "size": "17", - "text": "Testing Angular Apps" - } - } - ] - } - } - }, - { - "ID": "3101", - "typeID": "__group__", - "zOrder": "133", - "measuredW": "255", - "measuredH": "50", - "w": "255", - "h": "50", - "x": "232", - "y": "2248", - "properties": { - "controlName": "102-testing-angular-apps:testing-component-bindings" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "255", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "162", - "measuredH": "25", - "x": "47", - "y": "12", - "properties": { - "size": "17", - "text": "Component Bindings" - } - } - ] - } - } - }, - { - "ID": "3102", - "typeID": "__group__", - "zOrder": "134", - "measuredW": "255", - "measuredH": "50", - "w": "255", - "h": "50", - "x": "232", - "y": "2303", - "properties": { - "controlName": "103-testing-angular-apps:testing-directives" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "255", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "137", - "measuredH": "25", - "x": "59", - "y": "12", - "properties": { - "size": "17", - "text": "Testing Directives" - } - } - ] - } - } - }, - { - "ID": "3103", - "typeID": "__group__", - "zOrder": "135", - "measuredW": "255", - "measuredH": "50", - "w": "255", - "h": "50", - "x": "232", - "y": "2358", - "properties": { - "controlName": "104-testing-angular-apps:testing-component-templates" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "255", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "174", - "measuredH": "25", - "x": "41", - "y": "12", - "properties": { - "size": "17", - "text": "Component Templates" - } - } - ] - } - } - }, - { - "ID": "3104", - "typeID": "__group__", - "zOrder": "136", - "measuredW": "271", - "measuredH": "50", - "w": "271", - "h": "50", - "x": "699", - "y": "2010", - "properties": { - "controlName": "114-angular-ssg" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "271", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "219", - "measuredH": "25", - "x": "30", - "y": "12", - "properties": { - "size": "17", - "text": "Static Site Generation (SSG)" - } - } - ] - } - } - }, - { - "ID": "3105", - "typeID": "__group__", - "zOrder": "137", - "measuredW": "272", - "measuredH": "50", - "w": "272", - "h": "50", - "x": "698", - "y": "1954", - "properties": { - "controlName": "113-angular-ssr" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "272", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "225", - "measuredH": "25", - "x": "23", - "y": "12", - "properties": { - "size": "17", - "text": "Server Side Rendering (SSR)" - } - } - ] - } - } - }, - { - "ID": "3106", - "typeID": "__group__", - "zOrder": "138", - "measuredW": "197", - "measuredH": "50", - "w": "197", - "h": "50", - "x": "1030", - "y": "1954", - "properties": { - "controlName": "100-angular-ssr:angular-universal" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "197", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "135", - "measuredH": "25", - "x": "36", - "y": "12", - "properties": { - "size": "17", - "text": "Angular Universal" - } - } - ] - } - } - }, - { - "ID": "3107", - "typeID": "__group__", - "zOrder": "139", - "measuredW": "197", - "measuredH": "50", - "w": "197", - "h": "50", - "x": "1030", - "y": "2010", - "properties": { - "controlName": "100-angular-ssg:scully" + "nodes": [ + { + "width": 282, + "height": 383, + "id": "VBjI-LQstODfimbRlHUFi", + "type": "section", + "position": { + "x": -522.2433266387567, + "y": 49.22685449741584 + }, + "selected": false, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + }, + "oldId": "TQT-lYCy59KN2BjwM_O8n" + }, + "zIndex": -999, + "style": { + "width": 282, + "height": 383 + }, + "positionAbsolute": { + "x": -522.2433266387567, + "y": 49.22685449741584 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "wKEXcCpW_ydTDPzv_rS_w", + "type": "horizontal", + "position": { + "x": -146.2816601458129, + "y": 3187.43042937083 + }, + "selected": false, + "data": { + "label": "horizontal node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75 + } + }, + "zIndex": 999, + "width": 395, + "height": 20, + "style": { + "width": 395, + "height": 20 + }, + "positionAbsolute": { + "x": -146.2816601458129, + "y": 3187.43042937083 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "FxFHWAkagS47Uce6_6T7d", + "type": "vertical", + "position": { + "x": 152.7183398541871, + "y": 2786.43042937083 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "nSq41MgDYtxGQXsWloS9I" + }, + "zIndex": 999, + "width": 20, + "height": 138, + "style": { + "width": 20, + "height": 138 + }, + "positionAbsolute": { + "x": 152.7183398541871, + "y": 2786.43042937083 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "nSq41MgDYtxGQXsWloS9I", + "type": "vertical", + "position": { + "x": 386.04484613528683, + "y": 2359.93042937083 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "a4cd_ND3vOLdmLuguKtBt" + }, + "zIndex": 999, + "width": 20, + "height": 95, + "style": { + "width": 20, + "height": 95 + }, + "positionAbsolute": { + "x": 386.04484613528683, + "y": 2359.93042937083 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "a4cd_ND3vOLdmLuguKtBt", + "type": "vertical", + "position": { + "x": 237.54484613528683, + "y": 2157.93042937083 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "GYH0wo-CeNtqVSGM7i3oS" + }, + "zIndex": 999, + "width": 20, + "height": 1040, + "style": { + "width": 20, + "height": 1040 + }, + "positionAbsolute": { + "x": 237.54484613528683, + "y": 2157.93042937083 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "GYH0wo-CeNtqVSGM7i3oS", + "type": "vertical", + "position": { + "x": -5.45968546864998, + "y": 2132.43042937083 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "nyJvnCmX-pC35SbkRPXko" + }, + "zIndex": 999, + "width": 20, + "height": 124, + "style": { + "width": 20, + "height": 124 + }, + "positionAbsolute": { + "x": -5.45968546864998, + "y": 2132.43042937083 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "rikJUpXHGXAEC74Szwj7s", + "type": "section", + "position": { + "x": -68.13327447982533, + "y": 2260.93042937083 + }, + "width": 277, + "height": 249, + "style": { + "width": 277, + "height": 249 + }, + "selected": false, + "data": { + "style": { + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "positionAbsolute": { + "x": -68.13327447982533, + "y": 2260.93042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "ol_HobKV3LkBYvgVYWoGB", + "type": "section", + "position": { + "x": -301.13327447982533, + "y": 2260.93042937083 + }, + "width": 237, + "height": 196, + "style": { + "width": 237, + "height": 195.5 + }, + "selected": false, + "data": { + "style": { + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "positionAbsolute": { + "x": -301.13327447982533, + "y": 2260.93042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "nyJvnCmX-pC35SbkRPXko", + "type": "vertical", + "position": { + "x": -346.3084777160734, + "y": 1890.43042937083 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "762b06M2GaxTGG_SXG-6g" + }, + "zIndex": 999, + "width": 20, + "height": 83, + "style": { + "width": 20, + "height": 83 + }, + "positionAbsolute": { + "x": -346.3084777160734, + "y": 1890.43042937083 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "dnM44vvHZW3dSpsVi546w", + "type": "section", + "position": { + "x": -301.63327447982533, + "y": 2072.43042937083 + }, + "width": 204, + "height": 143, + "style": { + "width": 204, + "height": 142.5 + }, + "selected": false, + "data": {}, + "positionAbsolute": { + "x": -301.63327447982533, + "y": 2072.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "1OFkZp8kqo_f_pTrDqNoe", + "type": "section", + "position": { + "x": -519.1332744798253, + "y": 1963.93042937083 + }, + "width": 209, + "height": 408, + "style": { + "width": 209, + "height": 407.5 + }, + "selected": false, + "data": {}, + "positionAbsolute": { + "x": -519.1332744798253, + "y": 1963.93042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "wPj4IMCob1P-xw4HiARuO", + "type": "vertical", + "position": { + "x": -346.3084777160734, + "y": 1668.2304293708294 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "762b06M2GaxTGG_SXG-6g" + }, + "zIndex": 999, + "width": 20, + "height": 186, + "style": { + "width": 20, + "height": 186 + }, + "positionAbsolute": { + "x": -346.3084777160734, + "y": 1668.2304293708294 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "762b06M2GaxTGG_SXG-6g", + "type": "vertical", + "position": { + "x": -348.5993272119424, + "y": 1587.93042937083 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "rBi1Oj1pqcnIy5yMMxLyw" + }, + "zIndex": 999, + "width": 20, + "height": 83, + "style": { + "width": 20, + "height": 83 + }, + "positionAbsolute": { + "x": -348.5993272119424, + "y": 1587.93042937083 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "FG7ABEX-nhrwCDpoKwdcm", + "type": "vertical", + "position": { + "x": 20.86672552017467, + "y": 1668.2304293708294 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "3JUwGWiqWXqAZj8Lw8Gbm" + }, + "zIndex": 999, + "width": 20, + "height": 96, + "style": { + "width": 20, + "height": 96 + }, + "positionAbsolute": { + "x": 20.86672552017467, + "y": 1668.2304293708294 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "3JUwGWiqWXqAZj8Lw8Gbm", + "type": "vertical", + "position": { + "x": -54.743326638756685, + "y": 1668.2304293708294 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "rBi1Oj1pqcnIy5yMMxLyw" + }, + "zIndex": 999, + "width": 20, + "height": 96, + "style": { + "width": 20, + "height": 96 + }, + "positionAbsolute": { + "x": -54.743326638756685, + "y": 1668.2304293708294 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "rBi1Oj1pqcnIy5yMMxLyw", + "type": "vertical", + "position": { + "x": -123.95968546864992, + "y": 1668.2304293708294 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "rWLm26RwXHFpQhglgrfuV" + }, + "zIndex": 999, + "width": 20, + "height": 96, + "style": { + "width": 20, + "height": 96 + }, + "positionAbsolute": { + "x": -123.95968546864992, + "y": 1668.2304293708294 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "rWLm26RwXHFpQhglgrfuV", + "type": "vertical", + "position": { + "x": 193.04484613528683, + "y": 1668.2304293708294 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 96, + "style": { + "width": 20, + "height": 96 + }, + "positionAbsolute": { + "x": 193.04484613528683, + "y": 1668.2304293708294 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "vcAUSj5KcbBngENQMoClO", + "type": "vertical", + "position": { + "x": 193.04484613528683, + "y": 1466.2304293708294 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.5 + } + }, + "zIndex": 999, + "width": 20, + "height": 202, + "style": { + "width": 20, + "height": 202 + }, + "positionAbsolute": { + "x": 193.04484613528683, + "y": 1466.2304293708294 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "Ew6DgOvx6gtifE9v4YPkP", + "type": "section", + "position": { + "x": 324.86672552017467, + "y": 1719.43042937083 + }, + "width": 210, + "height": 249, + "style": { + "width": 210, + "height": 249 + }, + "selected": false, + "data": { + "style": { + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "positionAbsolute": { + "x": 324.86672552017467, + "y": 1719.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "mXjsmjZhHgpTL8oeDQext", + "type": "vertical", + "position": { + "x": -366.3084777160734, + "y": 1278.2304293708294 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "kW2pkUmw72aKIjGbizdmG" + }, + "zIndex": 999, + "width": 20, + "height": 188, + "style": { + "width": 20, + "height": 188 + }, + "positionAbsolute": { + "x": -366.3084777160734, + "y": 1278.2304293708294 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "kW2pkUmw72aKIjGbizdmG", + "type": "vertical", + "position": { + "x": 352.54484613528683, + "y": 1097.2304293708296 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "DNz-gFjc4Ow3TL_EY_NAH" + }, + "zIndex": 999, + "width": 20, + "height": 188, + "style": { + "width": 20, + "height": 188 + }, + "positionAbsolute": { + "x": 352.54484613528683, + "y": 1097.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "DNz-gFjc4Ow3TL_EY_NAH", + "type": "vertical", + "position": { + "x": 351.3414717224867, + "y": 817.2304293708296 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 92, + "style": { + "width": 20, + "height": 92 + }, + "positionAbsolute": { + "x": 351.3414717224867, + "y": 817.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "gbSGghXE--4z479PIE57p", + "type": "vertical", + "position": { + "x": 421.25667336124326, + "y": 454.7304293708296 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 62, + "style": { + "width": 20, + "height": 62 + }, + "positionAbsolute": { + "x": 421.25667336124326, + "y": 454.7304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "xVapQFT9sTIPdeCXYD_lw", + "type": "horizontal", + "position": { + "x": -145.63327447982533, + "y": 753.7304293708296 + }, + "selected": false, + "data": { + "label": "horizontal node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "YlxsmpEKCKm2_jXHT5fux" + }, + "zIndex": 999, + "width": 52, + "height": 20, + "style": { + "width": 52, + "height": 20 + }, + "positionAbsolute": { + "x": -145.63327447982533, + "y": 753.7304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "YlxsmpEKCKm2_jXHT5fux", + "type": "horizontal", + "position": { + "x": 129.04484613528683, + "y": 618.7304293708296 + }, + "selected": false, + "data": { + "label": "horizontal node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "N3xAkfwQ-q0f_JEjKDQcO" + }, + "zIndex": 999, + "width": 257, + "height": 20, + "style": { + "width": 257, + "height": 20 + }, + "positionAbsolute": { + "x": 129.04484613528683, + "y": 618.7304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "CshWtCCFHbYXtztr-2iU1", + "type": "section", + "position": { + "x": -340.63327447982533, + "y": 765.2304293708296 + }, + "width": 203, + "height": 296, + "style": { + "width": 203, + "height": 296 + }, + "selected": false, + "data": { + "style": { + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "positionAbsolute": { + "x": -340.63327447982533, + "y": 765.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "FTLS0mwJhuqsEHen7mqbk", + "type": "section", + "position": { + "x": -522.2433266387567, + "y": 763.7304293708296 + }, + "width": 184, + "height": 298, + "style": { + "width": 184, + "height": 298 + }, + "selected": false, + "data": { + "style": { + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "positionAbsolute": { + "x": -522.2433266387567, + "y": 763.7304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "t6zZwKzPHXT57Uqj4R2aI", + "type": "section", + "position": { + "x": -99.73327447982547, + "y": 596.7304293708296 + }, + "width": 225, + "height": 302, + "style": { + "width": 225, + "height": 302 + }, + "selected": false, + "data": {}, + "positionAbsolute": { + "x": -99.73327447982547, + "y": 596.7304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "N3xAkfwQ-q0f_JEjKDQcO", + "type": "horizontal", + "position": { + "x": -238.74332663875668, + "y": 355.7304293708296 + }, + "selected": false, + "data": { + "label": "horizontal node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 184, + "height": 20, + "style": { + "width": 184, + "height": 20 + }, + "positionAbsolute": { + "x": -238.74332663875668, + "y": 355.7304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "HLnq8xMeb0NwnkVUtcFMj", + "type": "section", + "position": { + "x": -521.7433266387567, + "y": 480.2304293708296 + }, + "selected": false, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "zIndex": -999, + "width": 283, + "height": 124, + "style": { + "width": 283, + "height": 124 + }, + "positionAbsolute": { + "x": -521.7433266387567, + "y": 480.2304293708296 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "width": 137, + "height": 68, + "id": "iogwMmOvub2ZF4zgg6WyF", + "type": "title", + "position": { + "x": -61.45968546864998, + "y": -160.28400721142515 + }, + "selected": false, + "data": { + "label": "Angular", + "style": { + "fontSize": 28, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "9nxw2PEl-_eQPW0FHNPq2" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -61.45968546864998, + "y": -160.28400721142515 + }, + "focusable": true, + "selectable": true + }, + { + "width": 20, + "height": 76, + "id": "LEijbLyxg4RyutKEM2Y5g", + "type": "vertical", + "position": { + "x": -2.9596854686499796, + "y": -230.76957062917046 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#0A33FF" + }, + "oldId": "xD07fJ1NmNeAarVCEfubU" + }, + "zIndex": 999, + "positionAbsolute": { + "x": -2.9596854686499796, + "y": -230.76957062917046 + }, + "dragging": false, + "focusable": true, + "style": { + "width": 20, + "height": 76 + }, + "resizing": false, + "selectable": true + }, + { + "id": "yHmHXymPNWwu8p1vvqD3o", + "type": "paragraph", + "position": { + "x": 179.8414717224867, + "y": -232.76957062917046 + }, + "selected": false, + "data": { + "label": "Find the detailed version of this roadmap along with other similar roadmaps", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "left", + "borderColor": "#000000", + "backgroundColor": "#FFFFFf" + } + }, + "zIndex": 999, + "width": 363, + "height": 143, + "positionAbsolute": { + "x": 179.8414717224867, + "y": -232.76957062917046 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 363, + "height": 143 + }, + "resizing": false + }, + { + "id": "R_Fs6rdl2XtQ9aLOubMqL", + "type": "button", + "position": { + "x": 193.04484613528683, + "y": -150.78400721142515 + }, + "selected": false, + "data": { + "label": "roadmap.sh", + "href": "https://roadmap.sh", + "color": "#ffffff", + "backgroundColor": "#4136D6", + "style": { + "fontSize": 17 + }, + "oldId": "2zqZkyVgigifcRS1H7F_b" + }, + "zIndex": 999, + "width": 339, + "height": 49, + "dragging": false, + "style": { + "width": 339, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": 193.04484613528683, + "y": -150.78400721142515 + }, + "selectable": true, + "focusable": true + }, + { + "id": "xwpc_KxehAruFM0pCQnie", + "type": "vertical", + "position": { + "x": -247.16916540260297, + "y": 3405.6464601414127 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#4136D4" + }, + "oldId": "Ju00mr0KLGN2BV6yEQGPt" + }, + "zIndex": 999, + "width": 20, + "height": 104, + "positionAbsolute": { + "x": -247.16916540260297, + "y": 3405.6464601414127 + }, + "dragging": false, + "style": { + "width": 20, + "height": 104 + }, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "width": 562, + "height": 119, + "id": "GV_zWF6rSWg5bqgiXhOEf", + "type": "paragraph", + "position": { + "x": -518.169165402603, + "y": 3315.130494860985 + }, + "selected": false, + "data": { + "label": "Have a look at the following related roadmaps", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "borderColor": "#000000", + "backgroundColor": "#ffffff" + }, + "oldId": "sVXZrBCsiSzWBBYWTm-nQ" + }, + "zIndex": 999, + "positionAbsolute": { + "x": -518.169165402603, + "y": 3315.130494860985 + }, + "dragging": false, + "style": { + "width": 562, + "height": 119 + }, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "width": 126, + "height": 49, + "id": "ZSrQoNGKiR484uALMWO9F", + "type": "button", + "position": { + "x": -199.49114007976596, + "y": 3373.8197767726365 + }, + "selected": false, + "data": { + "label": "TypeScript", + "href": "https://roadmap.sh/typescript", + "color": "#FFFFFf", + "backgroundColor": "#4136D4", + "style": { + "fontSize": 17 + }, + "borderColor": "#4136D4", + "oldId": "dlGf3ZdFXYx0Z6Viu2x-l" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -199.49114007976596, + "y": 3373.8197767726365 + }, + "style": {}, + "focusable": true, + "resizing": false, + "selectable": true + }, + { + "width": 115, + "height": 49, + "id": "P5IZjP0g1_fnvHy3YTR4q", + "type": "button", + "position": { + "x": -506.49114007976596, + "y": 3373.8197767726365 + }, + "selected": false, + "data": { + "label": "Frontend", + "href": "https://roadm.sh/frontend", + "color": "#FFFFFf", + "backgroundColor": "#4136D4", + "style": { + "fontSize": 17 + }, + "borderColor": "#4136D4", + "oldId": "dlGf3ZdFXYx0Z6Viu2x-l" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -506.49114007976596, + "y": 3373.8197767726365 + }, + "style": {}, + "focusable": true, + "resizing": false, + "selectable": true + }, + { + "width": 91, + "height": 49, + "id": "U0fJo2a3vnaodNJhfZ78I", + "type": "button", + "position": { + "x": -387.49114007976596, + "y": 3373.8197767726365 + }, + "selected": false, + "data": { + "label": "React", + "href": "https://roadm.sh/react", + "color": "#FFFFFf", + "backgroundColor": "#4136D4", + "style": { + "fontSize": 17 + }, + "borderColor": "#4136D4", + "oldId": "P5IZjP0g1_fnvHy3YTR4q" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -387.49114007976596, + "y": 3373.8197767726365 + }, + "style": {}, + "focusable": true, + "resizing": false, + "selectable": true + }, + { + "width": 102, + "height": 49, + "id": "iuSv7V59YxUZawN38Qlli", + "type": "button", + "position": { + "x": -69.49114007976596, + "y": 3373.8197767726365 + }, + "selected": false, + "data": { + "label": "Node.js", + "href": "https://roadmap.sh/nodejs", + "color": "#FFFFFf", + "backgroundColor": "#4136D4", + "style": { + "fontSize": 17 + }, + "borderColor": "#4136D4", + "oldId": "ZSrQoNGKiR484uALMWO9F" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -69.49114007976596, + "y": 3373.8197767726365 + }, + "style": {}, + "focusable": true, + "resizing": false, + "selectable": true + }, + { + "id": "DAwKHBng7Tytlcd2_8GOR", + "type": "button", + "position": { + "x": -112.95968546864998, + "y": -32.78400721142515 + }, + "selected": false, + "data": { + "label": "JavaScript Roadmap", + "href": "https://roadmap.sh/javascript", + "color": "#ffffff", + "backgroundColor": "#4136D6", + "style": { + "fontSize": 17 + }, + "oldId": "R_Fs6rdl2XtQ9aLOubMqL" + }, + "zIndex": 999, + "width": 240, + "height": 49, + "dragging": false, + "style": { + "width": 240, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": -112.95968546864998, + "y": -32.78400721142515 + }, + "selectable": true, + "focusable": true + }, + { + "id": "KDd40JOAvZ8O1mfhTYB3K", + "type": "topic", + "position": { + "x": -112.95968546864998, + "y": 67.7304293708296 + }, + "selected": false, + "data": { + "label": "Introduction to Angular", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 240, + "height": 49, + "style": { + "width": 240, + "height": 49 + }, + "positionAbsolute": { + "x": -112.95968546864998, + "y": 67.7304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "DE3cMpeRYuUPw2ADtfS-3", + "type": "subtopic", + "position": { + "x": 271.2566733612433, + "y": 67.21599278857485 + }, + "selected": false, + "data": { + "label": "Angular Architecture", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 266, + "height": 49, + "style": { + "width": 266, + "height": 49 + }, + "positionAbsolute": { + "x": 271.2566733612433, + "y": 67.21599278857485 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "EbFRcy4s6yzzIApBqU77Y", + "type": "subtopic", + "position": { + "x": 271.2566733612433, + "y": 120.21599278857485 + }, + "selected": false, + "data": { + "label": "Setting up a New Project", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 266, + "height": 49, + "style": { + "width": 266, + "height": 49 + }, + "positionAbsolute": { + "x": 271.2566733612433, + "y": 120.21599278857485 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "hpShWwL0M57ZAzqkB4I8t", + "type": "subtopic", + "position": { + "x": 271.2566733612433, + "y": 14.215992788574852 + }, + "selected": false, + "data": { + "label": "Angular and History", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "DE3cMpeRYuUPw2ADtfS-3" + }, + "zIndex": 999, + "width": 266, + "height": 49, + "style": { + "width": 266, + "height": 49 + }, + "positionAbsolute": { + "x": 271.2566733612433, + "y": 14.215992788574852 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "zv1y-I1fIEXtTkb8tOQU0", + "type": "button", + "position": { + "x": -112.95968546864998, + "y": 198.21599278857485 + }, + "selected": false, + "data": { + "label": "Learn TypeScript Basics", + "href": "https://roadmap.sh/typescript", + "color": "#ffffff", + "backgroundColor": "#4136D6", + "style": { + "fontSize": 17 + }, + "oldId": "DAwKHBng7Tytlcd2_8GOR" + }, + "zIndex": 999, + "width": 240, + "height": 49, + "dragging": false, + "style": { + "width": 240, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": -112.95968546864998, + "y": 198.21599278857485 + }, + "selectable": true, + "focusable": true + }, + { + "id": "kGnKzCkQCNFEdgCBRtNuW", + "type": "topic", + "position": { + "x": -112.95968546864998, + "y": 341.2304293708296 + }, + "selected": false, + "data": { + "label": "Components", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 240, + "height": 49, + "style": { + "width": 240, + "height": 49 + }, + "positionAbsolute": { + "x": -112.95968546864998, + "y": 341.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "Mp056kNnwsRWeEXuhGPy-", + "type": "subtopic", + "position": { + "x": -521.2433266387567, + "y": -60.284007211425205 + }, + "selected": false, + "data": { + "label": "Component Anatomy", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 281, + "height": 49, + "style": { + "width": 281, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -521.2433266387567, + "y": -60.284007211425205 + }, + "selectable": true, + "focusable": true + }, + { + "id": "dOMvz__EQjO-3p-Nzm-7P", + "type": "subtopic", + "position": { + "x": -379.3084777160734, + "y": 213.47156717238613 + }, + "selected": false, + "data": { + "label": "Provider", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 131, + "height": 49, + "positionAbsolute": { + "x": -379.3084777160734, + "y": 213.47156717238613 + }, + "dragging": false, + "style": { + "width": 131 + }, + "selectable": true, + "focusable": true + }, + { + "id": "uYHy2yhtTm6fQkKpYx3lU", + "type": "subtopic", + "position": { + "x": -514.5993272119424, + "y": 374.9715671723861 + }, + "selected": false, + "data": { + "label": "changeDetection", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "A5hlIbsEqnos4BLSDHKoH" + }, + "zIndex": 999, + "width": 267, + "height": 49, + "positionAbsolute": { + "x": -514.5993272119424, + "y": 374.9715671723861 + }, + "dragging": false, + "style": { + "width": 267, + "height": 49 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "-gUpm3OLUJl9iAyx6fmHN", + "type": "subtopic", + "position": { + "x": -379.3084777160734, + "y": 108.47156717238613 + }, + "selected": false, + "data": { + "label": "Template", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "uYHy2yhtTm6fQkKpYx3lU" + }, + "zIndex": 999, + "width": 131, + "height": 49, + "positionAbsolute": { + "x": -379.3084777160734, + "y": 108.47156717238613 + }, + "dragging": false, + "style": { + "width": 131 + }, + "selectable": true, + "focusable": true + }, + { + "id": "RcNHEh6kmbBK1PICbhAwr", + "type": "subtopic", + "position": { + "x": -379.3084777160734, + "y": 160.97156717238613 + }, + "selected": false, + "data": { + "label": "Standalone", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "-gUpm3OLUJl9iAyx6fmHN" + }, + "zIndex": 999, + "width": 131, + "height": 49, + "positionAbsolute": { + "x": -379.3084777160734, + "y": 160.97156717238613 + }, + "dragging": false, + "style": { + "width": 131 + }, + "selectable": true, + "focusable": true + }, + { + "id": "doHDoAgp7T59KGSXPpQzZ", + "type": "subtopic", + "position": { + "x": -514.5993272119424, + "y": 265.9715671723861 + }, + "selected": false, + "data": { + "label": "viewProvider", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "dOMvz__EQjO-3p-Nzm-7P" + }, + "zIndex": 999, + "width": 267, + "height": 52, + "positionAbsolute": { + "x": -514.5993272119424, + "y": 265.9715671723861 + }, + "dragging": false, + "style": { + "width": 267, + "height": 52 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "ctigvSYeFa77y3v7m11gk", + "type": "subtopic", + "position": { + "x": -513.5993272119424, + "y": 321.4715671723861 + }, + "selected": false, + "data": { + "label": "Encapsulation", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "uYHy2yhtTm6fQkKpYx3lU" + }, + "zIndex": 999, + "width": 266, + "height": 50, + "positionAbsolute": { + "x": -513.5993272119424, + "y": 321.4715671723861 + }, + "dragging": false, + "style": { + "width": 266, + "height": 50 + }, + "selectable": true, + "focusable": true, + "resizing": true + }, + { + "id": "cDN0PGo-zkcLmttxCiAI-", + "type": "subtopic", + "position": { + "x": -514.5993272119424, + "y": 108.47156717238613 + }, + "selected": false, + "data": { + "label": "Selector", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "gk9iXF7bHhf_HCpSLdY42" + }, + "zIndex": 999, + "width": 131, + "height": 49, + "positionAbsolute": { + "x": -514.5993272119424, + "y": 108.47156717238613 + }, + "dragging": false, + "style": { + "width": 131 + }, + "selectable": true, + "focusable": true + }, + { + "id": "4XJKEmSrQfPxggHlAP30w", + "type": "subtopic", + "position": { + "x": -514.5993272119424, + "y": 160.97156717238613 + }, + "selected": false, + "data": { + "label": "Styles", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "-gUpm3OLUJl9iAyx6fmHN" + }, + "zIndex": 999, + "width": 131, + "height": 49, + "positionAbsolute": { + "x": -514.5993272119424, + "y": 160.97156717238613 + }, + "dragging": false, + "style": { + "width": 131 + }, + "selectable": true, + "focusable": true + }, + { + "id": "ghbrJhuGvscnNGCtVLh5_", + "type": "subtopic", + "position": { + "x": -514.5993272119424, + "y": 213.47156717238613 + }, + "selected": false, + "data": { + "label": "Imports", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "RcNHEh6kmbBK1PICbhAwr" + }, + "zIndex": 999, + "width": 131, + "height": 49, + "positionAbsolute": { + "x": -514.5993272119424, + "y": 213.47156717238613 + }, + "dragging": false, + "style": { + "width": 131 + }, + "selectable": true, + "focusable": true + }, + { + "id": "Szgr8dnZNi-z5i6raIJzW", + "type": "subtopic", + "position": { + "x": -522.2433266387567, + "y": 48.47156717238613 + }, + "selected": false, + "data": { + "label": "Metadata", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + }, + "oldId": "doHDoAgp7T59KGSXPpQzZ" + }, + "zIndex": 999, + "width": 282, + "height": 55, + "positionAbsolute": { + "x": -522.2433266387567, + "y": 48.47156717238613 + }, + "dragging": false, + "style": { + "width": 282, + "height": 55 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "19c7D-fWIJ3vYFT6h8ZfN", + "type": "topic", + "position": { + "x": -521.7433266387567, + "y": 439.2304293708296 + }, + "selected": false, + "data": { + "label": "Communication", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 283, + "height": 49, + "style": { + "width": 283, + "height": 49 + }, + "positionAbsolute": { + "x": -521.7433266387567, + "y": 439.2304293708296 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "TDyFjKrIZJnCjEZsojPNQ", + "type": "subtopic", + "position": { + "x": -513.5993272119424, + "y": 494.2304293708296 + }, + "selected": false, + "data": { + "label": "Parent-Child Interaction", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 267, + "height": 49, + "style": { + "width": 267, + "height": 49 + }, + "positionAbsolute": { + "x": -513.5993272119424, + "y": 494.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "v0XaLNZ-YrRqP-xv8wS43", + "type": "subtopic", + "position": { + "x": -513.5993272119424, + "y": 546.7304293708296 + }, + "selected": false, + "data": { + "label": "ViewChild", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 120, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -513.5993272119424, + "y": 546.7304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "oQl9etjoHiU2JgxieUOEH", + "type": "subtopic", + "position": { + "x": -390.5993272119424, + "y": 546.7304293708296 + }, + "selected": false, + "data": { + "label": "ContentChild", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 145, + "height": 49, + "style": { + "width": 145, + "height": 49 + }, + "positionAbsolute": { + "x": -390.5993272119424, + "y": 546.7304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "nCpfj_35ZvW-NTygg06XZ", + "type": "subtopic", + "position": { + "x": -521.7433266387567, + "y": 609.2304293708296 + }, + "selected": false, + "data": { + "label": "Component Lifecycle", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "Mp056kNnwsRWeEXuhGPy-" + }, + "zIndex": 999, + "width": 283, + "height": 49, + "style": { + "width": 283, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -521.7433266387567, + "y": 609.2304293708296 + }, + "selectable": true, + "focusable": true + }, + { + "id": "tC5ETtOuuUcybj1jI4CuG", + "type": "subtopic", + "position": { + "x": -523.7433266387567, + "y": 661.2304293708296 + }, + "selected": false, + "data": { + "label": "Dynamic Components", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "nCpfj_35ZvW-NTygg06XZ" + }, + "zIndex": 999, + "width": 283, + "height": 49, + "style": { + "width": 283, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -523.7433266387567, + "y": 661.2304293708296 + }, + "selectable": true, + "focusable": true + }, + { + "id": "b_kdNS9PDupcUftslkf9i", + "type": "topic", + "position": { + "x": 332.25667336124326, + "y": 512.7304293708296 + }, + "selected": false, + "data": { + "label": "Modules", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 198, + "height": 49, + "style": { + "width": 198, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": 332.25667336124326, + "y": 512.7304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "BCq5sgWQLiw0f7u7ZSAd2", + "type": "subtopic", + "position": { + "x": 297.54484613528683, + "y": 198.21599278857485 + }, + "selected": false, + "data": { + "label": "Module Architecture", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 234, + "height": 49, + "style": { + "width": 234, + "height": 49 + }, + "positionAbsolute": { + "x": 297.54484613528683, + "y": 198.21599278857485 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "ex8FOKrUlbu4MuEq2czyW", + "type": "subtopic", + "position": { + "x": -521.2433266387567, + "y": -7.284007211425205 + }, + "selected": false, + "data": { + "label": "Creating Components", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "Mp056kNnwsRWeEXuhGPy-" + }, + "zIndex": 999, + "width": 281, + "height": 49, + "style": { + "width": 281, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -521.2433266387567, + "y": -7.284007211425205 + }, + "selectable": true, + "focusable": true + }, + { + "id": "9YhTXybJw2gszlqFeBtW3", + "type": "subtopic", + "position": { + "x": 297.54484613528683, + "y": 251.21599278857485 + }, + "selected": false, + "data": { + "label": "Creating Modules", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "BCq5sgWQLiw0f7u7ZSAd2" + }, + "zIndex": 999, + "width": 234, + "height": 49, + "style": { + "width": 234, + "height": 49 + }, + "positionAbsolute": { + "x": 297.54484613528683, + "y": 251.21599278857485 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "w_BazXvINFyxDCHmlznfy", + "type": "subtopic", + "position": { + "x": 297.54484613528683, + "y": 304.21599278857485 + }, + "selected": false, + "data": { + "label": "Feature Modules", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "9YhTXybJw2gszlqFeBtW3" + }, + "zIndex": 999, + "width": 234, + "height": 49, + "style": { + "width": 234, + "height": 49 + }, + "positionAbsolute": { + "x": 297.54484613528683, + "y": 304.21599278857485 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "bLERvEERmNI5AgxtEYokZ", + "type": "subtopic", + "position": { + "x": 297.54484613528683, + "y": 357.21599278857485 + }, + "selected": false, + "data": { + "label": "Lazy Loading Modules", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 234, + "height": 49, + "style": { + "width": 234, + "height": 49 + }, + "positionAbsolute": { + "x": 297.54484613528683, + "y": 357.21599278857485 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "5b590c7s-2XJ0rgdCYxLa", + "type": "subtopic", + "position": { + "x": 297.54484613528683, + "y": 410.21599278857485 + }, + "selected": false, + "data": { + "label": "Dependencies", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 234, + "height": 49, + "style": { + "width": 234, + "height": 49 + }, + "positionAbsolute": { + "x": 297.54484613528683, + "y": 410.21599278857485 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "6fhe9xAi_RSVfa-KKbcbV", + "type": "topic", + "position": { + "x": 332.25667336124326, + "y": 604.2304293708296 + }, + "selected": false, + "data": { + "label": "Templates", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 198, + "height": 49, + "style": { + "width": 198, + "height": 49 + }, + "positionAbsolute": { + "x": 332.25667336124326, + "y": 604.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": true + }, + { + "id": "XHpfHRIlFh19FJIE07u7i", + "type": "subtopic", + "position": { + "x": -100.73327447982547, + "y": 463.7304293708296 + }, + "selected": false, + "data": { + "label": "Interpoloation", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 225, + "height": 49, + "style": { + "width": 225, + "height": 49 + }, + "positionAbsolute": { + "x": -100.73327447982547, + "y": 463.7304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "t2YOeMONlcnKBrVAo0JDc", + "type": "subtopic", + "position": { + "x": -100.73327447982547, + "y": 516.7304293708296 + }, + "selected": false, + "data": { + "label": "Template Statements", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 225, + "height": 49, + "style": { + "width": 225, + "height": 49 + }, + "positionAbsolute": { + "x": -100.73327447982547, + "y": 516.7304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "WH5wlyOtrqFHBJx7RFJwS", + "type": "topic", + "position": { + "x": -99.73327447982547, + "y": 572.2304293708296 + }, + "selected": false, + "data": { + "label": "Understand Binding", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 225, + "height": 49, + "style": { + "width": 225, + "height": 49 + }, + "positionAbsolute": { + "x": -99.73327447982547, + "y": 572.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "5vZkiH7HDwONIABLfNJ06", + "type": "subtopic", + "position": { + "x": -91.73327447982547, + "y": 629.2304293708296 + }, + "selected": false, + "data": { + "label": "Data Binding", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 209, + "height": 49, + "style": { + "width": 209, + "height": 49 + }, + "positionAbsolute": { + "x": -91.73327447982547, + "y": 629.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "TJOZfHtsLfwA0CZ2bd1b2", + "type": "subtopic", + "position": { + "x": -91.73327447982547, + "y": 682.2304293708296 + }, + "selected": false, + "data": { + "label": "Properties Binding", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 209, + "height": 49, + "style": { + "width": 209, + "height": 49 + }, + "positionAbsolute": { + "x": -91.73327447982547, + "y": 682.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "FgsSyM6To7irpbivtOLEE", + "type": "subtopic", + "position": { + "x": -91.73327447982547, + "y": 735.2304293708296 + }, + "selected": false, + "data": { + "label": "Attributes Binding", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 209, + "height": 49, + "style": { + "width": 209, + "height": 49 + }, + "positionAbsolute": { + "x": -91.73327447982547, + "y": 735.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "bKnpirSvex4oE4lAjiSSV", + "type": "subtopic", + "position": { + "x": -91.73327447982547, + "y": 788.2304293708296 + }, + "selected": false, + "data": { + "label": "Events", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 209, + "height": 49, + "style": { + "width": 209, + "height": 49 + }, + "positionAbsolute": { + "x": -91.73327447982547, + "y": 788.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "2UH79nCjgtY1Qz1YjUJYL", + "type": "subtopic", + "position": { + "x": -91.73327447982547, + "y": 841.2304293708296 + }, + "selected": false, + "data": { + "label": "Two-way Binding", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 209, + "height": 49, + "style": { + "width": 209, + "height": 49 + }, + "positionAbsolute": { + "x": -91.73327447982547, + "y": 841.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "VzvB_bads057YtG4ST4a2", + "type": "subtopic", + "position": { + "x": -99.73327447982547, + "y": 904.2304293708296 + }, + "selected": false, + "data": { + "label": "Control Flow", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 225, + "height": 49, + "style": { + "width": 225, + "height": 49 + }, + "positionAbsolute": { + "x": -99.73327447982547, + "y": 904.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "Wc2ybRw43uamEtno0FpDv", + "type": "subtopic", + "position": { + "x": -99.73327447982547, + "y": 957.2304293708296 + }, + "selected": false, + "data": { + "label": "Template Ref Vars", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "nyDry6ZWyEUuTq4pw-lU3" + }, + "zIndex": 999, + "width": 225, + "height": 49, + "style": { + "width": 225, + "height": 49 + }, + "positionAbsolute": { + "x": -99.73327447982547, + "y": 957.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "VsU6713jeIjAOEZnF6gWx", + "type": "subtopic", + "position": { + "x": -99.73327447982547, + "y": 1010.2304293708296 + }, + "selected": false, + "data": { + "label": "@Input & @Output", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 225, + "height": 49, + "style": { + "width": 225, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -99.73327447982547, + "y": 1010.2304293708296 + }, + "selectable": true, + "focusable": true + }, + { + "id": "nyDry6ZWyEUuTq4pw-lU3", + "type": "subtopic", + "position": { + "x": -99.73327447982547, + "y": 957.2304293708296 + }, + "selected": false, + "data": { + "label": "Template Ref Vars", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 225, + "height": 49, + "style": { + "width": 225, + "height": 49 + }, + "positionAbsolute": { + "x": -99.73327447982547, + "y": 957.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "VsC7UmE_AumsBP8fC6to1", + "type": "topic", + "position": { + "x": -522.2433266387567, + "y": 739.2304293708296 + }, + "selected": false, + "data": { + "label": "Template Syntax", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 184, + "height": 49, + "style": { + "width": 184, + "height": 49 + }, + "positionAbsolute": { + "x": -522.2433266387567, + "y": 739.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "U1Zy2T-2ki9pDkXn9hn-I", + "type": "subtopic", + "position": { + "x": -514.5993272119424, + "y": 796.2304293708296 + }, + "selected": false, + "data": { + "label": "@if", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 75, + "height": 49, + "style": { + "width": 75, + "height": 49 + }, + "positionAbsolute": { + "x": -514.5993272119424, + "y": 796.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "ORdPDad4HWJAfcZuS-7yM", + "type": "subtopic", + "position": { + "x": -436.3084777160734, + "y": 795.2304293708296 + }, + "selected": false, + "data": { + "label": "@else", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 90, + "height": 49, + "style": { + "width": 90, + "height": 49 + }, + "positionAbsolute": { + "x": -436.3084777160734, + "y": 795.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "ys5untkSppGMFK-VsfuRt", + "type": "subtopic", + "position": { + "x": -514.5993272119424, + "y": 848.2304293708296 + }, + "selected": false, + "data": { + "label": "@else if", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "mRB-0CRdGwvxPqZbz08yj" + }, + "zIndex": 999, + "width": 166, + "height": 49, + "style": { + "width": 166, + "height": 49 + }, + "positionAbsolute": { + "x": -514.5993272119424, + "y": 848.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "2kYS9w1UzQFZ1zhf01m9L", + "type": "subtopic", + "position": { + "x": -515.5993272119424, + "y": 900.2304293708296 + }, + "selected": false, + "data": { + "label": "@for", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 75, + "height": 49, + "style": { + "width": 75, + "height": 49 + }, + "positionAbsolute": { + "x": -515.5993272119424, + "y": 900.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "nZuim4Fjq6jYOXcRTAEay", + "type": "subtopic", + "position": { + "x": -436.3084777160734, + "y": 901.2304293708296 + }, + "selected": false, + "data": { + "label": "@switch", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 90, + "height": 49, + "style": { + "width": 90, + "height": 49 + }, + "positionAbsolute": { + "x": -436.3084777160734, + "y": 901.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "cHC2MH50CbUSMRZV4QGJI", + "type": "subtopic", + "position": { + "x": -515.5993272119424, + "y": 952.2304293708296 + }, + "selected": false, + "data": { + "label": "@case", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 75, + "height": 49, + "style": { + "width": 75, + "height": 49 + }, + "positionAbsolute": { + "x": -515.5993272119424, + "y": 952.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "h4MMn0_qUN3YXEdMUJOyd", + "type": "subtopic", + "position": { + "x": -436.3084777160734, + "y": 954.2304293708296 + }, + "selected": false, + "data": { + "label": "@default", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 90, + "height": 49, + "style": { + "width": 90, + "height": 49 + }, + "positionAbsolute": { + "x": -436.3084777160734, + "y": 954.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "AwOM0ucg6W7TohdUd7KWT", + "type": "subtopic", + "position": { + "x": -514.5993272119424, + "y": 1004.2304293708296 + }, + "selected": false, + "data": { + "label": "@let", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 75, + "height": 49, + "style": { + "width": 75, + "height": 49 + }, + "positionAbsolute": { + "x": -514.5993272119424, + "y": 1004.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "ONy-0olujU_FGZM7Wvfr2", + "type": "subtopic", + "position": { + "x": -436.3084777160734, + "y": 1007.2304293708296 + }, + "selected": false, + "data": { + "label": "@defer", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 90, + "height": 49, + "style": { + "width": 90, + "height": 49 + }, + "positionAbsolute": { + "x": -436.3084777160734, + "y": 1007.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "j99WQxuTzGeBBVoReDp_y", + "type": "topic", + "position": { + "x": -340.63327447982533, + "y": 739.2304293708296 + }, + "selected": false, + "data": { + "label": "Pipes", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 203, + "height": 49, + "style": { + "width": 203, + "height": 49 + }, + "positionAbsolute": { + "x": -340.63327447982533, + "y": 739.2304293708296 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "_-mTs_FMeob-ZGK-bb3j-", + "type": "subtopic", + "position": { + "x": -332.63327447982533, + "y": 848.2304293708296 + }, + "selected": false, + "data": { + "label": "Change Detection", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "CCLlL17z35brwlr-q2FDV" + }, + "zIndex": 999, + "width": 187, + "height": 49, + "style": { + "width": 187, + "height": 49 + }, + "positionAbsolute": { + "x": -332.63327447982533, + "y": 848.2304293708296 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "i2taHzQ5KLHjkkpbH4Ytd", + "type": "subtopic", + "position": { + "x": -332.63327447982533, + "y": 901.2304293708296 + }, + "selected": false, + "data": { + "label": "Common Pipes", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 187, + "height": 49, + "style": { + "width": 187, + "height": 49 + }, + "positionAbsolute": { + "x": -332.63327447982533, + "y": 901.2304293708296 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "nZxZnzbQg9dz-SI65UHq9", + "type": "subtopic", + "position": { + "x": -332.63327447982533, + "y": 795.2304293708296 + }, + "selected": false, + "data": { + "label": "Pipes Precedence", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "CCLlL17z35brwlr-q2FDV" + }, + "zIndex": 999, + "width": 187, + "height": 49, + "style": { + "width": 187, + "height": 49 + }, + "positionAbsolute": { + "x": -332.63327447982533, + "y": 795.2304293708296 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "BOYXGfULJRiP-XOo_lNX3", + "type": "subtopic", + "position": { + "x": -332.63327447982533, + "y": 954.2304293708296 + }, + "selected": false, + "data": { + "label": "Custom Pipes", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "i2taHzQ5KLHjkkpbH4Ytd" + }, + "zIndex": 999, + "width": 187, + "height": 49, + "style": { + "width": 187, + "height": 49 + }, + "positionAbsolute": { + "x": -332.63327447982533, + "y": 954.2304293708296 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "mRB-0CRdGwvxPqZbz08yj", + "type": "subtopic", + "position": { + "x": -514.5993272119424, + "y": 848.2304293708296 + }, + "selected": false, + "data": { + "label": "@else if", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 166, + "height": 49, + "style": { + "width": 166, + "height": 49 + }, + "positionAbsolute": { + "x": -514.5993272119424, + "y": 848.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "kGzlumFdZFxTRZ3HnCGFO", + "type": "topic", + "position": { + "x": 332.25667336124326, + "y": 884.2304293708296 + }, + "selected": false, + "data": { + "label": "Directives", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 198, + "height": 49, + "style": { + "width": 198, + "height": 49 + }, + "positionAbsolute": { + "x": 332.25667336124326, + "y": 884.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "xk3v8p6vf8ntGj5c-IU4U", + "type": "subtopic", + "position": { + "x": 191.04484613528683, + "y": 690.2304293708296 + }, + "selected": false, + "data": { + "label": "Structural Directives", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 203, + "height": 49, + "style": { + "width": 203 + }, + "positionAbsolute": { + "x": 191.04484613528683, + "y": 690.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "xvwby0FTdIolRrV2j88fY", + "type": "subtopic", + "position": { + "x": 191.04484613528683, + "y": 743.2304293708296 + }, + "selected": false, + "data": { + "label": "Attribute Directives", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "xk3v8p6vf8ntGj5c-IU4U" + }, + "zIndex": 999, + "width": 203, + "height": 49, + "style": { + "width": 203 + }, + "positionAbsolute": { + "x": 191.04484613528683, + "y": 743.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "7GUvTMVzfdVEDBOz-tHUT", + "type": "subtopic", + "position": { + "x": 191.04484613528683, + "y": 796.2304293708296 + }, + "selected": false, + "data": { + "label": "Custom Directives", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "xvwby0FTdIolRrV2j88fY" + }, + "zIndex": 999, + "width": 203, + "height": 49, + "style": { + "width": 203, + "height": 49 + }, + "positionAbsolute": { + "x": 191.04484613528683, + "y": 796.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "a74v78SvGtWduZpXs7wSq", + "type": "topic", + "position": { + "x": 332.25667336124326, + "y": 1142.7304293708294 + }, + "selected": false, + "data": { + "label": "Routing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "kGzlumFdZFxTRZ3HnCGFO" + }, + "zIndex": 999, + "width": 198, + "height": 49, + "style": { + "width": 198, + "height": 49 + }, + "positionAbsolute": { + "x": 332.25667336124326, + "y": 1142.7304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "dbAS-hN1hoCsNJhkxXcGq", + "type": "subtopic", + "position": { + "x": 191.04484613528683, + "y": 961.7304293708294 + }, + "selected": false, + "data": { + "label": "Configuration", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 203, + "height": 49, + "style": { + "width": 203, + "height": 49 + }, + "positionAbsolute": { + "x": 191.04484613528683, + "y": 961.7304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "ewbDdPYv2SJl_jW3RVHQs", + "type": "subtopic", + "position": { + "x": 191.04484613528683, + "y": 1014.7304293708294 + }, + "selected": false, + "data": { + "label": "Lazy Loading", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 203, + "height": 49, + "style": { + "width": 203, + "height": 49 + }, + "positionAbsolute": { + "x": 191.04484613528683, + "y": 1014.7304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "1ZwdEL0Gx30Vv_Av3ZTGG", + "type": "subtopic", + "position": { + "x": 191.04484613528683, + "y": 1067.7304293708294 + }, + "selected": false, + "data": { + "label": "Router Outlets", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 203, + "height": 49, + "style": { + "width": 203, + "height": 49 + }, + "positionAbsolute": { + "x": 191.04484613528683, + "y": 1067.7304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "8lFyuSx4MUcYRY2L8bZrq", + "type": "subtopic", + "position": { + "x": 192.04484613528683, + "y": 1222.7304293708294 + }, + "selected": false, + "data": { + "label": "Router Links", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 203, + "height": 49, + "style": { + "width": 203, + "height": 49 + }, + "positionAbsolute": { + "x": 192.04484613528683, + "y": 1222.7304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "YF_sG292HqawIX0siWhrv", + "type": "subtopic", + "position": { + "x": 192.04484613528683, + "y": 1275.7304293708294 + }, + "selected": false, + "data": { + "label": "Router Events", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 203, + "height": 49, + "style": { + "width": 203, + "height": 49 + }, + "positionAbsolute": { + "x": 192.04484613528683, + "y": 1275.7304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "PmC4zeaLpa5LoL4FhYXcG", + "type": "subtopic", + "position": { + "x": 192.04484613528683, + "y": 1328.7304293708294 + }, + "selected": false, + "data": { + "label": "Guards", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 203, + "height": 49, + "style": { + "width": 203, + "height": 49 + }, + "positionAbsolute": { + "x": 192.04484613528683, + "y": 1328.7304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "CpsoIVoCKaZnM_-BbXbCh", + "type": "topic", + "position": { + "x": -131.73327447982547, + "y": 1142.7304293708294 + }, + "selected": false, + "data": { + "label": "Services & Remote Data", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "a74v78SvGtWduZpXs7wSq" + }, + "zIndex": 999, + "width": 242, + "height": 49, + "style": { + "width": 242, + "height": 49 + }, + "positionAbsolute": { + "x": -131.73327447982547, + "y": 1142.7304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "8u9uHCRt9RU57erBy79PP", + "type": "subtopic", + "position": { + "x": -131.73327447982547, + "y": 1222.7304293708294 + }, + "selected": false, + "data": { + "label": "Dependency Injection", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 242, + "height": 49, + "style": { + "width": 242, + "height": 49 + }, + "positionAbsolute": { + "x": -131.73327447982547, + "y": 1222.7304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Q36LQds8k_cSjijvXyWOM", + "type": "topic", + "position": { + "x": -418.63327447982533, + "y": 1347.7304293708294 + }, + "selected": false, + "data": { + "label": "Forms", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "CpsoIVoCKaZnM_-BbXbCh" + }, + "zIndex": 999, + "width": 124, + "height": 49, + "style": { + "width": 124, + "height": 49 + }, + "positionAbsolute": { + "x": -418.63327447982533, + "y": 1347.7304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "1d3Y4HVnqom8UOok-7EEf", + "type": "subtopic", + "position": { + "x": -518.6332744798253, + "y": 1095.7304293708294 + }, + "selected": false, + "data": { + "label": "Reactive Forms", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 224, + "height": 49, + "style": { + "width": 224, + "height": 49 + }, + "positionAbsolute": { + "x": -518.6332744798253, + "y": 1095.7304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "XC_K1Wahl2ySqOXoym4YU", + "type": "subtopic", + "position": { + "x": -518.6332744798253, + "y": 1148.7304293708294 + }, + "selected": false, + "data": { + "label": "Typed Forms", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 224, + "height": 49, + "style": { + "width": 224, + "height": 49 + }, + "positionAbsolute": { + "x": -518.6332744798253, + "y": 1148.7304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "uDx4lPavwsJFBMzdQ70CS", + "type": "subtopic", + "position": { + "x": -518.6332744798253, + "y": 1201.7304293708294 + }, + "selected": false, + "data": { + "label": "Template-driven Forms", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 224, + "height": 49, + "style": { + "width": 224, + "height": 49 + }, + "positionAbsolute": { + "x": -518.6332744798253, + "y": 1201.7304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "CpufN6DAOj5UNab9vnH0k", + "type": "subtopic", + "position": { + "x": -518.6332744798253, + "y": 1254.7304293708294 + }, + "selected": false, + "data": { + "label": "Dynamic Forms", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 224, + "height": 49, + "style": { + "width": 224, + "height": 49 + }, + "positionAbsolute": { + "x": -518.6332744798253, + "y": 1254.7304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "kxRtLsB3y_th8j-HjmJgK", + "type": "subtopic", + "position": { + "x": -518.6332744798253, + "y": 1440.7304293708294 + }, + "selected": false, + "data": { + "label": "Custom Validators", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 224, + "height": 49, + "style": { + "width": 224, + "height": 49 + }, + "positionAbsolute": { + "x": -518.6332744798253, + "y": 1440.7304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "m5dgKgUR3ZqI9sBAzToev", + "type": "subtopic", + "position": { + "x": -518.6332744798253, + "y": 1493.7304293708294 + }, + "selected": false, + "data": { + "label": "Control Value Accessor", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 224, + "height": 49, + "style": { + "width": 224, + "height": 49 + }, + "positionAbsolute": { + "x": -518.6332744798253, + "y": 1493.7304293708294 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "8UY0HAvjY7bdbFpt-MM1u", + "type": "topic", + "position": { + "x": -126.73327447982547, + "y": 1347.7304293708294 + }, + "selected": false, + "data": { + "label": "HTTP Client", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "Q36LQds8k_cSjijvXyWOM" + }, + "zIndex": 999, + "width": 153, + "height": 49, + "style": { + "width": 153, + "height": 49 + }, + "positionAbsolute": { + "x": -126.73327447982547, + "y": 1347.7304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "AKPhbg10xXjccO7UBh5eJ", + "type": "subtopic", + "position": { + "x": -152.73327447982547, + "y": 1436.7304293708294 + }, + "selected": false, + "data": { + "label": "Setting Up the Client", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 205, + "height": 49, + "style": { + "width": 205 + }, + "positionAbsolute": { + "x": -152.73327447982547, + "y": 1436.7304293708294 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "HjGAv3aV-p4ijYJ8XYIw3", + "type": "subtopic", + "position": { + "x": -152.73327447982547, + "y": 1489.7304293708294 + }, + "selected": false, + "data": { + "label": "Making Requests", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 205, + "height": 49, + "style": { + "width": 205 + }, + "positionAbsolute": { + "x": -152.73327447982547, + "y": 1489.7304293708294 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "xG7iSVOGcbxJbNv3xbNfc", + "type": "subtopic", + "position": { + "x": -152.73327447982547, + "y": 1542.7304293708294 + }, + "selected": false, + "data": { + "label": "Writing Interceptors", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 205, + "height": 49, + "style": { + "width": 205 + }, + "positionAbsolute": { + "x": -152.73327447982547, + "y": 1542.7304293708294 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "lfp7PIjwITU5gBITQdirD", + "type": "topic", + "position": { + "x": 171.04484613528683, + "y": 1444.7304293708294 + }, + "selected": false, + "data": { + "label": "RxJS Basics", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "8UY0HAvjY7bdbFpt-MM1u" + }, + "zIndex": 999, + "width": 153, + "height": 49, + "style": { + "width": 153, + "height": 49 + }, + "positionAbsolute": { + "x": 171.04484613528683, + "y": 1444.7304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "krXA6ua7E3m4IIpFkgQZe", + "type": "subtopic", + "position": { + "x": 324.86672552017467, + "y": 1538.93042937083 + }, + "selected": false, + "data": { + "label": "Observable Pattern", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 210, + "height": 49, + "style": { + "width": 210, + "height": 49 + }, + "positionAbsolute": { + "x": 324.86672552017467, + "y": 1538.93042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "b06Y5YrqBbHhWkK6Ws_1c", + "type": "subtopic", + "position": { + "x": 324.86672552017467, + "y": 1591.93042937083 + }, + "selected": false, + "data": { + "label": "Observable Lifecycle", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 210, + "height": 49, + "style": { + "width": 210, + "height": 49 + }, + "positionAbsolute": { + "x": 324.86672552017467, + "y": 1591.93042937083 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "e1ZmmxPZuogCNgtbPPWmd", + "type": "subtopic", + "position": { + "x": 324.86672552017467, + "y": 1644.93042937083 + }, + "selected": false, + "data": { + "label": "RxJS vs Promises", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 210, + "height": 49, + "style": { + "width": 210, + "height": 49 + }, + "positionAbsolute": { + "x": 324.86672552017467, + "y": 1644.93042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "ihsjIcF0tkhjs56458teE", + "type": "subtopic", + "position": { + "x": 324.86672552017467, + "y": 1697.93042937083 + }, + "selected": false, + "data": { + "label": "Operators", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 210, + "height": 49, + "style": { + "width": 210, + "height": 49 + }, + "positionAbsolute": { + "x": 324.86672552017467, + "y": 1697.93042937083 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "nxUbl0eu3LsSL-Z8X6nP5", + "type": "subtopic", + "position": { + "x": 332.86672552017467, + "y": 1751.93042937083 + }, + "selected": false, + "data": { + "label": "Filtering", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 194, + "height": 49, + "style": { + "width": 194, + "height": 49 + }, + "positionAbsolute": { + "x": 332.86672552017467, + "y": 1751.93042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "bJbbayFQ9WSJT9-qy0H5l", + "type": "subtopic", + "position": { + "x": 332.86672552017467, + "y": 1804.93042937083 + }, + "selected": false, + "data": { + "label": "Rate Limiting", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 194, + "height": 49, + "style": { + "width": 194, + "height": 49 + }, + "positionAbsolute": { + "x": 332.86672552017467, + "y": 1804.93042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "kdMJHljMzGA3oRlh8Zvos", + "type": "subtopic", + "position": { + "x": 332.86672552017467, + "y": 1857.93042937083 + }, + "selected": false, + "data": { + "label": "Transformation", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 194, + "height": 49, + "style": { + "width": 194, + "height": 49 + }, + "positionAbsolute": { + "x": 332.86672552017467, + "y": 1857.93042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "IgUHqfVhiGpwxT9tY8O88", + "type": "subtopic", + "position": { + "x": 332.86672552017467, + "y": 1910.93042937083 + }, + "selected": false, + "data": { + "label": "Combination", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 194, + "height": 49, + "style": { + "width": 194, + "height": 49 + }, + "positionAbsolute": { + "x": 332.86672552017467, + "y": 1910.93042937083 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "u1TG8i145o0RKhOR_5epf", + "type": "topic", + "position": { + "x": 171.04484613528683, + "y": 1644.93042937083 + }, + "selected": false, + "data": { + "label": "Signals", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 121, + "height": 49, + "style": { + "width": 121, + "height": 49 + }, + "positionAbsolute": { + "x": 171.04484613528683, + "y": 1644.93042937083 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "KAdtebWvgvMifIwd52yc4", + "type": "subtopic", + "position": { + "x": 106.86672552017467, + "y": 1731.43042937083 + }, + "selected": false, + "data": { + "label": "RxJS Interop", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 189, + "height": 49, + "style": { + "width": 189 + }, + "positionAbsolute": { + "x": 106.86672552017467, + "y": 1731.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "LcJyAfv9hjyUNXUVyPRP4", + "type": "subtopic", + "position": { + "x": 106.86672552017467, + "y": 1784.43042937083 + }, + "selected": false, + "data": { + "label": "Inputs as Signals", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 189, + "height": 49, + "style": { + "width": 189 + }, + "positionAbsolute": { + "x": 106.86672552017467, + "y": 1784.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "9HS9C3yq9EUcUy0ZUZk_H", + "type": "subtopic", + "position": { + "x": 106.86672552017467, + "y": 1837.43042937083 + }, + "selected": false, + "data": { + "label": "Queries as Signals", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 189, + "height": 69, + "style": { + "width": 189 + }, + "positionAbsolute": { + "x": 106.86672552017467, + "y": 1837.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "IeU6ClS_yp6BYKdkQOJVf", + "type": "subtopic", + "position": { + "x": 106.86672552017467, + "y": 1890.43042937083 + }, + "selected": false, + "data": { + "label": "Model Inputs", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 189, + "height": 49, + "style": { + "width": 189 + }, + "positionAbsolute": { + "x": 106.86672552017467, + "y": 1890.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Mqe_s-nwBqAL6X7OGRHEN", + "type": "topic", + "position": { + "x": -151.73327447982547, + "y": 1644.93042937083 + }, + "selected": false, + "data": { + "label": "State Management", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 218, + "height": 49, + "style": { + "width": 218, + "height": 49 + }, + "positionAbsolute": { + "x": -151.73327447982547, + "y": 1644.93042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "N9ZCPgFnFIUv4jMv1w5qK", + "type": "subtopic", + "position": { + "x": -152.13327447982533, + "y": 1731.43042937083 + }, + "selected": false, + "data": { + "label": "NGXS", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 70, + "height": 49, + "style": { + "width": 70, + "height": 49 + }, + "positionAbsolute": { + "x": -152.13327447982533, + "y": 1731.43042937083 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "ir94IdkF1tVAA8ZTD9r0N", + "type": "subtopic", + "position": { + "x": -4.133274479825332, + "y": 1731.43042937083 + }, + "selected": false, + "data": { + "label": "NgRx", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 70, + "height": 49, + "style": { + "width": 70, + "height": 49 + }, + "positionAbsolute": { + "x": -4.133274479825332, + "y": 1731.43042937083 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "rgPUcSKxG9DvXicLfC2Ay", + "type": "subtopic", + "position": { + "x": -78.13327447982533, + "y": 1731.43042937083 + }, + "selected": false, + "data": { + "label": "Elf", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 70, + "height": 49, + "style": { + "width": 70, + "height": 49 + }, + "positionAbsolute": { + "x": -78.13327447982533, + "y": 1731.43042937083 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "m4WBnx_9h01Jl6Q1sxi4Y", + "type": "topic", + "position": { + "x": -387.63327447982533, + "y": 1644.93042937083 + }, + "selected": false, + "data": { + "label": "Zones", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 93, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -387.63327447982533, + "y": 1644.93042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "1x5pT607aKE-S-NCWB810", + "type": "subtopic", + "position": { + "x": -507.63327447982533, + "y": 1566.43042937083 + }, + "selected": false, + "data": { + "label": "Zoneless Applications", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 213, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -507.63327447982533, + "y": 1566.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "EbJib-XfZFF9bpCtL3aBs", + "type": "topic", + "position": { + "x": -463.63327447982533, + "y": 1841.43042937083 + }, + "selected": false, + "data": { + "label": "Developer Tools", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 169, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -463.63327447982533, + "y": 1841.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "4YSk6I63Ew--zoXC3xmrC", + "type": "subtopic", + "position": { + "x": -519.1332744798253, + "y": 1939.43042937083 + }, + "selected": false, + "data": { + "label": "Angular CLI", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 209, + "height": 49, + "style": { + "width": 209 + }, + "positionAbsolute": { + "x": -519.1332744798253, + "y": 1939.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "FVH0lnbIZ2m5EfF2EJ2DW", + "type": "subtopic", + "position": { + "x": -512.1332744798253, + "y": 1996.43042937083 + }, + "selected": false, + "data": { + "label": "Local Setup", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 195, + "height": 49, + "style": { + "width": 195, + "height": 49 + }, + "positionAbsolute": { + "x": -512.1332744798253, + "y": 1996.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "1fVi9AK6aLjt5QgAFbnGX", + "type": "subtopic", + "position": { + "x": -512.1332744798253, + "y": 2049.43042937083 + }, + "selected": false, + "data": { + "label": "Deployment", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 195, + "height": 49, + "style": { + "width": 195, + "height": 49 + }, + "positionAbsolute": { + "x": -512.1332744798253, + "y": 2049.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "yhNGhduk__ow8VTLc6inZ", + "type": "subtopic", + "position": { + "x": -512.1332744798253, + "y": 2102.43042937083 + }, + "selected": false, + "data": { + "label": "End-to-End Testing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 195, + "height": 49, + "style": { + "width": 195, + "height": 49 + }, + "positionAbsolute": { + "x": -512.1332744798253, + "y": 2102.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Uvr0pRk_fOzwRwqn0dQ6N", + "type": "subtopic", + "position": { + "x": -512.1332744798253, + "y": 2155.43042937083 + }, + "selected": false, + "data": { + "label": "Schematics", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 195, + "height": 49, + "style": { + "width": 195, + "height": 49 + }, + "positionAbsolute": { + "x": -512.1332744798253, + "y": 2155.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Ax-s_xw3FO3Ocv-AnLbQD", + "type": "subtopic", + "position": { + "x": -512.1332744798253, + "y": 2208.43042937083 + }, + "selected": false, + "data": { + "label": "Build Environments", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 195, + "height": 49, + "style": { + "width": 195, + "height": 49 + }, + "positionAbsolute": { + "x": -512.1332744798253, + "y": 2208.43042937083 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "TeWEy9I-hU6SH02Sy2S2S", + "type": "subtopic", + "position": { + "x": -512.1332744798253, + "y": 2261.43042937083 + }, + "selected": false, + "data": { + "label": "CLI Builders", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 195, + "height": 49, + "style": { + "width": 195, + "height": 49 + }, + "positionAbsolute": { + "x": -512.1332744798253, + "y": 2261.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "MwtM1UAIfj4FJ-Y4CKDsP", + "type": "subtopic", + "position": { + "x": -512.1332744798253, + "y": 2314.43042937083 + }, + "selected": false, + "data": { + "label": "AoT Compilation", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 195, + "height": 49, + "style": { + "width": 195, + "height": 49 + }, + "positionAbsolute": { + "x": -512.1332744798253, + "y": 2314.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "T3MmS3bvMMgCUbOk3ktU7", + "type": "subtopic", + "position": { + "x": -301.7433266387567, + "y": 1940.2304293708294 + }, + "selected": false, + "data": { + "label": "DevTools", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "ql7SyxrRmjpiXJ9hQeWPq" + }, + "zIndex": 999, + "width": 204, + "height": 49, + "style": { + "width": 204, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": -301.7433266387567, + "y": 1940.2304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "ql7SyxrRmjpiXJ9hQeWPq", + "type": "subtopic", + "position": { + "x": -301.7433266387567, + "y": 1993.2304293708294 + }, + "selected": false, + "data": { + "label": "Language Service", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 204, + "height": 49, + "style": { + "width": 204, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": -301.7433266387567, + "y": 1993.2304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "cl89U8atD6gw5rMGUm4Ix", + "type": "subtopic", + "position": { + "x": -301.7433266387567, + "y": 2047.93042937083 + }, + "selected": false, + "data": { + "label": "Libraries", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 204, + "height": 49, + "style": { + "width": 204, + "height": 49 + }, + "positionAbsolute": { + "x": -301.7433266387567, + "y": 2047.93042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "YHV5oFwLwphXf1wJTDZuG", + "type": "subtopic", + "position": { + "x": -293.63327447982533, + "y": 2104.93042937083 + }, + "selected": false, + "data": { + "label": "Using Libraries", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 188, + "height": 49, + "style": { + "width": 188, + "height": 49 + }, + "positionAbsolute": { + "x": -293.63327447982533, + "y": 2104.93042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "A1mYMg7cbcj6p_VkDf-Tz", + "type": "subtopic", + "position": { + "x": -293.63327447982533, + "y": 2157.93042937083 + }, + "selected": false, + "data": { + "label": "Creating Libraries", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 188, + "height": 49, + "style": { + "width": 188, + "height": 49 + }, + "dragging": false, + "resizing": false, + "positionAbsolute": { + "x": -293.63327447982533, + "y": 2157.93042937083 + }, + "selectable": true, + "focusable": true + }, + { + "id": "jfHaS8TqE4tcAo59K8Nkn", + "type": "topic", + "position": { + "x": -48.95968546864998, + "y": 1841.43042937083 + }, + "selected": false, + "data": { + "label": "SSR", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "EbJib-XfZFF9bpCtL3aBs" + }, + "zIndex": 999, + "width": 107, + "height": 49, + "style": { + "width": 107, + "height": 49 + }, + "positionAbsolute": { + "x": -48.95968546864998, + "y": 1841.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": true + }, + { + "id": "b-0yQ74zHtAxI9aRLBohc", + "type": "topic", + "position": { + "x": -48.95968546864998, + "y": 1989.2304293708294 + }, + "selected": false, + "data": { + "label": "SSG", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 107, + "height": 49, + "style": { + "width": 107, + "height": 49 + }, + "positionAbsolute": { + "x": -48.95968546864998, + "y": 1989.2304293708294 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "id": "kauQofxCmpktXPcnzid17", + "type": "subtopic", + "position": { + "x": 142.86672552017467, + "y": 1988.43042937083 + }, + "selected": false, + "data": { + "label": "AnalogJS", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 117, + "height": 49, + "style": { + "width": 117, + "height": 49 + }, + "positionAbsolute": { + "x": 142.86672552017467, + "y": 1988.43042937083 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "mm6c7GLQEwoQdAHdAYzGh", + "type": "topic", + "position": { + "x": -48.95968546864998, + "y": 2132.43042937083 + }, + "selected": false, + "data": { + "label": "Security", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 107, + "height": 49, + "style": { + "width": 107, + "height": 49 + }, + "positionAbsolute": { + "x": -48.95968546864998, + "y": 2132.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "umUX4Hxk7srHlFR_Un-u7", + "type": "subtopic", + "position": { + "x": -301.13327447982533, + "y": 2236.43042937083 + }, + "selected": false, + "data": { + "label": "Cross-site Scripting", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 237, + "height": 49, + "style": { + "width": 237, + "height": 49 + }, + "positionAbsolute": { + "x": -301.13327447982533, + "y": 2236.43042937083 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "id": "cgI9oeUHufA-ky_W1zENe", + "type": "subtopic", + "position": { + "x": -293.13327447982533, + "y": 2293.43042937083 + }, + "selected": false, + "data": { + "label": "Sanitization", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 221, + "height": 49, + "style": { + "width": 221, + "height": 49 + }, + "positionAbsolute": { + "x": -293.13327447982533, + "y": 2293.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "XoYSuv1salCCHoI1cJkxv", + "type": "subtopic", + "position": { + "x": -293.13327447982533, + "y": 2346.43042937083 + }, + "selected": false, + "data": { + "label": "Trusting Safe Values", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 221, + "height": 49, + "style": { + "width": 221, + "height": 49 + }, + "positionAbsolute": { + "x": -293.13327447982533, + "y": 2346.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "5h7U0spwEUhB-hbjSlaeB", + "type": "subtopic", + "position": { + "x": -293.13327447982533, + "y": 2399.43042937083 + }, + "selected": false, + "data": { + "label": "Enforce Trusted Types", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 221, + "height": 49, + "style": { + "width": 221, + "height": 49 + }, + "positionAbsolute": { + "x": -293.13327447982533, + "y": 2399.43042937083 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "xH3RHPhsaqD9zIMms5OmX", + "type": "subtopic", + "position": { + "x": -67.13327447982533, + "y": 2236.43042937083 + }, + "selected": false, + "data": { + "label": "HTTP Vulnerabilities", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 276, + "height": 49, + "style": { + "width": 276, + "height": 49 + }, + "positionAbsolute": { + "x": -67.13327447982533, + "y": 2236.43042937083 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "Z1DZBbFI4oU6-KQg3wqMm", + "type": "subtopic", + "position": { + "x": -56.13327447982533, + "y": 2293.43042937083 + }, + "selected": false, + "data": { + "label": "Cross-site Request Forgery", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 257, + "height": 49, + "style": { + "width": 257, + "height": 49 + }, + "positionAbsolute": { + "x": -56.13327447982533, + "y": 2293.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "m2aw8vb4rz4IjshpoMyNx", + "type": "subtopic", + "position": { + "x": -56.13327447982533, + "y": 2346.43042937083 + }, + "selected": false, + "data": { + "label": "HttpClient CSRF", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 257, + "height": 49, + "style": { + "width": 257, + "height": 49 + }, + "positionAbsolute": { + "x": -56.13327447982533, + "y": 2346.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "ni00edsphJd7uBLCn7-Vw", + "type": "subtopic", + "position": { + "x": -56.13327447982533, + "y": 2399.43042937083 + }, + "selected": false, + "data": { + "label": "XSRF protection", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 257, + "height": 49, + "style": { + "width": 257, + "height": 49 + }, + "positionAbsolute": { + "x": -56.13327447982533, + "y": 2399.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "zd7YJGlcMFNFbsKUiW_XC", + "type": "subtopic", + "position": { + "x": -56.13327447982533, + "y": 2452.43042937083 + }, + "selected": false, + "data": { + "label": "Cross-site Script Inclusion", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 257, + "height": 49, + "style": { + "width": 257, + "height": 49 + }, + "positionAbsolute": { + "x": -56.13327447982533, + "y": 2452.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "VNG9DdXlS6R1OJ6Lrn4Lt", + "type": "topic", + "position": { + "x": 142.86672552017467, + "y": 2132.43042937083 + }, + "selected": false, + "data": { + "label": "Accessibility", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 146, + "height": 49, + "style": { + "width": 146, + "height": 49 + }, + "positionAbsolute": { + "x": 142.86672552017467, + "y": 2132.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "0FvH7KPs9ag02QkD1HEJ-", + "type": "subtopic", + "position": { + "x": 353.36672552017467, + "y": 2025.93042937083 + }, + "selected": false, + "data": { + "label": "Atributes", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 181, + "height": 49, + "style": { + "width": 181, + "height": 49 + }, + "positionAbsolute": { + "x": 353.36672552017467, + "y": 2025.93042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "CZ1YRyai8Ds-ry4A8jVbr", + "type": "subtopic", + "position": { + "x": 353.36672552017467, + "y": 2078.93042937083 + }, + "selected": false, + "data": { + "label": "UI Components", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 181, + "height": 49, + "style": { + "width": 181, + "height": 49 + }, + "positionAbsolute": { + "x": 353.36672552017467, + "y": 2078.93042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "0s-QhN5aZh2F3tLJFKEyR", + "type": "subtopic", + "position": { + "x": 353.36672552017467, + "y": 2131.93042937083 + }, + "selected": false, + "data": { + "label": "Containers", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 181, + "height": 49, + "style": { + "width": 181, + "height": 49 + }, + "positionAbsolute": { + "x": 353.36672552017467, + "y": 2131.93042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "8i_JD1P4gIhY1rdldwLC2", + "type": "subtopic", + "position": { + "x": 353.36672552017467, + "y": 2184.93042937083 + }, + "selected": false, + "data": { + "label": "Routing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 181, + "height": 49, + "style": { + "width": 181, + "height": 49 + }, + "positionAbsolute": { + "x": 353.36672552017467, + "y": 2184.93042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "5-RCB8AiDbkdIFYNXKWge", + "type": "subtopic", + "position": { + "x": 353.36672552017467, + "y": 2237.93042937083 + }, + "selected": false, + "data": { + "label": "Link Identification", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 181, + "height": 49, + "style": { + "width": 181, + "height": 49 + }, + "positionAbsolute": { + "x": 353.36672552017467, + "y": 2237.93042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "STEHxJpwBZxFdQl0zUKxo", + "type": "topic", + "position": { + "x": 227.7183398541871, + "y": 2334.43042937083 + }, + "selected": false, + "data": { + "label": "Performance", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 197, + "height": 49, + "style": { + "width": 197, + "height": 49 + }, + "positionAbsolute": { + "x": 227.7183398541871, + "y": 2334.43042937083 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "CYjsXIOWtP5DJmYS-qR-s", + "type": "subtopic", + "position": { + "x": 333.86672552017467, + "y": 2431.43042937083 + }, + "selected": false, + "data": { + "label": "Deferrable Views", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 199, + "height": 49, + "style": { + "width": 199, + "height": 49 + }, + "positionAbsolute": { + "x": 333.86672552017467, + "y": 2431.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "1WIKjn3nxYDMIhBL17aYQ", + "type": "subtopic", + "position": { + "x": 333.86672552017467, + "y": 2484.43042937083 + }, + "selected": false, + "data": { + "label": "Image Optimization", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 199, + "height": 49, + "style": { + "width": 199, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": 333.86672552017467, + "y": 2484.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "pRSR5PEbkJXAJ1LPyK-EE", + "type": "subtopic", + "position": { + "x": 333.86672552017467, + "y": 2537.43042937083 + }, + "selected": false, + "data": { + "label": "Zone Pollution", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 199, + "height": 49, + "style": { + "width": 199, + "height": 49 + }, + "positionAbsolute": { + "x": 333.86672552017467, + "y": 2537.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "yxUtSBzJPRcS-IuPsyp-W", + "type": "subtopic", + "position": { + "x": 333.86672552017467, + "y": 2590.43042937083 + }, + "selected": false, + "data": { + "label": "Slow Computations", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 199, + "height": 49, + "style": { + "width": 199, + "height": 49 + }, + "positionAbsolute": { + "x": 333.86672552017467, + "y": 2590.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "NY_MfBNgNmloiRGcIvfJ1", + "type": "subtopic", + "position": { + "x": 333.86672552017467, + "y": 2643.43042937083 + }, + "selected": false, + "data": { + "label": "Hydration", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 199, + "height": 49, + "style": { + "width": 199, + "height": 49 + }, + "positionAbsolute": { + "x": 333.86672552017467, + "y": 2643.43042937083 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "lLa-OnHV6GzkNFZu29BIT", + "type": "topic", + "position": { + "x": 76.26672552017453, + "y": 2829.7304293708257 + }, + "selected": false, + "data": { + "label": "Testing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 193, + "height": 49, + "style": { + "width": 193, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": 76.26672552017453, + "y": 2829.7304293708257 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "HU1eTYB321C93qh_U7ioF", + "type": "subtopic", + "position": { + "x": -70.13327447982533, + "y": 2537.7304293708257 + }, + "selected": false, + "data": { + "label": "Testing Services", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 272, + "height": 49, + "style": { + "width": 272 + }, + "positionAbsolute": { + "x": -70.13327447982533, + "y": 2537.7304293708257 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "rH13NBFG02hnn5eABSNCY", + "type": "subtopic", + "position": { + "x": -70.13327447982533, + "y": 2590.7304293708257 + }, + "selected": false, + "data": { + "label": "Testing Pipes", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 272, + "height": 49, + "style": { + "width": 272 + }, + "positionAbsolute": { + "x": -70.13327447982533, + "y": 2590.7304293708257 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "4xt0m5jkUqB4Z-krcFBuL", + "type": "subtopic", + "position": { + "x": -70.13327447982533, + "y": 2643.7304293708257 + }, + "selected": false, + "data": { + "label": "Testing Requests", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 272, + "height": 49, + "style": { + "width": 272 + }, + "positionAbsolute": { + "x": -70.13327447982533, + "y": 2643.7304293708257 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "TGRZBizDy83JKg_MhnRdX", + "type": "subtopic", + "position": { + "x": -70.13327447982533, + "y": 2749.7304293708257 + }, + "selected": false, + "data": { + "label": "Services with Dependencies", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 272, + "height": 49, + "style": { + "width": 272, + "height": 49 + }, + "positionAbsolute": { + "x": -70.13327447982533, + "y": 2749.7304293708257 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "cXVy1lx2XqY_j8gxz-y60", + "type": "subtopic", + "position": { + "x": -70.13327447982533, + "y": 2910.7304293708257 + }, + "selected": false, + "data": { + "label": "Component Bindings", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 272, + "height": 49, + "style": { + "width": 272, + "height": 49 + }, + "positionAbsolute": { + "x": -70.13327447982533, + "y": 2910.7304293708257 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "SGqb5k6OmWit8PA6ZT3js", + "type": "subtopic", + "position": { + "x": -70.13327447982533, + "y": 2696.7304293708257 + }, + "selected": false, + "data": { + "label": "Testing Directives", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 272, + "height": 49, + "style": { + "width": 272 + }, + "positionAbsolute": { + "x": -70.13327447982533, + "y": 2696.7304293708257 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "f5v74Uw54LsB4FgdN6eCd", + "type": "subtopic", + "position": { + "x": -70.13327447982533, + "y": 2963.7304293708257 + }, + "selected": false, + "data": { + "label": "Debugging Tests", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 272, + "height": 49, + "style": { + "width": 272, + "height": 49 + }, + "positionAbsolute": { + "x": -70.13327447982533, + "y": 2963.7304293708257 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "0dYWO_Zvh9J5_6cRjRjvI", + "type": "subtopic", + "position": { + "x": -70.13327447982533, + "y": 3016.7304293708257 + }, + "selected": false, + "data": { + "label": "Component Templates", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 272, + "height": 49, + "style": { + "width": 272, + "height": 49 + }, + "positionAbsolute": { + "x": -70.13327447982533, + "y": 3016.7304293708257 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "bqA2bxPcZrqQ-6QE-YDK1", + "type": "subtopic", + "position": { + "x": -70.13327447982533, + "y": 3069.7304293708257 + }, + "selected": false, + "data": { + "label": "Code Coverage", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "0dYWO_Zvh9J5_6cRjRjvI" + }, + "zIndex": 999, + "width": 272, + "height": 49, + "style": { + "width": 272, + "height": 49 + }, + "positionAbsolute": { + "x": -70.13327447982533, + "y": 3069.7304293708257 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "Xxyx3uzy5TpNhgR1IysMN", + "type": "topic", + "position": { + "x": -335.63327447982533, + "y": 2829.7304293708257 + }, + "selected": false, + "data": { + "label": "Internationalization", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 199, + "height": 49, + "style": { + "width": 199, + "height": 49 + }, + "positionAbsolute": { + "x": -335.63327447982533, + "y": 2829.7304293708257 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "W8OwpEw00xn0GxidlJjdc", + "type": "subtopic", + "position": { + "x": -335.63327447982533, + "y": 2580.7304293708257 + }, + "selected": false, + "data": { + "label": "Localize Package", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 199, + "height": 49, + "style": { + "width": 199, + "height": 49 + }, + "positionAbsolute": { + "x": -335.63327447982533, + "y": 2580.7304293708257 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "dVKl3Z2Rnf6IB064v19Mi", + "type": "subtopic", + "position": { + "x": -335.63327447982533, + "y": 2633.7304293708257 + }, + "selected": false, + "data": { + "label": "Locales by ID", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 199, + "height": 49, + "style": { + "width": 199, + "height": 49 + }, + "positionAbsolute": { + "x": -335.63327447982533, + "y": 2633.7304293708257 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "jL5amGV1BAX_V5cyTIH7d", + "type": "subtopic", + "position": { + "x": -335.63327447982533, + "y": 2686.7304293708257 + }, + "selected": false, + "data": { + "label": "Translation Files", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 199, + "height": 49, + "style": { + "width": 199, + "height": 49 + }, + "positionAbsolute": { + "x": -335.63327447982533, + "y": 2686.7304293708257 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "9ISvaaJ815_cr_KW9vQhT", + "type": "subtopic", + "position": { + "x": -335.63327447982533, + "y": 2739.7304293708257 + }, + "selected": false, + "data": { + "label": "Multiple Locales", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 199, + "height": 49, + "style": { + "width": 199, + "height": 49 + }, + "positionAbsolute": { + "x": -335.63327447982533, + "y": 2739.7304293708257 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "rYJq59Q0YdfK6n3x740Em", + "type": "topic", + "position": { + "x": -345.16916540260297, + "y": 3172.93042937083 + }, + "selected": false, + "data": { + "label": "Animation", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 216, + "height": 49, + "style": { + "width": 216, + "height": 49 + }, + "positionAbsolute": { + "x": -345.16916540260297, + "y": 3172.93042937083 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "Iv2d4sgODqMPzA9gH6RAw", + "type": "subtopic", + "position": { + "x": -345.63327447982533, + "y": 2918.7304293708257 + }, + "selected": false, + "data": { + "label": "Transitions & Triggers", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 216, + "height": 49, + "style": { + "width": 216, + "height": 49 + }, + "positionAbsolute": { + "x": -345.63327447982533, + "y": 2918.7304293708257 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "Unjknmb4b2LY-nUVvvF7_", + "type": "subtopic", + "position": { + "x": -345.63327447982533, + "y": 2971.7304293708257 + }, + "selected": false, + "data": { + "label": "Complex Sequences", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 216, + "height": 49, + "style": { + "width": 216, + "height": 49 + }, + "positionAbsolute": { + "x": -345.63327447982533, + "y": 2971.7304293708257 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "M1CU2Yq6dLp4yOuGV0fhF", + "type": "subtopic", + "position": { + "x": -345.63327447982533, + "y": 3024.7304293708257 + }, + "selected": false, + "data": { + "label": "Reusable Animations", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 216, + "height": 49, + "style": { + "width": 216, + "height": 49 + }, + "positionAbsolute": { + "x": -345.63327447982533, + "y": 3024.7304293708257 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "x91jWP81oCTeVEwzX8FbK", + "type": "subtopic", + "position": { + "x": -345.63327447982533, + "y": 3077.7304293708257 + }, + "selected": false, + "data": { + "label": "Route Transitions", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 216, + "height": 49, + "style": { + "width": 216, + "height": 49 + }, + "positionAbsolute": { + "x": -345.63327447982533, + "y": 3077.7304293708257 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "width": 89, + "height": 49, + "id": "eRIUCGaDMDAz6kQYSN-AS", + "type": "button", + "position": { + "x": -292.49114007976596, + "y": 3373.8197767726365 + }, + "selected": false, + "data": { + "label": "Vue.js", + "href": "https://roadm.sh/vue", + "color": "#FFFFFf", + "backgroundColor": "#4136D4", + "style": { + "fontSize": 17 + }, + "borderColor": "#4136D4", + "oldId": "U0fJo2a3vnaodNJhfZ78I" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -292.49114007976596, + "y": 3373.8197767726365 + }, + "style": {}, + "focusable": true, + "resizing": false, + "selectable": true + }, + { + "id": "4IpVbs5l5Qz-pw_WAFaPH", + "type": "linksgroup", + "position": { + "x": -523.7433266387567, + "y": -244.76957062917046 + }, + "selected": false, + "data": { + "label": "", + "links": [ + { + "id": "hzJfebcalqROLYAvmHsee", + "label": "JavaScript Roadmap", + "href": "", + "url": "https://roadmap.sh/javascript" }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "197", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "45", - "measuredH": "25", - "x": "76", - "y": "12", - "properties": { - "size": "17", - "text": "Scully" - } - } - ] - } - } - }, - { - "ID": "3108", - "typeID": "__group__", - "zOrder": "140", - "measuredW": "274", - "measuredH": "57", - "w": "274", - "h": "57", - "x": "587", - "y": "222", - "properties": { - "controlName": "ext_link:roadmap.sh/javascript" + { + "id": "CsdVEytvzSdpIeO3so7Or", + "label": "TypeScript Roadmap", + "url": "https://roadmap.sh/typescript" }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "274", - "h": "57", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "borderColor": "4273622", - "color": "4273622" - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "1", - "measuredW": "188", - "measuredH": "28", - "x": "43", - "y": "15", - "properties": { - "color": "16777215", - "size": "20", - "text": "JavaScript Roadmap" - } - } - ] - } - } - }, - { - "ID": "3109", - "typeID": "__group__", - "zOrder": "141", - "measuredW": "300", - "measuredH": "141", - "w": "300", - "h": "141", - "x": "230", - "y": "170", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "300", - "h": "141", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "__group__", - "zOrder": "1", - "measuredW": "151", - "measuredH": "25", - "w": "151", - "h": "25", - "x": "23", - "y": "62", - "properties": { - "controlName": "ext_link:roadmap.sh/react" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Label", - "zOrder": "0", - "measuredW": "118", - "measuredH": "24", - "x": "33", - "y": "0", - "properties": { - "size": "16", - "text": "React Roadmap" - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "1", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10066329" - } - } - ] - } - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "175", - "measuredH": "28", - "x": "25", - "y": "21", - "properties": { - "size": "20", - "text": "Related Roadmaps" - } - }, - { - "ID": "3", - "typeID": "__group__", - "zOrder": "3", - "measuredW": "136", - "measuredH": "25", - "w": "136", - "h": "25", - "x": "23", - "y": "95", - "properties": { - "controlName": "ext_link:roadmap.sh/vue" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Label", - "zOrder": "0", - "measuredW": "103", - "measuredH": "24", - "x": "33", - "y": "0", - "properties": { - "size": "16", - "text": "Vue Roadmap" - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "1", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10066329" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "3110", - "typeID": "__group__", - "zOrder": "142", - "measuredW": "227", - "measuredH": "50", - "w": "227", - "h": "50", - "x": "230", - "y": "2046", - "properties": { - "controlName": "103-creating-a-custom-x:standalone-component" + { + "id": "7rPkH1iD0bKSMQiczroYV", + "label": "React Roadmap", + "url": "https://roadmap.sh/react" }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "227", - "h": "50", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "182", - "measuredH": "25", - "x": "23", - "y": "12", - "properties": { - "size": "17", - "text": "Standalone Component" - } - } - ] - } - } - } - ] - }, - "attributes": { - "name": "New Wireframe 1 copy 8", - "order": 1000000.6428282561, - "parentID": null, - "notes": "" - }, - "branchID": "Master", - "resourceID": "960B5EDB-5533-4531-9B7D-06B4366EBEAE", - "mockupH": "2529", - "mockupW": "1030", - "measuredW": "1260", - "measuredH": "2659", - "version": "1.0" - }, - "groupOffset": { - "x": 0, - "y": 0 - }, - "dependencies": [], - "projectID": "file:///Users/kamrify/Desktop/New%20Roadmaps/Android%20Roadmap.bmpr" + { + "id": "NKONoOeOrflmwinWXCtQ-", + "label": "Vue Roadmap", + "url": "https://roadmap.sh/vue" + } + ] + }, + "zIndex": 999, + "width": 279, + "height": 156, + "positionAbsolute": { + "x": -523.7433266387567, + "y": -244.76957062917046 + }, + "dragging": false, + "style": { + "width": 279, + "height": 156 + }, + "resizing": false + } + ], + "edges": [ + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "M0aRyhxjzTWUOW95D1g1y", + "selected": false, + "type": "smoothstep", + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "Xw4lLz2zWuTkNu8r4oheF", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "mbCXMk97_HKXG3d4TxBOC", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "iogwMmOvub2ZF4zgg6WyF", + "sourceHandle": "x2", + "target": "DAwKHBng7Tytlcd2_8GOR", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-iogwMmOvub2ZF4zgg6WyFx2-DAwKHBng7Tytlcd2_8GORw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "DAwKHBng7Tytlcd2_8GOR", + "sourceHandle": "x2", + "target": "KDd40JOAvZ8O1mfhTYB3K", + "targetHandle": "w2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-DAwKHBng7Tytlcd2_8GORx2-KDd40JOAvZ8O1mfhTYB3Kw2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "KDd40JOAvZ8O1mfhTYB3K", + "sourceHandle": "z2", + "target": "EbFRcy4s6yzzIApBqU77Y", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-KDd40JOAvZ8O1mfhTYB3Kz2-EbFRcy4s6yzzIApBqU77Yy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "KDd40JOAvZ8O1mfhTYB3K", + "sourceHandle": "z2", + "target": "hpShWwL0M57ZAzqkB4I8t", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-KDd40JOAvZ8O1mfhTYB3Kz2-hpShWwL0M57ZAzqkB4I8ty1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "KDd40JOAvZ8O1mfhTYB3K", + "sourceHandle": "z2", + "target": "DE3cMpeRYuUPw2ADtfS-3", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-KDd40JOAvZ8O1mfhTYB3Kz2-DE3cMpeRYuUPw2ADtfS-3y1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "KDd40JOAvZ8O1mfhTYB3K", + "sourceHandle": "x2", + "target": "zv1y-I1fIEXtTkb8tOQU0", + "targetHandle": "w2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-KDd40JOAvZ8O1mfhTYB3Kx2-zv1y-I1fIEXtTkb8tOQU0w2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "zv1y-I1fIEXtTkb8tOQU0", + "sourceHandle": "x2", + "target": "kGnKzCkQCNFEdgCBRtNuW", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-zv1y-I1fIEXtTkb8tOQU0x2-kGnKzCkQCNFEdgCBRtNuWw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "kGnKzCkQCNFEdgCBRtNuW", + "sourceHandle": "z2", + "target": "b_kdNS9PDupcUftslkf9i", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-kGnKzCkQCNFEdgCBRtNuWz2-b_kdNS9PDupcUftslkf9iy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "b_kdNS9PDupcUftslkf9i", + "sourceHandle": "x2", + "target": "6fhe9xAi_RSVfa-KKbcbV", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-b_kdNS9PDupcUftslkf9ix2-6fhe9xAi_RSVfa-KKbcbVw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "6fhe9xAi_RSVfa-KKbcbV", + "sourceHandle": "x2", + "target": "kGzlumFdZFxTRZ3HnCGFO", + "targetHandle": "w2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-6fhe9xAi_RSVfa-KKbcbVx2-kGzlumFdZFxTRZ3HnCGFOw2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "kGzlumFdZFxTRZ3HnCGFO", + "sourceHandle": "x2", + "target": "a74v78SvGtWduZpXs7wSq", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-kGzlumFdZFxTRZ3HnCGFOx2-a74v78SvGtWduZpXs7wSqw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "a74v78SvGtWduZpXs7wSq", + "sourceHandle": "y2", + "target": "CpsoIVoCKaZnM_-BbXbCh", + "targetHandle": "z2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-a74v78SvGtWduZpXs7wSqy2-CpsoIVoCKaZnM_-BbXbChz2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "CpsoIVoCKaZnM_-BbXbCh", + "sourceHandle": "x2", + "target": "8u9uHCRt9RU57erBy79PP", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-CpsoIVoCKaZnM_-BbXbChx2-8u9uHCRt9RU57erBy79PPw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "CpsoIVoCKaZnM_-BbXbCh", + "sourceHandle": "y2", + "target": "Q36LQds8k_cSjijvXyWOM", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-CpsoIVoCKaZnM_-BbXbChy2-Q36LQds8k_cSjijvXyWOMz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "Q36LQds8k_cSjijvXyWOM", + "sourceHandle": "z2", + "target": "8UY0HAvjY7bdbFpt-MM1u", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-Q36LQds8k_cSjijvXyWOMz2-8UY0HAvjY7bdbFpt-MM1uy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "8UY0HAvjY7bdbFpt-MM1u", + "sourceHandle": "x2", + "target": "AKPhbg10xXjccO7UBh5eJ", + "targetHandle": "w2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-8UY0HAvjY7bdbFpt-MM1ux2-AKPhbg10xXjccO7UBh5eJw2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "8UY0HAvjY7bdbFpt-MM1u", + "sourceHandle": "z2", + "target": "lfp7PIjwITU5gBITQdirD", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-8UY0HAvjY7bdbFpt-MM1uz2-lfp7PIjwITU5gBITQdirDy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "lfp7PIjwITU5gBITQdirD", + "sourceHandle": "z2", + "target": "krXA6ua7E3m4IIpFkgQZe", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-lfp7PIjwITU5gBITQdirDz2-krXA6ua7E3m4IIpFkgQZew1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "u1TG8i145o0RKhOR_5epf", + "sourceHandle": "y2", + "target": "Mqe_s-nwBqAL6X7OGRHEN", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-u1TG8i145o0RKhOR_5epfy2-Mqe_s-nwBqAL6X7OGRHENz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "Mqe_s-nwBqAL6X7OGRHEN", + "sourceHandle": "y2", + "target": "m4WBnx_9h01Jl6Q1sxi4Y", + "targetHandle": "z2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-Mqe_s-nwBqAL6X7OGRHENy2-m4WBnx_9h01Jl6Q1sxi4Yz2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "EbJib-XfZFF9bpCtL3aBs", + "sourceHandle": "z2", + "target": "jfHaS8TqE4tcAo59K8Nkn", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-EbJib-XfZFF9bpCtL3aBsz2-jfHaS8TqE4tcAo59K8Nkny1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "jfHaS8TqE4tcAo59K8Nkn", + "sourceHandle": "x2", + "target": "b-0yQ74zHtAxI9aRLBohc", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-jfHaS8TqE4tcAo59K8Nknx2-b-0yQ74zHtAxI9aRLBohcw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "b-0yQ74zHtAxI9aRLBohc", + "sourceHandle": "z2", + "target": "kauQofxCmpktXPcnzid17", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-b-0yQ74zHtAxI9aRLBohcz2-kauQofxCmpktXPcnzid17y2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "EbJib-XfZFF9bpCtL3aBs", + "sourceHandle": "z2", + "target": "T3MmS3bvMMgCUbOk3ktU7", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-EbJib-XfZFF9bpCtL3aBsz2-T3MmS3bvMMgCUbOk3ktU7w1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "b-0yQ74zHtAxI9aRLBohc", + "sourceHandle": "x2", + "target": "mm6c7GLQEwoQdAHdAYzGh", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-b-0yQ74zHtAxI9aRLBohcx2-mm6c7GLQEwoQdAHdAYzGhw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "mm6c7GLQEwoQdAHdAYzGh", + "sourceHandle": "z2", + "target": "VNG9DdXlS6R1OJ6Lrn4Lt", + "targetHandle": "y2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-mm6c7GLQEwoQdAHdAYzGhz2-VNG9DdXlS6R1OJ6Lrn4Lty2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "VNG9DdXlS6R1OJ6Lrn4Lt", + "sourceHandle": "z2", + "target": "0FvH7KPs9ag02QkD1HEJ-", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-VNG9DdXlS6R1OJ6Lrn4Ltz2-0FvH7KPs9ag02QkD1HEJ-y2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "VNG9DdXlS6R1OJ6Lrn4Lt", + "sourceHandle": "z2", + "target": "CZ1YRyai8Ds-ry4A8jVbr", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-VNG9DdXlS6R1OJ6Lrn4Ltz2-CZ1YRyai8Ds-ry4A8jVbry1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "VNG9DdXlS6R1OJ6Lrn4Lt", + "sourceHandle": "z2", + "target": "0s-QhN5aZh2F3tLJFKEyR", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-VNG9DdXlS6R1OJ6Lrn4Ltz2-0s-QhN5aZh2F3tLJFKEyRy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "VNG9DdXlS6R1OJ6Lrn4Lt", + "sourceHandle": "z2", + "target": "8i_JD1P4gIhY1rdldwLC2", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-VNG9DdXlS6R1OJ6Lrn4Ltz2-8i_JD1P4gIhY1rdldwLC2y2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "VNG9DdXlS6R1OJ6Lrn4Lt", + "sourceHandle": "z2", + "target": "5-RCB8AiDbkdIFYNXKWge", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-VNG9DdXlS6R1OJ6Lrn4Ltz2-5-RCB8AiDbkdIFYNXKWgey1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "lLa-OnHV6GzkNFZu29BIT", + "sourceHandle": "y2", + "target": "Xxyx3uzy5TpNhgR1IysMN", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-lLa-OnHV6GzkNFZu29BITy2-Xxyx3uzy5TpNhgR1IysMNz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "Xxyx3uzy5TpNhgR1IysMN", + "sourceHandle": "w2", + "target": "9ISvaaJ815_cr_KW9vQhT", + "targetHandle": "x2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-Xxyx3uzy5TpNhgR1IysMNw2-9ISvaaJ815_cr_KW9vQhTx2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "rYJq59Q0YdfK6n3x740Em", + "sourceHandle": "w2", + "target": "x91jWP81oCTeVEwzX8FbK", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-rYJq59Q0YdfK6n3x740Emw2-x91jWP81oCTeVEwzX8FbKx1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "rYJq59Q0YdfK6n3x740Em", + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-rYJq59Q0YdfK6n3x740Emx2-GV_zWF6rSWg5bqgiXhOEfw1", + "selected": false, + "selectable": true, + "focusable": true + } + ] } \ No newline at end of file diff --git a/src/data/roadmaps/angular/angular.md b/src/data/roadmaps/angular/angular.md index df1631662..bd597dc95 100644 --- a/src/data/roadmaps/angular/angular.md +++ b/src/data/roadmaps/angular/angular.md @@ -1,7 +1,8 @@ --- jsonUrl: '/jsons/roadmaps/angular.json' pdfUrl: '/pdfs/roadmaps/angular.pdf' -order: 3 +renderer: 'editor' +order: 4 briefTitle: 'Angular' briefDescription: 'Step by step guide to become a Angular Developer in 2024' title: 'Angular Developer' @@ -9,7 +10,7 @@ description: 'Everything that is there to learn about Angular and the ecosystem hasTopics: true dimensions: width: 968 - height: 2277.8 + height: 3330 schema: headline: 'Angular Developer Roadmap' description: 'Learn how to become a Angular Developer with this interactive step by step guide in 2024. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' diff --git a/src/data/roadmaps/angular/content/100-typescript-basics/100-what-is-typescript.md b/src/data/roadmaps/angular/content/100-typescript-basics/100-what-is-typescript.md deleted file mode 100644 index 2601ea6b7..000000000 --- a/src/data/roadmaps/angular/content/100-typescript-basics/100-what-is-typescript.md +++ /dev/null @@ -1,11 +0,0 @@ -# What is Typescript - -TypeScript is a strongly typed, object-oriented, compiled programming language that builds on JavaScript. It is a superset of the JavaScript language, designed to give you better tooling at any scale. TypeScript calls itself “JavaScript with syntax for types.” In short, it is JavaScript with some additional features. The secret to the success of TypeScript is in the type checking, ensuring that the data flowing through the program is of the correct kind of data. - -Visit the following resources to learn more: - -- [@article@What is TypeScript](https://thenewstack.io/what-is-typescript/) -- [@article@W3Schools – TypeScript Tutorial](https://www.w3schools.com/typescript/) -- [@article@Tutorials point – TypeScript Tutorial](https://www.tutorialspoint.com/typescript/index.htm) -- [@video@TypeScript Crash Course for Beginners](https://www.youtube.com/watch?v=d56mG7DezGs) -- [@feed@Explore top posts about TypeScript](https://app.daily.dev/tags/typescript?ref=roadmapsh) diff --git a/src/data/roadmaps/angular/content/100-typescript-basics/101-why-use-typescript.md b/src/data/roadmaps/angular/content/100-typescript-basics/101-why-use-typescript.md deleted file mode 100644 index 0dad5c2df..000000000 --- a/src/data/roadmaps/angular/content/100-typescript-basics/101-why-use-typescript.md +++ /dev/null @@ -1,15 +0,0 @@ -# Why use TypeScript - -TypeScript extends JavaScript, providing a better developer experience. The benefits of using TypeScript over JavaScript include: - -- **Static typing** – TypeScript comes with optional static typing and a type inference system, which means that a variable declared with no type may be inferred by TypeScript based on its value. -- **Object-oriented programming** – TypeScript supports object-oriented programming concepts like classes, inheritance, etc. -- **Compile time checks** – JavaScript is an interpreted programming language. There is no compilation involved. Hence, the errors get caught during the runtime. Since TypeScript compiles into JavaScript, errors get reported during the compile time rather than the runtime. -- **Code editor support** – IDEs or code editors like VS Code support autocomplete for a TypeScript codebase. They also provide inline documentation and highlight the errors. -- **Integration with existing JavaScript Packages** – You might want to use an npm package written in JavaScript. Since TypeScript is a superset of JavaScript, you can import and use that package. Moreover, the TypeScript community creates and maintains type definitions for popular packages that can be utilized in your project. - -Visit the following resources to learn more: - -- [@article@linguinecode - Reasons to use TypeScript](https://linguinecode.com/post/5-reasons-why-to-use-typescript) -- [@article@Codemotion - Reasons to use TypeScript](https://www.codemotion.com/magazine/backend/why-you-should-use-typescript-for-your-next-project/) -- [@feed@Explore top posts about TypeScript](https://app.daily.dev/tags/typescript?ref=roadmapsh) diff --git a/src/data/roadmaps/angular/content/100-typescript-basics/102-structural-typing.md b/src/data/roadmaps/angular/content/100-typescript-basics/102-structural-typing.md deleted file mode 100644 index 433c8a7c7..000000000 --- a/src/data/roadmaps/angular/content/100-typescript-basics/102-structural-typing.md +++ /dev/null @@ -1,11 +0,0 @@ -# Structural Typing - -Type compatibility in TypeScript is based on structural subtyping. `Structural typing` is a way of relating types based solely on their members. This is in contrast with nominal typing. - -TypeScript’s structural type system was designed based on how JavaScript code is typically written. Because JavaScript widely uses anonymous objects like function expressions and object literals, it’s much more natural to represent the relationships found in JavaScript libraries with a structural type system instead of a nominal one. - -Visit the following resources to learn more: - -- [@article@Structural typings — Medium](https://medium.com/redox-techblog/structural-typing-in-typescript-4b89f21d6004) -- [@article@Structural typings — Typescriptlang](https://www.typescriptlang.org/docs/handbook/type-compatibility.html) -- [@video@Structural typing video for Beginners](https://www.youtube.com/watch?v=kWtwsX_rT3k) diff --git a/src/data/roadmaps/angular/content/100-typescript-basics/103-type-inference.md b/src/data/roadmaps/angular/content/100-typescript-basics/103-type-inference.md deleted file mode 100644 index 2a9c015c4..000000000 --- a/src/data/roadmaps/angular/content/100-typescript-basics/103-type-inference.md +++ /dev/null @@ -1,8 +0,0 @@ -# Type Inference - -In TypeScript, several places where `type inference` is used to provide type information when there is no explicit type annotation. The type of the x variable is inferred to be a number. This inference occurs when variables and members are initialized, set parameter default values are, and determine function return types. For example, `let x: number`. In most cases, type inference is straightforward. In the following sections, we’ll explore some nuances in how types are inferred. For example, `let x: (number | null)[]` - -Visit the following resources to learn more: - -- [@article@Type Inference - typescriptlang](https://www.typescriptlang.org/docs/handbook/type-inference.html) -- [@video@Type Inference video for Beginners](https://www.youtube.com/watch?v=3ui_st7rtfA) diff --git a/src/data/roadmaps/angular/content/100-typescript-basics/104-union-types.md b/src/data/roadmaps/angular/content/100-typescript-basics/104-union-types.md deleted file mode 100644 index cbc4cdc43..000000000 --- a/src/data/roadmaps/angular/content/100-typescript-basics/104-union-types.md +++ /dev/null @@ -1,9 +0,0 @@ -# Union Types - -In TypeScript, we can define a variable that can have multiple types of values. In other words, TypeScript can combine one or two types of data (i.e., number, string, etc.) in a single type, a union type. Union types are a powerful way to express a variable with multiple types. Two or more data types can be combined using the pipe ('|') symbol between the types. For example, `(type1 | type2 | type3 | .. | typeN)`. - -Visit the following resources to learn more: - -- [@article@Union Types - typescriptlang](https://www.typescriptlang.org/docs/handbook/unions-and-intersections.html) -- [@video@Union Type video for Beginners](https://www.youtube.com/watch?v=uxjpm4W5pCo) -- [@article@Union Types - typescriptlang](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#union-types) \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/100-typescript-basics/105-builtin-types.md b/src/data/roadmaps/angular/content/100-typescript-basics/105-builtin-types.md deleted file mode 100644 index 8618e3f72..000000000 --- a/src/data/roadmaps/angular/content/100-typescript-basics/105-builtin-types.md +++ /dev/null @@ -1,8 +0,0 @@ -# Builtin Types - -The Builtin types represent the different types of values supported by the language. The builtin types check the validity of the supplied values before they are stored or manipulated by the program. This ensures that the code behaves as expected. The Builtin types further allow for richer code hinting and automated documentation too. - -Visit the following resources to learn more: - -- [@article@TypeScript Types - Tutorialspoint](https://www.tutorialspoint.com/typescript/typescript_types.htm) -- [@video@Builtin Type video for Beginners](https://www.youtube.com/watch?v=Nt9ajBrqV_M) diff --git a/src/data/roadmaps/angular/content/100-typescript-basics/106-type-guard.md b/src/data/roadmaps/angular/content/100-typescript-basics/106-type-guard.md deleted file mode 100644 index b7281fe47..000000000 --- a/src/data/roadmaps/angular/content/100-typescript-basics/106-type-guard.md +++ /dev/null @@ -1,12 +0,0 @@ -# Type Guard - -A type guard is a TypeScript technique used to get information about the type of a variable, usually within a conditional block. Type guards are regular functions that return a boolean, taking a type and telling TypeScript if it can be narrowed down to something more specific. Type guards have the unique property of assuring that the value tested is of a set type depending on the returned boolean. - -TypeScript uses built-in JavaScript operators like `typeof`, `instanceof`, and the `in` operator, which is used to determine if an object contains a property. Type guards enable you to instruct the TypeScript compiler to infer a specific type for a variable in a particular context, ensuring that the type of an argument is what you say it is. - -Type guards are typically used for narrowing a type and are pretty similar to feature detection, allowing you to detect the correct methods, prototypes, and properties of a value. Therefore, you can quickly figure out how to handle that value. - -Visit the following resources to learn more: - -- [@article@Types Guards - Blog](https://blog.logrocket.com/how-to-use-type-guards-typescript/) -- [@video@TypeScript Type Guards Explained](https://www.youtube.com/watch?v=FEeEItMtDwg) \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/100-typescript-basics/index.md b/src/data/roadmaps/angular/content/100-typescript-basics/index.md deleted file mode 100644 index 00198da53..000000000 --- a/src/data/roadmaps/angular/content/100-typescript-basics/index.md +++ /dev/null @@ -1,9 +0,0 @@ -# Typescript Basics - -In order to enter into the world of Angular application development, typescript is necessary and it is the primary language here. Typescript is a superset of JavaScript. It comes with design-time support which is useful for type safety and tooling. Since, browsers cannot execute the TypeScript directly, it will be 'Transpiled' into JavaScript using the tsc compiler. - -Visit the following resources to learn more: - -- [@article@Typescript a Beginners Guide](https://medium.com/jspoint/typescript-a-beginners-guide-6956fe8bcf9e) -- [@article@TypeScript Playground](https://www.typescriptlang.org/play) -- [@feed@Explore top posts about TypeScript](https://app.daily.dev/tags/typescript?ref=roadmapsh) diff --git a/src/data/roadmaps/angular/content/101-rxjs-basics/102-marble-diagrams.md b/src/data/roadmaps/angular/content/101-rxjs-basics/102-marble-diagrams.md deleted file mode 100644 index 8d0f4ca10..000000000 --- a/src/data/roadmaps/angular/content/101-rxjs-basics/102-marble-diagrams.md +++ /dev/null @@ -1,10 +0,0 @@ -# Marble Diagrams - -Marble testing allows you to test asynchronous RxJS code synchronously and step-by-step with the help of RxJS TestScheduler test utility and using virtual time steps. - -Visit the following resources to learn more: - -- [@article@Understanding Marble Diagrams for Reactive Streams](https://medium.com/@jshvarts/read-marble-diagrams-like-a-pro-3d72934d3ef5) -- [@article@Interactive Diagrams](https://rxmarbles.com/#from) -- [@video@How to Read RxJS Marble Diagrams](https://www.youtube.com/watch?v=m6jkzIHMEdg) -- [@video@Observables Part 4 - Marble Diagrams](https://www.youtube.com/watch?v=wXcPenSfdo0) diff --git a/src/data/roadmaps/angular/content/102-angular-basics/100-angularjs-vs-angular.md b/src/data/roadmaps/angular/content/102-angular-basics/100-angularjs-vs-angular.md deleted file mode 100644 index c30d6886f..000000000 --- a/src/data/roadmaps/angular/content/102-angular-basics/100-angularjs-vs-angular.md +++ /dev/null @@ -1,9 +0,0 @@ -# AngularJS vs. Angular - -AngularJS was the older version of Angular, whose support officially ended in January 2022. Angular is a component-based front-end development framework built on TypeScript, which includes a collection of well-integrated libraries that include features like routing, forms management, client-server communication, and more. - -Visit the following resources to learn more: - -- [@official@AngularJS Website](https://angularjs.org/) -- [@official@Official - Welcome to the Angular tutorial](https://angular.dev/tutorials/learn-angular) -- [@feed@Explore top posts about Angular](https://app.daily.dev/tags/angular?ref=roadmapsh) diff --git a/src/data/roadmaps/angular/content/102-angular-basics/index.md b/src/data/roadmaps/angular/content/102-angular-basics/index.md deleted file mode 100644 index 049bbe2ed..000000000 --- a/src/data/roadmaps/angular/content/102-angular-basics/index.md +++ /dev/null @@ -1,5 +0,0 @@ -# Angular Basics - -Angular is an strong front-end JavaScript framework which means that it enforces a certain style of application development and project structure that developers need to follow to develop apps with Angular. However, it also offers enough flexibility to allow you to structure your project in an understandable and manageable manner. - -In this module, we will have a look at some of the most basic concepts that you need to understand before diving into the framework with more advanced concepts. diff --git a/src/data/roadmaps/angular/content/103-angular-cli/100-ng-build.md b/src/data/roadmaps/angular/content/103-angular-cli/100-ng-build.md deleted file mode 100644 index 72da2e4f0..000000000 --- a/src/data/roadmaps/angular/content/103-angular-cli/100-ng-build.md +++ /dev/null @@ -1,8 +0,0 @@ -# Ng build - -The command can be used to build a project of type "application" or "library". When used to build a library, a different builder is invoked, and only the ts-config, configuration, and watch options are applied. All other options apply only to building applications. - -Visit the following resources to learn more: - -- [@official@Angular CLI - ng build](https://angular.dev/cli/build) -- [@video@Building an Angular project](https://www.youtube.com/watch?v=VB6WuCPDwz0) diff --git a/src/data/roadmaps/angular/content/103-angular-cli/101-ng-serve.md b/src/data/roadmaps/angular/content/103-angular-cli/101-ng-serve.md deleted file mode 100644 index 75249d6e6..000000000 --- a/src/data/roadmaps/angular/content/103-angular-cli/101-ng-serve.md +++ /dev/null @@ -1,8 +0,0 @@ -# Ng serve - -ng serve — This command builds, deploy, serves and every time watches your code changes. if find any change in code it builds and serves that code automatically. How do Angular builds? After coding our Angular apps using TypeScript, we use the Angular CLI command to build the app. - -Visit the following resources to learn more: - -- [@official@Angular CLI - ng serve](https://angular.dev/cli/serve) -- [@video@Running a project with ng serve](https://www.youtube.com/watch?v=-w-RfHcLt5U) diff --git a/src/data/roadmaps/angular/content/103-angular-cli/102-ng-generate.md b/src/data/roadmaps/angular/content/103-angular-cli/102-ng-generate.md deleted file mode 100644 index 349a947be..000000000 --- a/src/data/roadmaps/angular/content/103-angular-cli/102-ng-generate.md +++ /dev/null @@ -1,8 +0,0 @@ -# Ng generate - -ng generate is used to create the component in angular project. These are the two main ways to generate a new component in Angular: using ng g c , and using ng generate component . Using either of these two commands, the new component can be generated pretty easily and followed by the suitable component name of your choice. - -Visit the following resources to learn more: - -- [@official@Angular CLI - ng generate](https://angular.dev/cli/generate) -- [@video@Angular cli generate component](https://www.youtube.com/watch?v=NlHlu_zzmo4) diff --git a/src/data/roadmaps/angular/content/103-angular-cli/103-ng-test.md b/src/data/roadmaps/angular/content/103-angular-cli/103-ng-test.md deleted file mode 100644 index ba49aa17f..000000000 --- a/src/data/roadmaps/angular/content/103-angular-cli/103-ng-test.md +++ /dev/null @@ -1,10 +0,0 @@ -# Ng test - -ng test is used to runs unit tests in angular project. - -`ng test [options]` | `ng t [options]` - -Visit the following resources to learn more: - -- [@official@Angular CLI - ng test](https://angular.dev/cli/test) -- [@video@Angular Ng test commands](https://www.youtube.com/watch?v=n1O_eRwzRKA) diff --git a/src/data/roadmaps/angular/content/103-angular-cli/104-ng-e2e.md b/src/data/roadmaps/angular/content/103-angular-cli/104-ng-e2e.md deleted file mode 100644 index 5cffa2667..000000000 --- a/src/data/roadmaps/angular/content/103-angular-cli/104-ng-e2e.md +++ /dev/null @@ -1,9 +0,0 @@ -# Ng e2e - -End-to-end testing (E2E) of Angular applications is performed using the Protractor testing framework, which is created by the Angular team themselves. Protractor can perform end to end tests on Angular applications that are running in a real browser by interacting with it, similar to that of an end-user. - -Visit the following resources to learn more: - -- [@official@Angular CLI - ng e2e](https://angular.dev/cli/e2e) -- [@video@Angular cli generate component](https://www.youtube.com/watch?v=3vFnhzEGfew) -- [@feed@Explore top posts about Testing](https://app.daily.dev/tags/testing?ref=roadmapsh) diff --git a/src/data/roadmaps/angular/content/103-angular-cli/105-ng-new.md b/src/data/roadmaps/angular/content/103-angular-cli/105-ng-new.md deleted file mode 100644 index 823033b85..000000000 --- a/src/data/roadmaps/angular/content/103-angular-cli/105-ng-new.md +++ /dev/null @@ -1,12 +0,0 @@ -# Ng new - -`$ ng new [name]` - -That’s the default usage of the command and creating a new project folder with name. The project which is created in that folder is containing: - -The default Angular project, All dependencies installed in node_modules folder , Testing files for each components - -Visit the following resources to learn more: - -- [@official@Angular CLI - ng new](https://angular.dev/cli/new) -- [@video@ng New command](https://www.youtube.com/watch?v=NdEpZezptkQ) diff --git a/src/data/roadmaps/angular/content/104-templates/index.md b/src/data/roadmaps/angular/content/104-templates/index.md deleted file mode 100644 index 22a239597..000000000 --- a/src/data/roadmaps/angular/content/104-templates/index.md +++ /dev/null @@ -1,7 +0,0 @@ -# Templates - -A template is a form of HTML that tells Angular how to render the component. - -Visit the following resources to learn more: - -- [@official@Anatomy of a component](https://angular.dev/guide/components) diff --git a/src/data/roadmaps/angular/content/105-rendering-topics/index.md b/src/data/roadmaps/angular/content/105-rendering-topics/index.md deleted file mode 100644 index 376c9920b..000000000 --- a/src/data/roadmaps/angular/content/105-rendering-topics/index.md +++ /dev/null @@ -1 +0,0 @@ -# Rendering topics diff --git a/src/data/roadmaps/angular/content/107-routing/index.md b/src/data/roadmaps/angular/content/107-routing/index.md deleted file mode 100644 index 1c661cffb..000000000 --- a/src/data/roadmaps/angular/content/107-routing/index.md +++ /dev/null @@ -1,8 +0,0 @@ -# Routing - -Routing in Angular allows the users to create a single-page application with multiple views and navigation between them. Users can switch between these views without losing the application state and properties. - -Visit the following resources to learn more: - -- [@official@Angular Routing](https://angular.dev/guide/routing) -- [@video@Angular Tutorial - Routing and Navigation](https://www.youtube.com/watch?v=Nehk4tBxD4o) diff --git a/src/data/roadmaps/angular/content/108-services-remote-data/100-dependency-injection.md b/src/data/roadmaps/angular/content/108-services-remote-data/100-dependency-injection.md deleted file mode 100644 index 7f4c9db73..000000000 --- a/src/data/roadmaps/angular/content/108-services-remote-data/100-dependency-injection.md +++ /dev/null @@ -1,9 +0,0 @@ -# Dependency Injection - -Dependency Injection (DI) is a design pattern that creates the dependencies of a class and provides those objects to the class when required. Angular being a nice framework, provides a built-in dependency injection mechanism that creates and provides a runtime version of a dependency value using dependency injectors. - -Visit the following resources to learn more: - -- [@official@Understanding dependency injection](https://angular.dev/guide/di/dependency-injection) -- [@video@Introduction of Dependency injection](https://www.youtube.com/watch?v=OFPIGlxunL0) -- [@feed@Explore top posts about Dependency Injection](https://app.daily.dev/tags/dependency-injection?ref=roadmapsh) diff --git a/src/data/roadmaps/angular/content/108-services-remote-data/index.md b/src/data/roadmaps/angular/content/108-services-remote-data/index.md deleted file mode 100644 index 7bf0b74c5..000000000 --- a/src/data/roadmaps/angular/content/108-services-remote-data/index.md +++ /dev/null @@ -1,8 +0,0 @@ -# Services - -Components shouldn't fetch or save data directly and shouldn't knowingly present fake data. They should focus on presenting data and delegate data access to a service. Service is where all the remote API calls exist to retrieve and provide data to components. - -Visit the following resources to learn more: - -- [@official@Creating an injectable service](https://angular.dev/guide/di/creating-injectable-service) -- [@official@Understanding communicating with backend services using HTTP](https://angular.dev/guide/http) diff --git a/src/data/roadmaps/angular/content/112-creating-a-custom-x/103-standalone-component.md b/src/data/roadmaps/angular/content/112-creating-a-custom-x/103-standalone-component.md deleted file mode 100644 index 284500d24..000000000 --- a/src/data/roadmaps/angular/content/112-creating-a-custom-x/103-standalone-component.md +++ /dev/null @@ -1,7 +0,0 @@ -# Standalone Component - -Standalone components provide a simplified way to build Angular applications. Standalone components, directives, and pipes aim to streamline the authoring experience by reducing the need for NgModules. Existing applications can optionally and incrementally adopt the new standalone style without any breaking changes. - -Visit the following resources to learn more: - -- [@official@Angular Website](https://angular.dev/guide/components/importing) diff --git a/src/data/roadmaps/angular/content/112-creating-a-custom-x/index.md b/src/data/roadmaps/angular/content/112-creating-a-custom-x/index.md deleted file mode 100644 index 686af4877..000000000 --- a/src/data/roadmaps/angular/content/112-creating-a-custom-x/index.md +++ /dev/null @@ -1,3 +0,0 @@ -# Creating a custom X - -Learn how to create custom pipes, libraries and directives in Angular. diff --git a/src/data/roadmaps/angular/content/113-angular-ssr/100-angular-universal.md b/src/data/roadmaps/angular/content/113-angular-ssr/100-angular-universal.md deleted file mode 100644 index ce1788159..000000000 --- a/src/data/roadmaps/angular/content/113-angular-ssr/100-angular-universal.md +++ /dev/null @@ -1,9 +0,0 @@ -# Angular universal - -Angular Universal also known as server-side rendering is tool which allows server to pre-render Angular application while user hits your website for first time. - -Visit the following resources to learn more: - -- [@official@Angular Website](https://angular.dev/guide/ssr) -- [@opensource@Github Repository](https://github.com/angular/universal) -- [@feed@Explore top posts about Angular](https://app.daily.dev/tags/angular?ref=roadmapsh) diff --git a/src/data/roadmaps/angular/content/114-angular-ssg/100-scully.md b/src/data/roadmaps/angular/content/114-angular-ssg/100-scully.md deleted file mode 100644 index 15cd8a6ee..000000000 --- a/src/data/roadmaps/angular/content/114-angular-ssg/100-scully.md +++ /dev/null @@ -1,8 +0,0 @@ -# Scully - -Scully is the best static site generator for Angular projects looking to embrace the Jamstack. It will use your application and will create a static index. html for each of your pages/routes. - -Visit the following resources to learn more: - -- [@official@Scully Website](https://scully.io/) -- [@opensource@Github Repository](https://github.com/scullyio/scully) diff --git a/src/data/roadmaps/angular/content/accessibility@VNG9DdXlS6R1OJ6Lrn4Lt.md b/src/data/roadmaps/angular/content/accessibility@VNG9DdXlS6R1OJ6Lrn4Lt.md new file mode 100644 index 000000000..55ffef6e3 --- /dev/null +++ b/src/data/roadmaps/angular/content/accessibility@VNG9DdXlS6R1OJ6Lrn4Lt.md @@ -0,0 +1 @@ +# Accessibility \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/analogjs@kauQofxCmpktXPcnzid17.md b/src/data/roadmaps/angular/content/analogjs@kauQofxCmpktXPcnzid17.md new file mode 100644 index 000000000..3034ed689 --- /dev/null +++ b/src/data/roadmaps/angular/content/analogjs@kauQofxCmpktXPcnzid17.md @@ -0,0 +1 @@ +# AnalogJS \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/angular-and-history@hpShWwL0M57ZAzqkB4I8t.md b/src/data/roadmaps/angular/content/angular-and-history@hpShWwL0M57ZAzqkB4I8t.md new file mode 100644 index 000000000..3a1e92428 --- /dev/null +++ b/src/data/roadmaps/angular/content/angular-and-history@hpShWwL0M57ZAzqkB4I8t.md @@ -0,0 +1 @@ +# Angular and History \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/angular-architecture@DE3cMpeRYuUPw2ADtfS-3.md b/src/data/roadmaps/angular/content/angular-architecture@DE3cMpeRYuUPw2ADtfS-3.md new file mode 100644 index 000000000..002dd5ed9 --- /dev/null +++ b/src/data/roadmaps/angular/content/angular-architecture@DE3cMpeRYuUPw2ADtfS-3.md @@ -0,0 +1 @@ +# Angular Architecture \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/103-angular-cli/index.md b/src/data/roadmaps/angular/content/angular-cli@4YSk6I63Ew--zoXC3xmrC.md similarity index 100% rename from src/data/roadmaps/angular/content/103-angular-cli/index.md rename to src/data/roadmaps/angular/content/angular-cli@4YSk6I63Ew--zoXC3xmrC.md diff --git a/src/data/roadmaps/angular/content/animation@rYJq59Q0YdfK6n3x740Em.md b/src/data/roadmaps/angular/content/animation@rYJq59Q0YdfK6n3x740Em.md new file mode 100644 index 000000000..583b7f7c0 --- /dev/null +++ b/src/data/roadmaps/angular/content/animation@rYJq59Q0YdfK6n3x740Em.md @@ -0,0 +1 @@ +# Animation \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/aot-compilation@MwtM1UAIfj4FJ-Y4CKDsP.md b/src/data/roadmaps/angular/content/aot-compilation@MwtM1UAIfj4FJ-Y4CKDsP.md new file mode 100644 index 000000000..82c08eade --- /dev/null +++ b/src/data/roadmaps/angular/content/aot-compilation@MwtM1UAIfj4FJ-Y4CKDsP.md @@ -0,0 +1 @@ +# AoT Compilation \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/atributes@0FvH7KPs9ag02QkD1HEJ-.md b/src/data/roadmaps/angular/content/atributes@0FvH7KPs9ag02QkD1HEJ-.md new file mode 100644 index 000000000..da60e0dce --- /dev/null +++ b/src/data/roadmaps/angular/content/atributes@0FvH7KPs9ag02QkD1HEJ-.md @@ -0,0 +1 @@ +# Atributes \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/attribute-directives@xvwby0FTdIolRrV2j88fY.md b/src/data/roadmaps/angular/content/attribute-directives@xvwby0FTdIolRrV2j88fY.md new file mode 100644 index 000000000..4cd91f888 --- /dev/null +++ b/src/data/roadmaps/angular/content/attribute-directives@xvwby0FTdIolRrV2j88fY.md @@ -0,0 +1 @@ +# Attribute Directives \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/attributes-binding@FgsSyM6To7irpbivtOLEE.md b/src/data/roadmaps/angular/content/attributes-binding@FgsSyM6To7irpbivtOLEE.md new file mode 100644 index 000000000..0c029e2d5 --- /dev/null +++ b/src/data/roadmaps/angular/content/attributes-binding@FgsSyM6To7irpbivtOLEE.md @@ -0,0 +1 @@ +# Attributes Binding \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/build-environments@Ax-s_xw3FO3Ocv-AnLbQD.md b/src/data/roadmaps/angular/content/build-environments@Ax-s_xw3FO3Ocv-AnLbQD.md new file mode 100644 index 000000000..1c3e193ba --- /dev/null +++ b/src/data/roadmaps/angular/content/build-environments@Ax-s_xw3FO3Ocv-AnLbQD.md @@ -0,0 +1 @@ +# Build Environments \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/case@cHC2MH50CbUSMRZV4QGJI.md b/src/data/roadmaps/angular/content/case@cHC2MH50CbUSMRZV4QGJI.md new file mode 100644 index 000000000..5a719d592 --- /dev/null +++ b/src/data/roadmaps/angular/content/case@cHC2MH50CbUSMRZV4QGJI.md @@ -0,0 +1 @@ +# @case \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/105-rendering-topics/102-change-detection.md b/src/data/roadmaps/angular/content/change-detection@_-mTs_FMeob-ZGK-bb3j-.md similarity index 100% rename from src/data/roadmaps/angular/content/105-rendering-topics/102-change-detection.md rename to src/data/roadmaps/angular/content/change-detection@_-mTs_FMeob-ZGK-bb3j-.md diff --git a/src/data/roadmaps/angular/content/changedetection@uYHy2yhtTm6fQkKpYx3lU.md b/src/data/roadmaps/angular/content/changedetection@uYHy2yhtTm6fQkKpYx3lU.md new file mode 100644 index 000000000..8f8f1666a --- /dev/null +++ b/src/data/roadmaps/angular/content/changedetection@uYHy2yhtTm6fQkKpYx3lU.md @@ -0,0 +1 @@ +# changeDetection \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/cli-builders@TeWEy9I-hU6SH02Sy2S2S.md b/src/data/roadmaps/angular/content/cli-builders@TeWEy9I-hU6SH02Sy2S2S.md new file mode 100644 index 000000000..abe74fab5 --- /dev/null +++ b/src/data/roadmaps/angular/content/cli-builders@TeWEy9I-hU6SH02Sy2S2S.md @@ -0,0 +1 @@ +# CLI Builders \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/code-coverage@bqA2bxPcZrqQ-6QE-YDK1.md b/src/data/roadmaps/angular/content/code-coverage@bqA2bxPcZrqQ-6QE-YDK1.md new file mode 100644 index 000000000..d392208a1 --- /dev/null +++ b/src/data/roadmaps/angular/content/code-coverage@bqA2bxPcZrqQ-6QE-YDK1.md @@ -0,0 +1 @@ +# Code Coverage \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/103-combination.md b/src/data/roadmaps/angular/content/combination@IgUHqfVhiGpwxT9tY8O88.md similarity index 100% rename from src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/103-combination.md rename to src/data/roadmaps/angular/content/combination@IgUHqfVhiGpwxT9tY8O88.md diff --git a/src/data/roadmaps/angular/content/common-pipes@i2taHzQ5KLHjkkpbH4Ytd.md b/src/data/roadmaps/angular/content/common-pipes@i2taHzQ5KLHjkkpbH4Ytd.md new file mode 100644 index 000000000..57e72e305 --- /dev/null +++ b/src/data/roadmaps/angular/content/common-pipes@i2taHzQ5KLHjkkpbH4Ytd.md @@ -0,0 +1 @@ +# Common Pipes \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/communication@19c7D-fWIJ3vYFT6h8ZfN.md b/src/data/roadmaps/angular/content/communication@19c7D-fWIJ3vYFT6h8ZfN.md new file mode 100644 index 000000000..7e37400e2 --- /dev/null +++ b/src/data/roadmaps/angular/content/communication@19c7D-fWIJ3vYFT6h8ZfN.md @@ -0,0 +1 @@ +# Communication \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/complex-sequences@Unjknmb4b2LY-nUVvvF7_.md b/src/data/roadmaps/angular/content/complex-sequences@Unjknmb4b2LY-nUVvvF7_.md new file mode 100644 index 000000000..a44781c50 --- /dev/null +++ b/src/data/roadmaps/angular/content/complex-sequences@Unjknmb4b2LY-nUVvvF7_.md @@ -0,0 +1 @@ +# Complex Sequences \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/component-anatomy@Mp056kNnwsRWeEXuhGPy-.md b/src/data/roadmaps/angular/content/component-anatomy@Mp056kNnwsRWeEXuhGPy-.md new file mode 100644 index 000000000..a4b4afe2c --- /dev/null +++ b/src/data/roadmaps/angular/content/component-anatomy@Mp056kNnwsRWeEXuhGPy-.md @@ -0,0 +1 @@ +# Component Anatomy \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/115-testing-angular-apps/102-testing-component-bindings.md b/src/data/roadmaps/angular/content/component-bindings@cXVy1lx2XqY_j8gxz-y60.md similarity index 100% rename from src/data/roadmaps/angular/content/115-testing-angular-apps/102-testing-component-bindings.md rename to src/data/roadmaps/angular/content/component-bindings@cXVy1lx2XqY_j8gxz-y60.md diff --git a/src/data/roadmaps/angular/content/109-lifecycle-hooks.md b/src/data/roadmaps/angular/content/component-lifecycle@nCpfj_35ZvW-NTygg06XZ.md similarity index 100% rename from src/data/roadmaps/angular/content/109-lifecycle-hooks.md rename to src/data/roadmaps/angular/content/component-lifecycle@nCpfj_35ZvW-NTygg06XZ.md diff --git a/src/data/roadmaps/angular/content/115-testing-angular-apps/104-testing-component-templates.md b/src/data/roadmaps/angular/content/component-templates@0dYWO_Zvh9J5_6cRjRjvI.md similarity index 100% rename from src/data/roadmaps/angular/content/115-testing-angular-apps/104-testing-component-templates.md rename to src/data/roadmaps/angular/content/component-templates@0dYWO_Zvh9J5_6cRjRjvI.md diff --git a/src/data/roadmaps/angular/content/102-angular-basics/101-angular-components.md b/src/data/roadmaps/angular/content/components@kGnKzCkQCNFEdgCBRtNuW.md similarity index 100% rename from src/data/roadmaps/angular/content/102-angular-basics/101-angular-components.md rename to src/data/roadmaps/angular/content/components@kGnKzCkQCNFEdgCBRtNuW.md diff --git a/src/data/roadmaps/angular/content/107-routing/100-configuration.md b/src/data/roadmaps/angular/content/configuration@dbAS-hN1hoCsNJhkxXcGq.md similarity index 100% rename from src/data/roadmaps/angular/content/107-routing/100-configuration.md rename to src/data/roadmaps/angular/content/configuration@dbAS-hN1hoCsNJhkxXcGq.md diff --git a/src/data/roadmaps/angular/content/containers@0s-QhN5aZh2F3tLJFKEyR.md b/src/data/roadmaps/angular/content/containers@0s-QhN5aZh2F3tLJFKEyR.md new file mode 100644 index 000000000..e9190fd9a --- /dev/null +++ b/src/data/roadmaps/angular/content/containers@0s-QhN5aZh2F3tLJFKEyR.md @@ -0,0 +1 @@ +# Containers \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/contentchild@oQl9etjoHiU2JgxieUOEH.md b/src/data/roadmaps/angular/content/contentchild@oQl9etjoHiU2JgxieUOEH.md new file mode 100644 index 000000000..3ee7292cb --- /dev/null +++ b/src/data/roadmaps/angular/content/contentchild@oQl9etjoHiU2JgxieUOEH.md @@ -0,0 +1 @@ +# ContentChild \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/control-flow@VzvB_bads057YtG4ST4a2.md b/src/data/roadmaps/angular/content/control-flow@VzvB_bads057YtG4ST4a2.md new file mode 100644 index 000000000..386281f41 --- /dev/null +++ b/src/data/roadmaps/angular/content/control-flow@VzvB_bads057YtG4ST4a2.md @@ -0,0 +1 @@ +# Control Flow \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/control-value-accessor@m5dgKgUR3ZqI9sBAzToev.md b/src/data/roadmaps/angular/content/control-value-accessor@m5dgKgUR3ZqI9sBAzToev.md new file mode 100644 index 000000000..18605af87 --- /dev/null +++ b/src/data/roadmaps/angular/content/control-value-accessor@m5dgKgUR3ZqI9sBAzToev.md @@ -0,0 +1 @@ +# Control Value Accessor \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/creating-components@ex8FOKrUlbu4MuEq2czyW.md b/src/data/roadmaps/angular/content/creating-components@ex8FOKrUlbu4MuEq2czyW.md new file mode 100644 index 000000000..245b00292 --- /dev/null +++ b/src/data/roadmaps/angular/content/creating-components@ex8FOKrUlbu4MuEq2czyW.md @@ -0,0 +1 @@ +# Creating Components \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/creating-libraries@A1mYMg7cbcj6p_VkDf-Tz.md b/src/data/roadmaps/angular/content/creating-libraries@A1mYMg7cbcj6p_VkDf-Tz.md new file mode 100644 index 000000000..a4c6d8e3c --- /dev/null +++ b/src/data/roadmaps/angular/content/creating-libraries@A1mYMg7cbcj6p_VkDf-Tz.md @@ -0,0 +1 @@ +# Creating Libraries \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/creating-modules@9YhTXybJw2gszlqFeBtW3.md b/src/data/roadmaps/angular/content/creating-modules@9YhTXybJw2gszlqFeBtW3.md new file mode 100644 index 000000000..454e81047 --- /dev/null +++ b/src/data/roadmaps/angular/content/creating-modules@9YhTXybJw2gszlqFeBtW3.md @@ -0,0 +1 @@ +# Creating Modules \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/cross-site-request-forgery@Z1DZBbFI4oU6-KQg3wqMm.md b/src/data/roadmaps/angular/content/cross-site-request-forgery@Z1DZBbFI4oU6-KQg3wqMm.md new file mode 100644 index 000000000..2c8a31f90 --- /dev/null +++ b/src/data/roadmaps/angular/content/cross-site-request-forgery@Z1DZBbFI4oU6-KQg3wqMm.md @@ -0,0 +1 @@ +# Cross-site Request Forgery \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/cross-site-script-inclusion@zd7YJGlcMFNFbsKUiW_XC.md b/src/data/roadmaps/angular/content/cross-site-script-inclusion@zd7YJGlcMFNFbsKUiW_XC.md new file mode 100644 index 000000000..535baaa7d --- /dev/null +++ b/src/data/roadmaps/angular/content/cross-site-script-inclusion@zd7YJGlcMFNFbsKUiW_XC.md @@ -0,0 +1 @@ +# Cross-site Script Inclusion \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/cross-site-scripting@umUX4Hxk7srHlFR_Un-u7.md b/src/data/roadmaps/angular/content/cross-site-scripting@umUX4Hxk7srHlFR_Un-u7.md new file mode 100644 index 000000000..82042520e --- /dev/null +++ b/src/data/roadmaps/angular/content/cross-site-scripting@umUX4Hxk7srHlFR_Un-u7.md @@ -0,0 +1 @@ +# Cross-site Scripting \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/112-creating-a-custom-x/100-directive.md b/src/data/roadmaps/angular/content/custom-directives@7GUvTMVzfdVEDBOz-tHUT.md similarity index 73% rename from src/data/roadmaps/angular/content/112-creating-a-custom-x/100-directive.md rename to src/data/roadmaps/angular/content/custom-directives@7GUvTMVzfdVEDBOz-tHUT.md index 1625c9607..396574acf 100644 --- a/src/data/roadmaps/angular/content/112-creating-a-custom-x/100-directive.md +++ b/src/data/roadmaps/angular/content/custom-directives@7GUvTMVzfdVEDBOz-tHUT.md @@ -6,5 +6,4 @@ From the core concept, Angular directives are categorized into three categories: Visit the following resources to learn more: -- [@article@Create a custom directive - Freecodecamp](https://www.freecodecamp.org/news/angular-directives-learn-how-to-use-or-create-custom-directives-in-angular-c9b133c24442/) - [@video@Create a custom directive video for Beginners](https://www.youtube.com/watch?v=AoN56g6UAsE) diff --git a/src/data/roadmaps/angular/content/112-creating-a-custom-x/101-pipe.md b/src/data/roadmaps/angular/content/custom-pipes@BOYXGfULJRiP-XOo_lNX3.md similarity index 100% rename from src/data/roadmaps/angular/content/112-creating-a-custom-x/101-pipe.md rename to src/data/roadmaps/angular/content/custom-pipes@BOYXGfULJRiP-XOo_lNX3.md diff --git a/src/data/roadmaps/angular/content/custom-validators@kxRtLsB3y_th8j-HjmJgK.md b/src/data/roadmaps/angular/content/custom-validators@kxRtLsB3y_th8j-HjmJgK.md new file mode 100644 index 000000000..949355038 --- /dev/null +++ b/src/data/roadmaps/angular/content/custom-validators@kxRtLsB3y_th8j-HjmJgK.md @@ -0,0 +1 @@ +# Custom Validators \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/data-binding@5vZkiH7HDwONIABLfNJ06.md b/src/data/roadmaps/angular/content/data-binding@5vZkiH7HDwONIABLfNJ06.md new file mode 100644 index 000000000..20dd60eef --- /dev/null +++ b/src/data/roadmaps/angular/content/data-binding@5vZkiH7HDwONIABLfNJ06.md @@ -0,0 +1 @@ +# Data Binding \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/debugging-tests@f5v74Uw54LsB4FgdN6eCd.md b/src/data/roadmaps/angular/content/debugging-tests@f5v74Uw54LsB4FgdN6eCd.md new file mode 100644 index 000000000..512a64618 --- /dev/null +++ b/src/data/roadmaps/angular/content/debugging-tests@f5v74Uw54LsB4FgdN6eCd.md @@ -0,0 +1 @@ +# Debugging Tests \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/default@h4MMn0_qUN3YXEdMUJOyd.md b/src/data/roadmaps/angular/content/default@h4MMn0_qUN3YXEdMUJOyd.md new file mode 100644 index 000000000..0a63ba72a --- /dev/null +++ b/src/data/roadmaps/angular/content/default@h4MMn0_qUN3YXEdMUJOyd.md @@ -0,0 +1 @@ +# @default \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/defer@ONy-0olujU_FGZM7Wvfr2.md b/src/data/roadmaps/angular/content/defer@ONy-0olujU_FGZM7Wvfr2.md new file mode 100644 index 000000000..b537a4bcc --- /dev/null +++ b/src/data/roadmaps/angular/content/defer@ONy-0olujU_FGZM7Wvfr2.md @@ -0,0 +1 @@ +# @defer \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/deferrable-views@CYjsXIOWtP5DJmYS-qR-s.md b/src/data/roadmaps/angular/content/deferrable-views@CYjsXIOWtP5DJmYS-qR-s.md new file mode 100644 index 000000000..73c327ad9 --- /dev/null +++ b/src/data/roadmaps/angular/content/deferrable-views@CYjsXIOWtP5DJmYS-qR-s.md @@ -0,0 +1 @@ +# Deferrable Views \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/dependencies@5b590c7s-2XJ0rgdCYxLa.md b/src/data/roadmaps/angular/content/dependencies@5b590c7s-2XJ0rgdCYxLa.md new file mode 100644 index 000000000..e482fab7c --- /dev/null +++ b/src/data/roadmaps/angular/content/dependencies@5b590c7s-2XJ0rgdCYxLa.md @@ -0,0 +1 @@ +# Dependencies \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/102-angular-basics/104-dependency-injection.md b/src/data/roadmaps/angular/content/dependency-injection@8u9uHCRt9RU57erBy79PP.md similarity index 100% rename from src/data/roadmaps/angular/content/102-angular-basics/104-dependency-injection.md rename to src/data/roadmaps/angular/content/dependency-injection@8u9uHCRt9RU57erBy79PP.md diff --git a/src/data/roadmaps/angular/content/deployment@1fVi9AK6aLjt5QgAFbnGX.md b/src/data/roadmaps/angular/content/deployment@1fVi9AK6aLjt5QgAFbnGX.md new file mode 100644 index 000000000..7a9e3e037 --- /dev/null +++ b/src/data/roadmaps/angular/content/deployment@1fVi9AK6aLjt5QgAFbnGX.md @@ -0,0 +1 @@ +# Deployment \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/developer-tools@EbJib-XfZFF9bpCtL3aBs.md b/src/data/roadmaps/angular/content/developer-tools@EbJib-XfZFF9bpCtL3aBs.md new file mode 100644 index 000000000..e9b582dff --- /dev/null +++ b/src/data/roadmaps/angular/content/developer-tools@EbJib-XfZFF9bpCtL3aBs.md @@ -0,0 +1 @@ +# Developer Tools \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/devtools@T3MmS3bvMMgCUbOk3ktU7.md b/src/data/roadmaps/angular/content/devtools@T3MmS3bvMMgCUbOk3ktU7.md new file mode 100644 index 000000000..62a518ab5 --- /dev/null +++ b/src/data/roadmaps/angular/content/devtools@T3MmS3bvMMgCUbOk3ktU7.md @@ -0,0 +1 @@ +# DevTools \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/105-rendering-topics/100-builtin-directives.md b/src/data/roadmaps/angular/content/directives@kGzlumFdZFxTRZ3HnCGFO.md similarity index 100% rename from src/data/roadmaps/angular/content/105-rendering-topics/100-builtin-directives.md rename to src/data/roadmaps/angular/content/directives@kGzlumFdZFxTRZ3HnCGFO.md diff --git a/src/data/roadmaps/angular/content/dynamic-components@tC5ETtOuuUcybj1jI4CuG.md b/src/data/roadmaps/angular/content/dynamic-components@tC5ETtOuuUcybj1jI4CuG.md new file mode 100644 index 000000000..f80074673 --- /dev/null +++ b/src/data/roadmaps/angular/content/dynamic-components@tC5ETtOuuUcybj1jI4CuG.md @@ -0,0 +1 @@ +# Dynamic Components \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/dynamic-forms@CpufN6DAOj5UNab9vnH0k.md b/src/data/roadmaps/angular/content/dynamic-forms@CpufN6DAOj5UNab9vnH0k.md new file mode 100644 index 000000000..e070d072f --- /dev/null +++ b/src/data/roadmaps/angular/content/dynamic-forms@CpufN6DAOj5UNab9vnH0k.md @@ -0,0 +1 @@ +# Dynamic Forms \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/elf@rgPUcSKxG9DvXicLfC2Ay.md b/src/data/roadmaps/angular/content/elf@rgPUcSKxG9DvXicLfC2Ay.md new file mode 100644 index 000000000..8482e5c2e --- /dev/null +++ b/src/data/roadmaps/angular/content/elf@rgPUcSKxG9DvXicLfC2Ay.md @@ -0,0 +1 @@ +# Elf \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/else-if@mRB-0CRdGwvxPqZbz08yj.md b/src/data/roadmaps/angular/content/else-if@mRB-0CRdGwvxPqZbz08yj.md new file mode 100644 index 000000000..97e7c209e --- /dev/null +++ b/src/data/roadmaps/angular/content/else-if@mRB-0CRdGwvxPqZbz08yj.md @@ -0,0 +1 @@ +# @else if \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/else-if@ys5untkSppGMFK-VsfuRt.md b/src/data/roadmaps/angular/content/else-if@ys5untkSppGMFK-VsfuRt.md new file mode 100644 index 000000000..97e7c209e --- /dev/null +++ b/src/data/roadmaps/angular/content/else-if@ys5untkSppGMFK-VsfuRt.md @@ -0,0 +1 @@ +# @else if \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/else@ORdPDad4HWJAfcZuS-7yM.md b/src/data/roadmaps/angular/content/else@ORdPDad4HWJAfcZuS-7yM.md new file mode 100644 index 000000000..538228489 --- /dev/null +++ b/src/data/roadmaps/angular/content/else@ORdPDad4HWJAfcZuS-7yM.md @@ -0,0 +1 @@ +# @else \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/encapsulation@ctigvSYeFa77y3v7m11gk.md b/src/data/roadmaps/angular/content/encapsulation@ctigvSYeFa77y3v7m11gk.md new file mode 100644 index 000000000..d6957a2a1 --- /dev/null +++ b/src/data/roadmaps/angular/content/encapsulation@ctigvSYeFa77y3v7m11gk.md @@ -0,0 +1 @@ +# Encapsulation \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/end-to-end-testing@yhNGhduk__ow8VTLc6inZ.md b/src/data/roadmaps/angular/content/end-to-end-testing@yhNGhduk__ow8VTLc6inZ.md new file mode 100644 index 000000000..9e2bcd9b6 --- /dev/null +++ b/src/data/roadmaps/angular/content/end-to-end-testing@yhNGhduk__ow8VTLc6inZ.md @@ -0,0 +1 @@ +# End-to-End Testing \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/enforce-trusted-types@5h7U0spwEUhB-hbjSlaeB.md b/src/data/roadmaps/angular/content/enforce-trusted-types@5h7U0spwEUhB-hbjSlaeB.md new file mode 100644 index 000000000..abba00eca --- /dev/null +++ b/src/data/roadmaps/angular/content/enforce-trusted-types@5h7U0spwEUhB-hbjSlaeB.md @@ -0,0 +1 @@ +# Enforce Trusted Types \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/events@bKnpirSvex4oE4lAjiSSV.md b/src/data/roadmaps/angular/content/events@bKnpirSvex4oE4lAjiSSV.md new file mode 100644 index 000000000..cbf945847 --- /dev/null +++ b/src/data/roadmaps/angular/content/events@bKnpirSvex4oE4lAjiSSV.md @@ -0,0 +1 @@ +# Events \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/feature-modules@w_BazXvINFyxDCHmlznfy.md b/src/data/roadmaps/angular/content/feature-modules@w_BazXvINFyxDCHmlznfy.md new file mode 100644 index 000000000..b84fdfb52 --- /dev/null +++ b/src/data/roadmaps/angular/content/feature-modules@w_BazXvINFyxDCHmlznfy.md @@ -0,0 +1 @@ +# Feature Modules \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/100-filtering.md b/src/data/roadmaps/angular/content/filtering@nxUbl0eu3LsSL-Z8X6nP5.md similarity index 100% rename from src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/100-filtering.md rename to src/data/roadmaps/angular/content/filtering@nxUbl0eu3LsSL-Z8X6nP5.md diff --git a/src/data/roadmaps/angular/content/for@2kYS9w1UzQFZ1zhf01m9L.md b/src/data/roadmaps/angular/content/for@2kYS9w1UzQFZ1zhf01m9L.md new file mode 100644 index 000000000..b1ac1a059 --- /dev/null +++ b/src/data/roadmaps/angular/content/for@2kYS9w1UzQFZ1zhf01m9L.md @@ -0,0 +1 @@ +# @for \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/106-forms/index.md b/src/data/roadmaps/angular/content/forms@Q36LQds8k_cSjijvXyWOM.md similarity index 100% rename from src/data/roadmaps/angular/content/106-forms/index.md rename to src/data/roadmaps/angular/content/forms@Q36LQds8k_cSjijvXyWOM.md diff --git a/src/data/roadmaps/angular/content/107-routing/104-guards.md b/src/data/roadmaps/angular/content/guards@PmC4zeaLpa5LoL4FhYXcG.md similarity index 100% rename from src/data/roadmaps/angular/content/107-routing/104-guards.md rename to src/data/roadmaps/angular/content/guards@PmC4zeaLpa5LoL4FhYXcG.md diff --git a/src/data/roadmaps/angular/content/http-client@8UY0HAvjY7bdbFpt-MM1u.md b/src/data/roadmaps/angular/content/http-client@8UY0HAvjY7bdbFpt-MM1u.md new file mode 100644 index 000000000..1f5ff9eff --- /dev/null +++ b/src/data/roadmaps/angular/content/http-client@8UY0HAvjY7bdbFpt-MM1u.md @@ -0,0 +1 @@ +# HTTP Client \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/http-vulnerabilities@xH3RHPhsaqD9zIMms5OmX.md b/src/data/roadmaps/angular/content/http-vulnerabilities@xH3RHPhsaqD9zIMms5OmX.md new file mode 100644 index 000000000..bf0271433 --- /dev/null +++ b/src/data/roadmaps/angular/content/http-vulnerabilities@xH3RHPhsaqD9zIMms5OmX.md @@ -0,0 +1 @@ +# HTTP Vulnerabilities \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/httpclient-csrf@m2aw8vb4rz4IjshpoMyNx.md b/src/data/roadmaps/angular/content/httpclient-csrf@m2aw8vb4rz4IjshpoMyNx.md new file mode 100644 index 000000000..8a1840657 --- /dev/null +++ b/src/data/roadmaps/angular/content/httpclient-csrf@m2aw8vb4rz4IjshpoMyNx.md @@ -0,0 +1 @@ +# HttpClient CSRF \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/hydration@NY_MfBNgNmloiRGcIvfJ1.md b/src/data/roadmaps/angular/content/hydration@NY_MfBNgNmloiRGcIvfJ1.md new file mode 100644 index 000000000..d4ca8f5f6 --- /dev/null +++ b/src/data/roadmaps/angular/content/hydration@NY_MfBNgNmloiRGcIvfJ1.md @@ -0,0 +1 @@ +# Hydration \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/if@U1Zy2T-2ki9pDkXn9hn-I.md b/src/data/roadmaps/angular/content/if@U1Zy2T-2ki9pDkXn9hn-I.md new file mode 100644 index 000000000..20b4c0b4d --- /dev/null +++ b/src/data/roadmaps/angular/content/if@U1Zy2T-2ki9pDkXn9hn-I.md @@ -0,0 +1 @@ +# @if \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/image-optimization@1WIKjn3nxYDMIhBL17aYQ.md b/src/data/roadmaps/angular/content/image-optimization@1WIKjn3nxYDMIhBL17aYQ.md new file mode 100644 index 000000000..cca9093d7 --- /dev/null +++ b/src/data/roadmaps/angular/content/image-optimization@1WIKjn3nxYDMIhBL17aYQ.md @@ -0,0 +1 @@ +# Image Optimization \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/imports@ghbrJhuGvscnNGCtVLh5_.md b/src/data/roadmaps/angular/content/imports@ghbrJhuGvscnNGCtVLh5_.md new file mode 100644 index 000000000..3c412f55f --- /dev/null +++ b/src/data/roadmaps/angular/content/imports@ghbrJhuGvscnNGCtVLh5_.md @@ -0,0 +1 @@ +# Imports \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/104-templates/105-input-output.md b/src/data/roadmaps/angular/content/input--output@VsU6713jeIjAOEZnF6gWx.md similarity index 100% rename from src/data/roadmaps/angular/content/104-templates/105-input-output.md rename to src/data/roadmaps/angular/content/input--output@VsU6713jeIjAOEZnF6gWx.md diff --git a/src/data/roadmaps/angular/content/inputs-as-signals@LcJyAfv9hjyUNXUVyPRP4.md b/src/data/roadmaps/angular/content/inputs-as-signals@LcJyAfv9hjyUNXUVyPRP4.md new file mode 100644 index 000000000..8bea56d64 --- /dev/null +++ b/src/data/roadmaps/angular/content/inputs-as-signals@LcJyAfv9hjyUNXUVyPRP4.md @@ -0,0 +1 @@ +# Inputs as Signals \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/internationalization@Xxyx3uzy5TpNhgR1IysMN.md b/src/data/roadmaps/angular/content/internationalization@Xxyx3uzy5TpNhgR1IysMN.md new file mode 100644 index 000000000..49a10ae67 --- /dev/null +++ b/src/data/roadmaps/angular/content/internationalization@Xxyx3uzy5TpNhgR1IysMN.md @@ -0,0 +1 @@ +# Internationalization \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/104-templates/100-interpolation.md b/src/data/roadmaps/angular/content/interpoloation@XHpfHRIlFh19FJIE07u7i.md similarity index 100% rename from src/data/roadmaps/angular/content/104-templates/100-interpolation.md rename to src/data/roadmaps/angular/content/interpoloation@XHpfHRIlFh19FJIE07u7i.md diff --git a/src/data/roadmaps/angular/content/introduction-to-angular@KDd40JOAvZ8O1mfhTYB3K.md b/src/data/roadmaps/angular/content/introduction-to-angular@KDd40JOAvZ8O1mfhTYB3K.md new file mode 100644 index 000000000..f1ae659c5 --- /dev/null +++ b/src/data/roadmaps/angular/content/introduction-to-angular@KDd40JOAvZ8O1mfhTYB3K.md @@ -0,0 +1,9 @@ +# Introduction to Angular + +Angular is a popular open-source front-end web application framework developed by Google. It is written in TypeScript and allows developers to build dynamic, single-page web applications with ease. Angular provides a comprehensive set of features for creating interactive and responsive user interfaces, making it a powerful tool for modern web development. + +One of the key features of Angular is its use of components, which are reusable building blocks for creating web applications. Components encapsulate the HTML, CSS, and TypeScript code needed to define a specific part of a web page, making it easier to manage and maintain complex applications. Angular also includes a powerful dependency injection system, which helps manage the dependencies between different parts of an application and promotes code reusability. Additionally, Angular provides tools for routing, form handling, and state management, making it a versatile framework for building a wide range of web applications. + +Learn more from the following resources: + +- [@official@ Angular website](https://angularjs.org/) diff --git a/src/data/roadmaps/angular/content/language-service@ql7SyxrRmjpiXJ9hQeWPq.md b/src/data/roadmaps/angular/content/language-service@ql7SyxrRmjpiXJ9hQeWPq.md new file mode 100644 index 000000000..4122122b8 --- /dev/null +++ b/src/data/roadmaps/angular/content/language-service@ql7SyxrRmjpiXJ9hQeWPq.md @@ -0,0 +1 @@ +# Language Service \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/lazy-loading-modules@bLERvEERmNI5AgxtEYokZ.md b/src/data/roadmaps/angular/content/lazy-loading-modules@bLERvEERmNI5AgxtEYokZ.md new file mode 100644 index 000000000..49cbd09a5 --- /dev/null +++ b/src/data/roadmaps/angular/content/lazy-loading-modules@bLERvEERmNI5AgxtEYokZ.md @@ -0,0 +1 @@ +# Lazy Loading Modules \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/107-routing/105-lazy-loading.md b/src/data/roadmaps/angular/content/lazy-loading@ewbDdPYv2SJl_jW3RVHQs.md similarity index 100% rename from src/data/roadmaps/angular/content/107-routing/105-lazy-loading.md rename to src/data/roadmaps/angular/content/lazy-loading@ewbDdPYv2SJl_jW3RVHQs.md diff --git a/src/data/roadmaps/angular/content/let@AwOM0ucg6W7TohdUd7KWT.md b/src/data/roadmaps/angular/content/let@AwOM0ucg6W7TohdUd7KWT.md new file mode 100644 index 000000000..f85485fa7 --- /dev/null +++ b/src/data/roadmaps/angular/content/let@AwOM0ucg6W7TohdUd7KWT.md @@ -0,0 +1 @@ +# @let \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/112-creating-a-custom-x/102-library.md b/src/data/roadmaps/angular/content/libraries@cl89U8atD6gw5rMGUm4Ix.md similarity index 100% rename from src/data/roadmaps/angular/content/112-creating-a-custom-x/102-library.md rename to src/data/roadmaps/angular/content/libraries@cl89U8atD6gw5rMGUm4Ix.md diff --git a/src/data/roadmaps/angular/content/link-identification@5-RCB8AiDbkdIFYNXKWge.md b/src/data/roadmaps/angular/content/link-identification@5-RCB8AiDbkdIFYNXKWge.md new file mode 100644 index 000000000..5d10061fb --- /dev/null +++ b/src/data/roadmaps/angular/content/link-identification@5-RCB8AiDbkdIFYNXKWge.md @@ -0,0 +1 @@ +# Link Identification \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/local-setup@FVH0lnbIZ2m5EfF2EJ2DW.md b/src/data/roadmaps/angular/content/local-setup@FVH0lnbIZ2m5EfF2EJ2DW.md new file mode 100644 index 000000000..8f8896414 --- /dev/null +++ b/src/data/roadmaps/angular/content/local-setup@FVH0lnbIZ2m5EfF2EJ2DW.md @@ -0,0 +1 @@ +# Local Setup \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/locales-by-id@dVKl3Z2Rnf6IB064v19Mi.md b/src/data/roadmaps/angular/content/locales-by-id@dVKl3Z2Rnf6IB064v19Mi.md new file mode 100644 index 000000000..96537634b --- /dev/null +++ b/src/data/roadmaps/angular/content/locales-by-id@dVKl3Z2Rnf6IB064v19Mi.md @@ -0,0 +1 @@ +# Locales by ID \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/localize-package@W8OwpEw00xn0GxidlJjdc.md b/src/data/roadmaps/angular/content/localize-package@W8OwpEw00xn0GxidlJjdc.md new file mode 100644 index 000000000..5b4e59da2 --- /dev/null +++ b/src/data/roadmaps/angular/content/localize-package@W8OwpEw00xn0GxidlJjdc.md @@ -0,0 +1 @@ +# Localize Package \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/making-requests@HjGAv3aV-p4ijYJ8XYIw3.md b/src/data/roadmaps/angular/content/making-requests@HjGAv3aV-p4ijYJ8XYIw3.md new file mode 100644 index 000000000..5bebf1e02 --- /dev/null +++ b/src/data/roadmaps/angular/content/making-requests@HjGAv3aV-p4ijYJ8XYIw3.md @@ -0,0 +1 @@ +# Making Requests \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/metadata@Szgr8dnZNi-z5i6raIJzW.md b/src/data/roadmaps/angular/content/metadata@Szgr8dnZNi-z5i6raIJzW.md new file mode 100644 index 000000000..676ef9b01 --- /dev/null +++ b/src/data/roadmaps/angular/content/metadata@Szgr8dnZNi-z5i6raIJzW.md @@ -0,0 +1 @@ +# Metadata \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/model-inputs@IeU6ClS_yp6BYKdkQOJVf.md b/src/data/roadmaps/angular/content/model-inputs@IeU6ClS_yp6BYKdkQOJVf.md new file mode 100644 index 000000000..2d81ead94 --- /dev/null +++ b/src/data/roadmaps/angular/content/model-inputs@IeU6ClS_yp6BYKdkQOJVf.md @@ -0,0 +1 @@ +# Model Inputs \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/module-architecture@BCq5sgWQLiw0f7u7ZSAd2.md b/src/data/roadmaps/angular/content/module-architecture@BCq5sgWQLiw0f7u7ZSAd2.md new file mode 100644 index 000000000..41a45a28d --- /dev/null +++ b/src/data/roadmaps/angular/content/module-architecture@BCq5sgWQLiw0f7u7ZSAd2.md @@ -0,0 +1 @@ +# Module Architecture \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/102-angular-basics/103-angular-modules.md b/src/data/roadmaps/angular/content/modules@b_kdNS9PDupcUftslkf9i.md similarity index 100% rename from src/data/roadmaps/angular/content/102-angular-basics/103-angular-modules.md rename to src/data/roadmaps/angular/content/modules@b_kdNS9PDupcUftslkf9i.md diff --git a/src/data/roadmaps/angular/content/multiple-locales@9ISvaaJ815_cr_KW9vQhT.md b/src/data/roadmaps/angular/content/multiple-locales@9ISvaaJ815_cr_KW9vQhT.md new file mode 100644 index 000000000..d14748e23 --- /dev/null +++ b/src/data/roadmaps/angular/content/multiple-locales@9ISvaaJ815_cr_KW9vQhT.md @@ -0,0 +1 @@ +# Multiple Locales \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/110-state-management/101-ngrx.md b/src/data/roadmaps/angular/content/ngrx@ir94IdkF1tVAA8ZTD9r0N.md similarity index 100% rename from src/data/roadmaps/angular/content/110-state-management/101-ngrx.md rename to src/data/roadmaps/angular/content/ngrx@ir94IdkF1tVAA8ZTD9r0N.md diff --git a/src/data/roadmaps/angular/content/110-state-management/100-ngxs.md b/src/data/roadmaps/angular/content/ngxs@N9ZCPgFnFIUv4jMv1w5qK.md similarity index 100% rename from src/data/roadmaps/angular/content/110-state-management/100-ngxs.md rename to src/data/roadmaps/angular/content/ngxs@N9ZCPgFnFIUv4jMv1w5qK.md diff --git a/src/data/roadmaps/angular/content/101-rxjs-basics/101-observable-lifecycle.md b/src/data/roadmaps/angular/content/observable-lifecycle@b06Y5YrqBbHhWkK6Ws_1c.md similarity index 100% rename from src/data/roadmaps/angular/content/101-rxjs-basics/101-observable-lifecycle.md rename to src/data/roadmaps/angular/content/observable-lifecycle@b06Y5YrqBbHhWkK6Ws_1c.md diff --git a/src/data/roadmaps/angular/content/101-rxjs-basics/100-observable-pattern.md b/src/data/roadmaps/angular/content/observable-pattern@krXA6ua7E3m4IIpFkgQZe.md similarity index 100% rename from src/data/roadmaps/angular/content/101-rxjs-basics/100-observable-pattern.md rename to src/data/roadmaps/angular/content/observable-pattern@krXA6ua7E3m4IIpFkgQZe.md diff --git a/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/index.md b/src/data/roadmaps/angular/content/operators@ihsjIcF0tkhjs56458teE.md similarity index 100% rename from src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/index.md rename to src/data/roadmaps/angular/content/operators@ihsjIcF0tkhjs56458teE.md diff --git a/src/data/roadmaps/angular/content/parent-child-interaction@TDyFjKrIZJnCjEZsojPNQ.md b/src/data/roadmaps/angular/content/parent-child-interaction@TDyFjKrIZJnCjEZsojPNQ.md new file mode 100644 index 000000000..c271a8c88 --- /dev/null +++ b/src/data/roadmaps/angular/content/parent-child-interaction@TDyFjKrIZJnCjEZsojPNQ.md @@ -0,0 +1 @@ +# Parent-Child Interaction \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/performance@STEHxJpwBZxFdQl0zUKxo.md b/src/data/roadmaps/angular/content/performance@STEHxJpwBZxFdQl0zUKxo.md new file mode 100644 index 000000000..55cb80a3a --- /dev/null +++ b/src/data/roadmaps/angular/content/performance@STEHxJpwBZxFdQl0zUKxo.md @@ -0,0 +1 @@ +# Performance \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/pipes-precedence@nZxZnzbQg9dz-SI65UHq9.md b/src/data/roadmaps/angular/content/pipes-precedence@nZxZnzbQg9dz-SI65UHq9.md new file mode 100644 index 000000000..63f9a2f74 --- /dev/null +++ b/src/data/roadmaps/angular/content/pipes-precedence@nZxZnzbQg9dz-SI65UHq9.md @@ -0,0 +1 @@ +# Pipes Precedence \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/105-rendering-topics/101-builtin-pipes.md b/src/data/roadmaps/angular/content/pipes@j99WQxuTzGeBBVoReDp_y.md similarity index 100% rename from src/data/roadmaps/angular/content/105-rendering-topics/101-builtin-pipes.md rename to src/data/roadmaps/angular/content/pipes@j99WQxuTzGeBBVoReDp_y.md diff --git a/src/data/roadmaps/angular/content/104-templates/101-property-binding.md b/src/data/roadmaps/angular/content/properties-binding@TJOZfHtsLfwA0CZ2bd1b2.md similarity index 100% rename from src/data/roadmaps/angular/content/104-templates/101-property-binding.md rename to src/data/roadmaps/angular/content/properties-binding@TJOZfHtsLfwA0CZ2bd1b2.md diff --git a/src/data/roadmaps/angular/content/provider@dOMvz__EQjO-3p-Nzm-7P.md b/src/data/roadmaps/angular/content/provider@dOMvz__EQjO-3p-Nzm-7P.md new file mode 100644 index 000000000..a3253160e --- /dev/null +++ b/src/data/roadmaps/angular/content/provider@dOMvz__EQjO-3p-Nzm-7P.md @@ -0,0 +1 @@ +# Provider \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/queries-as-signals@9HS9C3yq9EUcUy0ZUZk_H.md b/src/data/roadmaps/angular/content/queries-as-signals@9HS9C3yq9EUcUy0ZUZk_H.md new file mode 100644 index 000000000..3bb7280bd --- /dev/null +++ b/src/data/roadmaps/angular/content/queries-as-signals@9HS9C3yq9EUcUy0ZUZk_H.md @@ -0,0 +1 @@ +# Queries as Signals \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/101-rate-limiting.md b/src/data/roadmaps/angular/content/rate-limiting@bJbbayFQ9WSJT9-qy0H5l.md similarity index 100% rename from src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/101-rate-limiting.md rename to src/data/roadmaps/angular/content/rate-limiting@bJbbayFQ9WSJT9-qy0H5l.md diff --git a/src/data/roadmaps/angular/content/106-forms/100-reactive-forms.md b/src/data/roadmaps/angular/content/reactive-forms@1d3Y4HVnqom8UOok-7EEf.md similarity index 100% rename from src/data/roadmaps/angular/content/106-forms/100-reactive-forms.md rename to src/data/roadmaps/angular/content/reactive-forms@1d3Y4HVnqom8UOok-7EEf.md diff --git a/src/data/roadmaps/angular/content/reusable-animations@M1CU2Yq6dLp4yOuGV0fhF.md b/src/data/roadmaps/angular/content/reusable-animations@M1CU2Yq6dLp4yOuGV0fhF.md new file mode 100644 index 000000000..3822be227 --- /dev/null +++ b/src/data/roadmaps/angular/content/reusable-animations@M1CU2Yq6dLp4yOuGV0fhF.md @@ -0,0 +1 @@ +# Reusable Animations \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/route-transitions@x91jWP81oCTeVEwzX8FbK.md b/src/data/roadmaps/angular/content/route-transitions@x91jWP81oCTeVEwzX8FbK.md new file mode 100644 index 000000000..1d3d9864e --- /dev/null +++ b/src/data/roadmaps/angular/content/route-transitions@x91jWP81oCTeVEwzX8FbK.md @@ -0,0 +1 @@ +# Route Transitions \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/107-routing/103-router-events.md b/src/data/roadmaps/angular/content/router-events@YF_sG292HqawIX0siWhrv.md similarity index 100% rename from src/data/roadmaps/angular/content/107-routing/103-router-events.md rename to src/data/roadmaps/angular/content/router-events@YF_sG292HqawIX0siWhrv.md diff --git a/src/data/roadmaps/angular/content/107-routing/102-router-links.md b/src/data/roadmaps/angular/content/router-links@8lFyuSx4MUcYRY2L8bZrq.md similarity index 100% rename from src/data/roadmaps/angular/content/107-routing/102-router-links.md rename to src/data/roadmaps/angular/content/router-links@8lFyuSx4MUcYRY2L8bZrq.md diff --git a/src/data/roadmaps/angular/content/107-routing/101-router-outlets.md b/src/data/roadmaps/angular/content/router-outlets@1ZwdEL0Gx30Vv_Av3ZTGG.md similarity index 100% rename from src/data/roadmaps/angular/content/107-routing/101-router-outlets.md rename to src/data/roadmaps/angular/content/router-outlets@1ZwdEL0Gx30Vv_Av3ZTGG.md diff --git a/src/data/roadmaps/angular/content/routing@8i_JD1P4gIhY1rdldwLC2.md b/src/data/roadmaps/angular/content/routing@8i_JD1P4gIhY1rdldwLC2.md new file mode 100644 index 000000000..5904c1e21 --- /dev/null +++ b/src/data/roadmaps/angular/content/routing@8i_JD1P4gIhY1rdldwLC2.md @@ -0,0 +1 @@ +# Routing \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/102-angular-basics/106-routing.md b/src/data/roadmaps/angular/content/routing@a74v78SvGtWduZpXs7wSq.md similarity index 100% rename from src/data/roadmaps/angular/content/102-angular-basics/106-routing.md rename to src/data/roadmaps/angular/content/routing@a74v78SvGtWduZpXs7wSq.md diff --git a/src/data/roadmaps/angular/content/101-rxjs-basics/index.md b/src/data/roadmaps/angular/content/rxjs-basics@lfp7PIjwITU5gBITQdirD.md similarity index 100% rename from src/data/roadmaps/angular/content/101-rxjs-basics/index.md rename to src/data/roadmaps/angular/content/rxjs-basics@lfp7PIjwITU5gBITQdirD.md diff --git a/src/data/roadmaps/angular/content/rxjs-interop@KAdtebWvgvMifIwd52yc4.md b/src/data/roadmaps/angular/content/rxjs-interop@KAdtebWvgvMifIwd52yc4.md new file mode 100644 index 000000000..11f80f74f --- /dev/null +++ b/src/data/roadmaps/angular/content/rxjs-interop@KAdtebWvgvMifIwd52yc4.md @@ -0,0 +1 @@ +# RxJS Interop \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/101-rxjs-basics/103-rxjs-vs-promises.md b/src/data/roadmaps/angular/content/rxjs-vs-promises@e1ZmmxPZuogCNgtbPPWmd.md similarity index 100% rename from src/data/roadmaps/angular/content/101-rxjs-basics/103-rxjs-vs-promises.md rename to src/data/roadmaps/angular/content/rxjs-vs-promises@e1ZmmxPZuogCNgtbPPWmd.md diff --git a/src/data/roadmaps/angular/content/sanitization@cgI9oeUHufA-ky_W1zENe.md b/src/data/roadmaps/angular/content/sanitization@cgI9oeUHufA-ky_W1zENe.md new file mode 100644 index 000000000..f99e8b75f --- /dev/null +++ b/src/data/roadmaps/angular/content/sanitization@cgI9oeUHufA-ky_W1zENe.md @@ -0,0 +1 @@ +# Sanitization \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/103-angular-cli/106-schematics.md b/src/data/roadmaps/angular/content/schematics@Uvr0pRk_fOzwRwqn0dQ6N.md similarity index 100% rename from src/data/roadmaps/angular/content/103-angular-cli/106-schematics.md rename to src/data/roadmaps/angular/content/schematics@Uvr0pRk_fOzwRwqn0dQ6N.md diff --git a/src/data/roadmaps/angular/content/security@mm6c7GLQEwoQdAHdAYzGh.md b/src/data/roadmaps/angular/content/security@mm6c7GLQEwoQdAHdAYzGh.md new file mode 100644 index 000000000..f76df344c --- /dev/null +++ b/src/data/roadmaps/angular/content/security@mm6c7GLQEwoQdAHdAYzGh.md @@ -0,0 +1 @@ +# Security \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/selector@cDN0PGo-zkcLmttxCiAI-.md b/src/data/roadmaps/angular/content/selector@cDN0PGo-zkcLmttxCiAI-.md new file mode 100644 index 000000000..07b3f07f1 --- /dev/null +++ b/src/data/roadmaps/angular/content/selector@cDN0PGo-zkcLmttxCiAI-.md @@ -0,0 +1 @@ +# Selector \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/102-angular-basics/105-services.md b/src/data/roadmaps/angular/content/services---remote-data@CpsoIVoCKaZnM_-BbXbCh.md similarity index 100% rename from src/data/roadmaps/angular/content/102-angular-basics/105-services.md rename to src/data/roadmaps/angular/content/services---remote-data@CpsoIVoCKaZnM_-BbXbCh.md diff --git a/src/data/roadmaps/angular/content/115-testing-angular-apps/101-testing-services.md b/src/data/roadmaps/angular/content/services-with-dependencies@TGRZBizDy83JKg_MhnRdX.md similarity index 100% rename from src/data/roadmaps/angular/content/115-testing-angular-apps/101-testing-services.md rename to src/data/roadmaps/angular/content/services-with-dependencies@TGRZBizDy83JKg_MhnRdX.md diff --git a/src/data/roadmaps/angular/content/setting-up-a-new-project@EbFRcy4s6yzzIApBqU77Y.md b/src/data/roadmaps/angular/content/setting-up-a-new-project@EbFRcy4s6yzzIApBqU77Y.md new file mode 100644 index 000000000..c99d68232 --- /dev/null +++ b/src/data/roadmaps/angular/content/setting-up-a-new-project@EbFRcy4s6yzzIApBqU77Y.md @@ -0,0 +1 @@ +# Setting up a New Project \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/setting-up-the-client@AKPhbg10xXjccO7UBh5eJ.md b/src/data/roadmaps/angular/content/setting-up-the-client@AKPhbg10xXjccO7UBh5eJ.md new file mode 100644 index 000000000..8cdea04b5 --- /dev/null +++ b/src/data/roadmaps/angular/content/setting-up-the-client@AKPhbg10xXjccO7UBh5eJ.md @@ -0,0 +1 @@ +# Setting Up the Client \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/signals@u1TG8i145o0RKhOR_5epf.md b/src/data/roadmaps/angular/content/signals@u1TG8i145o0RKhOR_5epf.md new file mode 100644 index 000000000..ee11f34d5 --- /dev/null +++ b/src/data/roadmaps/angular/content/signals@u1TG8i145o0RKhOR_5epf.md @@ -0,0 +1 @@ +# Signals \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/slow-computations@yxUtSBzJPRcS-IuPsyp-W.md b/src/data/roadmaps/angular/content/slow-computations@yxUtSBzJPRcS-IuPsyp-W.md new file mode 100644 index 000000000..93cd4e78f --- /dev/null +++ b/src/data/roadmaps/angular/content/slow-computations@yxUtSBzJPRcS-IuPsyp-W.md @@ -0,0 +1 @@ +# Slow Computations \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/114-angular-ssg/index.md b/src/data/roadmaps/angular/content/ssg@b-0yQ74zHtAxI9aRLBohc.md similarity index 100% rename from src/data/roadmaps/angular/content/114-angular-ssg/index.md rename to src/data/roadmaps/angular/content/ssg@b-0yQ74zHtAxI9aRLBohc.md diff --git a/src/data/roadmaps/angular/content/113-angular-ssr/index.md b/src/data/roadmaps/angular/content/ssr@jfHaS8TqE4tcAo59K8Nkn.md similarity index 100% rename from src/data/roadmaps/angular/content/113-angular-ssr/index.md rename to src/data/roadmaps/angular/content/ssr@jfHaS8TqE4tcAo59K8Nkn.md diff --git a/src/data/roadmaps/angular/content/standalone@RcNHEh6kmbBK1PICbhAwr.md b/src/data/roadmaps/angular/content/standalone@RcNHEh6kmbBK1PICbhAwr.md new file mode 100644 index 000000000..f9120380a --- /dev/null +++ b/src/data/roadmaps/angular/content/standalone@RcNHEh6kmbBK1PICbhAwr.md @@ -0,0 +1 @@ +# Standalone \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/110-state-management/index.md b/src/data/roadmaps/angular/content/state-management@Mqe_s-nwBqAL6X7OGRHEN.md similarity index 100% rename from src/data/roadmaps/angular/content/110-state-management/index.md rename to src/data/roadmaps/angular/content/state-management@Mqe_s-nwBqAL6X7OGRHEN.md diff --git a/src/data/roadmaps/angular/content/structural-directives@xk3v8p6vf8ntGj5c-IU4U.md b/src/data/roadmaps/angular/content/structural-directives@xk3v8p6vf8ntGj5c-IU4U.md new file mode 100644 index 000000000..43e8776c5 --- /dev/null +++ b/src/data/roadmaps/angular/content/structural-directives@xk3v8p6vf8ntGj5c-IU4U.md @@ -0,0 +1 @@ +# Structural Directives \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/styles@4XJKEmSrQfPxggHlAP30w.md b/src/data/roadmaps/angular/content/styles@4XJKEmSrQfPxggHlAP30w.md new file mode 100644 index 000000000..7bb0b308c --- /dev/null +++ b/src/data/roadmaps/angular/content/styles@4XJKEmSrQfPxggHlAP30w.md @@ -0,0 +1 @@ +# Styles \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/switch@nZuim4Fjq6jYOXcRTAEay.md b/src/data/roadmaps/angular/content/switch@nZuim4Fjq6jYOXcRTAEay.md new file mode 100644 index 000000000..f20ad9d77 --- /dev/null +++ b/src/data/roadmaps/angular/content/switch@nZuim4Fjq6jYOXcRTAEay.md @@ -0,0 +1 @@ +# @switch \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/106-forms/101-template-driven-forms.md b/src/data/roadmaps/angular/content/template-driven-forms@uDx4lPavwsJFBMzdQ70CS.md similarity index 100% rename from src/data/roadmaps/angular/content/106-forms/101-template-driven-forms.md rename to src/data/roadmaps/angular/content/template-driven-forms@uDx4lPavwsJFBMzdQ70CS.md diff --git a/src/data/roadmaps/angular/content/template-ref-vars@Wc2ybRw43uamEtno0FpDv.md b/src/data/roadmaps/angular/content/template-ref-vars@Wc2ybRw43uamEtno0FpDv.md new file mode 100644 index 000000000..e7ad0c96c --- /dev/null +++ b/src/data/roadmaps/angular/content/template-ref-vars@Wc2ybRw43uamEtno0FpDv.md @@ -0,0 +1 @@ +# Template Ref Vars \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/104-templates/104-reference-vars.md b/src/data/roadmaps/angular/content/template-ref-vars@nyDry6ZWyEUuTq4pw-lU3.md similarity index 100% rename from src/data/roadmaps/angular/content/104-templates/104-reference-vars.md rename to src/data/roadmaps/angular/content/template-ref-vars@nyDry6ZWyEUuTq4pw-lU3.md diff --git a/src/data/roadmaps/angular/content/104-templates/102-template-statements.md b/src/data/roadmaps/angular/content/template-statements@t2YOeMONlcnKBrVAo0JDc.md similarity index 100% rename from src/data/roadmaps/angular/content/104-templates/102-template-statements.md rename to src/data/roadmaps/angular/content/template-statements@t2YOeMONlcnKBrVAo0JDc.md diff --git a/src/data/roadmaps/angular/content/template-syntax@VsC7UmE_AumsBP8fC6to1.md b/src/data/roadmaps/angular/content/template-syntax@VsC7UmE_AumsBP8fC6to1.md new file mode 100644 index 000000000..acd044772 --- /dev/null +++ b/src/data/roadmaps/angular/content/template-syntax@VsC7UmE_AumsBP8fC6to1.md @@ -0,0 +1 @@ +# Template Syntax \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/template@-gUpm3OLUJl9iAyx6fmHN.md b/src/data/roadmaps/angular/content/template@-gUpm3OLUJl9iAyx6fmHN.md new file mode 100644 index 000000000..630b32381 --- /dev/null +++ b/src/data/roadmaps/angular/content/template@-gUpm3OLUJl9iAyx6fmHN.md @@ -0,0 +1 @@ +# Template \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/102-angular-basics/102-angular-templates.md b/src/data/roadmaps/angular/content/templates@6fhe9xAi_RSVfa-KKbcbV.md similarity index 100% rename from src/data/roadmaps/angular/content/102-angular-basics/102-angular-templates.md rename to src/data/roadmaps/angular/content/templates@6fhe9xAi_RSVfa-KKbcbV.md diff --git a/src/data/roadmaps/angular/content/115-testing-angular-apps/103-testing-directives.md b/src/data/roadmaps/angular/content/testing-directives@SGqb5k6OmWit8PA6ZT3js.md similarity index 100% rename from src/data/roadmaps/angular/content/115-testing-angular-apps/103-testing-directives.md rename to src/data/roadmaps/angular/content/testing-directives@SGqb5k6OmWit8PA6ZT3js.md diff --git a/src/data/roadmaps/angular/content/115-testing-angular-apps/100-testing-pipes.md b/src/data/roadmaps/angular/content/testing-pipes@rH13NBFG02hnn5eABSNCY.md similarity index 70% rename from src/data/roadmaps/angular/content/115-testing-angular-apps/100-testing-pipes.md rename to src/data/roadmaps/angular/content/testing-pipes@rH13NBFG02hnn5eABSNCY.md index 2c5cf7282..2ca4b3e7d 100644 --- a/src/data/roadmaps/angular/content/115-testing-angular-apps/100-testing-pipes.md +++ b/src/data/roadmaps/angular/content/testing-pipes@rH13NBFG02hnn5eABSNCY.md @@ -4,6 +4,6 @@ An Angular Pipe is a special function that is called from a Component template. Visit the following resources to learn more: -- [@official@Angular Website]https://angular.dev/guide/testing/pipes) -- [@article@Testing-Angular.com](https://testing-angular.com/testing-pipes/) +- [@official@Testing pipes](https://angular.dev/guide/testing/pipes) +- [@article@Testing pipes examples](https://testing-angular.com/testing-pipes/) - [@feed@Explore top posts about Testing](https://app.daily.dev/tags/testing?ref=roadmapsh) diff --git a/src/data/roadmaps/angular/content/testing-requests@4xt0m5jkUqB4Z-krcFBuL.md b/src/data/roadmaps/angular/content/testing-requests@4xt0m5jkUqB4Z-krcFBuL.md new file mode 100644 index 000000000..87b4b32f6 --- /dev/null +++ b/src/data/roadmaps/angular/content/testing-requests@4xt0m5jkUqB4Z-krcFBuL.md @@ -0,0 +1 @@ +# Testing Requests \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/testing-services@HU1eTYB321C93qh_U7ioF.md b/src/data/roadmaps/angular/content/testing-services@HU1eTYB321C93qh_U7ioF.md new file mode 100644 index 000000000..9302496bc --- /dev/null +++ b/src/data/roadmaps/angular/content/testing-services@HU1eTYB321C93qh_U7ioF.md @@ -0,0 +1 @@ +# Testing Services \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/115-testing-angular-apps/index.md b/src/data/roadmaps/angular/content/testing@lLa-OnHV6GzkNFZu29BIT.md similarity index 100% rename from src/data/roadmaps/angular/content/115-testing-angular-apps/index.md rename to src/data/roadmaps/angular/content/testing@lLa-OnHV6GzkNFZu29BIT.md diff --git a/src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/102-transformation.md b/src/data/roadmaps/angular/content/transformation@kdMJHljMzGA3oRlh8Zvos.md similarity index 100% rename from src/data/roadmaps/angular/content/101-rxjs-basics/104-operators/102-transformation.md rename to src/data/roadmaps/angular/content/transformation@kdMJHljMzGA3oRlh8Zvos.md diff --git a/src/data/roadmaps/angular/content/transitions--triggers@Iv2d4sgODqMPzA9gH6RAw.md b/src/data/roadmaps/angular/content/transitions--triggers@Iv2d4sgODqMPzA9gH6RAw.md new file mode 100644 index 000000000..012fab23c --- /dev/null +++ b/src/data/roadmaps/angular/content/transitions--triggers@Iv2d4sgODqMPzA9gH6RAw.md @@ -0,0 +1 @@ +# Transitions & Triggers \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/translation-files@jL5amGV1BAX_V5cyTIH7d.md b/src/data/roadmaps/angular/content/translation-files@jL5amGV1BAX_V5cyTIH7d.md new file mode 100644 index 000000000..366c2fe12 --- /dev/null +++ b/src/data/roadmaps/angular/content/translation-files@jL5amGV1BAX_V5cyTIH7d.md @@ -0,0 +1 @@ +# Translation Files \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/trusting-safe-values@XoYSuv1salCCHoI1cJkxv.md b/src/data/roadmaps/angular/content/trusting-safe-values@XoYSuv1salCCHoI1cJkxv.md new file mode 100644 index 000000000..76f7284dc --- /dev/null +++ b/src/data/roadmaps/angular/content/trusting-safe-values@XoYSuv1salCCHoI1cJkxv.md @@ -0,0 +1 @@ +# Trusting Safe Values \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/two-way-binding@2UH79nCjgtY1Qz1YjUJYL.md b/src/data/roadmaps/angular/content/two-way-binding@2UH79nCjgtY1Qz1YjUJYL.md new file mode 100644 index 000000000..368a44138 --- /dev/null +++ b/src/data/roadmaps/angular/content/two-way-binding@2UH79nCjgtY1Qz1YjUJYL.md @@ -0,0 +1 @@ +# Two-way Binding \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/typed-forms@XC_K1Wahl2ySqOXoym4YU.md b/src/data/roadmaps/angular/content/typed-forms@XC_K1Wahl2ySqOXoym4YU.md new file mode 100644 index 000000000..6abc3693c --- /dev/null +++ b/src/data/roadmaps/angular/content/typed-forms@XC_K1Wahl2ySqOXoym4YU.md @@ -0,0 +1 @@ +# Typed Forms \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/ui-components@CZ1YRyai8Ds-ry4A8jVbr.md b/src/data/roadmaps/angular/content/ui-components@CZ1YRyai8Ds-ry4A8jVbr.md new file mode 100644 index 000000000..e00236207 --- /dev/null +++ b/src/data/roadmaps/angular/content/ui-components@CZ1YRyai8Ds-ry4A8jVbr.md @@ -0,0 +1 @@ +# UI Components \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/104-templates/103-binding-data-props-attrs-events.md b/src/data/roadmaps/angular/content/understand-binding@WH5wlyOtrqFHBJx7RFJwS.md similarity index 100% rename from src/data/roadmaps/angular/content/104-templates/103-binding-data-props-attrs-events.md rename to src/data/roadmaps/angular/content/understand-binding@WH5wlyOtrqFHBJx7RFJwS.md diff --git a/src/data/roadmaps/angular/content/using-libraries@YHV5oFwLwphXf1wJTDZuG.md b/src/data/roadmaps/angular/content/using-libraries@YHV5oFwLwphXf1wJTDZuG.md new file mode 100644 index 000000000..e781ac779 --- /dev/null +++ b/src/data/roadmaps/angular/content/using-libraries@YHV5oFwLwphXf1wJTDZuG.md @@ -0,0 +1 @@ +# Using Libraries \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/viewchild@v0XaLNZ-YrRqP-xv8wS43.md b/src/data/roadmaps/angular/content/viewchild@v0XaLNZ-YrRqP-xv8wS43.md new file mode 100644 index 000000000..7041da4e8 --- /dev/null +++ b/src/data/roadmaps/angular/content/viewchild@v0XaLNZ-YrRqP-xv8wS43.md @@ -0,0 +1 @@ +# ViewChild \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/viewprovider@doHDoAgp7T59KGSXPpQzZ.md b/src/data/roadmaps/angular/content/viewprovider@doHDoAgp7T59KGSXPpQzZ.md new file mode 100644 index 000000000..3f2d7f49c --- /dev/null +++ b/src/data/roadmaps/angular/content/viewprovider@doHDoAgp7T59KGSXPpQzZ.md @@ -0,0 +1 @@ +# viewProvider \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/writing-interceptors@xG7iSVOGcbxJbNv3xbNfc.md b/src/data/roadmaps/angular/content/writing-interceptors@xG7iSVOGcbxJbNv3xbNfc.md new file mode 100644 index 000000000..0058e8235 --- /dev/null +++ b/src/data/roadmaps/angular/content/writing-interceptors@xG7iSVOGcbxJbNv3xbNfc.md @@ -0,0 +1 @@ +# Writing Interceptors \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/xsrf-protection@ni00edsphJd7uBLCn7-Vw.md b/src/data/roadmaps/angular/content/xsrf-protection@ni00edsphJd7uBLCn7-Vw.md new file mode 100644 index 000000000..be845b3f6 --- /dev/null +++ b/src/data/roadmaps/angular/content/xsrf-protection@ni00edsphJd7uBLCn7-Vw.md @@ -0,0 +1 @@ +# XSRF protection \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/zone-pollution@pRSR5PEbkJXAJ1LPyK-EE.md b/src/data/roadmaps/angular/content/zone-pollution@pRSR5PEbkJXAJ1LPyK-EE.md new file mode 100644 index 000000000..790b8d56a --- /dev/null +++ b/src/data/roadmaps/angular/content/zone-pollution@pRSR5PEbkJXAJ1LPyK-EE.md @@ -0,0 +1 @@ +# Zone Pollution \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/zoneless-applications@1x5pT607aKE-S-NCWB810.md b/src/data/roadmaps/angular/content/zoneless-applications@1x5pT607aKE-S-NCWB810.md new file mode 100644 index 000000000..a9f2c2679 --- /dev/null +++ b/src/data/roadmaps/angular/content/zoneless-applications@1x5pT607aKE-S-NCWB810.md @@ -0,0 +1 @@ +# Zoneless Applications \ No newline at end of file diff --git a/src/data/roadmaps/angular/content/111-zones.md b/src/data/roadmaps/angular/content/zones@m4WBnx_9h01Jl6Q1sxi4Y.md similarity index 100% rename from src/data/roadmaps/angular/content/111-zones.md rename to src/data/roadmaps/angular/content/zones@m4WBnx_9h01Jl6Q1sxi4Y.md diff --git a/src/data/roadmaps/angular/migration-mapping.json b/src/data/roadmaps/angular/migration-mapping.json new file mode 100644 index 000000000..c9bb91285 --- /dev/null +++ b/src/data/roadmaps/angular/migration-mapping.json @@ -0,0 +1,53 @@ +{ + "rxjs-basics": "lfp7PIjwITU5gBITQdirD", + "rxjs-basics:observable-pattern": "krXA6ua7E3m4IIpFkgQZe", + "rxjs-basics:observable-lifecycle": "b06Y5YrqBbHhWkK6Ws_1c", + "rxjs-basics:rxjs-vs-promises": "e1ZmmxPZuogCNgtbPPWmd", + "rxjs-basics:operators": "ihsjIcF0tkhjs56458teE", + "rxjs-basics:operators:filtering": "nxUbl0eu3LsSL-Z8X6nP5", + "rxjs-basics:operators:rate-limiting": "bJbbayFQ9WSJT9-qy0H5l", + "rxjs-basics:operators:transformation": "kdMJHljMzGA3oRlh8Zvos", + "rxjs-basics:operators:combination": "IgUHqfVhiGpwxT9tY8O88", + "angular-basics:angular-components": "kGnKzCkQCNFEdgCBRtNuW", + "angular-basics:angular-templates": "6fhe9xAi_RSVfa-KKbcbV", + "angular-basics:angular-modules": "b_kdNS9PDupcUftslkf9i", + "angular-basics:dependency-injection": "8u9uHCRt9RU57erBy79PP", + "angular-basics:services": "CpsoIVoCKaZnM_-BbXbCh", + "angular-basics:routing": "a74v78SvGtWduZpXs7wSq", + "forms": "Q36LQds8k_cSjijvXyWOM", + "rendering-topics:builtin-directives": "kGzlumFdZFxTRZ3HnCGFO", + "rendering-topics:builtin-pipes": "j99WQxuTzGeBBVoReDp_y", + "rendering-topics:change-detection": "_-mTs_FMeob-ZGK-bb3j-", + "routing:configuration": "dbAS-hN1hoCsNJhkxXcGq", + "routing:lazy-loading": "ewbDdPYv2SJl_jW3RVHQs", + "routing:router-outlets": "1ZwdEL0Gx30Vv_Av3ZTGG", + "routing:router-links": "8lFyuSx4MUcYRY2L8bZrq", + "routing:router-events": "YF_sG292HqawIX0siWhrv", + "routing:guards": "PmC4zeaLpa5LoL4FhYXcG", + "state-management:ngxs": "N9ZCPgFnFIUv4jMv1w5qK", + "state-management:ngrx": "ir94IdkF1tVAA8ZTD9r0N", + "zones": "m4WBnx_9h01Jl6Q1sxi4Y", + "creating-a-custom-x:directive": "7GUvTMVzfdVEDBOz-tHUT", + "creating-a-custom-x:pipe": "BOYXGfULJRiP-XOo_lNX3", + "creating-a-custom-x:library": "cl89U8atD6gw5rMGUm4Ix", + "testing-angular-apps": "lLa-OnHV6GzkNFZu29BIT", + "testing-angular-apps:testing-pipes": "rH13NBFG02hnn5eABSNCY", + "testing-angular-apps:testing-services": "TGRZBizDy83JKg_MhnRdX", + "testing-angular-apps:testing-component-bindings": "cXVy1lx2XqY_j8gxz-y60", + "testing-angular-apps:testing-directives": "SGqb5k6OmWit8PA6ZT3js", + "testing-angular-apps:testing-component-templates": "0dYWO_Zvh9J5_6cRjRjvI", + "angular-ssg": "b-0yQ74zHtAxI9aRLBohc", + "angular-ssr": "jfHaS8TqE4tcAo59K8Nkn", + "lifecycle-hooks": "nCpfj_35ZvW-NTygg06XZ", + "state-management": "Mqe_s-nwBqAL6X7OGRHEN", + "forms:reactive-forms": "1d3Y4HVnqom8UOok-7EEf", + "forms:template-driven-forms": "uDx4lPavwsJFBMzdQ70CS", + "angular-cli": "4YSk6I63Ew--zoXC3xmrC", + "angular-cli:schematics": "Uvr0pRk_fOzwRwqn0dQ6N", + "templates:template-statements": "t2YOeMONlcnKBrVAo0JDc", + "templates:binding-data-props-attrs-events": "WH5wlyOtrqFHBJx7RFJwS", + "templates:interpolation": "XHpfHRIlFh19FJIE07u7i", + "templates:property-binding": "TJOZfHtsLfwA0CZ2bd1b2", + "templates:reference-vars": "nyDry6ZWyEUuTq4pw-lU3", + "templates:input-output": "VsU6713jeIjAOEZnF6gWx" +} \ No newline at end of file diff --git a/src/data/roadmaps/api-design/content/api-security@qIJ6dUppjAjOTA8eQbp0n.md b/src/data/roadmaps/api-design/content/api-security@qIJ6dUppjAjOTA8eQbp0n.md index f40f8da23..12f2e84a8 100644 --- a/src/data/roadmaps/api-design/content/api-security@qIJ6dUppjAjOTA8eQbp0n.md +++ b/src/data/roadmaps/api-design/content/api-security@qIJ6dUppjAjOTA8eQbp0n.md @@ -6,4 +6,3 @@ Have a look at the following resources to understand API security and vulnerabil - [@article@OWASP Project API Security](https://owasp.org/API-Security/editions/2023/en/0x00-toc/) - [@feed@Explore top posts about Security](https://app.daily.dev/tags/security?ref=roadmapsh) -- [@article@How to Protect Data in Transit using HMAC and Diffie-Hellman in Node.js](https://www.freecodecamp.org/news/hmac-diffie-hellman-in-node/) diff --git a/src/data/roadmaps/aspnet-core/content/101-general-development-skills/104-datastructures-and-algorithms.md b/src/data/roadmaps/aspnet-core/content/101-general-development-skills/104-datastructures-and-algorithms.md index 8425b98f7..df79c8dd5 100644 --- a/src/data/roadmaps/aspnet-core/content/101-general-development-skills/104-datastructures-and-algorithms.md +++ b/src/data/roadmaps/aspnet-core/content/101-general-development-skills/104-datastructures-and-algorithms.md @@ -4,7 +4,6 @@ As the name indicates, a **Data Structure** is a way of organizing the data in t Visit the following resources to learn more: -- [@article@What are Data Structures?](https://www.geeksforgeeks.org/data-structures) - [@article@Data Structures and Algorithms](https://www.javatpoint.com/data-structure-tutorial) - [@video@Data Structures Illustrated](https://www.youtube.com/watch?v=9rhT3P1MDHk\&list=PLkZYeFmDuaN2-KUIv-mvbjfKszIGJ4FaY) - [@article@C# resources](https://dev.to/adavidoaiei/fundamental-data-structures-and-algorithms-in-c-4ocf) diff --git a/src/data/roadmaps/aspnet-core/content/101-general-development-skills/index.md b/src/data/roadmaps/aspnet-core/content/101-general-development-skills/index.md index 09fceb612..6a4e4c832 100644 --- a/src/data/roadmaps/aspnet-core/content/101-general-development-skills/index.md +++ b/src/data/roadmaps/aspnet-core/content/101-general-development-skills/index.md @@ -18,7 +18,6 @@ There are several skills that are generally considered to be important for worki For more information, visit the following links: -- [@article@A Step-by-Step Approach to Learn OOP](https://www.geeksforgeeks.org/a-step-by-step-approach-to-learn-object-oriented-programming/) - [@video@Asp.net - Complete Tutorial](https://www.youtube.com/watch?v=kdPtNMb8tPw) - [@video@Learn Cloud Computing](https://www.youtube.com/watch?v=eWwK2FKWp0g) - [@video@DevOps Course for Beginners](https://www.youtube.com/watch?v=hQcFE0RD0cQ) diff --git a/src/data/roadmaps/aspnet-core/content/104-orm/index.md b/src/data/roadmaps/aspnet-core/content/104-orm/index.md index 491e1d87d..8b3e5d7d2 100644 --- a/src/data/roadmaps/aspnet-core/content/104-orm/index.md +++ b/src/data/roadmaps/aspnet-core/content/104-orm/index.md @@ -5,5 +5,4 @@ ORM stands for Object-Relational Mapping, and it is a technique that allows a de Visit the following resources to learn more: - [@article@ORM (Object Relational Mapping)](https://www.telerik.com/blogs/dotnet-basics-orm-object-relational-mapping) -- [@article@What is an ORM – The Meaning of Object Relational Mapping](https://www.freecodecamp.org/news/what-is-an-orm-the-meaning-of-object-relational-mapping-database-tools/) - [@article@Understanding Object-Relational Mapping: Pros, Cons](https://www.altexsoft.com/blog/object-relational-mapping/) diff --git a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/index.md b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/index.md index 93b27e54f..46740fa18 100644 --- a/src/data/roadmaps/aspnet-core/content/105-dependency-injection/index.md +++ b/src/data/roadmaps/aspnet-core/content/105-dependency-injection/index.md @@ -9,5 +9,4 @@ Visit the following links for more resources: - [@article@What is Dependency Injection?](https://stackoverflow.com/questions/130794/what-is-dependency-injection) - [@article@Dependency Injection, It's Definition & principles](https://www.growin.com/blog/what-is-dependency-injection/) -- [@article@Intro to Dependency Injections](https://www.freecodecamp.org/news/a-quick-intro-to-dependency-injection-what-it-is-and-when-to-use-it-7578c84fa88f/) - [@feed@Explore top posts about Dependency Injection](https://app.daily.dev/tags/dependency-injection?ref=roadmapsh) diff --git a/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/103-cassandra.md b/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/103-cassandra.md index bb33f1590..2ec807681 100644 --- a/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/103-cassandra.md +++ b/src/data/roadmaps/aspnet-core/content/107-databases/103-nosql/103-cassandra.md @@ -8,5 +8,4 @@ For more information, visit the following links: - [@article@Introduction to Cassandra](https://www.tutorialspoint.com/cassandra/cassandra_introduction.htm) - [@article@Overview of Cassandra in ASP.NET](https://www.spiceworks.com/tech/big-data/articles/what-is-cassandra/) -- [@article@Introduction to Apache Cassandra](https://www.geeksforgeeks.org/introduction-to-apache-cassandra/) - [@feed@Explore top posts about Apache Cassandra](https://app.daily.dev/tags/apache-cassandra?ref=roadmapsh) diff --git a/src/data/roadmaps/aws/content/108-cloudwatch/100-metrics.md b/src/data/roadmaps/aws/content/108-cloudwatch/100-metrics.md index de9822282..330fcb91e 100644 --- a/src/data/roadmaps/aws/content/108-cloudwatch/100-metrics.md +++ b/src/data/roadmaps/aws/content/108-cloudwatch/100-metrics.md @@ -1,3 +1,7 @@ # Metrics -In Amazon CloudWatch, **metrics** are fundamental concepts that you work with. A metric is the fundamental concept in CloudWatch and represents a time-ordered set of data points that are published to CloudWatch. Think of a metric as a variable to monitor, and the data points as representing the values of that variable over time. Metrics are uniquely defined by a name, a namespace, and zero or more dimensions. Every data point must have a timestamp. You can retrieve statistics about those data points as an ordered set of time-series data. \ No newline at end of file +In Amazon CloudWatch, **metrics** are fundamental concepts that you work with. A metric is the fundamental concept in CloudWatch and represents a time-ordered set of data points that are published to CloudWatch. Think of a metric as a variable to monitor, and the data points as representing the values of that variable over time. Metrics are uniquely defined by a name, a namespace, and zero or more dimensions up to 30 dimensions per metric. Every data point must have a timestamp. You can retrieve statistics about those data points as an ordered set of time-series data. CloudWatch provides metrics for every serviece in AWS. + +Learn more from the following resources: + +- [@official@CloudWatch Metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html) diff --git a/src/data/roadmaps/backend/content/database-indexes@y-xkHFE9YzhNIX3EiWspL.md b/src/data/roadmaps/backend/content/database-indexes@y-xkHFE9YzhNIX3EiWspL.md index a5ac6776c..9edb4800a 100644 --- a/src/data/roadmaps/backend/content/database-indexes@y-xkHFE9YzhNIX3EiWspL.md +++ b/src/data/roadmaps/backend/content/database-indexes@y-xkHFE9YzhNIX3EiWspL.md @@ -4,6 +4,5 @@ An index is a data structure that you build and assign on top of an existing tab Visit the following resources to learn more: -- [@article@An in-depth look at Database Indexing](https://www.freecodecamp.org/news/database-indexing-at-a-glance-bb50809d48bd/) - [@video@Database Indexing Explained](https://www.youtube.com/watch?v=-qNSXK7s7_w) - [@feed@Explore top posts about Database](https://app.daily.dev/tags/database?ref=roadmapsh) diff --git a/src/data/roadmaps/backend/content/gof-design-patterns@6XIWO0MoE-ySl4qh_ihXa.md b/src/data/roadmaps/backend/content/gof-design-patterns@6XIWO0MoE-ySl4qh_ihXa.md new file mode 100644 index 000000000..c38a3eefc --- /dev/null +++ b/src/data/roadmaps/backend/content/gof-design-patterns@6XIWO0MoE-ySl4qh_ihXa.md @@ -0,0 +1,14 @@ +# GoF Design Patterns + +The Gang of Four (GoF) design patterns are a set of design patterns for object-oriented software development that were first described in the book "Design Patterns: Elements of Reusable Object-Oriented Software" by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (also known as the Gang of Four). + +The GoF design patterns are divided into three categories: Creational, Structural and Behavioral. + +- Creational Patterns +- Structural Patterns +- Behavioral Patterns + +Learn more from the following links: + +- [@article@Gangs of Four (GoF) Design Patterns](https://www.digitalocean.com/community/tutorials/gangs-of-four-gof-design-patterns) +- [@video@Tutorial - Builder Pattern (Gang of Four Design Patterns Series)](https://www.youtube.com/watch?v=_sa2WlAFWQos) diff --git a/src/data/roadmaps/backend/content/neo4j@BTNJfWemFKEeNeTyENXui.md b/src/data/roadmaps/backend/content/neo4j@BTNJfWemFKEeNeTyENXui.md index 955adfb74..cf8b57136 100644 --- a/src/data/roadmaps/backend/content/neo4j@BTNJfWemFKEeNeTyENXui.md +++ b/src/data/roadmaps/backend/content/neo4j@BTNJfWemFKEeNeTyENXui.md @@ -5,5 +5,4 @@ A graph database stores nodes and relationships instead of tables, or documents. Visit the following resources to learn more: - [@article@What is a Graph Database?](https://neo4j.com/developer/graph-database/) -- [@article@Graph Databases VS Relational Databases](https://www.freecodecamp.org/news/graph-database-vs-relational-database/) - [@feed@Explore top posts about Backend Development](https://app.daily.dev/tags/backend?ref=roadmapsh) diff --git a/src/data/roadmaps/backend/content/python@J_sVHsD72Yzyqb9KCIvAY.md b/src/data/roadmaps/backend/content/python@J_sVHsD72Yzyqb9KCIvAY.md index cd5daf295..2885ee0ec 100644 --- a/src/data/roadmaps/backend/content/python@J_sVHsD72Yzyqb9KCIvAY.md +++ b/src/data/roadmaps/backend/content/python@J_sVHsD72Yzyqb9KCIvAY.md @@ -8,7 +8,6 @@ Visit the following resources to learn more: - [@official@Python Website](https://www.python.org/) - [@official@Python Getting Started](https://www.python.org/about/gettingstarted/) - [@article@Automate the Boring Stuff](https://automatetheboringstuff.com/) -- [@article@FreeCodeCamp.org - How to Learn Python ? ](https://www.freecodecamp.org/news/how-to-learn-python/) - [@article@Python principles - Python basics](https://pythonprinciples.com/) - [@article@W3Schools - Python Tutorial ](https://www.w3schools.com/python/) - [@article@Python Crash Course](https://ehmatthes.github.io/pcc/) diff --git a/src/data/roadmaps/backend/content/server-security@TZ0BWOENPv6pQm8qYB8Ow.md b/src/data/roadmaps/backend/content/server-security@TZ0BWOENPv6pQm8qYB8Ow.md index 236c1c810..f38aae931 100644 --- a/src/data/roadmaps/backend/content/server-security@TZ0BWOENPv6pQm8qYB8Ow.md +++ b/src/data/roadmaps/backend/content/server-security@TZ0BWOENPv6pQm8qYB8Ow.md @@ -10,8 +10,4 @@ Learn about the security of your server and how to secure it. Here are some of t - Use a intrusion detection system (IDS): An IDS monitors network traffic and alerts you to any suspicious activity, which can help you to identify and respond to potential threats in a timely manner. - Enable two-factor authentication: Two-factor authentication adds an extra layer of security to your accounts by requiring a second form of authentication, such as a code sent to your phone, in addition to your password. -Also learn about OpenSSL and creating your own PKI as well as managing certs, renewals, and mutual client auth with x509 certs - -Learn more from the following resources: - -- [@article@How to Defend Against Server-Side Request Forgery](https://www.freecodecamp.org/news/defending-against-ssrf-attacks/) +Also learn about OpenSSL and creating your own PKI as well as managing certs, renewals, and mutual client auth with x509 certs \ No newline at end of file diff --git a/src/data/roadmaps/blockchain/content/architecture@B6GGTUbzEaIz5yu32WrAq.md b/src/data/roadmaps/blockchain/content/architecture@B6GGTUbzEaIz5yu32WrAq.md index 8a197069f..948a599bd 100644 --- a/src/data/roadmaps/blockchain/content/architecture@B6GGTUbzEaIz5yu32WrAq.md +++ b/src/data/roadmaps/blockchain/content/architecture@B6GGTUbzEaIz5yu32WrAq.md @@ -5,6 +5,5 @@ Unlike Web2 applications, in Web3 there’s no centralized database that stores Visit the following resources to learn more: - [@article@The Architecture of a Web 3.0 application](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) -- [@article@Decentralized Applications Architecture: Back End, Security and Design Patterns](https://www.freecodecamp.org/news/how-to-design-a-secure-backend-for-your-decentralized-application-9541b5d8bddb/) - [@video@Blockchain Development: Dapp Architecture](https://youtu.be/KBSq8-LnUDI?t=286) - [@feed@Explore top posts about Architecture](https://app.daily.dev/tags/architecture?ref=roadmapsh) diff --git a/src/data/roadmaps/blockchain/content/blockchains@EQgb4LqXnyq3gOX7Fb85s.md b/src/data/roadmaps/blockchain/content/blockchains@EQgb4LqXnyq3gOX7Fb85s.md index 1e599de30..d1bd861c1 100644 --- a/src/data/roadmaps/blockchain/content/blockchains@EQgb4LqXnyq3gOX7Fb85s.md +++ b/src/data/roadmaps/blockchain/content/blockchains@EQgb4LqXnyq3gOX7Fb85s.md @@ -5,5 +5,4 @@ Blockchain systems vary considerably in their design, particularly with regard t Visit the following resources to learn more: - [@article@Types of Blockchains: PoW, PoS, and Private](https://www.gemini.com/cryptopedia/blockchain-types-pow-pos-private) -- [@article@Types of Blockchain](https://www.geeksforgeeks.org/types-of-blockchain/) - [@feed@Explore top posts about Blockchain](https://app.daily.dev/tags/blockchain?ref=roadmapsh) diff --git a/src/data/roadmaps/blockchain/content/mining-and-incentive-models@B7niNXMOTbHn_1ixKQ8ri.md b/src/data/roadmaps/blockchain/content/mining-and-incentive-models@B7niNXMOTbHn_1ixKQ8ri.md index 4a5e68724..2e311b39c 100644 --- a/src/data/roadmaps/blockchain/content/mining-and-incentive-models@B7niNXMOTbHn_1ixKQ8ri.md +++ b/src/data/roadmaps/blockchain/content/mining-and-incentive-models@B7niNXMOTbHn_1ixKQ8ri.md @@ -6,6 +6,5 @@ An Incentive is basically a reward given to a Blockchain Miner for speeding up t Visit the following resources to learn more: -- [@article@Blockchain Incentives to Miners](https://www.geeksforgeeks.org/blockchain-incentives-to-miners/) - [@article@Ethereum Consensus Mechanisms](https://ethereum.org/en/developers/docs/consensus-mechanisms/) - [@article@Solana Staking Rewards](https://docs.solana.com/implemented-proposals/staking-rewards) diff --git a/src/data/roadmaps/computer-science/computer-science.json b/src/data/roadmaps/computer-science/computer-science.json index 312a4e293..f48e916d0 100644 --- a/src/data/roadmaps/computer-science/computer-science.json +++ b/src/data/roadmaps/computer-science/computer-science.json @@ -1,12190 +1,8412 @@ { - "mockup": { - "controls": { - "control": [ - { - "ID": "2651", - "typeID": "Arrow", - "zOrder": "0", - "w": "1", - "h": "139", - "measuredW": "150", - "measuredH": "100", - "x": "1029", - "y": "4032", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.4438624012549725, - "y": -0.00008403832147459167 - }, - "p2": { - "x": 0, - "y": 139 - }, - "stroke": "dotted" - } - }, - { - "ID": "2652", - "typeID": "Arrow", - "zOrder": "1", - "w": "1", - "h": "161", - "measuredW": "150", - "measuredH": "100", - "x": "1031", - "y": "3844", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.4438624012549725, - "y": -0.00008403832147459167 - }, - "p2": { - "x": 0, - "y": 161 - } - } - }, - { - "ID": "2653", - "typeID": "TextArea", - "zOrder": "2", - "w": "552", - "h": "124", - "measuredW": "200", - "measuredH": "140", - "x": "755", - "y": "3963" - }, - { - "ID": "2654", - "typeID": "Label", - "zOrder": "3", - "measuredW": "501", - "measuredH": "25", - "x": "784", - "y": "3983", - "properties": { - "size": "17", - "text": "Have a look at the following Web Development related Roadmaps" - } - }, - { - "ID": "2655", - "typeID": "__group__", - "zOrder": "4", - "measuredW": "229", - "measuredH": "44", - "w": "229", - "h": "44", - "x": "1050", - "y": "4018", - "properties": { - "controlName": "ext_link:roadmap.sh/backend" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "229", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "147", - "measuredH": "25", - "x": "41", - "y": "9", - "properties": { - "size": "17", - "text": "Backend Roadmap" - } - } - ] - } - } - }, - { - "ID": "2656", - "typeID": "__group__", - "zOrder": "5", - "measuredW": "252", - "measuredH": "44", - "w": "252", - "h": "44", - "x": "784", - "y": "4018", - "properties": { - "controlName": "ext_link:roadmap.sh/frontend" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "252", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "149", - "measuredH": "25", - "x": "51", - "y": "9", - "properties": { - "size": "17", - "text": "Frontend Roadmap" - } - } - ] - } - } - }, - { - "ID": "2657", - "typeID": "Arrow", - "zOrder": "6", - "w": "286", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "1063", - "y": "3830", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "color": "10027263", - "p0": { - "x": 0.4466977252284323, - "y": 0 - }, - "p1": { - "x": 0.4999999999999999, - "y": 0 - }, - "p2": { - "x": 286.5882648254353, - "y": 0 - } - } - }, - { - "ID": "2658", - "typeID": "Arrow", - "zOrder": "7", - "w": "1", - "h": "280", - "measuredW": "150", - "measuredH": "100", - "x": "1443", - "y": "3549", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "color": "10027263", - "p0": { - "x": 0.4466977252284323, - "y": 0 - }, - "p1": { - "x": 0.4999999999999999, - "y": 0 - }, - "p2": { - "x": 0.4466977252284323, - "y": 279.78759008067254 - } - } - }, - { - "ID": "2659", - "typeID": "Arrow", - "zOrder": "8", - "w": "1", - "h": "79", - "measuredW": "150", - "measuredH": "100", - "x": "1443", - "y": "3471", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127988087, - "y": 0.24614635156922304 - }, - "p1": { - "x": 0.5603752218607518, - "y": 0.000041473854844319715 - }, - "p2": { - "x": -0.40400616127999456, - "y": 79.06042188867423 - } - } - }, - { - "ID": "2660", - "typeID": "Arrow", - "zOrder": "9", - "w": "286", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "1105", - "y": "3549", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "color": "10027263", - "p0": { - "x": 0.4466977252284323, - "y": 0 - }, - "p1": { - "x": 0.4999999999999999, - "y": 0 - }, - "p2": { - "x": 286.5882648254353, - "y": 0 - } - } - }, - { - "ID": "2661", - "typeID": "Arrow", - "zOrder": "10", - "w": "1", - "h": "167", - "measuredW": "150", - "measuredH": "100", - "x": "1058", - "y": "3464", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127988087, - "y": 0.24614635156922304 - }, - "p1": { - "x": 0.5603752218607518, - "y": 0.000041473854844320914 - }, - "p2": { - "x": -0.40400616127999456, - "y": 167.32964661212372 - } - } - }, - { - "ID": "2662", - "typeID": "Arrow", - "zOrder": "11", - "w": "141", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "821", - "y": "3549", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "color": "10027263", - "p0": { - "x": 0.4466977252284323, - "y": 0 - }, - "p1": { - "x": 0.49999999999999994, - "y": 0 - }, - "p2": { - "x": 141.76187746709184, - "y": 0 - } - } - }, - { - "ID": "2663", - "typeID": "Arrow", - "zOrder": "12", - "w": "1", - "h": "624", - "measuredW": "150", - "measuredH": "100", - "x": "783", - "y": "2897", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "color": "10027263", - "p0": { - "x": 0.4466977252284323, - "y": 0 - }, - "p1": { - "x": 0.4999999999999999, - "y": 0 - }, - "p2": { - "x": 0.4466977252284323, - "y": 623.7469287947233 - } - } - }, - { - "ID": "2664", - "typeID": "Arrow", - "zOrder": "13", - "w": "242", - "h": "82", - "measuredW": "150", - "measuredH": "100", - "x": "472", - "y": "3549", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "color": "10027263", - "stroke": "dotted", - "p0": { - "x": 0.42941020565677945, - "y": 81.2259902529072 - }, - "p1": { - "x": 0.38345159921218686, - "y": 0.1373540341609731 - }, - "p2": { - "x": 242.01078040805487, - "y": 0.007398065631605277 - } - } - }, - { - "ID": "2665", - "typeID": "Arrow", - "zOrder": "14", - "w": "154", - "h": "146", - "measuredW": "150", - "measuredH": "100", - "x": "560", - "y": "3329", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "color": "10027263", - "stroke": "dotted", - "p0": { - "x": 0.33482861742891146, - "y": -0.17709120690597047 - }, - "p1": { - "x": 0.4312820512820513, - "y": -0.0830769230769224 - }, - "p2": { - "x": 154.72240875236105, - "y": 145.9918967407507 - } - } - }, - { - "ID": "2666", - "typeID": "Arrow", - "zOrder": "15", - "w": "172", - "h": "190", - "measuredW": "150", - "measuredH": "100", - "x": "562", - "y": "3282", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "color": "10027263", - "stroke": "dotted", - "p0": { - "x": 0.33482861742891146, - "y": -0.17709120690597047 - }, - "p1": { - "x": 0.4389538660648381, - "y": -0.09164921705513132 - }, - "p2": { - "x": 172.73480981226578, - "y": 190.13298230362125 - } - } - }, - { - "ID": "2667", - "typeID": "Arrow", - "zOrder": "16", - "w": "149", - "measuredW": "150", - "measuredH": "100", - "x": "560", - "y": "3380", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "color": "10027263", - "stroke": "dotted", - "p0": { - "x": 0.33482861742891146, - "y": -0.17709120690597047 - }, - "p1": { - "x": 0.43128205128205127, - "y": -0.08307692307692248 - }, - "p2": { - "x": 149.0045798781025, - "y": 99.85391144285586 - } - } - }, - { - "ID": "2668", - "typeID": "Arrow", - "zOrder": "17", - "w": "146", - "h": "45", - "measuredW": "150", - "measuredH": "100", - "x": "562", - "y": "3442", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "color": "10027263", - "stroke": "dotted", - "p0": { - "x": -0.22951363405400116, - "y": 0.11438071376414882 - }, - "p1": { - "x": 0.4312820512820512, - "y": -0.08307692307692233 - }, - "p2": { - "x": 145.5751226595379, - "y": 45.00119753567924 - } - } - }, - { - "ID": "2669", - "typeID": "Arrow", - "zOrder": "18", - "w": "160", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "559", - "y": "3497", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "color": "10027263", - "p0": { - "x": -0.08842807118332985, - "y": 0.007398065631605277 - }, - "p1": { - "x": 0.49999999999999983, - "y": 0 - }, - "p2": { - "x": 160.01078040805487, - "y": 0.007398065631605277 - }, - "stroke": "dotted" - } - }, - { - "ID": "2670", - "typeID": "Arrow", - "zOrder": "19", - "w": "141", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "640", - "y": "3182", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "color": "10027263", - "p0": { - "x": 0.4466977252284323, - "y": 0 - }, - "p1": { - "x": 0.49999999999999994, - "y": 0 - }, - "p2": { - "x": 141.76187746709184, - "y": 0 - } - } - }, - { - "ID": "2671", - "typeID": "Arrow", - "zOrder": "20", - "w": "1", - "h": "69", - "measuredW": "150", - "measuredH": "100", - "x": "623", - "y": "3111", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127988087, - "y": 0.24614635156922304 - }, - "p1": { - "x": 0.5603752218607517, - "y": 0.00004147385484432124 - }, - "p2": { - "x": -0.40400616127988087, - "y": 69.45803653961343 - } - } - }, - { - "ID": "2672", - "typeID": "Arrow", - "zOrder": "21", - "w": "1", - "h": "69", - "measuredW": "150", - "measuredH": "100", - "x": "473", - "y": "3109", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127988087, - "y": 0.24614635156922304 - }, - "p1": { - "x": 0.5603752218607517, - "y": 0.00004147385484432124 - }, - "p2": { - "x": -0.40400616127988087, - "y": 69.45803653961343 - } - } - }, - { - "ID": "2673", - "typeID": "Arrow", - "zOrder": "22", - "w": "1", - "h": "69", - "measuredW": "150", - "measuredH": "100", - "x": "613", - "y": "2346", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127988087, - "y": 0.24614635156922304 - }, - "p1": { - "x": 0.5603752218607517, - "y": 0.00004147385484432124 - }, - "p2": { - "x": -0.40400616127988087, - "y": 69.45803653961343 - } - } - }, - { - "ID": "2674", - "typeID": "__group__", - "zOrder": "23", - "measuredW": "67", - "measuredH": "47", - "w": "67", - "h": "47", - "x": "619", - "y": "2663", - "properties": { - "controlName": "106-databases:dcl" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "67", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "37", - "measuredH": "26", - "x": "15", - "y": "11", - "properties": { - "size": "18", - "text": "DCL" - } - } - ] - } - } - }, - { - "ID": "2675", - "typeID": "__group__", - "zOrder": "24", - "measuredW": "67", - "measuredH": "47", - "w": "67", - "h": "47", - "x": "545", - "y": "2663", - "properties": { - "controlName": "105-databases:dql" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "67", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "38", - "measuredH": "26", - "x": "15", - "y": "11", - "properties": { - "size": "18", - "text": "DQL" - } - } - ] - } - } - }, - { - "ID": "2676", - "typeID": "__group__", - "zOrder": "25", - "measuredW": "68", - "measuredH": "47", - "w": "68", - "h": "47", - "x": "470", - "y": "2663", - "properties": { - "controlName": "104-databases:dml" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "68", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "40", - "measuredH": "26", - "x": "14", - "y": "11", - "properties": { - "size": "18", - "text": "DML" - } - } - ] - } - } - }, - { - "ID": "2677", - "typeID": "Arrow", - "zOrder": "26", - "w": "141", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "784", - "y": "2897", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "color": "10027263", - "p0": { - "x": 0.4466977252284323, - "y": 0 - }, - "p1": { - "x": 0.49999999999999994, - "y": 0 - }, - "p2": { - "x": 141.76187746709184, - "y": 0 - } - } - }, - { - "ID": "2678", - "typeID": "Arrow", - "zOrder": "27", - "w": "159", - "h": "137", - "measuredW": "150", - "measuredH": "100", - "x": "1172", - "y": "2757", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 159.07286500993314, - "y": -0.39734577004583116 - }, - "p1": { - "x": 0.49052267735105126, - "y": 0.18476933315403826 - }, - "p2": { - "x": 0.4014816133383192, - "y": 136.98127069141265 - } - } - }, - { - "ID": "2679", - "typeID": "Arrow", - "zOrder": "28", - "w": "1", - "h": "97", - "measuredW": "150", - "measuredH": "100", - "x": "1130", - "y": "2895", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127999456, - "y": -0.31215130454575046 - }, - "p1": { - "x": 0.5603752218607516, - "y": 0.000041473854844319586 - }, - "p2": { - "x": -0.40400616127999456, - "y": 96.19883091555585 - } - } - }, - { - "ID": "2680", - "typeID": "Arrow", - "zOrder": "29", - "w": "1", - "h": "97", - "measuredW": "150", - "measuredH": "100", - "x": "990", - "y": "2895", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127999456, - "y": -0.31215130454575046 - }, - "p1": { - "x": 0.5603752218607516, - "y": 0.000041473854844319586 - }, - "p2": { - "x": -0.40400616127999456, - "y": 96.19883091555585 - } - } - }, - { - "ID": "2681", - "typeID": "Arrow", - "zOrder": "30", - "w": "1", - "h": "253", - "measuredW": "150", - "measuredH": "100", - "x": "1331", - "y": "2500", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": -0.40400616127999456, - "y": 0.0057689332443260355 - }, - "p1": { - "x": 0.5603752218607514, - "y": 0.000041473854844320684 - }, - "p2": { - "x": -0.40400616127999456, - "y": 252.80692385306293 - } - } - }, - { - "ID": "2682", - "typeID": "Arrow", - "zOrder": "31", - "w": "255", - "h": "146", - "measuredW": "150", - "measuredH": "100", - "x": "1084", - "y": "2350", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "color": "10027263", - "p0": { - "x": -0.13526499871818487, - "y": 0.031203232169445982 - }, - "p1": { - "x": 0.5580705321176507, - "y": 0.162062936184401 - }, - "p2": { - "x": 255.30850584265454, - "y": 145.83878382758257 - } - } - }, - { - "ID": "2683", - "typeID": "Arrow", - "zOrder": "32", - "w": "1", - "h": "147", - "measuredW": "150", - "measuredH": "100", - "x": "1493", - "y": "2668", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127999456, - "y": -0.23469462112143447 - }, - "p1": { - "x": 0.5603752218607517, - "y": 0.000041473854844321266 - }, - "p2": { - "x": -0.40400616127988087, - "y": 146.45803653961343 - } - } - }, - { - "ID": "2684", - "typeID": "Arrow", - "zOrder": "33", - "w": "1", - "h": "120", - "measuredW": "150", - "measuredH": "100", - "x": "510", - "y": "2240", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": -0.40400616127988087, - "y": -0.3822100294962638 - }, - "p1": { - "x": 0.5603752218607514, - "y": 0.000041473854844320934 - }, - "p2": { - "x": -0.40400616127988087, - "y": 119.89520311389833 - } - } - }, - { - "ID": "2685", - "typeID": "Arrow", - "zOrder": "34", - "w": "1", - "h": "69", - "measuredW": "150", - "measuredH": "100", - "x": "463", - "y": "2344", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127988087, - "y": 0.24614635156922304 - }, - "p1": { - "x": 0.5603752218607517, - "y": 0.00004147385484432124 - }, - "p2": { - "x": -0.40400616127988087, - "y": 69.45803653961343 - } - } - }, - { - "ID": "2686", - "typeID": "Arrow", - "zOrder": "35", - "w": "179", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "677", - "y": "2248", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 178.91698054523056, - "y": -0.10479688610166704 - }, - "p1": { - "x": 0.5603752218607513, - "y": 0.00004147385484432086 - }, - "p2": { - "x": -0.40400616127988087, - "y": -0.10479688610166704 - } - } - }, - { - "ID": "2687", - "typeID": "Arrow", - "zOrder": "36", - "w": "1", - "h": "120", - "measuredW": "150", - "measuredH": "100", - "x": "956", - "y": "2124", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": -0.40400616127988087, - "y": -0.3822100294962638 - }, - "p1": { - "x": 0.5603752218607514, - "y": 0.000041473854844320934 - }, - "p2": { - "x": -0.40400616127988087, - "y": 119.89520311389833 - } - } - }, - { - "ID": "2688", - "typeID": "Arrow", - "zOrder": "37", - "w": "237", - "h": "88", - "measuredW": "150", - "measuredH": "100", - "x": "1083", - "y": "2261", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": -0.18492494208862809, - "y": 0.14086687764120143 - }, - "p1": { - "x": 0.5666977129255916, - "y": 0.059401842078030516 - }, - "p2": { - "x": 236.4917901850506, - "y": 87.75383984283599 - } - } - }, - { - "ID": "2689", - "typeID": "Arrow", - "zOrder": "38", - "w": "237", - "h": "44", - "measuredW": "150", - "measuredH": "100", - "x": "1089", - "y": "2253", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": -0.44410848692928084, - "y": -0.4703578050980468 - }, - "p1": { - "x": 0.5598743765010158, - "y": 0.013892481064104577 - }, - "p2": { - "x": 236.502079526118, - "y": 43.163808108496596 - } - } - }, - { - "ID": "2690", - "typeID": "Arrow", - "zOrder": "39", - "w": "240", - "h": "2", - "measuredW": "150", - "measuredH": "100", - "x": "1081", - "y": "2242", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 0.2967079682300664, - "y": 1.0944380811120027 - }, - "p1": { - "x": 0.507997698072514, - "y": -0.004093722600268801 - }, - "p2": { - "x": 239.9943625203175, - "y": 0.07120403889030058 - } - } - }, - { - "ID": "2691", - "typeID": "Arrow", - "zOrder": "40", - "w": "234", - "h": "50", - "measuredW": "150", - "measuredH": "100", - "x": "1084", - "y": "2186", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 0.25027917170109504, - "y": 50.74239694321341 - }, - "p1": { - "x": 0.518435301398724, - "y": -0.05714837019048969 - }, - "p2": { - "x": 233.98921784978393, - "y": 0.47602763401710035 - } - } - }, - { - "ID": "2692", - "typeID": "Arrow", - "zOrder": "41", - "w": "245", - "h": "93", - "measuredW": "150", - "measuredH": "100", - "x": "1071", - "y": "2135", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 0.33344214759267743, - "y": 93.13117226047461 - }, - "p1": { - "x": 0.5126752577446054, - "y": -0.07306562685033402 - }, - "p2": { - "x": 245.48664551451702, - "y": 0.38856823494461423 - } - } - }, - { - "ID": "2693", - "typeID": "Arrow", - "zOrder": "42", - "w": "1", - "h": "114", - "measuredW": "150", - "measuredH": "100", - "x": "510", - "y": "2155", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127988087, - "y": -0.3822100294962638 - }, - "p1": { - "x": 0.5603752218607517, - "y": 0.00004147385484432123 - }, - "p2": { - "x": -0.40400616127988087, - "y": 114.05770390174985 - } - } - }, - { - "ID": "2694", - "typeID": "__group__", - "zOrder": "43", - "measuredW": "143", - "measuredH": "47", - "w": "143", - "h": "47", - "x": "1056", - "y": "3262", - "properties": { - "controlName": "113-system-design:short-polling" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "143", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "102", - "measuredH": "26", - "x": "21", - "y": "11", - "properties": { - "size": "18", - "text": "Short Polling" - } - } - ] - } - } - }, - { - "ID": "2695", - "typeID": "Arrow", - "zOrder": "44", - "w": "1", - "h": "82", - "measuredW": "150", - "measuredH": "100", - "x": "1050", - "y": "2814", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127999456, - "y": 0.02195310850356691 - }, - "p1": { - "x": 0.5603752218607515, - "y": 0.00004147385484431973 - }, - "p2": { - "x": -0.40400616127999456, - "y": 82.12831111664991 - } - } - }, - { - "ID": "2696", - "typeID": "Arrow", - "zOrder": "45", - "w": "127", - "h": "3", - "measuredW": "150", - "measuredH": "100", - "x": "1118", - "y": "1961", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.5605181187999518, - "y": -0.0005546755370219163 - }, - "p2": { - "x": 127, - "y": 3 - } - } - }, - { - "ID": "2697", - "typeID": "Arrow", - "zOrder": "46", - "w": "129", - "h": "46", - "measuredW": "150", - "measuredH": "100", - "x": "1119", - "y": "1908", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.5059151699781369, - "y": -0.09339503524008039 - }, - "p2": { - "x": 129, - "y": 46 - } - } - }, - { - "ID": "2698", - "typeID": "Arrow", - "zOrder": "47", - "w": "195", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "677", - "y": "2346", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "color": "10027263", - "p0": { - "x": 0.13439210593833195, - "y": 0 - }, - "p1": { - "x": 0.5, - "y": 0 - }, - "p2": { - "x": 194.88187101517303, - "y": 0 - } - } - }, - { - "ID": "2699", - "typeID": "TextArea", - "zOrder": "48", - "w": "89", - "h": "193", - "measuredW": "200", - "measuredH": "140", - "x": "856", - "y": "2507" - }, - { - "ID": "2700", - "typeID": "__group__", - "zOrder": "49", - "measuredW": "272", - "measuredH": "47", - "w": "272", - "h": "47", - "x": "812", - "y": "2586", - "properties": { - "controlName": "101-complexity-classes:np-complete:knapsack-problem" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "272", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "153", - "measuredH": "26", - "x": "59", - "y": "11", - "properties": { - "size": "18", - "text": "Knapsack Problem" - } - } - ] - } - } - }, - { - "ID": "2701", - "typeID": "Arrow", - "zOrder": "50", - "w": "1", - "h": "89", - "measuredW": "150", - "measuredH": "100", - "x": "1052", - "y": "2357", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127999456, - "y": -0.010444118840950978 - }, - "p1": { - "x": 0.5603752218607517, - "y": 0.000041473854844321544 - }, - "p2": { - "x": -0.40400616127988087, - "y": 89.45803653961343 - } - } - }, - { - "ID": "2702", - "typeID": "Arrow", - "zOrder": "51", - "w": "1", - "h": "89", - "measuredW": "150", - "measuredH": "100", - "x": "962", - "y": "2357", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127999456, - "y": -0.010444118840950978 - }, - "p1": { - "x": 0.5603752218607517, - "y": 0.000041473854844321544 - }, - "p2": { - "x": -0.40400616127988087, - "y": 89.45803653961343 - } - } - }, - { - "ID": "2703", - "typeID": "Arrow", - "zOrder": "52", - "w": "1", - "h": "89", - "measuredW": "150", - "measuredH": "100", - "x": "892", - "y": "2357", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127999456, - "y": -0.010444118840950978 - }, - "p1": { - "x": 0.5603752218607517, - "y": 0.000041473854844321544 - }, - "p2": { - "x": -0.40400616127988087, - "y": 89.45803653961343 - } - } - }, - { - "ID": "2704", - "typeID": "Arrow", - "zOrder": "53", - "w": "1", - "h": "89", - "measuredW": "150", - "measuredH": "100", - "x": "834", - "y": "2357", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127999456, - "y": -0.010444118840950978 - }, - "p1": { - "x": 0.5603752218607517, - "y": 0.000041473854844321544 - }, - "p2": { - "x": -0.40400616127988087, - "y": 89.45803653961343 - } - } - }, - { - "ID": "2705", - "typeID": "__group__", - "zOrder": "54", - "measuredW": "298", - "measuredH": "50", - "w": "298", - "h": "50", - "x": "808", - "y": "2222", - "properties": { - "controlName": "110-common-uml-diagrams" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "298", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "200", - "measuredH": "26", - "x": "49", - "y": "12", - "properties": { - "size": "18", - "text": "Common UML Diagrams" - } - } - ] - } - } - }, - { - "ID": "2706", - "typeID": "Arrow", - "zOrder": "55", - "w": "1", - "h": "101", - "measuredW": "150", - "measuredH": "100", - "x": "898", - "y": "2034", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127988087, - "y": -0.3822100294962638 - }, - "p1": { - "x": 0.5603752218607517, - "y": 0.00004147385484432186 - }, - "p2": { - "x": -0.40400616127988087, - "y": 100.45803653961343 - } - } - }, - { - "ID": "2707", - "typeID": "Arrow", - "zOrder": "56", - "w": "1", - "h": "101", - "measuredW": "150", - "measuredH": "100", - "x": "1018", - "y": "2034", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127988087, - "y": -0.3822100294962638 - }, - "p1": { - "x": 0.5603752218607517, - "y": 0.00004147385484432186 - }, - "p2": { - "x": -0.40400616127988087, - "y": 100.45803653961343 - } - } - }, - { - "ID": "2708", - "typeID": "__group__", - "zOrder": "57", - "measuredW": "105", - "measuredH": "47", - "w": "105", - "h": "47", - "x": "966", - "y": "2024", - "properties": { - "controlName": "101-character-encodings:ascii" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "105", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "46", - "measuredH": "26", - "x": "30", - "y": "11", - "properties": { - "size": "18", - "text": "ASCII" - } - } - ] - } - } - }, - { - "ID": "2709", - "typeID": "__group__", - "zOrder": "58", - "measuredW": "105", - "measuredH": "47", - "w": "105", - "h": "47", - "x": "846", - "y": "2024", - "properties": { - "controlName": "100-character-encodings:unicode" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "105", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "69", - "measuredH": "26", - "x": "18", - "y": "11", - "properties": { - "size": "18", - "text": "Unicode" - } - } - ] - } - } - }, - { - "ID": "2710", - "typeID": "Arrow", - "zOrder": "59", - "w": "189", - "h": "160", - "measuredW": "150", - "measuredH": "100", - "x": "1081", - "y": "1964", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 189, - "y": 0 - }, - "p1": { - "x": 0.4985776880716896, - "y": 0.20637600477852766 - }, - "p2": { - "x": 0.3798709441214214, - "y": 160.0556596124461 - } - } - }, - { - "ID": "2711", - "typeID": "__group__", - "zOrder": "60", - "measuredW": "227", - "measuredH": "153", - "w": "227", - "h": "153", - "x": "663", - "y": "1050", - "properties": { - "controlName": "103-data-structures:graph:graph-representation" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "173", - "h": "138", - "measuredW": "200", - "measuredH": "140", - "x": "27", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "127", - "measuredH": "26", - "x": "50", - "y": "20", - "properties": { - "size": "18", - "text": "Representation" - } - }, - { - "ID": "2", - "typeID": "TextArea", - "zOrder": "2", - "w": "227", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "54", - "properties": { - "color": "16770457" - } - }, - { - "ID": "3", - "typeID": "Label", - "zOrder": "3", - "measuredW": "138", - "measuredH": "26", - "x": "45", - "y": "65", - "properties": { - "size": "18", - "text": "Adjacency Matrix" - } - }, - { - "ID": "4", - "typeID": "TextArea", - "zOrder": "4", - "w": "227", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "106", - "properties": { - "color": "16770457" - } - }, - { - "ID": "5", - "typeID": "Label", - "zOrder": "5", - "measuredW": "117", - "measuredH": "26", - "x": "55", - "y": "117", - "properties": { - "size": "18", - "text": "Adjacency List" - } - } - ] - } - } - }, - { - "ID": "2712", - "typeID": "Arrow", - "zOrder": "61", - "w": "1", - "h": "195", - "measuredW": "150", - "measuredH": "100", - "x": "1064", - "y": "1433", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127988087, - "y": -0.3822100294962638 - }, - "p1": { - "x": 0.5603752218607517, - "y": 0.000041473854844319586 - }, - "p2": { - "x": -0.40400616127999456, - "y": 194.6093502958738 - } - } - }, - { - "ID": "2713", - "typeID": "Arrow", - "zOrder": "62", - "w": "1", - "h": "403", - "measuredW": "150", - "measuredH": "100", - "x": "769", - "y": "1481", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 0, - "y": 0.08248322334543445 - }, - "p1": { - "x": 0.5, - "y": 0 - }, - "p2": { - "x": 0, - "y": 403.3515342166356 - } - } - }, - { - "ID": "2714", - "typeID": "Arrow", - "zOrder": "63", - "w": "1", - "h": "162", - "measuredW": "150", - "measuredH": "100", - "x": "506", - "y": "1463", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 0, - "y": 0.08248322334543445 - }, - "p1": { - "x": 0.5, - "y": 0 - }, - "p2": { - "x": 0, - "y": 161.75516113964727 - } - } - }, - { - "ID": "2715", - "typeID": "Arrow", - "zOrder": "64", - "w": "1", - "h": "347", - "measuredW": "150", - "measuredH": "100", - "x": "1433", - "y": "1281", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.5, - "y": 0 - }, - "p2": { - "x": 0, - "y": 347.04119117859636 - } - } - }, - { - "ID": "2716", - "typeID": "Arrow", - "zOrder": "65", - "w": "554", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "487", - "y": "1269", - "properties": { - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 0.14145350618525754, - "y": 0 - }, - "p1": { - "x": 0.5, - "y": 0 - }, - "p2": { - "x": 553.881871015173, - "y": 0 - } - } - }, - { - "ID": "2717", - "typeID": "Arrow", - "zOrder": "66", - "w": "165", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "1244", - "y": "1268", - "properties": { - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.5, - "y": 0 - }, - "p2": { - "x": 164.88187101517303, - "y": 0 - }, - "curvature": "0", - "rightArrow": "false", - "leftArrow": "false", - "stroke": "dotted", - "color": "10027263" - } - }, - { - "ID": "2718", - "typeID": "Arrow", - "zOrder": "67", - "w": "1", - "h": "113", - "measuredW": "150", - "measuredH": "100", - "x": "1128", - "y": "1165", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127988087, - "y": -0.3822100294962638 - }, - "p1": { - "x": 0.5603752218607518, - "y": 0.00004147385484432021 - }, - "p2": { - "x": -0.40400616127999456, - "y": 112.92732078922768 - } - } - }, - { - "ID": "2719", - "typeID": "Arrow", - "zOrder": "68", - "w": "1", - "h": "1101", - "measuredW": "150", - "measuredH": "100", - "x": "1273", - "y": "748", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": -0.40400616127988087, - "y": -0.3822100294962638 - }, - "p1": { - "x": 0.5603752218607514, - "y": 0.00004147385484432091 - }, - "p2": { - "x": -0.40400616127999456, - "y": 1100.843293737311 - } - } - }, - { - "ID": "2720", - "typeID": "Arrow", - "zOrder": "69", - "w": "141", - "h": "112", - "measuredW": "150", - "measuredH": "100", - "x": "1295", - "y": "748", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.10689341779038841, - "y": 0.43706984473033117 - }, - "p1": { - "x": 0.5751295336787576, - "y": 0.16450777202072547 - }, - "p2": { - "x": 140.68610989889817, - "y": 112.7698972094355 - } - } - }, - { - "ID": "2721", - "typeID": "__group__", - "zOrder": "70", - "measuredW": "193", - "measuredH": "364", - "w": "193", - "h": "364", - "x": "1373", - "y": "832", - "properties": { - "controlName": "103-asymptotic-notation:common-runtimes" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "193", - "h": "364", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "156", - "measuredH": "26", - "x": "20", - "y": "14", - "properties": { - "size": "18", - "text": "Common Runtimes" - } - } - ] - } - } - }, - { - "ID": "2722", - "typeID": "Arrow", - "zOrder": "71", - "w": "136", - "h": "47", - "measuredW": "150", - "measuredH": "100", - "x": "1302", - "y": "741", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.6279384084247398, - "y": 0.0894746594067004 - }, - "p2": { - "x": 136, - "y": 47 - } - } - }, - { - "ID": "2723", - "typeID": "Arrow", - "zOrder": "72", - "w": "133", - "h": "51", - "measuredW": "150", - "measuredH": "100", - "x": "1300", - "y": "674", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 51 - }, - "p1": { - "x": 0.6049982158696215, - "y": -0.11048518805179115 - }, - "p2": { - "x": 133, - "y": 0 - } - } - }, - { - "ID": "2724", - "typeID": "Arrow", - "zOrder": "73", - "w": "136", - "h": "3", - "measuredW": "150", - "measuredH": "100", - "x": "1309", - "y": "732", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 3 - }, - "p1": { - "x": 0.5591723126937833, - "y": 0.0008641584587329898 - }, - "p2": { - "x": 136, - "y": 0 - } - } - }, - { - "ID": "2725", - "typeID": "Arrow", - "zOrder": "74", - "w": "1", - "h": "101", - "measuredW": "150", - "measuredH": "100", - "x": "503", - "y": "843", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127988087, - "y": -0.3822100294962638 - }, - "p1": { - "x": 0.5603752218607517, - "y": 0.00004147385484432186 - }, - "p2": { - "x": -0.40400616127988087, - "y": 100.45803653961343 - } - } - }, - { - "ID": "2726", - "typeID": "Arrow", - "zOrder": "75", - "w": "134", - "h": "93", - "measuredW": "150", - "measuredH": "100", - "x": "589", - "y": "625", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.15296752077608744, - "y": 0.0117377060578292 - }, - "p1": { - "x": 0.46978874706379403, - "y": -0.100896626855586 - }, - "p2": { - "x": 134.11592028843222, - "y": 93.37985630169692 - } - } - }, - { - "ID": "2727", - "typeID": "Arrow", - "zOrder": "76", - "w": "1", - "h": "101", - "measuredW": "150", - "measuredH": "100", - "x": "944", - "y": "735", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127988087, - "y": -0.3822100294962638 - }, - "p1": { - "x": 0.5603752218607517, - "y": 0.00004147385484432186 - }, - "p2": { - "x": -0.40400616127988087, - "y": 100.45803653961343 - } - } - }, - { - "ID": "2728", - "typeID": "Arrow", - "zOrder": "77", - "w": "129", - "h": "35", - "measuredW": "150", - "measuredH": "100", - "x": "583", - "y": "686", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.0340006863726785, - "y": -0.029048890429066887 - }, - "p1": { - "x": 0.4652118803823874, - "y": -0.07321971659095661 - }, - "p2": { - "x": 129.2906311758943, - "y": 35.37985630169692 - } - } - }, - { - "ID": "2729", - "typeID": "Arrow", - "zOrder": "78", - "w": "137", - "h": "95", - "measuredW": "150", - "measuredH": "100", - "x": "596", - "y": "747", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.08122678388770055, - "y": 94.51751995681514 - }, - "p1": { - "x": 0.51678696775048, - "y": 0.11707833918283551 - }, - "p2": { - "x": 136.58804826190283, - "y": -0.2037597778911504 - } - } - }, - { - "ID": "2730", - "typeID": "Arrow", - "zOrder": "79", - "w": "1", - "h": "312", - "measuredW": "150", - "measuredH": "100", - "x": "785", - "y": "631", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.40400616127988087, - "y": -0.24232757605466304 - }, - "p1": { - "x": 0.5603752218607516, - "y": 0.00004147385484432192 - }, - "p2": { - "x": -0.40400616127988087, - "y": 311.32802481732415 - } - } - }, - { - "ID": "2731", - "typeID": "Arrow", - "zOrder": "80", - "w": "130", - "h": "50", - "measuredW": "150", - "measuredH": "100", - "x": "588", - "y": "744", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.2001936182911095, - "y": 50.450557811327485 - }, - "p1": { - "x": 0.4344465290806758, - "y": 0.11459662288930632 - }, - "p2": { - "x": 129.70327573216332, - "y": 0.3835956658398345 - } - } - }, - { - "ID": "2732", - "typeID": "Arrow", - "zOrder": "81", - "w": "169", - "h": "89", - "measuredW": "150", - "measuredH": "100", - "x": "1156", - "y": "511", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.12748478994694779, - "y": 0.37594373301101314 - }, - "p1": { - "x": 0.5830539012061454, - "y": 0.10785245983684466 - }, - "p2": { - "x": 169.27262717335134, - "y": 89.6845789114484 - } - } - }, - { - "ID": "2733", - "typeID": "Arrow", - "zOrder": "82", - "w": "160", - "h": "2", - "measuredW": "150", - "measuredH": "100", - "x": "948", - "y": "734", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.29899257363251763, - "y": 0.2314903921687801 - }, - "p1": { - "x": 0.5603752218607515, - "y": 0.000041473854844320995 - }, - "p2": { - "x": 160.16844314823038, - "y": 2.209968314819548 - } - } - }, - { - "ID": "2734", - "typeID": "Arrow", - "zOrder": "83", - "w": "130", - "h": "5", - "measuredW": "150", - "measuredH": "100", - "x": "583", - "y": "733", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.0340006863726785, - "y": 4.970951109570933 - }, - "p1": { - "x": 0.5603752218607517, - "y": 0.00004147385484431856 - }, - "p2": { - "x": 129.9374700368271, - "y": -0.4416934466979683 - } - } - }, - { - "ID": "2735", - "typeID": "Arrow", - "zOrder": "84", - "w": "173", - "h": "45", - "measuredW": "150", - "measuredH": "100", - "x": "691", - "y": "508", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.26537644525456017, - "y": 45.2008579796493 - }, - "p1": { - "x": 0.5612843769704615, - "y": 0.05607023330261436 - }, - "p2": { - "x": 173.06396411988374, - "y": 0.4472669272273606 - } - } - }, - { - "ID": "2736", - "typeID": "Arrow", - "zOrder": "85", - "w": "165", - "h": "3", - "measuredW": "150", - "measuredH": "100", - "x": "693", - "y": "495", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.09716998878445793, - "y": 0.030919693704618112 - }, - "p1": { - "x": 0.5603752218607517, - "y": 0.00004147385484432151 - }, - "p2": { - "x": 165.0092065759775, - "y": 3.23149039216878 - } - } - }, - { - "ID": "2737", - "typeID": "Arrow", - "zOrder": "86", - "w": "167", - "h": "46", - "measuredW": "150", - "measuredH": "100", - "x": "695", - "y": "442", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.1558613574420633, - "y": 0.28950157664132803 - }, - "p1": { - "x": 0.5217150699561692, - "y": -0.058095463624905135 - }, - "p2": { - "x": 167.27974065494232, - "y": 46.0157138571102 - } - } - }, - { - "ID": "2738", - "typeID": "__group__", - "zOrder": "87", - "measuredW": "157", - "measuredH": "47", - "w": "157", - "h": "47", - "x": "555", - "y": "523", - "properties": { - "controlName": "102-pick-a-language:java" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "157", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "39", - "measuredH": "26", - "x": "59", - "y": "11", - "properties": { - "size": "18", - "text": "Java" - } - } - ] - } - } - }, - { - "ID": "2739", - "typeID": "__group__", - "zOrder": "88", - "measuredW": "157", - "measuredH": "47", - "w": "157", - "h": "47", - "x": "555", - "y": "420", - "properties": { - "controlName": "100-pick-a-language:c-plus-plus" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "157", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "37", - "measuredH": "26", - "x": "60", - "y": "11", - "properties": { - "size": "18", - "text": "C++" - } - } - ] - } - } - }, - { - "ID": "2740", - "typeID": "Arrow", - "zOrder": "89", - "w": "205", - "h": "52", - "measuredW": "150", - "measuredH": "100", - "x": "1123", - "y": "504", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.3903644341978634, - "y": -0.03579004622974935 - }, - "p1": { - "x": 0.5997856951513523, - "y": 0.082373426198768 - }, - "p2": { - "x": 204.85482628291743, - "y": 51.87868141421234 - } - } - }, - { - "ID": "2741", - "typeID": "__group__", - "zOrder": "90", - "measuredW": "157", - "measuredH": "47", - "w": "157", - "h": "47", - "x": "555", - "y": "472", - "properties": { - "controlName": "101-pick-a-language:c" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "157", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "13", - "measuredH": "26", - "x": "72", - "y": "11", - "properties": { - "size": "18", - "text": "C" - } - } - ] - } - } - }, - { - "ID": "2742", - "typeID": "Arrow", - "zOrder": "91", - "w": "222", - "h": "57", - "measuredW": "150", - "measuredH": "100", - "x": "1114", - "y": "430", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.09245158327996705, - "y": 56.56003565560616 - }, - "p1": { - "x": 0.5667465019538631, - "y": -0.09781923610235727 - }, - "p2": { - "x": 221.70210094693743, - "y": 0.32228678989048376 - } - } - }, - { - "ID": "2743", - "typeID": "Arrow", - "zOrder": "92", - "w": "224", - "h": "8", - "measuredW": "150", - "measuredH": "100", - "x": "1115", - "y": "490", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.09716998878445793, - "y": 8.030919693704618 - }, - "p1": { - "x": 0.564722657257297, - "y": -0.008677972962353458 - }, - "p2": { - "x": 223.8410108125454, - "y": -0.17733562916464507 - } - } - }, - { - "ID": "2744", - "typeID": "Arrow", - "zOrder": "93", - "w": "229", - "h": "226", - "measuredW": "150", - "measuredH": "100", - "x": "780", - "y": "504", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 228.31055982133557, - "y": 0.10378348623532929 - }, - "p1": { - "x": 0.5329669805326468, - "y": 0.14360846249705583 - }, - "p2": { - "x": -0.2675809373233733, - "y": 225.7930320127624 - } - } - }, - { - "ID": "2745", - "typeID": "Label", - "zOrder": "94", - "measuredW": "269", - "measuredH": "40", - "x": "895", - "y": "318", - "properties": { - "size": "32", - "text": "Computer Science" - } - }, - { - "ID": "2746", - "typeID": "Arrow", - "zOrder": "95", - "w": "21", - "h": "74", - "measuredW": "150", - "measuredH": "100", - "x": "971", - "y": "231", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 20.339656000000105, - "y": 0.38163287300682214 - }, - "p1": { - "x": 0.4726613717175647, - "y": -0.18058053919470718 - }, - "p2": { - "x": 6.501387975842022, - "y": 74.27541947376 - } - } - }, - { - "ID": "2747", - "typeID": "Arrow", - "zOrder": "96", - "w": "21", - "h": "124", - "measuredW": "150", - "measuredH": "100", - "x": "1008", - "y": "371", - "properties": { - "color": "2848996", - "curvature": "-1", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 5.718319958248799, - "y": -0.38263953595850353 - }, - "p1": { - "x": 0.4699952673923335, - "y": 0.14969238050165654 - }, - "p2": { - "x": 0.4526764944405386, - "y": 123.33372374697893 - } - } - }, - { - "ID": "2748", - "typeID": "__group__", - "zOrder": "97", - "measuredW": "350", - "measuredH": "141", - "w": "350", - "h": "141", - "x": "1292", - "y": "171", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "350", - "h": "141", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "314", - "measuredH": "25", - "x": "14", - "y": "17", - "properties": { - "size": "17", - "text": "Find the detailed version of this roadmap" - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "319", - "measuredH": "25", - "x": "14", - "y": "45", - "properties": { - "size": "17", - "text": "along with resources and other roadmaps" - } - }, - { - "ID": "3", - "typeID": "__group__", - "zOrder": "3", - "measuredW": "320", - "measuredH": "45", - "w": "320", - "h": "45", - "x": "15", - "y": "81", - "properties": { - "controlName": "ext_link:roadmap.sh" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "320", - "h": "45", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "borderColor": "4273622", - "color": "4273622" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "105", - "measuredH": "28", - "x": "141", - "y": "8", - "properties": { - "color": "16777215", - "size": "20", - "text": "roadmap.sh" - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "45", - "measuredH": "28", - "x": "65", - "y": "8", - "properties": { - "color": "16777215", - "size": "20", - "text": "https" - } - }, - { - "ID": "3", - "typeID": "Label", - "zOrder": "3", - "measuredW": "5", - "measuredH": "28", - "x": "113", - "y": "8", - "properties": { - "bold": "true", - "color": "16777215", - "size": "20", - "text": ":" - } - }, - { - "ID": "4", - "typeID": "Label", - "zOrder": "4", - "measuredW": "10", - "measuredH": "28", - "x": "120", - "y": "9", - "properties": { - "color": "16777215", - "size": "20", - "text": "/" - } - }, - { - "ID": "5", - "typeID": "Label", - "zOrder": "5", - "measuredW": "10", - "measuredH": "28", - "x": "128", - "y": "9", - "properties": { - "color": "16777215", - "size": "20", - "text": "/" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "2749", - "typeID": "__group__", - "zOrder": "98", - "measuredW": "341", - "measuredH": "50", - "w": "341", - "h": "50", - "x": "836", - "y": "474", - "properties": { - "controlName": "101-pick-a-language" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "341", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "136", - "measuredH": "26", - "x": "103", - "y": "12", - "properties": { - "size": "18", - "text": "Pick a Language" - } - } - ] - } - } - }, - { - "ID": "2750", - "typeID": "__group__", - "zOrder": "99", - "measuredW": "164", - "measuredH": "47", - "w": "164", - "h": "47", - "x": "1322", - "y": "468", - "properties": { - "controlName": "104-pick-a-language:go" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "164", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "24", - "measuredH": "26", - "x": "70", - "y": "11", - "properties": { - "size": "18", - "text": "Go" - } - } - ] - } - } - }, - { - "ID": "2751", - "typeID": "__group__", - "zOrder": "100", - "measuredW": "164", - "measuredH": "47", - "w": "164", - "h": "47", - "x": "1322", - "y": "417", - "properties": { - "controlName": "103-pick-a-language:python" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "164", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "56", - "measuredH": "26", - "x": "54", - "y": "11", - "properties": { - "size": "18", - "text": "Python" - } - } - ] - } - } - }, - { - "ID": "2752", - "typeID": "__group__", - "zOrder": "101", - "measuredW": "164", - "measuredH": "47", - "w": "164", - "h": "47", - "x": "1322", - "y": "520", - "properties": { - "controlName": "105-pick-a-language:c-sharp" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "164", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "25", - "measuredH": "26", - "x": "69", - "y": "11", - "properties": { - "size": "18", - "text": "C#" - } - } - ] - } - } - }, - { - "ID": "2753", - "typeID": "__group__", - "zOrder": "102", - "measuredW": "303", - "measuredH": "50", - "w": "303", - "h": "50", - "x": "695", - "y": "708", - "properties": { - "controlName": "102-data-structures" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "303", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "127", - "measuredH": "26", - "x": "88", - "y": "12", - "properties": { - "size": "18", - "text": "Data Structures" - } - } - ] - } - } - }, - { - "ID": "2754", - "typeID": "__group__", - "zOrder": "103", - "measuredW": "120", - "measuredH": "47", - "w": "120", - "h": "47", - "x": "726", - "y": "605", - "properties": { - "controlName": "100-data-structures:array" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "120", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "42", - "measuredH": "26", - "x": "39", - "y": "11", - "properties": { - "size": "18", - "text": "Array" - } - } - ] - } - } - }, - { - "ID": "2755", - "typeID": "__group__", - "zOrder": "104", - "measuredW": "164", - "measuredH": "47", - "w": "164", - "h": "47", - "x": "1322", - "y": "572", - "properties": { - "controlName": "106-pick-a-language:rust" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "164", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "38", - "measuredH": "26", - "x": "63", - "y": "11", - "properties": { - "size": "18", - "text": "Rust" - } - } - ] - } - } - }, - { - "ID": "2756", - "typeID": "__group__", - "zOrder": "105", - "measuredW": "190", - "measuredH": "47", - "w": "190", - "h": "47", - "x": "409", - "y": "610", - "properties": { - "controlName": "101-data-structures:linked-list" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "190", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "w": "113", - "measuredW": "89", - "measuredH": "26", - "x": "38", - "y": "11", - "properties": { - "text": "Linked List", - "size": "18" - } - } - ] - } - } - }, - { - "ID": "2757", - "typeID": "__group__", - "zOrder": "106", - "measuredW": "190", - "measuredH": "47", - "w": "190", - "h": "47", - "x": "409", - "y": "662", - "properties": { - "controlName": "102-data-structures:stack" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "190", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "w": "57", - "measuredW": "45", - "measuredH": "26", - "x": "66", - "y": "11", - "properties": { - "text": "Stack", - "size": "18" - } - } - ] - } - } - }, - { - "ID": "2758", - "typeID": "__group__", - "zOrder": "107", - "measuredW": "190", - "measuredH": "47", - "w": "190", - "h": "47", - "x": "409", - "y": "714", - "properties": { - "controlName": "103-data-structures:queue" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "190", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "w": "71", - "measuredW": "56", - "measuredH": "26", - "x": "59", - "y": "11", - "properties": { - "text": "Queue", - "size": "18" - } - } - ] - } - } - }, - { - "ID": "2759", - "typeID": "__group__", - "zOrder": "108", - "measuredW": "190", - "measuredH": "47", - "w": "190", - "h": "47", - "x": "409", - "y": "766", - "properties": { - "controlName": "104-data-structures:hash-table" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "190", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "w": "116", - "measuredW": "91", - "measuredH": "26", - "x": "37", - "y": "11", - "properties": { - "text": "Hash Table", - "size": "18" - } - } - ] - } - } - }, - { - "ID": "2760", - "typeID": "__group__", - "zOrder": "109", - "measuredW": "175", - "measuredH": "47", - "w": "175", - "h": "47", - "x": "695", - "y": "808", - "properties": { - "controlName": "106-data-structures:graph" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "175", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "51", - "measuredH": "26", - "x": "62", - "y": "11", - "properties": { - "size": "18", - "text": "Graph" - } - } - ] - } - } - }, - { - "ID": "2761", - "typeID": "__group__", - "zOrder": "110", - "measuredW": "190", - "measuredH": "47", - "w": "190", - "h": "47", - "x": "409", - "y": "818", - "properties": { - "controlName": "105-data-structures:tree" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "190", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "w": "48", - "measuredW": "38", - "measuredH": "26", - "x": "71", - "y": "11", - "properties": { - "text": "Tree", - "size": "18" - } - } - ] - } - } - }, - { - "ID": "2762", - "typeID": "__group__", - "zOrder": "111", - "measuredW": "105", - "measuredH": "47", - "w": "105", - "h": "47", - "x": "892", - "y": "806", - "properties": { - "controlName": "107-data-structures:heap" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "105", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "45", - "measuredH": "26", - "x": "30", - "y": "11", - "properties": { - "size": "18", - "text": "Heap" - } - } - ] - } - } - }, - { - "ID": "2763", - "typeID": "__group__", - "zOrder": "112", - "measuredW": "230", - "measuredH": "47", - "w": "230", - "h": "47", - "x": "386", - "y": "909", - "properties": { - "controlName": "100-data-structures:tree:binary-tree" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "230", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "93", - "measuredH": "26", - "x": "68", - "y": "11", - "properties": { - "size": "18", - "text": "Binary Tree" - } - } - ] - } - } - }, - { - "ID": "2764", - "typeID": "__group__", - "zOrder": "113", - "measuredW": "227", - "measuredH": "47", - "w": "227", - "h": "47", - "x": "665", - "y": "1011", - "properties": { - "controlName": "102-data-structures:graph:spanning-tree" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "227", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "119", - "measuredH": "26", - "x": "54", - "y": "11", - "properties": { - "size": "18", - "text": "Spanning Tree" - } - } - ] - } - } - }, - { - "ID": "2765", - "typeID": "__group__", - "zOrder": "114", - "measuredW": "230", - "measuredH": "47", - "w": "230", - "h": "47", - "x": "386", - "y": "960", - "properties": { - "controlName": "101-data-structures:tree:binary-search-tree" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "230", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "155", - "measuredH": "26", - "x": "37", - "y": "11", - "properties": { - "size": "18", - "text": "Binary Search Tree" - } - } - ] - } - } - }, - { - "ID": "2766", - "typeID": "__group__", - "zOrder": "115", - "measuredW": "230", - "measuredH": "47", - "w": "230", - "h": "47", - "x": "386", - "y": "1012", - "properties": { - "controlName": "102-data-structures:tree:full-binary-tree" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "230", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "126", - "measuredH": "26", - "x": "52", - "y": "11", - "properties": { - "size": "18", - "text": "Full Binary Tree" - } - } - ] - } - } - }, - { - "ID": "2767", - "typeID": "__group__", - "zOrder": "116", - "measuredW": "230", - "measuredH": "47", - "w": "230", - "h": "47", - "x": "386", - "y": "1063", - "properties": { - "controlName": "103-data-structures:tree:complete-binary-tree" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "230", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "177", - "measuredH": "26", - "x": "26", - "y": "11", - "properties": { - "size": "18", - "text": "Complete Binary Tree" - } - } - ] - } - } - }, - { - "ID": "2768", - "typeID": "__group__", - "zOrder": "117", - "measuredW": "230", - "measuredH": "47", - "w": "230", - "h": "47", - "x": "386", - "y": "1115", - "properties": { - "controlName": "104-data-structures:tree:balanced-tree" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "230", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "120", - "measuredH": "26", - "x": "55", - "y": "11", - "properties": { - "size": "18", - "text": "Balanced Tree" - } - } - ] - } - } - }, - { - "ID": "2769", - "typeID": "__group__", - "zOrder": "118", - "measuredW": "230", - "measuredH": "47", - "w": "230", - "h": "47", - "x": "386", - "y": "1167", - "properties": { - "controlName": "105-data-structures:tree:unbalanced-tree" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "230", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "141", - "measuredH": "26", - "x": "44", - "y": "11", - "properties": { - "size": "18", - "text": "Unbalanced Tree" - } - } - ] - } - } - }, - { - "ID": "2770", - "typeID": "__group__", - "zOrder": "119", - "measuredW": "227", - "measuredH": "47", - "w": "227", - "h": "47", - "x": "665", - "y": "909", - "properties": { - "controlName": "100-data-structures:graph:directed-graph" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "227", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "126", - "measuredH": "26", - "x": "51", - "y": "11", - "properties": { - "size": "18", - "text": "Directed Graph" - } - } - ] - } - } - }, - { - "ID": "2771", - "typeID": "__group__", - "zOrder": "120", - "measuredW": "227", - "measuredH": "47", - "w": "227", - "h": "47", - "x": "665", - "y": "960", - "properties": { - "controlName": "101-data-structures:graph:undirected-graph" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "227", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "146", - "measuredH": "26", - "x": "41", - "y": "11", - "properties": { - "size": "18", - "text": "Undirected Graph" - } - } - ] - } - } - }, - { - "ID": "2772", - "typeID": "__group__", - "zOrder": "121", - "measuredW": "251", - "measuredH": "50", - "w": "251", - "h": "50", - "x": "1075", - "y": "709", - "properties": { - "controlName": "103-asymptotic-notation" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "251", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "162", - "measuredH": "26", - "x": "45", - "y": "12", - "properties": { - "size": "18", - "text": "Asymptotic Notation" - } - } - ] - } - } - }, - { - "ID": "2773", - "typeID": "__group__", - "zOrder": "122", - "measuredW": "192", - "measuredH": "47", - "w": "192", - "h": "47", - "x": "1427", - "y": "656", - "properties": { - "controlName": "100-asymptotic-notation:big-o-notation" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "192", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "120", - "measuredH": "26", - "x": "36", - "y": "11", - "properties": { - "size": "18", - "text": "Big O Notation" - } - } - ] - } - } - }, - { - "ID": "2774", - "typeID": "__group__", - "zOrder": "123", - "measuredW": "192", - "measuredH": "47", - "w": "192", - "h": "47", - "x": "1427", - "y": "707", - "properties": { - "controlName": "101-asymptotic-notation:big-theta-notation" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "192", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "119", - "measuredH": "26", - "x": "36", - "y": "11", - "properties": { - "size": "18", - "text": "Big-θ Notation" - } - } - ] - } - } - }, - { - "ID": "2775", - "typeID": "__group__", - "zOrder": "124", - "measuredW": "192", - "measuredH": "47", - "w": "192", - "h": "47", - "x": "1427", - "y": "758", - "properties": { - "controlName": "102-asymptotic-notation:big-omega-notation" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "192", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "117", - "measuredH": "26", - "x": "37", - "y": "11", - "properties": { - "size": "18", - "text": "Big-Ω Notation" - } - } - ] - } - } - }, - { - "ID": "2776", - "typeID": "__group__", - "zOrder": "125", - "measuredW": "203", - "measuredH": "47", - "w": "203", - "h": "47", - "x": "1392", - "y": "882", - "properties": { - "controlName": "100-asymptotic-notation:common-runtimes:constant" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "203", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "74", - "measuredH": "26", - "x": "65", - "y": "11", - "properties": { - "size": "18", - "text": "Constant" - } - } - ] - } - } - }, - { - "ID": "2777", - "typeID": "__group__", - "zOrder": "126", - "measuredW": "203", - "measuredH": "47", - "w": "203", - "h": "47", - "x": "1392", - "y": "932", - "properties": { - "controlName": "101-asymptotic-notation:common-runtimes:logarithmic" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "203", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "96", - "measuredH": "26", - "x": "54", - "y": "11", - "properties": { - "size": "18", - "text": "Logarithmic" - } - } - ] - } - } - }, - { - "ID": "2778", - "typeID": "__group__", - "zOrder": "127", - "measuredW": "203", - "measuredH": "47", - "w": "203", - "h": "47", - "x": "1392", - "y": "983", - "properties": { - "controlName": "102-asymptotic-notation:common-runtimes:linear" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "203", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "53", - "measuredH": "26", - "x": "75", - "y": "11", - "properties": { - "size": "18", - "text": "Linear" - } - } - ] - } - } - }, - { - "ID": "2779", - "typeID": "__group__", - "zOrder": "128", - "measuredW": "203", - "measuredH": "47", - "w": "203", - "h": "47", - "x": "1392", - "y": "1034", - "properties": { - "controlName": "103-asymptotic-notation:common-runtimes:polynomial" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "203", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "87", - "measuredH": "26", - "x": "58", - "y": "11", - "properties": { - "size": "18", - "text": "Polynomial" - } - } - ] - } - } - }, - { - "ID": "2780", - "typeID": "__group__", - "zOrder": "129", - "measuredW": "203", - "measuredH": "47", - "w": "203", - "h": "47", - "x": "1392", - "y": "1085", - "properties": { - "controlName": "104-asymptotic-notation:common-runtimes:exponential" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "203", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "96", - "measuredH": "26", - "x": "54", - "y": "11", - "properties": { - "size": "18", - "text": "Exponential" - } - } - ] - } - } - }, - { - "ID": "2781", - "typeID": "__group__", - "zOrder": "130", - "measuredW": "203", - "measuredH": "47", - "w": "203", - "h": "47", - "x": "1392", - "y": "1135", - "properties": { - "controlName": "105-asymptotic-notation:common-runtimes:factorial" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "203", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "71", - "measuredH": "26", - "x": "66", - "y": "11", - "properties": { - "size": "18", - "text": "Factorial" - } - } - ] - } - } - }, - { - "ID": "2782", - "typeID": "__group__", - "zOrder": "131", - "measuredW": "298", - "measuredH": "50", - "w": "298", - "h": "50", - "x": "1019", - "y": "1244", - "properties": { - "controlName": "104-common-algorithms" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "298", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "164", - "measuredH": "26", - "x": "67", - "y": "12", - "properties": { - "size": "18", - "text": "Common Algorithms" - } - } - ] - } - } - }, - { - "ID": "2783", - "typeID": "__group__", - "zOrder": "132", - "measuredW": "125", - "measuredH": "159", - "w": "125", - "h": "159", - "x": "1372", - "y": "1398", - "properties": { - "controlName": "108-common-algorithms:search-algorithms" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "125", - "h": "159", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "83", - "measuredH": "26", - "x": "21", - "y": "13", - "properties": { - "size": "18", - "text": "Searching" - } - } - ] - } - } - }, - { - "ID": "2784", - "typeID": "__group__", - "zOrder": "133", - "measuredW": "175", - "measuredH": "47", - "w": "175", - "h": "47", - "x": "1385", - "y": "1495", - "properties": { - "controlName": "101-common-algorithms:search-algorithms:linear-search" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "175", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "114", - "measuredH": "26", - "x": "31", - "y": "11", - "properties": { - "size": "18", - "text": "Linear Search" - } - } - ] - } - } - }, - { - "ID": "2785", - "typeID": "__group__", - "zOrder": "134", - "measuredW": "175", - "measuredH": "47", - "w": "175", - "h": "47", - "x": "1385", - "y": "1444", - "properties": { - "controlName": "100-common-algorithms:search-algorithms:binary-search" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "175", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "113", - "measuredH": "26", - "x": "31", - "y": "11", - "properties": { - "size": "18", - "text": "Binary Search" - } - } - ] - } - } - }, - { - "ID": "2786", - "typeID": "__group__", - "zOrder": "135", - "measuredW": "122", - "measuredH": "157", - "w": "122", - "h": "157", - "x": "1373", - "y": "1217", - "properties": { - "controlName": "107-common-algorithms:recursion" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "122", - "h": "157", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "84", - "measuredH": "26", - "x": "19", - "y": "11", - "properties": { - "size": "18", - "text": "Recursion" - } - } - ] - } - } - }, - { - "ID": "2787", - "typeID": "__group__", - "zOrder": "136", - "measuredW": "197", - "measuredH": "47", - "w": "197", - "h": "47", - "x": "1390", - "y": "1313", - "properties": { - "controlName": "101-common-algorithms:recursion:non-tail-recursion" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "197", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "155", - "measuredH": "26", - "x": "21", - "y": "11", - "properties": { - "size": "18", - "text": "Non-Tail Recursion" - } - } - ] - } - } - }, - { - "ID": "2788", - "typeID": "__group__", - "zOrder": "137", - "measuredW": "197", - "measuredH": "47", - "w": "197", - "h": "47", - "x": "1390", - "y": "1262", - "properties": { - "controlName": "100-common-algorithms:recursion:tail-recursion" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "197", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "116", - "measuredH": "26", - "x": "41", - "y": "11", - "properties": { - "size": "18", - "text": "Tail Recursion" - } - } - ] - } - } - }, - { - "ID": "2789", - "typeID": "__group__", - "zOrder": "138", - "measuredW": "109", - "measuredH": "369", - "w": "109", - "h": "369", - "x": "1074", - "y": "845", - "properties": { - "controlName": "100-common-algorithms:sorting-algorithms" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "109", - "h": "369", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "59", - "measuredH": "26", - "x": "25", - "y": "328", - "properties": { - "size": "18", - "text": "Sorting" - } - } - ] - } - } - }, - { - "ID": "2790", - "typeID": "__group__", - "zOrder": "139", - "measuredW": "191", - "measuredH": "47", - "w": "191", - "h": "47", - "x": "1033", - "y": "911", - "properties": { - "controlName": "101-common-algorithms:sorting-algorithms:selection-sort" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "191", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "114", - "measuredH": "26", - "x": "39", - "y": "11", - "properties": { - "size": "18", - "text": "Selection Sort" - } - } - ] - } - } - }, - { - "ID": "2791", - "typeID": "__group__", - "zOrder": "140", - "measuredW": "191", - "measuredH": "47", - "w": "191", - "h": "47", - "x": "1033", - "y": "860", - "properties": { - "controlName": "100-common-algorithms:sorting-algorithms:bubble-sort" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "191", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "96", - "measuredH": "26", - "x": "48", - "y": "11", - "properties": { - "size": "18", - "text": "Bubble Sort" - } - } - ] - } - } - }, - { - "ID": "2792", - "typeID": "__group__", - "zOrder": "141", - "measuredW": "191", - "measuredH": "47", - "w": "191", - "h": "47", - "x": "1033", - "y": "962", - "properties": { - "controlName": "102-common-algorithms:sorting-algorithms:insertion-sort" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "191", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "110", - "measuredH": "26", - "x": "41", - "y": "11", - "properties": { - "size": "18", - "text": "Insertion Sort" - } - } - ] - } - } - }, - { - "ID": "2793", - "typeID": "__group__", - "zOrder": "142", - "measuredW": "191", - "measuredH": "47", - "w": "191", - "h": "47", - "x": "1033", - "y": "1013", - "properties": { - "controlName": "103-common-algorithms:sorting-algorithms:heap-sort" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "191", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "83", - "measuredH": "26", - "x": "54", - "y": "11", - "properties": { - "size": "18", - "text": "Heap Sort" - } - } - ] - } - } - }, - { - "ID": "2794", - "typeID": "__group__", - "zOrder": "143", - "measuredW": "191", - "measuredH": "47", - "w": "191", - "h": "47", - "x": "1033", - "y": "1064", - "properties": { - "controlName": "104-common-algorithms:sorting-algorithms:quick-sort" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "191", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "85", - "measuredH": "26", - "x": "53", - "y": "11", - "properties": { - "size": "18", - "text": "Quick Sort" - } - } - ] - } - } - }, - { - "ID": "2795", - "typeID": "__group__", - "zOrder": "144", - "measuredW": "191", - "measuredH": "47", - "w": "191", - "h": "47", - "x": "1033", - "y": "1116", - "properties": { - "controlName": "105-common-algorithms:sorting-algorithms:merge-sort" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "191", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "92", - "measuredH": "26", - "x": "50", - "y": "11", - "properties": { - "size": "18", - "text": "Merge Sort" - } - } - ] - } - } - }, - { - "ID": "2796", - "typeID": "__group__", - "zOrder": "145", - "measuredW": "125", - "measuredH": "309", - "w": "125", - "h": "309", - "x": "707", - "y": "1244", - "properties": { - "controlName": "101-common-algorithms:tree-algorithms" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "125", - "h": "309", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "38", - "measuredH": "26", - "x": "44", - "y": "12", - "properties": { - "size": "18", - "text": "Tree" - } - } - ] - } - } - }, - { - "ID": "2797", - "typeID": "__group__", - "zOrder": "146", - "measuredW": "213", - "measuredH": "47", - "w": "213", - "h": "47", - "x": "663", - "y": "1341", - "properties": { - "controlName": "101-common-algorithms:tree-algorithms:in-order-traversal" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "213", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "149", - "measuredH": "26", - "x": "32", - "y": "11", - "properties": { - "size": "18", - "text": "In-Order Traversal" - } - } - ] - } - } - }, - { - "ID": "2798", - "typeID": "__group__", - "zOrder": "147", - "measuredW": "213", - "measuredH": "47", - "w": "213", - "h": "47", - "x": "663", - "y": "1290", - "properties": { - "controlName": "100-common-algorithms:tree-algorithms:pre-order-traversal" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "213", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "162", - "measuredH": "26", - "x": "26", - "y": "12", - "properties": { - "size": "18", - "text": "Pre-Order Traversal" - } - } - ] - } - } - }, - { - "ID": "2799", - "typeID": "__group__", - "zOrder": "148", - "measuredW": "213", - "measuredH": "47", - "w": "213", - "h": "47", - "x": "663", - "y": "1392", - "properties": { - "controlName": "102-common-algorithms:tree-algorithms:post-order-traversal" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "213", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "167", - "measuredH": "26", - "x": "23", - "y": "11", - "properties": { - "size": "18", - "text": "Post Order Traversal" - } - } - ] - } - } - }, - { - "ID": "2800", - "typeID": "__group__", - "zOrder": "149", - "measuredW": "213", - "measuredH": "47", - "w": "213", - "h": "47", - "x": "663", - "y": "1443", - "properties": { - "controlName": "103-common-algorithms:tree-algorithms:breadth-first-search" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "213", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "168", - "measuredH": "26", - "x": "23", - "y": "11", - "properties": { - "size": "18", - "text": "Breadth First Search" - } - } - ] - } - } - }, - { - "ID": "2801", - "typeID": "__group__", - "zOrder": "150", - "measuredW": "213", - "measuredH": "47", - "w": "213", - "h": "47", - "x": "663", - "y": "1494", - "properties": { - "controlName": "104-common-algorithms:tree-algorithms:depth-first-search" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "213", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "152", - "measuredH": "26", - "x": "31", - "y": "11", - "properties": { - "size": "18", - "text": "Depth First Search" - } - } - ] - } - } - }, - { - "ID": "2802", - "typeID": "__group__", - "zOrder": "151", - "measuredW": "125", - "measuredH": "309", - "w": "125", - "h": "309", - "x": "444", - "y": "1245", - "properties": { - "controlName": "102-common-algorithms:graph-algorithms" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "125", - "h": "309", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "51", - "measuredH": "26", - "x": "37", - "y": "12", - "properties": { - "size": "18", - "text": "Graph" - } - } - ] - } - } - }, - { - "ID": "2803", - "typeID": "__group__", - "zOrder": "152", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "388", - "y": "1342", - "properties": { - "controlName": "101-common-algorithms:graph-algorithms:depth-first-search" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "152", - "measuredH": "26", - "x": "43", - "y": "11", - "properties": { - "size": "18", - "text": "Depth First Search" - } - } - ] - } - } - }, - { - "ID": "2804", - "typeID": "__group__", - "zOrder": "153", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "388", - "y": "1291", - "properties": { - "controlName": "100-common-algorithms:graph-algorithms:breadth-first-search" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "168", - "measuredH": "26", - "x": "35", - "y": "11", - "properties": { - "size": "18", - "text": "Breadth First Search" - } - } - ] - } - } - }, - { - "ID": "2805", - "typeID": "__group__", - "zOrder": "154", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "388", - "y": "1393", - "properties": { - "controlName": "102-common-algorithms:graph-algorithms:bellman-fords-algorithm" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "202", - "measuredH": "26", - "x": "18", - "y": "11", - "properties": { - "size": "18", - "text": "Bellman Ford's Algorithm" - } - } - ] - } - } - }, - { - "ID": "2806", - "typeID": "__group__", - "zOrder": "155", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "388", - "y": "1444", - "properties": { - "controlName": "103-common-algorithms:graph-algorithms:dijkstras-algorithm" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "155", - "measuredH": "26", - "x": "41", - "y": "11", - "properties": { - "size": "18", - "text": "Dijkstra's Algorithm" - } - } - ] - } - } - }, - { - "ID": "2807", - "typeID": "__group__", - "zOrder": "156", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "388", - "y": "1495", - "properties": { - "controlName": "104-common-algorithms:graph-algorithms:a-star-algorithm" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "101", - "measuredH": "26", - "x": "68", - "y": "11", - "properties": { - "size": "18", - "text": "A* Algorithm" - } - } - ] - } - } - }, - { - "ID": "2808", - "typeID": "__group__", - "zOrder": "157", - "measuredW": "125", - "measuredH": "215", - "w": "125", - "h": "215", - "x": "1373", - "y": "1580", - "properties": { - "controlName": "109-common-algorithms:cache-algorithms" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "125", - "h": "215", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "63", - "measuredH": "26", - "x": "31", - "y": "11", - "properties": { - "size": "18", - "text": "Caches" - } - } - ] - } - } - }, - { - "ID": "2809", - "typeID": "__group__", - "zOrder": "158", - "measuredW": "175", - "measuredH": "47", - "w": "175", - "h": "47", - "x": "1387", - "y": "1679", - "properties": { - "controlName": "101-common-algorithms:cache-algorithms:lfu-cache" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "175", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "93", - "measuredH": "26", - "x": "31", - "y": "11", - "properties": { - "size": "18", - "text": "LFU Cache" - } - } - ] - } - } - }, - { - "ID": "2810", - "typeID": "__group__", - "zOrder": "159", - "measuredW": "175", - "measuredH": "47", - "w": "175", - "h": "47", - "x": "1387", - "y": "1628", - "properties": { - "controlName": "100-common-algorithms:cache-algorithms:lru-cache" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "175", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "95", - "measuredH": "26", - "x": "31", - "y": "11", - "properties": { - "size": "18", - "text": "LRU Cache" - } - } - ] - } - } - }, - { - "ID": "2811", - "typeID": "__group__", - "zOrder": "160", - "measuredW": "175", - "measuredH": "47", - "w": "175", - "h": "47", - "x": "1387", - "y": "1730", - "properties": { - "controlName": "102-common-algorithms:cache-algorithms:mfu-cache" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "175", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "98", - "measuredH": "26", - "x": "39", - "y": "11", - "properties": { - "size": "18", - "text": "MFU Cache" - } - } - ] - } - } - }, - { - "ID": "2812", - "typeID": "__group__", - "zOrder": "161", - "measuredW": "180", - "measuredH": "309", - "w": "180", - "h": "309", - "x": "417", - "y": "1599", - "properties": { - "controlName": "104-common-algorithms:greedy-algorithms" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "180", - "h": "309", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "149", - "measuredH": "26", - "x": "15", - "y": "12", - "properties": { - "size": "18", - "text": "Greedy Algorithms" - } - } - ] - } - } - }, - { - "ID": "2813", - "typeID": "__group__", - "zOrder": "162", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "388", - "y": "1696", - "properties": { - "controlName": "101-common-algorithms:greedy-algorithms:huffman-coding" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "132", - "measuredH": "26", - "x": "53", - "y": "11", - "properties": { - "size": "18", - "text": "Huffman Coding" - } - } - ] - } - } - }, - { - "ID": "2814", - "typeID": "__group__", - "zOrder": "163", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "388", - "y": "1645", - "properties": { - "controlName": "100-common-algorithms:greedy-algorithms:dijkstras-algorithm" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "155", - "measuredH": "26", - "x": "41", - "y": "11", - "properties": { - "size": "18", - "text": "Dijkstra's Algorithm" - } - } - ] - } - } - }, - { - "ID": "2815", - "typeID": "__group__", - "zOrder": "164", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "388", - "y": "1747", - "properties": { - "controlName": "102-common-algorithms:greedy-algorithms:kruskas-algorithm" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "153", - "measuredH": "26", - "x": "42", - "y": "11", - "properties": { - "size": "18", - "text": "Kruskal's Algorithm" - } - } - ] - } - } - }, - { - "ID": "2816", - "typeID": "__group__", - "zOrder": "165", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "388", - "y": "1798", - "properties": { - "controlName": "103-common-algorithms:greedy-algorithms:ford-fulkerson-algorithm" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "205", - "measuredH": "26", - "x": "16", - "y": "11", - "properties": { - "size": "18", - "text": "Ford-Fulkerson Algorithm" - } - } - ] - } - } - }, - { - "ID": "2817", - "typeID": "__group__", - "zOrder": "166", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "388", - "y": "1849", - "properties": { - "controlName": "104-common-algorithms:greedy-algorithms:prims-algorithm" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "130", - "measuredH": "26", - "x": "54", - "y": "11", - "properties": { - "size": "18", - "text": "Prim's Algorithm" - } - } - ] - } - } - }, - { - "ID": "2818", - "typeID": "__group__", - "zOrder": "167", - "measuredW": "180", - "measuredH": "236", - "w": "180", - "h": "236", - "x": "693", - "y": "1599", - "properties": { - "controlName": "105-common-algorithms:back-tracking-algorithms" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "180", - "h": "236", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "115", - "measuredH": "26", - "x": "32", - "y": "12", - "properties": { - "size": "18", - "text": "Back Tracking" - } - } - ] - } - } - }, - { - "ID": "2819", - "typeID": "__group__", - "zOrder": "168", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "664", - "y": "1696", - "properties": { - "controlName": "101-common-algorithms:back-tracking-algorithms:solving-n-queen-problem" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "210", - "measuredH": "26", - "x": "15", - "y": "11", - "properties": { - "size": "18", - "text": "Solving N Queen Problem" - } - } - ] - } - } - }, - { - "ID": "2820", - "typeID": "__group__", - "zOrder": "169", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "664", - "y": "1645", - "properties": { - "controlName": "100-common-algorithms:back-tracking-algorithms:finding-hamiltonian-paths" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "212", - "measuredH": "26", - "x": "13", - "y": "11", - "properties": { - "size": "18", - "text": "Finding Hamiltonian Paths" - } - } - ] - } - } - }, - { - "ID": "2821", - "typeID": "__group__", - "zOrder": "170", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "664", - "y": "1747", - "properties": { - "controlName": "102-common-algorithms:back-tracking-algorithms:maze-solving-problem" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "180", - "measuredH": "26", - "x": "32", - "y": "11", - "properties": { - "size": "18", - "text": "Maze Solving Problem" - } - } - ] - } - } - }, - { - "ID": "2822", - "typeID": "__group__", - "zOrder": "171", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "664", - "y": "1798", - "properties": { - "controlName": "103-common-algorithms:back-tracking-algorithms:knights-tour-problem" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "212", - "measuredH": "26", - "x": "16", - "y": "11", - "properties": { - "size": "18", - "text": "The Knight's Tour Problem" - } - } - ] - } - } - }, - { - "ID": "2823", - "typeID": "__group__", - "zOrder": "172", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "664", - "y": "1861", - "properties": { - "controlName": "106-common-algorithms:robin-karp-algorithm" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "175", - "measuredH": "26", - "x": "31", - "y": "11", - "properties": { - "size": "18", - "text": "Rabin-Karp Algorithm" - } - } - ] - } - } - }, - { - "ID": "2824", - "typeID": "__group__", - "zOrder": "173", - "measuredW": "298", - "measuredH": "50", - "w": "298", - "h": "50", - "x": "1019", - "y": "1504", - "properties": { - "controlName": "105-string-search-and-manipulations" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "298", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "245", - "measuredH": "26", - "x": "26", - "y": "12", - "properties": { - "size": "18", - "text": "String Search & Manipulations" - } - } - ] - } - } - }, - { - "ID": "2825", - "typeID": "__group__", - "zOrder": "174", - "measuredW": "227", - "measuredH": "47", - "w": "227", - "h": "47", - "x": "951", - "y": "1421", - "properties": { - "controlName": "100-string-search-and-manipulations:suffix-arrays" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "227", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "98", - "measuredH": "26", - "x": "65", - "y": "11", - "properties": { - "size": "18", - "text": "Suffix Arrays" - } - } - ] - } - } - }, - { - "ID": "2826", - "typeID": "__group__", - "zOrder": "175", - "measuredW": "227", - "measuredH": "47", - "w": "227", - "h": "47", - "x": "951", - "y": "1369", - "properties": { - "controlName": "101-string-search-and-manipulations:search-pattern-in-text" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "227", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "179", - "measuredH": "26", - "x": "24", - "y": "11", - "properties": { - "size": "18", - "text": "Search Pattern in Text" - } - } - ] - } - } - }, - { - "ID": "2827", - "typeID": "__group__", - "zOrder": "176", - "measuredW": "179", - "measuredH": "263", - "w": "179", - "h": "263", - "x": "975", - "y": "1598", - "properties": { - "controlName": "102-string-search-and-manipulations:substring-search" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "179", - "h": "263", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "139", - "measuredH": "26", - "x": "20", - "y": "13", - "properties": { - "size": "18", - "text": "Substring Search" - } - } - ] - } - } - }, - { - "ID": "2828", - "typeID": "__group__", - "zOrder": "177", - "measuredW": "227", - "measuredH": "47", - "w": "227", - "h": "47", - "x": "951", - "y": "1648", - "properties": { - "controlName": "100-string-search-and-manipulations:substring-search:brute-force-search" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "227", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "159", - "measuredH": "26", - "x": "34", - "y": "11", - "properties": { - "size": "18", - "text": "Brute Force Search" - } - } - ] - } - } - }, - { - "ID": "2829", - "typeID": "__group__", - "zOrder": "178", - "measuredW": "227", - "measuredH": "47", - "w": "227", - "h": "47", - "x": "951", - "y": "1699", - "properties": { - "controlName": "101-string-search-and-manipulations:substring-search:knuth-morris-pratt" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "227", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "150", - "measuredH": "26", - "x": "39", - "y": "11", - "properties": { - "size": "18", - "text": "Knuth-Morris Pratt" - } - } - ] - } - } - }, - { - "ID": "2830", - "typeID": "__group__", - "zOrder": "179", - "measuredW": "227", - "measuredH": "47", - "w": "227", - "h": "47", - "x": "951", - "y": "1750", - "properties": { - "controlName": "102-string-search-and-manipulations:substring-search:boyer-moore" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "227", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "106", - "measuredH": "26", - "x": "61", - "y": "11", - "properties": { - "size": "18", - "text": "Boyer-Moore" - } - } - ] - } - } - }, - { - "ID": "2831", - "typeID": "__group__", - "zOrder": "180", - "measuredW": "227", - "measuredH": "47", - "w": "227", - "h": "47", - "x": "951", - "y": "1801", - "properties": { - "controlName": "103-string-search-and-manipulations:substring-search:rabin-karp" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "227", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "93", - "measuredH": "26", - "x": "67", - "y": "11", - "properties": { - "size": "18", - "text": "Rabin-Karp" - } - } - ] - } - } - }, - { - "ID": "2832", - "typeID": "__group__", - "zOrder": "181", - "measuredW": "298", - "measuredH": "50", - "w": "298", - "h": "50", - "x": "1228", - "y": "1824", - "properties": { - "controlName": "106-bitwise-operators" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "298", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "145", - "measuredH": "26", - "x": "76", - "y": "12", - "properties": { - "size": "18", - "text": "Bitwise Operators" - } - } - ] - } - } - }, - { - "ID": "2833", - "typeID": "__group__", - "zOrder": "182", - "measuredW": "298", - "measuredH": "50", - "w": "298", - "h": "50", - "x": "1228", - "y": "1878", - "properties": { - "controlName": "107-floating-point-numbers" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "298", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "191", - "measuredH": "26", - "x": "53", - "y": "12", - "properties": { - "size": "18", - "text": "Floating Point Numbers" - } - } - ] - } - } - }, - { - "ID": "2834", - "typeID": "__group__", - "zOrder": "183", - "measuredW": "298", - "measuredH": "50", - "w": "298", - "h": "50", - "x": "810", - "y": "2105", - "properties": { - "controlName": "109-character-encodings" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "298", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "173", - "measuredH": "26", - "x": "62", - "y": "12", - "properties": { - "size": "18", - "text": "Character Encodings" - } - } - ] - } - } - }, - { - "ID": "2835", - "typeID": "__group__", - "zOrder": "184", - "measuredW": "237", - "measuredH": "47", - "w": "237", - "h": "47", - "x": "1309", - "y": "2166", - "properties": { - "controlName": "102-common-uml-diagrams:usecase-diagrams" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "237", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "155", - "measuredH": "26", - "x": "41", - "y": "11", - "properties": { - "size": "18", - "text": "Usecase Diagrams" - } - } - ] - } - } - }, - { - "ID": "2836", - "typeID": "__group__", - "zOrder": "185", - "measuredW": "236", - "measuredH": "47", - "w": "236", - "h": "47", - "x": "1310", - "y": "2322", - "properties": { - "controlName": "105-common-uml-diagrams:sequence-diagrams" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "236", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "167", - "measuredH": "26", - "x": "34", - "y": "11", - "properties": { - "size": "18", - "text": "Sequence Diagrams" - } - } - ] - } - } - }, - { - "ID": "2837", - "typeID": "__group__", - "zOrder": "186", - "measuredW": "237", - "measuredH": "47", - "w": "237", - "h": "47", - "x": "1309", - "y": "2112", - "properties": { - "controlName": "100-common-uml-diagrams:class-diagrams" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "237", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "128", - "measuredH": "26", - "x": "55", - "y": "11", - "properties": { - "size": "18", - "text": "Class Diagrams" - } - } - ] - } - } - }, - { - "ID": "2838", - "typeID": "__group__", - "zOrder": "187", - "measuredW": "298", - "measuredH": "50", - "w": "298", - "h": "50", - "x": "392", - "y": "2224", - "properties": { - "controlName": "111-design-patterns" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "298", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "130", - "measuredH": "26", - "x": "84", - "y": "12", - "properties": { - "size": "18", - "text": "Design Patterns" - } - } - ] - } - } - }, - { - "ID": "2839", - "typeID": "__group__", - "zOrder": "188", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "1309", - "y": "2218", - "properties": { - "controlName": "103-common-uml-diagrams:activity-diagrams" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "138", - "measuredH": "26", - "x": "50", - "y": "11", - "properties": { - "size": "18", - "text": "Activity Diagrams" - } - } - ] - } - } - }, - { - "ID": "2840", - "typeID": "__group__", - "zOrder": "189", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "1309", - "y": "2270", - "properties": { - "controlName": "104-common-uml-diagrams:statemachine-diagrams" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "195", - "measuredH": "26", - "x": "21", - "y": "11", - "properties": { - "size": "18", - "text": "Statemachine Diagrams" - } - } - ] - } - } - }, - { - "ID": "2841", - "typeID": "__group__", - "zOrder": "190", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "392", - "y": "1939", - "properties": { - "controlName": "100-design-patterns:gof-design-patterns" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "170", - "measuredH": "26", - "x": "34", - "y": "11", - "properties": { - "size": "18", - "text": "GoF Design Patterns" - } - } - ] - } - } - }, - { - "ID": "2842", - "typeID": "__group__", - "zOrder": "191", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "392", - "y": "1989", - "properties": { - "controlName": "101-design-patterns:architectural-patterns" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "175", - "measuredH": "26", - "x": "31", - "y": "11", - "properties": { - "size": "18", - "text": "Architectural Patterns" - } - } - ] - } - } - }, - { - "ID": "2843", - "typeID": "__group__", - "zOrder": "192", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "392", - "y": "2039", - "properties": { - "controlName": "102-design-patterns:dependency-injection" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "178", - "measuredH": "26", - "x": "30", - "y": "11", - "properties": { - "size": "18", - "text": "Dependency Injection" - } - } - ] - } - } - }, - { - "ID": "2844", - "typeID": "__group__", - "zOrder": "193", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "392", - "y": "2089", - "properties": { - "controlName": "103-design-patterns:null-object-pattern" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "154", - "measuredH": "26", - "x": "42", - "y": "11", - "properties": { - "size": "18", - "text": "Null Object Pattern" - } - } - ] - } - } - }, - { - "ID": "2845", - "typeID": "__group__", - "zOrder": "194", - "measuredW": "238", - "measuredH": "47", - "w": "238", - "h": "47", - "x": "392", - "y": "2139", - "properties": { - "controlName": "104-design-patterns:type-object-pattern" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "161", - "measuredH": "26", - "x": "38", - "y": "11", - "properties": { - "size": "18", - "text": "Type Object Pattern" - } - } - ] - } - } - }, - { - "ID": "2846", - "typeID": "__group__", - "zOrder": "195", - "measuredW": "298", - "measuredH": "50", - "w": "298", - "h": "50", - "x": "810", - "y": "2328", - "properties": { - "controlName": "113-complexity-classes" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "298", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "157", - "measuredH": "26", - "x": "70", - "y": "12", - "properties": { - "size": "18", - "text": "Complexity Classes" - } - } - ] - } - } - }, - { - "ID": "2847", - "typeID": "__group__", - "zOrder": "196", - "measuredW": "159", - "measuredH": "47", - "w": "159", - "h": "47", - "x": "810", - "y": "2470", - "properties": { - "controlName": "104-complexity-classes:np-complete" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "159", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "109", - "measuredH": "26", - "x": "25", - "y": "11", - "properties": { - "size": "18", - "text": "NP Complete" - } - } - ] - } - } - }, - { - "ID": "2848", - "typeID": "__group__", - "zOrder": "197", - "measuredW": "50", - "measuredH": "47", - "w": "50", - "h": "47", - "x": "810", - "y": "2416", - "properties": { - "controlName": "100-complexity-classes:p" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "50", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "12", - "measuredH": "26", - "x": "19", - "y": "11", - "properties": { - "size": "18", - "text": "P" - } - } - ] - } - } - }, - { - "ID": "2849", - "typeID": "__group__", - "zOrder": "198", - "measuredW": "53", - "measuredH": "47", - "w": "53", - "h": "47", - "x": "866", - "y": "2416", - "properties": { - "controlName": "101-complexity-classes:np" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "53", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "25", - "measuredH": "26", - "x": "14", - "y": "11", - "properties": { - "size": "18", - "text": "NP" - } - } - ] - } - } - }, - { - "ID": "2850", - "typeID": "__group__", - "zOrder": "199", - "measuredW": "78", - "measuredH": "47", - "w": "78", - "h": "47", - "x": "925", - "y": "2416", - "properties": { - "controlName": "102-complexity-classes:co-np" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "78", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "55", - "measuredH": "26", - "x": "11", - "y": "11", - "properties": { - "size": "18", - "text": "Co-NP" - } - } - ] - } - } - }, - { - "ID": "2851", - "typeID": "__group__", - "zOrder": "200", - "measuredW": "98", - "measuredH": "47", - "w": "98", - "h": "47", - "x": "1010", - "y": "2416", - "properties": { - "controlName": "103-complexity-classes:np-hard" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "98", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "70", - "measuredH": "26", - "x": "14", - "y": "11", - "properties": { - "size": "18", - "text": "NP Hard" - } - } - ] - } - } - }, - { - "ID": "2852", - "typeID": "__group__", - "zOrder": "201", - "measuredW": "129", - "measuredH": "47", - "w": "129", - "h": "47", - "x": "979", - "y": "2470", - "properties": { - "controlName": "105-complexity-classes:p-equals-np" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "129", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "59", - "measuredH": "26", - "x": "35", - "y": "11", - "properties": { - "size": "18", - "text": "P = NP" - } - } - ] - } - } - }, - { - "ID": "2853", - "typeID": "__group__", - "zOrder": "202", - "measuredW": "272", - "measuredH": "47", - "w": "272", - "h": "47", - "x": "812", - "y": "2535", - "properties": { - "controlName": "100-complexity-classes:np-complete:travelling-salesman-problem" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "272", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "235", - "measuredH": "26", - "x": "18", - "y": "11", - "properties": { - "size": "18", - "text": "Travelling Salesman Problem" - } - } - ] - } - } - }, - { - "ID": "2854", - "typeID": "__group__", - "zOrder": "203", - "measuredW": "272", - "measuredH": "47", - "w": "272", - "h": "47", - "x": "812", - "y": "2638", - "properties": { - "controlName": "102-complexity-classes:np-complete:longest-path-problem" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "272", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "179", - "measuredH": "26", - "x": "46", - "y": "11", - "properties": { - "size": "18", - "text": "Longest Path Problem" - } - } - ] - } - } - }, - { - "ID": "2855", - "typeID": "__group__", - "zOrder": "204", - "measuredW": "156", - "measuredH": "47", - "w": "156", - "h": "47", - "x": "533", - "y": "2396", - "properties": { - "controlName": "101-basic-math-skills:combinatorics" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "156", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "118", - "measuredH": "26", - "x": "18", - "y": "11", - "properties": { - "size": "18", - "text": "Combinatorics" - } - } - ] - } - } - }, - { - "ID": "2856", - "typeID": "__group__", - "zOrder": "205", - "measuredW": "133", - "measuredH": "47", - "w": "133", - "h": "47", - "x": "392", - "y": "2396", - "properties": { - "controlName": "100-basic-math-skills:probability" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "133", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "85", - "measuredH": "26", - "x": "24", - "y": "11", - "properties": { - "size": "18", - "text": "Probability" - } - } - ] - } - } - }, - { - "ID": "2857", - "typeID": "__group__", - "zOrder": "206", - "measuredW": "262", - "measuredH": "50", - "w": "262", - "h": "50", - "x": "1302", - "y": "2467", - "properties": { - "controlName": "114-tries" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "262", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "41", - "measuredH": "26", - "x": "110", - "y": "12", - "properties": { - "size": "18", - "text": "Tries" - } - } - ] - } - } - }, - { - "ID": "2858", - "typeID": "__group__", - "zOrder": "207", - "measuredW": "290", - "measuredH": "50", - "w": "290", - "h": "50", - "x": "1304", - "y": "2720", - "properties": { - "controlName": "115-balanced-search-trees" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "290", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "190", - "measuredH": "26", - "x": "54", - "y": "12", - "properties": { - "size": "18", - "text": "Balanced Search Trees" - } - } - ] - } - } - }, - { - "ID": "2859", - "typeID": "__group__", - "zOrder": "208", - "measuredW": "226", - "measuredH": "47", - "w": "226", - "h": "47", - "x": "1381", - "y": "2545", - "properties": { - "controlName": "100-balanced-search-trees:avl-trees" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "226", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "82", - "measuredH": "26", - "x": "72", - "y": "11", - "properties": { - "size": "18", - "text": "AVL Trees" - } - } - ] - } - } - }, - { - "ID": "2860", - "typeID": "__group__", - "zOrder": "209", - "measuredW": "226", - "measuredH": "47", - "w": "226", - "h": "47", - "x": "1381", - "y": "2596", - "properties": { - "controlName": "101-balanced-search-trees:red-black-trees" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "226", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "148", - "measuredH": "26", - "x": "39", - "y": "11", - "properties": { - "size": "18", - "text": "Red / Black Trees" - } - } - ] - } - } - }, - { - "ID": "2861", - "typeID": "__group__", - "zOrder": "210", - "measuredW": "226", - "measuredH": "47", - "w": "226", - "h": "47", - "x": "1381", - "y": "2647", - "properties": { - "controlName": "102-balanced-search-trees:the-2-3-search-trees" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "226", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "141", - "measuredH": "26", - "x": "42", - "y": "11", - "properties": { - "size": "18", - "text": "2-3 Search Trees" - } - } - ] - } - } - }, - { - "ID": "2862", - "typeID": "__group__", - "zOrder": "211", - "measuredW": "226", - "measuredH": "47", - "w": "226", - "h": "47", - "x": "1381", - "y": "2797", - "properties": { - "controlName": "103-balanced-search-trees:the-2-3-4-trees" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "226", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "97", - "measuredH": "26", - "x": "64", - "y": "11", - "properties": { - "size": "18", - "text": "2-3-4 Trees" - } - } - ] - } - } - }, - { - "ID": "2863", - "typeID": "__group__", - "zOrder": "212", - "measuredW": "226", - "measuredH": "47", - "w": "226", - "h": "47", - "x": "1381", - "y": "2848", - "properties": { - "controlName": "104-balanced-search-trees:n-ary-trees" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "226", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "148", - "measuredH": "26", - "x": "39", - "y": "11", - "properties": { - "size": "18", - "text": "K-ary / M-ary Tree" - } - } - ] - } - } - }, - { - "ID": "2864", - "typeID": "__group__", - "zOrder": "213", - "measuredW": "298", - "measuredH": "50", - "w": "298", - "h": "50", - "x": "1228", - "y": "1933", - "properties": { - "controlName": "108-endianess" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "298", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "86", - "measuredH": "26", - "x": "106", - "y": "12", - "properties": { - "size": "18", - "text": "Endianess" - } - } - ] - } - } - }, - { - "ID": "2865", - "typeID": "__group__", - "zOrder": "214", - "measuredW": "181", - "measuredH": "47", - "w": "181", - "h": "47", - "x": "949", - "y": "1886", - "properties": { - "controlName": "100-endianess:big-endian" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "181", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "89", - "measuredH": "26", - "x": "46", - "y": "11", - "properties": { - "size": "18", - "text": "Big Endian" - } - } - ] - } - } - }, - { - "ID": "2866", - "typeID": "__group__", - "zOrder": "215", - "measuredW": "226", - "measuredH": "47", - "w": "226", - "h": "47", - "x": "1381", - "y": "2900", - "properties": { - "controlName": "105-balanced-search-trees:b-tree" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "226", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "55", - "measuredH": "26", - "x": "85", - "y": "11", - "properties": { - "size": "18", - "text": "B-Tree" - } - } - ] - } - } - }, - { - "ID": "2867", - "typeID": "__group__", - "zOrder": "216", - "measuredW": "181", - "measuredH": "47", - "w": "181", - "h": "47", - "x": "949", - "y": "1938", - "properties": { - "controlName": "101-endianess:little-endian" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "181", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "102", - "measuredH": "26", - "x": "40", - "y": "11", - "properties": { - "size": "18", - "text": "Little Endian" - } - } - ] - } - } - }, - { - "ID": "2868", - "typeID": "__group__", - "zOrder": "217", - "measuredW": "298", - "measuredH": "50", - "w": "298", - "h": "50", - "x": "902", - "y": "2873", - "properties": { - "controlName": "116-system-design" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "298", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "121", - "measuredH": "26", - "x": "88", - "y": "12", - "properties": { - "size": "18", - "text": "System Design" - } - } - ] - } - } - }, - { - "ID": "2869", - "typeID": "__group__", - "zOrder": "218", - "measuredW": "298", - "measuredH": "47", - "w": "298", - "h": "47", - "x": "900", - "y": "2752", - "properties": { - "controlName": "100-system-design:horizontal-vs-vertical-scaling" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "298", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "234", - "measuredH": "26", - "x": "32", - "y": "11", - "properties": { - "size": "18", - "text": "Horizontal vs Vertical Scaling" - } - } - ] - } - } - }, - { - "ID": "2870", - "typeID": "__group__", - "zOrder": "219", - "measuredW": "298", - "measuredH": "47", - "w": "298", - "h": "47", - "x": "900", - "y": "2803", - "properties": { - "controlName": "101-system-design:load-balancing" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "298", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "127", - "measuredH": "26", - "x": "85", - "y": "11", - "properties": { - "size": "18", - "text": "Load Balancing" - } - } - ] - } - } - }, - { - "ID": "2871", - "typeID": "__group__", - "zOrder": "220", - "measuredW": "155", - "measuredH": "47", - "w": "155", - "h": "47", - "x": "902", - "y": "2945", - "properties": { - "controlName": "101-system-design:clustering" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "155", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "84", - "measuredH": "26", - "x": "35", - "y": "11", - "properties": { - "size": "18", - "text": "Clustering" - } - } - ] - } - } - }, - { - "ID": "2872", - "typeID": "__group__", - "zOrder": "221", - "measuredW": "136", - "measuredH": "47", - "w": "136", - "h": "47", - "x": "1063", - "y": "2945", - "properties": { - "controlName": "102-system-design:caching" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "136", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "68", - "measuredH": "26", - "x": "38", - "y": "11", - "properties": { - "size": "18", - "text": "Caching" - } - } - ] - } - } - }, - { - "ID": "2873", - "typeID": "__group__", - "zOrder": "222", - "measuredW": "155", - "measuredH": "47", - "w": "155", - "h": "47", - "x": "902", - "y": "2998", - "properties": { - "controlName": "103-system-design:cdn" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "155", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "40", - "measuredH": "26", - "x": "58", - "y": "11", - "properties": { - "size": "18", - "text": "CDN" - } - } - ] - } - } - }, - { - "ID": "2874", - "typeID": "__group__", - "zOrder": "223", - "measuredW": "136", - "measuredH": "47", - "w": "136", - "h": "47", - "x": "1063", - "y": "2998", - "properties": { - "controlName": "104-system-design:proxy" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "136", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "44", - "measuredH": "26", - "x": "47", - "y": "11", - "properties": { - "size": "18", - "text": "Proxy" - } - } - ] - } - } - }, - { - "ID": "2875", - "typeID": "__group__", - "zOrder": "224", - "measuredW": "155", - "measuredH": "47", - "w": "155", - "h": "47", - "x": "902", - "y": "3051", - "properties": { - "controlName": "105-system-design:cap-theorem" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "155", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "113", - "measuredH": "26", - "x": "21", - "y": "11", - "properties": { - "size": "18", - "text": "CAP Theorem" - } - } - ] - } - } - }, - { - "ID": "2876", - "typeID": "__group__", - "zOrder": "225", - "measuredW": "137", - "measuredH": "47", - "w": "137", - "h": "47", - "x": "1062", - "y": "3051", - "properties": { - "controlName": "106-system-design:queues" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "137", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "65", - "measuredH": "26", - "x": "36", - "y": "11", - "properties": { - "size": "18", - "text": "Queues" - } - } - ] - } - } - }, - { - "ID": "2877", - "typeID": "__group__", - "zOrder": "226", - "measuredW": "297", - "measuredH": "47", - "w": "297", - "h": "47", - "x": "902", - "y": "3103", - "properties": { - "controlName": "107-system-design:architectural-styles" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "297", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "155", - "measuredH": "26", - "x": "71", - "y": "11", - "properties": { - "size": "18", - "text": "Architectural Styles" - } - } - ] - } - } - }, - { - "ID": "2878", - "typeID": "__group__", - "zOrder": "227", - "measuredW": "98", - "measuredH": "47", - "w": "98", - "h": "47", - "x": "902", - "y": "3156", - "properties": { - "controlName": "108-system-design:rest" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "98", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "47", - "measuredH": "26", - "x": "25", - "y": "11", - "properties": { - "size": "18", - "text": "REST" - } - } - ] - } - } - }, - { - "ID": "2879", - "typeID": "__group__", - "zOrder": "228", - "measuredW": "98", - "measuredH": "47", - "w": "98", - "h": "47", - "x": "1006", - "y": "3156", - "properties": { - "controlName": "109-system-design:graphql" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "98", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "75", - "measuredH": "26", - "x": "11", - "y": "11", - "properties": { - "size": "18", - "text": "GraphQL" - } - } - ] - } - } - }, - { - "ID": "2880", - "typeID": "__group__", - "zOrder": "229", - "measuredW": "88", - "measuredH": "47", - "w": "88", - "h": "47", - "x": "1111", - "y": "3156", - "properties": { - "controlName": "110-system-design:grpc" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "88", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "48", - "measuredH": "26", - "x": "20", - "y": "11", - "properties": { - "size": "18", - "text": "gRPC" - } - } - ] - } - } - }, - { - "ID": "2881", - "typeID": "__group__", - "zOrder": "230", - "measuredW": "297", - "measuredH": "47", - "w": "297", - "h": "47", - "x": "900", - "y": "3209", - "properties": { - "controlName": "111-system-design:cloud-design-patterns" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "297", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "183", - "measuredH": "26", - "x": "57", - "y": "11", - "properties": { - "size": "18", - "text": "Cloud Design Patterns" - } - } - ] - } - } - }, - { - "ID": "2882", - "typeID": "__group__", - "zOrder": "231", - "measuredW": "149", - "measuredH": "47", - "w": "149", - "h": "47", - "x": "900", - "y": "3262", - "properties": { - "controlName": "112-system-design:long-polling" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "149", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "100", - "measuredH": "26", - "x": "25", - "y": "11", - "properties": { - "size": "18", - "text": "Long Polling" - } - } - ] - } - } - }, - { - "ID": "2883", - "typeID": "__group__", - "zOrder": "232", - "measuredW": "149", - "measuredH": "47", - "w": "149", - "h": "47", - "x": "900", - "y": "3315", - "properties": { - "controlName": "114-system-design:web-sockets" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "149", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "106", - "measuredH": "26", - "x": "22", - "y": "11", - "properties": { - "size": "18", - "text": "Web Sockets" - } - } - ] - } - } - }, - { - "ID": "2884", - "typeID": "__group__", - "zOrder": "233", - "measuredW": "143", - "measuredH": "47", - "w": "143", - "h": "47", - "x": "1056", - "y": "3315", - "properties": { - "controlName": "115-system-design:sse" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "143", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "34", - "measuredH": "26", - "x": "55", - "y": "11", - "properties": { - "size": "18", - "text": "SSE" - } - } - ] - } - } - }, - { - "ID": "2885", - "typeID": "__group__", - "zOrder": "234", - "measuredW": "298", - "measuredH": "50", - "w": "298", - "h": "50", - "x": "392", - "y": "2320", - "properties": { - "controlName": "112-basic-math-skills" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "298", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "137", - "measuredH": "26", - "x": "80", - "y": "12", - "properties": { - "size": "18", - "text": "Basic Math Skills" - } - } - ] - } - } - }, - { - "ID": "2886", - "typeID": "__group__", - "zOrder": "235", - "measuredW": "298", - "measuredH": "50", - "w": "298", - "h": "50", - "x": "391", - "y": "3158", - "properties": { - "controlName": "117-databases" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "298", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "88", - "measuredH": "26", - "x": "105", - "y": "12", - "properties": { - "size": "18", - "text": "Databases" - } - } - ] - } - } - }, - { - "ID": "2887", - "typeID": "__group__", - "zOrder": "236", - "measuredW": "298", - "measuredH": "47", - "w": "298", - "h": "47", - "x": "390", - "y": "2507", - "properties": { - "controlName": "100-databases:sql-vs-nosql-databases" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "298", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "214", - "measuredH": "26", - "x": "42", - "y": "11", - "properties": { - "size": "18", - "text": "SQL vs NoSQL Databases" - } - } - ] - } - } - }, - { - "ID": "2888", - "typeID": "__group__", - "zOrder": "237", - "measuredW": "298", - "measuredH": "47", - "w": "298", - "h": "47", - "x": "390", - "y": "2559", - "properties": { - "controlName": "101-databases:normalization-denormalization" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "298", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "263", - "measuredH": "26", - "x": "19", - "y": "11", - "properties": { - "size": "18", - "text": "Normalization / Denormalization" - } - } - ] - } - } - }, - { - "ID": "2889", - "typeID": "__group__", - "zOrder": "238", - "measuredW": "298", - "measuredH": "47", - "w": "298", - "h": "47", - "x": "390", - "y": "2610", - "properties": { - "controlName": "102-databases:entity-relationship-model" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "298", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "209", - "measuredH": "26", - "x": "44", - "y": "11", - "properties": { - "size": "18", - "text": "Entity-Relationship Model" - } - } - ] - } - } - }, - { - "ID": "2890", - "typeID": "__group__", - "zOrder": "239", - "measuredW": "74", - "measuredH": "47", - "w": "74", - "h": "47", - "x": "390", - "y": "2663", - "properties": { - "controlName": "103-databases:ddl" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "74", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "37", - "measuredH": "26", - "x": "18", - "y": "11", - "properties": { - "size": "18", - "text": "DDL" - } - } - ] - } - } - }, - { - "ID": "2891", - "typeID": "__group__", - "zOrder": "240", - "measuredW": "148", - "measuredH": "47", - "w": "148", - "h": "47", - "x": "390", - "y": "2872", - "properties": { - "controlName": "113-databases:indexes" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "148", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "64", - "measuredH": "26", - "x": "42", - "y": "10", - "properties": { - "size": "18", - "text": "Indexes" - } - } - ] - } - } - }, - { - "ID": "2892", - "typeID": "__group__", - "zOrder": "241", - "measuredW": "297", - "measuredH": "47", - "w": "297", - "h": "47", - "x": "390", - "y": "2715", - "properties": { - "controlName": "107-databases:locking" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "297", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "64", - "measuredH": "26", - "x": "117", - "y": "11", - "properties": { - "size": "18", - "text": "Locking" - } - } - ] - } - } - }, - { - "ID": "2893", - "typeID": "__group__", - "zOrder": "242", - "measuredW": "148", - "measuredH": "47", - "w": "148", - "h": "47", - "x": "390", - "y": "2767", - "properties": { - "controlName": "109-databases:acid-model" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "148", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "98", - "measuredH": "26", - "x": "25", - "y": "11", - "properties": { - "size": "18", - "text": "ACID Model" - } - } - ] - } - } - }, - { - "ID": "2894", - "typeID": "__group__", - "zOrder": "243", - "measuredW": "140", - "measuredH": "47", - "w": "140", - "h": "47", - "x": "546", - "y": "2767", - "properties": { - "controlName": "110-databases:base-model" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "140", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "102", - "measuredH": "26", - "x": "19", - "y": "11", - "properties": { - "size": "18", - "text": "BASE Model" - } - } - ] - } - } - }, - { - "ID": "2895", - "typeID": "__group__", - "zOrder": "244", - "measuredW": "148", - "measuredH": "47", - "w": "148", - "h": "47", - "x": "390", - "y": "2820", - "properties": { - "controlName": "111-databases:cap-theorem" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "148", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "113", - "measuredH": "26", - "x": "19", - "y": "11", - "properties": { - "size": "18", - "text": "CAP Theorem" - } - } - ] - } - } - }, - { - "ID": "2896", - "typeID": "__group__", - "zOrder": "245", - "measuredW": "140", - "measuredH": "47", - "w": "140", - "h": "47", - "x": "546", - "y": "2820", - "properties": { - "controlName": "112-databases:pacelc-theorem" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "140", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "68", - "measuredH": "26", - "x": "36", - "y": "11", - "properties": { - "size": "18", - "text": "PACELC" - } - } - ] - } - } - }, - { - "ID": "2897", - "typeID": "__group__", - "zOrder": "246", - "measuredW": "141", - "measuredH": "47", - "w": "141", - "h": "47", - "x": "546", - "y": "2871", - "properties": { - "controlName": "114-databases:views" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "141", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "47", - "measuredH": "26", - "x": "47", - "y": "11", - "properties": { - "size": "18", - "text": "Views" - } - } - ] - } - } - }, - { - "ID": "2898", - "typeID": "__group__", - "zOrder": "247", - "measuredW": "299", - "measuredH": "47", - "w": "299", - "h": "47", - "x": "390", - "y": "2923", - "properties": { - "controlName": "115-databases:transactions" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "299", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "105", - "measuredH": "26", - "x": "97", - "y": "10", - "properties": { - "size": "18", - "text": "Transactions" - } - } - ] - } - } - }, - { - "ID": "2899", - "typeID": "__group__", - "zOrder": "248", - "measuredW": "300", - "measuredH": "47", - "w": "300", - "h": "47", - "x": "390", - "y": "2974", - "properties": { - "controlName": "116-databases:stored-procedures" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "300", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "153", - "measuredH": "26", - "x": "73", - "y": "10", - "properties": { - "size": "18", - "text": "Stored Procedures" - } - } - ] - } - } - }, - { - "ID": "2900", - "typeID": "__group__", - "zOrder": "249", - "measuredW": "299", - "measuredH": "47", - "w": "299", - "h": "47", - "x": "391", - "y": "3026", - "properties": { - "controlName": "117-databases:database-federation" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "299", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "172", - "measuredH": "26", - "x": "64", - "y": "10", - "properties": { - "size": "18", - "text": "Database Federation" - } - } - ] - } - } - }, - { - "ID": "2901", - "typeID": "__group__", - "zOrder": "250", - "measuredW": "147", - "measuredH": "47", - "w": "147", - "h": "47", - "x": "391", - "y": "3078", - "properties": { - "controlName": "118-databases:replication" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "147", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "93", - "measuredH": "26", - "x": "27", - "y": "11", - "properties": { - "size": "18", - "text": "Replication" - } - } - ] - } - } - }, - { - "ID": "2902", - "typeID": "__group__", - "zOrder": "251", - "measuredW": "157", - "measuredH": "52", - "w": "157", - "h": "52", - "x": "689", - "y": "3524", - "properties": { - "controlName": "119-security" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "157", - "h": "52", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "66", - "measuredH": "26", - "x": "46", - "y": "13", - "properties": { - "text": "Security", - "size": "18" - } - } - ] - } - } - }, - { - "ID": "2903", - "typeID": "__group__", - "zOrder": "252", - "measuredW": "176", - "measuredH": "47", - "w": "176", - "h": "47", - "x": "391", - "y": "3263", - "properties": { - "controlName": "105-networking:osi-model" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "176", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "86", - "measuredH": "26", - "x": "45", - "y": "11", - "properties": { - "size": "18", - "text": "OSI Model" - } - } - ] - } - } - }, - { - "ID": "2904", - "typeID": "__group__", - "zOrder": "253", - "measuredW": "176", - "measuredH": "47", - "w": "176", - "h": "47", - "x": "391", - "y": "3315", - "properties": { - "controlName": "104-networking:tcp-ip-model" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "176", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "125", - "measuredH": "26", - "x": "23", - "y": "11", - "properties": { - "size": "18", - "text": "TCP / IP Model" - } - } - ] - } - } - }, - { - "ID": "2905", - "typeID": "__group__", - "zOrder": "254", - "measuredW": "84", - "measuredH": "47", - "w": "84", - "h": "47", - "x": "482", - "y": "3367", - "properties": { - "controlName": "102-networking:http" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "84", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "47", - "measuredH": "26", - "x": "18", - "y": "11", - "properties": { - "size": "18", - "text": "HTTP" - } - } - ] - } - } - }, - { - "ID": "2906", - "typeID": "__group__", - "zOrder": "255", - "measuredW": "85", - "measuredH": "47", - "w": "85", - "h": "47", - "x": "391", - "y": "3367", - "properties": { - "controlName": "103-networking:dns" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "85", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "38", - "measuredH": "26", - "x": "24", - "y": "11", - "properties": { - "size": "18", - "text": "DNS" - } - } - ] - } - } - }, - { - "ID": "2907", - "typeID": "__group__", - "zOrder": "256", - "measuredW": "175", - "measuredH": "47", - "w": "175", - "h": "47", - "x": "390", - "y": "3419", - "properties": { - "controlName": "101-networking:tls-https" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "175", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "111", - "measuredH": "26", - "x": "32", - "y": "11", - "properties": { - "size": "18", - "text": "TLS & HTTPS" - } - } - ] - } - } - }, - { - "ID": "2908", - "typeID": "__group__", - "zOrder": "257", - "measuredW": "175", - "measuredH": "47", - "w": "175", - "h": "47", - "x": "390", - "y": "3472", - "properties": { - "controlName": "100-networking:sockets" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "175", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "65", - "measuredH": "26", - "x": "55", - "y": "11", - "properties": { - "size": "18", - "text": "Sockets" - } - } - ] - } - } - }, - { - "ID": "2909", - "typeID": "__group__", - "zOrder": "258", - "measuredW": "250", - "measuredH": "47", - "w": "250", - "h": "47", - "x": "391", - "y": "3612", - "properties": { - "controlName": "100-security:public-key-cryptography" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "250", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "197", - "measuredH": "26", - "x": "26", - "y": "10", - "properties": { - "size": "18", - "text": "Public Key Cryptography" - } - } - ] - } - } - }, - { - "ID": "2910", - "typeID": "__group__", - "zOrder": "259", - "measuredW": "300", - "measuredH": "47", - "w": "300", - "h": "47", - "x": "391", - "y": "3663", - "properties": { - "controlName": "101-security:hashing-encryption-encoding" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "300", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "267", - "measuredH": "26", - "x": "16", - "y": "11", - "properties": { - "size": "18", - "text": "Hashing / Encryption / Encoding" - } - } - ] - } - } - }, - { - "ID": "2911", - "typeID": "__group__", - "zOrder": "260", - "measuredW": "200", - "measuredH": "47", - "w": "200", - "h": "47", - "x": "391", - "y": "3714", - "properties": { - "controlName": "102-security:hashing-algorithms" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "158", - "measuredH": "26", - "x": "21", - "y": "11", - "properties": { - "size": "18", - "text": "Hashing Algorithms" - } - } - ] - } - } - }, - { - "ID": "2912", - "typeID": "__group__", - "zOrder": "261", - "measuredW": "157", - "measuredH": "47", - "w": "157", - "h": "47", - "x": "391", - "y": "3766", - "properties": { - "controlName": "103-security:owasp-top-10" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "157", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "118", - "measuredH": "26", - "x": "20", - "y": "11", - "properties": { - "size": "18", - "text": "OWASP Top 10" - } - } - ] - } - } - }, - { - "ID": "2913", - "typeID": "__group__", - "zOrder": "262", - "measuredW": "143", - "measuredH": "47", - "w": "143", - "h": "47", - "x": "547", - "y": "3078", - "properties": { - "controlName": "119-databases:sharding" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "143", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "73", - "measuredH": "26", - "x": "35", - "y": "11", - "properties": { - "size": "18", - "text": "Sharding" - } - } - ] - } - } - }, - { - "ID": "2914", - "typeID": "__group__", - "zOrder": "263", - "measuredW": "156", - "measuredH": "50", - "w": "156", - "h": "50", - "x": "690", - "y": "3459", - "properties": { - "controlName": "118-networking" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "156", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "92", - "measuredH": "26", - "x": "32", - "y": "12", - "properties": { - "size": "18", - "text": "Networking" - } - } - ] - } - } - }, - { - "ID": "2915", - "typeID": "__group__", - "zOrder": "264", - "measuredW": "240", - "measuredH": "52", - "w": "240", - "h": "52", - "x": "901", - "y": "3524", - "properties": { - "controlName": "120-how-computers-work" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "240", - "h": "52", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "176", - "measuredH": "26", - "x": "32", - "y": "13", - "properties": { - "size": "18", - "text": "How Computers Work" - } - } - ] - } - } - }, - { - "ID": "2916", - "typeID": "__group__", - "zOrder": "265", - "measuredW": "280", - "measuredH": "47", - "w": "280", - "h": "47", - "x": "905", - "y": "3394", - "properties": { - "controlName": "100-how-computers-work:how-cpu-executes-programs" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "280", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "248", - "measuredH": "26", - "x": "16", - "y": "11", - "properties": { - "size": "18", - "text": "How CPU executes programs?" - } - } - ] - } - } - }, - { - "ID": "2917", - "typeID": "__group__", - "zOrder": "266", - "measuredW": "280", - "measuredH": "47", - "w": "280", - "h": "47", - "x": "905", - "y": "3444", - "properties": { - "controlName": "101-how-computers-work:how-computers-calculate" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "280", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "215", - "measuredH": "26", - "x": "32", - "y": "11", - "properties": { - "size": "18", - "text": "How computers calculate?" - } - } - ] - } - } - }, - { - "ID": "2918", - "typeID": "__group__", - "zOrder": "267", - "measuredW": "281", - "measuredH": "47", - "w": "281", - "h": "47", - "x": "904", - "y": "3610", - "properties": { - "controlName": "102-how-computers-work:registers-and-ram" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "281", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "w": "162", - "measuredW": "159", - "measuredH": "26", - "x": "60", - "y": "11", - "properties": { - "size": "18", - "text": "Registers and RAM" - } - } - ] - } - } - }, - { - "ID": "2919", - "typeID": "__group__", - "zOrder": "268", - "measuredW": "281", - "measuredH": "47", - "w": "281", - "h": "47", - "x": "904", - "y": "3660", - "properties": { - "controlName": "103-how-computers-work:instructions-and-programs" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "281", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "w": "218", - "measuredW": "214", - "measuredH": "26", - "x": "32", - "y": "11", - "properties": { - "size": "18", - "text": "Instructions and Programs" - } - } - ] - } - } - }, - { - "ID": "2920", - "typeID": "__group__", - "zOrder": "269", - "measuredW": "281", - "measuredH": "47", - "w": "281", - "h": "47", - "x": "904", - "y": "3711", - "properties": { - "controlName": "104-how-computers-work:cpu-cache" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "281", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "w": "98", - "measuredW": "96", - "measuredH": "26", - "x": "92", - "y": "11", - "properties": { - "size": "18", - "text": "CPU Cache" - } - } - ] - } - } - }, - { - "ID": "2921", - "typeID": "__group__", - "zOrder": "270", - "measuredW": "257", - "measuredH": "52", - "w": "257", - "h": "52", - "x": "1302", - "y": "3524", - "properties": { - "controlName": "121-processes-and-threads" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "257", - "h": "52", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "192", - "measuredH": "26", - "x": "33", - "y": "13", - "properties": { - "size": "18", - "text": "Processes and Threads" - } - } - ] - } - } - }, - { - "ID": "2922", - "typeID": "__group__", - "zOrder": "271", - "measuredW": "270", - "measuredH": "47", - "w": "270", - "h": "47", - "x": "1332", - "y": "3445", - "properties": { - "controlName": "105-processes-and-threads:processes-vs-threads" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "270", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "179", - "measuredH": "26", - "x": "45", - "y": "11", - "properties": { - "size": "18", - "text": "Processes vs Threads" - } - } - ] - } - } - }, - { - "ID": "2923", - "typeID": "__group__", - "zOrder": "272", - "measuredW": "269", - "measuredH": "47", - "w": "269", - "h": "47", - "x": "1332", - "y": "3394", - "properties": { - "controlName": "104-processes-and-threads:cpu-interrupts" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "269", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "122", - "measuredH": "26", - "x": "74", - "y": "11", - "properties": { - "size": "18", - "text": "CPU Interrupts" - } - } - ] - } - } - }, - { - "ID": "2924", - "typeID": "__group__", - "zOrder": "273", - "measuredW": "269", - "measuredH": "47", - "w": "269", - "h": "47", - "x": "1332", - "y": "3242", - "properties": { - "controlName": "102-processes-and-threads:lock-mutex-semaphore" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "269", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "218", - "measuredH": "26", - "x": "26", - "y": "11", - "properties": { - "size": "18", - "text": "Lock / Mutex / Semaphore" - } - } - ] - } - } - }, - { - "ID": "2925", - "typeID": "__group__", - "zOrder": "274", - "measuredW": "268", - "measuredH": "47", - "w": "268", - "h": "47", - "x": "1333", - "y": "3191", - "properties": { - "controlName": "101-processes-and-threads:memory-management" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "268", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "179", - "measuredH": "26", - "x": "44", - "y": "11", - "properties": { - "size": "18", - "text": "Memory Management" - } - } - ] - } - } - }, - { - "ID": "2926", - "typeID": "__group__", - "zOrder": "275", - "measuredW": "270", - "measuredH": "47", - "w": "270", - "h": "47", - "x": "1332", - "y": "3139", - "properties": { - "controlName": "100-processes-and-threads:process-forking" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "270", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "132", - "measuredH": "26", - "x": "69", - "y": "11", - "properties": { - "size": "18", - "text": "Process Forking" - } - } - ] - } - } - }, - { - "ID": "2927", - "typeID": "__group__", - "zOrder": "276", - "measuredW": "269", - "measuredH": "47", - "w": "269", - "h": "47", - "x": "1332", - "y": "3344", - "properties": { - "controlName": "103-processes-and-threads:scheduling-algorithms" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "269", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "181", - "measuredH": "26", - "x": "44", - "y": "11", - "properties": { - "size": "18", - "text": "Scheduling Algorithms" - } - } - ] - } - } - }, - { - "ID": "2928", - "typeID": "__group__", - "zOrder": "277", - "measuredW": "270", - "measuredH": "47", - "w": "270", - "h": "47", - "x": "1332", - "y": "3293", - "properties": { - "controlName": "103-processes-and-threads:concurrency-in-multiple-cores" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "270", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "242", - "measuredH": "26", - "x": "14", - "y": "11", - "properties": { - "size": "18", - "text": "Concurrency in Multiple cores" - } - } - ] - } - } - }, - { - "ID": "2929", - "typeID": "__group__", - "zOrder": "278", - "measuredW": "257", - "measuredH": "52", - "w": "257", - "h": "52", - "x": "1302", - "y": "3805", - "properties": { - "controlName": "122-kd-trees" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "257", - "h": "52", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "82", - "measuredH": "26", - "x": "88", - "y": "13", - "properties": { - "size": "18", - "text": "K-D Trees" - } - } - ] - } - } - }, - { - "ID": "2930", - "typeID": "__group__", - "zOrder": "279", - "measuredW": "257", - "measuredH": "52", - "w": "257", - "h": "52", - "x": "902", - "y": "3805", - "properties": { - "controlName": "123-skip-lists" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "257", - "h": "52", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "78", - "measuredH": "26", - "x": "90", - "y": "13", - "properties": { - "size": "18", - "text": "Skip Lists" - } - } - ] - } - } - }, - { - "ID": "2931", - "typeID": "__group__", - "zOrder": "280", - "measuredW": "411", - "measuredH": "181", - "w": "411", - "h": "181", - "x": "364", - "y": "181", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "411", - "h": "181", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "281", - "measuredH": "28", - "x": "28", - "y": "25", - "properties": { - "size": "20", - "text": "References / Other Resources" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "254", - "measuredH": "26", - "w": "254", - "h": "26", - "x": "29", - "y": "68", - "properties": { - "controlName": "ext_link:github.com/jwasham/coding-interview-university" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Label", - "zOrder": "0", - "measuredW": "221", - "measuredH": "26", - "x": "33", - "y": "0", - "properties": { - "size": "18", - "text": "Coding Interview University" - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "1", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "1", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10066329" - } - } - ] - } - } - }, - { - "ID": "3", - "typeID": "__group__", - "zOrder": "3", - "measuredW": "320", - "measuredH": "26", - "w": "320", - "h": "26", - "x": "29", - "y": "98", - "properties": { - "controlName": "ext_link:github.com/ossu/computer-science" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Label", - "zOrder": "0", - "measuredW": "287", - "measuredH": "26", - "x": "33", - "y": "0", - "properties": { - "size": "18", - "text": "OpenSource Society University - CS" - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "1", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "1", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10066329" - } - } - ] - } - } - }, - { - "ID": "4", - "typeID": "__group__", - "zOrder": "4", - "measuredW": "307", - "measuredH": "26", - "w": "307", - "h": "26", - "x": "29", - "y": "128", - "properties": { - "controlName": "ext_link:teachyourselfcs.com" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Label", - "zOrder": "0", - "measuredW": "274", - "measuredH": "26", - "x": "33", - "y": "0", - "properties": { - "size": "18", - "text": "Teach Yourself Computer Science" - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "1", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "1", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10066329" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "2932", - "typeID": "__group__", - "zOrder": "281", - "measuredW": "352", - "measuredH": "54", - "w": "352", - "h": "54", - "x": "1292", - "y": "328", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "__group__", - "zOrder": "0", - "measuredW": "352", - "measuredH": "54", - "w": "352", - "h": "54", - "x": "0", - "y": "0", - "properties": { - "controlName": "100-roadmap-note" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "352", - "h": "54", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "224", - "measuredH": "26", - "x": "50", - "y": "14", - "properties": { - "size": "18", - "text": "Important Note / Click here" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "18", - "y": "18", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "13576743" - } - } - ] - } - } - } - ] - } - } - } - ] - } - } + "nodes": [ + { + "id": "WEZpo4ODCC0i7oIwQSnaN", + "type": "vertical", + "position": { + "x": 434.5440348728025, + "y": 2919.8089042926963 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75 + } + }, + "zIndex": 999, + "width": 20, + "height": 744, + "style": { + "width": 20, + "height": 744 + }, + "positionAbsolute": { + "x": 434.5440348728025, + "y": 2919.8089042926963 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "IKc5ueq_Y6eapjmKMHiwc", + "type": "horizontal", + "position": { + "x": 285.6360889073014, + "y": 3208.628717156272 + }, + "selected": false, + "data": { + "label": "horizontal node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75 + }, + "oldId": "diInbFoBy8YracmAhlDsu" + }, + "zIndex": 999, + "width": 158, + "height": 20, + "style": { + "width": 158, + "height": 20 + }, + "positionAbsolute": { + "x": 285.6360889073014, + "y": 3208.628717156272 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "N4hMgSs7_NkJTye1b4WGB", + "type": "vertical", + "position": { + "x": -146.6609513586469, + "y": 2386.2403288368755 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75, + "strokeDasharray": "0.8 8", + "strokeLinecap": "round" + }, + "oldId": "qHl-nZgyPPwUnfoJTOMaV" + }, + "zIndex": 999, + "width": 20, + "height": 82, + "style": { + "width": 20, + "height": 82 + }, + "positionAbsolute": { + "x": -146.6609513586469, + "y": 2386.2403288368755 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "UeRc4bKVtg1OI-tw-DDlx", + "type": "vertical", + "position": { + "x": -36.956019691717074, + "y": 2302.529637253211 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75, + "strokeDasharray": "0.8 8", + "strokeLinecap": "round" + }, + "oldId": "N4hMgSs7_NkJTye1b4WGB" + }, + "zIndex": 999, + "width": 20, + "height": 82, + "style": { + "width": 20, + "height": 82 + }, + "positionAbsolute": { + "x": -36.956019691717074, + "y": 2302.529637253211 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "Px_tVqIhzrQBDlMHSGcxe", + "type": "vertical", + "position": { + "x": -108.95601969171707, + "y": 2304.2403288368755 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75, + "strokeDasharray": "0.8 8", + "strokeLinecap": "round" + }, + "oldId": "N4hMgSs7_NkJTye1b4WGB" + }, + "zIndex": 999, + "width": 20, + "height": 82, + "style": { + "width": 20, + "height": 82 + }, + "positionAbsolute": { + "x": -108.95601969171707, + "y": 2304.2403288368755 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "flfk0kCNrRw3RAm_YfqD4", + "type": "vertical", + "position": { + "x": -184.61511179817649, + "y": 2302.529637253211 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75, + "strokeDasharray": "0.8 8", + "strokeLinecap": "round" + }, + "oldId": "N4hMgSs7_NkJTye1b4WGB" + }, + "zIndex": 999, + "width": 20, + "height": 82, + "style": { + "width": 20, + "height": 82 + }, + "positionAbsolute": { + "x": -184.61511179817649, + "y": 2302.529637253211 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "9xh2lAwAnG_iqpL44vg-_", + "type": "vertical", + "position": { + "x": -258.61511179817643, + "y": 2302.529637253211 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75, + "strokeDasharray": "0.8 8", + "strokeLinecap": "round" + }, + "oldId": "N4hMgSs7_NkJTye1b4WGB" + }, + "zIndex": 999, + "width": 20, + "height": 82, + "style": { + "width": 20, + "height": 82 + }, + "positionAbsolute": { + "x": -258.61511179817643, + "y": 2302.529637253211 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "qHl-nZgyPPwUnfoJTOMaV", + "type": "vertical", + "position": { + "x": 463.6360889073014, + "y": 2386.2403288368755 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75, + "strokeDasharray": "0.8 8", + "strokeLinecap": "round" + } + }, + "zIndex": 999, + "width": 20, + "height": 105, + "style": { + "width": 20, + "height": 105 + }, + "positionAbsolute": { + "x": 463.6360889073014, + "y": 2386.2403288368755 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "cZIMC3KPMYI_R2a4IkhIm", + "type": "vertical", + "position": { + "x": 247.55128845385786, + "y": 1940.6857669308667 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 82, + "style": { + "width": 20, + "height": 82 + }, + "positionAbsolute": { + "x": 247.55128845385786, + "y": 1940.6857669308667 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "vtXpCorKPiSOyzfHhoMhB", + "type": "vertical", + "position": { + "x": 151.0371390423403, + "y": 1940.6857669308667 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "cZIMC3KPMYI_R2a4IkhIm" + }, + "zIndex": 999, + "width": 20, + "height": 82, + "style": { + "width": 20, + "height": 82 + }, + "positionAbsolute": { + "x": 151.0371390423403, + "y": 1940.6857669308667 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "yZmf_sUZnw0DcgrRX_aFq", + "type": "vertical", + "position": { + "x": 67.03713904234036, + "y": 1940.6857669308667 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "cZIMC3KPMYI_R2a4IkhIm" + }, + "zIndex": 999, + "width": 20, + "height": 82, + "style": { + "width": 20, + "height": 82 + }, + "positionAbsolute": { + "x": 67.03713904234036, + "y": 1940.6857669308667 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "nvEMP1hlIMmuQGOldXL5M", + "type": "section", + "position": { + "x": 36.816461554047976, + "y": 2128.330862188433 + }, + "width": 283, + "height": 196, + "style": { + "width": 283, + "height": 196 + }, + "selected": false, + "data": {}, + "positionAbsolute": { + "x": 36.816461554047976, + "y": 2128.330862188433 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "PML5ScZWD19K3GLKmbJap", + "type": "vertical", + "position": { + "x": -364.0784533997364, + "y": 1549.7547950762062 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75, + "strokeDasharray": "0.8 8", + "strokeLinecap": "round" + }, + "oldId": "0aJ8fsDjsxyXc6DK3ea5Q" + }, + "zIndex": 999, + "width": 20, + "height": 95, + "style": { + "width": 20, + "height": 95 + }, + "positionAbsolute": { + "x": -364.0784533997364, + "y": 1549.7547950762062 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "0aJ8fsDjsxyXc6DK3ea5Q", + "type": "vertical", + "position": { + "x": -478.5838696000311, + "y": 1542.0117730746028 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75, + "strokeDasharray": "0.8 8", + "strokeLinecap": "round" + }, + "oldId": "AwbF6cOF41X4XX5sssEQn" + }, + "zIndex": 999, + "width": 20, + "height": 95, + "style": { + "width": 20, + "height": 95 + }, + "positionAbsolute": { + "x": -478.5838696000311, + "y": 1542.0117730746028 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "-bpOzgBk5Bn5WWgk8Pu5v", + "type": "section", + "position": { + "x": 295.6360889073014, + "y": 1582.809467926659 + }, + "width": 215, + "height": 250, + "style": { + "width": 215, + "height": 250 + }, + "selected": false, + "data": {}, + "positionAbsolute": { + "x": 295.6360889073014, + "y": 1582.809467926659 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "AwbF6cOF41X4XX5sssEQn", + "type": "vertical", + "position": { + "x": 390.6360889073014, + "y": 1407.5117730746028 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75, + "strokeDasharray": "0.8 8", + "strokeLinecap": "round" + } + }, + "zIndex": 999, + "width": 20, + "height": 175, + "style": { + "width": 20, + "height": 175 + }, + "positionAbsolute": { + "x": 390.6360889073014, + "y": 1407.5117730746028 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "XDP5CUV6fuf9lFp42_5Jb", + "type": "vertical", + "position": { + "x": 479.2680496244592, + "y": 710.054529406169 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75 + } + }, + "zIndex": 999, + "width": 20, + "height": 786, + "style": { + "width": 20, + "height": 786 + }, + "positionAbsolute": { + "x": 479.2680496244592, + "y": 710.054529406169 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "Pk--VU4Dn0UQYxc5mDykI", + "type": "section", + "position": { + "x": 202.96354289809517, + "y": 784.6813098764044 + }, + "selected": false, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "zIndex": -999, + "width": 222, + "height": 370, + "style": { + "width": 222, + "height": 370 + }, + "positionAbsolute": { + "x": 202.96354289809517, + "y": 784.6813098764044 + }, + "selectable": true, + "focusable": true, + "resizing": false, + "dragging": false + }, + { + "id": "IxvLv_S2luYMSVXlsxrHt", + "type": "section", + "position": { + "x": -249.11423831675936, + "y": 1107.9997521969883 + }, + "selected": false, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "zIndex": -999, + "width": 279, + "height": 327, + "style": { + "width": 279, + "height": 327 + }, + "resizing": false, + "positionAbsolute": { + "x": -249.11423831675936, + "y": 1107.9997521969883 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "c_44fjH3QZw0OvRIkRobf", + "type": "section", + "position": { + "x": -514.6142383167594, + "y": 1107.9997521969883 + }, + "selected": false, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "zIndex": -999, + "width": 269, + "height": 327, + "style": { + "width": 269, + "height": 327 + }, + "resizing": false, + "positionAbsolute": { + "x": -514.6142383167594, + "y": 1107.9997521969883 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "2bhY7aSAJTF_v0SH0TVgq", + "type": "section", + "position": { + "x": -517.36376953125, + "y": 784.611083984375 + }, + "selected": false, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "zIndex": -999, + "width": 269, + "height": 327, + "style": { + "width": 269, + "height": 327 + }, + "resizing": false, + "dragging": false, + "positionAbsolute": { + "x": -517.36376953125, + "y": 784.611083984375 + }, + "selectable": true, + "focusable": true + }, + { + "id": "mB6Us4BvQ2LtuvNiZF6DQ", + "type": "section", + "position": { + "x": -253.36376953125, + "y": 784.611083984375 + }, + "selected": false, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "zIndex": -999, + "width": 246, + "height": 327, + "style": { + "width": 246, + "height": 327 + }, + "resizing": false, + "dragging": false, + "positionAbsolute": { + "x": -253.36376953125, + "y": 784.611083984375 + }, + "selectable": true, + "focusable": true + }, + { + "id": "K6FQHGJep6HwEYlgjjQjJ", + "type": "section", + "position": { + "x": 23.255365040612787, + "y": 1109.6909100960127 + }, + "selected": false, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "zIndex": -999, + "width": 182, + "height": 325, + "style": { + "width": 182, + "height": 325 + }, + "positionAbsolute": { + "x": 23.255365040612787, + "y": 1109.6909100960127 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "2_aaf2bJha7U5B7L1jwA2", + "type": "section", + "position": { + "x": -13.010992436745596, + "y": 784.0706963916828 + }, + "selected": false, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "zIndex": -999, + "width": 220, + "height": 169, + "style": { + "width": 220, + "height": 169 + }, + "resizing": false, + "positionAbsolute": { + "x": -13.010992436745596, + "y": 784.0706963916828 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "znQvyhgDMgdMHOtDmIya0", + "type": "section", + "position": { + "x": -11.863911092698572, + "y": 949.9443302389855 + }, + "selected": false, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "zIndex": -999, + "width": 218, + "height": 162, + "style": { + "width": 218, + "height": 162 + }, + "resizing": false, + "dragging": false, + "positionAbsolute": { + "x": -11.863911092698572, + "y": 949.9443302389855 + }, + "selectable": true, + "focusable": true + }, + { + "id": "MguUMOEZ8P0_WFAO3idVY", + "type": "vertical", + "position": { + "x": -106.23550208669644, + "y": 628.054529406169 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 82, + "style": { + "width": 20, + "height": 82 + }, + "positionAbsolute": { + "x": -106.23550208669644, + "y": 628.054529406169 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "0CpEOw_kX1BnyYoYkcyo6", + "type": "vertical", + "position": { + "x": 81.89840193478477, + "y": 628.054529406169 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "ccWWUL3mU3Tm1ydXRoWn4" + }, + "zIndex": 999, + "width": 20, + "height": 82, + "style": { + "width": 20, + "height": 82 + }, + "positionAbsolute": { + "x": 81.89840193478477, + "y": 628.054529406169 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "QSvxXR4rEWR6tnWSyuM68", + "type": "vertical", + "position": { + "x": 324.1360889073014, + "y": 220.90713538179 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "MguUMOEZ8P0_WFAO3idVY" + }, + "zIndex": 999, + "width": 20, + "height": 82, + "style": { + "width": 20, + "height": 82 + }, + "positionAbsolute": { + "x": 324.1360889073014, + "y": 220.90713538179 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "ANTSbyy8pOHXS3BkTSGIp", + "type": "vertical", + "position": { + "x": -439.8639110926986, + "y": 296.44433023898546 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "MguUMOEZ8P0_WFAO3idVY" + }, + "zIndex": 999, + "width": 20, + "height": 65, + "style": { + "width": 20, + "height": 65 + }, + "positionAbsolute": { + "x": -439.8639110926986, + "y": 296.44433023898546 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "width": 276, + "height": 68, + "id": "iogwMmOvub2ZF4zgg6WyF", + "type": "title", + "position": { + "x": -136.86391109269857, + "y": -156.76957062917046 + }, + "selected": false, + "data": { + "label": "Computer Science", + "style": { + "fontSize": 28, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "9nxw2PEl-_eQPW0FHNPq2" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -136.86391109269857, + "y": -156.76957062917046 + }, + "focusable": true, + "selectable": true + }, + { + "width": 20, + "height": 64, + "id": "LEijbLyxg4RyutKEM2Y5g", + "type": "vertical", + "position": { + "x": -9.363911092698572, + "y": -232.55566976101449 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#0A33FF" + }, + "oldId": "xD07fJ1NmNeAarVCEfubU" + }, + "zIndex": 999, + "positionAbsolute": { + "x": -9.363911092698572, + "y": -232.55566976101449 + }, + "dragging": false, + "focusable": true, + "style": { + "width": 20, + "height": 64 + }, + "resizing": true, + "selectable": true + }, + { + "id": "yHmHXymPNWwu8p1vvqD3o", + "type": "paragraph", + "position": { + "x": 179.8414717224867, + "y": -232.76957062917046 + }, + "selected": false, + "data": { + "label": "Find the detailed version of this roadmap along with other similar roadmaps", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "left", + "borderColor": "#000000", + "backgroundColor": "#FFFFFf" + } + }, + "zIndex": 999, + "width": 354, + "height": 143, + "positionAbsolute": { + "x": 179.8414717224867, + "y": -232.76957062917046 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 354, + "height": 143 + }, + "resizing": false + }, + { + "id": "R_Fs6rdl2XtQ9aLOubMqL", + "type": "button", + "position": { + "x": 193.04484613528683, + "y": -150.78400721142515 + }, + "selected": false, + "data": { + "label": "roadmap.sh", + "href": "https://roadmap.sh", + "color": "#ffffff", + "backgroundColor": "#4136D6", + "style": { + "fontSize": 17 + }, + "oldId": "2zqZkyVgigifcRS1H7F_b" + }, + "zIndex": 999, + "width": 329, + "height": 49, + "dragging": false, + "style": { + "width": 329, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": 193.04484613528683, + "y": -150.78400721142515 + }, + "selectable": true, + "focusable": true + }, + { + "id": "xwpc_KxehAruFM0pCQnie", + "type": "vertical", + "position": { + "x": 25.693201050423, + "y": 3694.1968250407026 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#4136D4" + }, + "oldId": "Ju00mr0KLGN2BV6yEQGPt" + }, + "zIndex": 999, + "width": 20, + "height": 104, + "positionAbsolute": { + "x": 25.693201050423, + "y": 3694.1968250407026 + }, + "dragging": false, + "style": { + "width": 20, + "height": 104 + }, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "width": 426, + "height": 119, + "id": "GV_zWF6rSWg5bqgiXhOEf", + "type": "paragraph", + "position": { + "x": -177.30679894957694, + "y": 3604.680859760275 + }, + "selected": false, + "data": { + "label": "Have a look at the following related roadmaps", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "borderColor": "#000000", + "backgroundColor": "#ffffff" + }, + "oldId": "sVXZrBCsiSzWBBYWTm-nQ" + }, + "zIndex": 999, + "positionAbsolute": { + "x": -177.30679894957694, + "y": 3604.680859760275 + }, + "dragging": false, + "style": { + "width": 426, + "height": 119 + }, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "width": 134, + "height": 49, + "id": "ZSrQoNGKiR484uALMWO9F", + "type": "button", + "position": { + "x": 104.04797240768244, + "y": 3662.3701416719264 + }, + "selected": false, + "data": { + "label": "API Design", + "href": "https://roadmap.sh/api-design", + "color": "#FFFFFf", + "backgroundColor": "#4136D4", + "style": { + "fontSize": 17 + }, + "borderColor": "#4136D4", + "oldId": "dlGf3ZdFXYx0Z6Viu2x-l" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": 104.04797240768244, + "y": 3662.3701416719264 + }, + "style": { + "width": 134, + "height": 49 + }, + "focusable": true, + "resizing": false, + "selectable": true + }, + { + "width": 266, + "height": 49, + "id": "P5IZjP0g1_fnvHy3YTR4q", + "type": "button", + "position": { + "x": -166.95968546864998, + "y": 3662.3701416719264 + }, + "selected": false, + "data": { + "label": "Data Structures & Algorithms", + "href": "https://roadmap.sh/datastructures-and-algorithms", + "color": "#FFFFFf", + "backgroundColor": "#4136D4", + "style": { + "fontSize": 17 + }, + "borderColor": "#4136D4", + "oldId": "dlGf3ZdFXYx0Z6Viu2x-l" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -166.95968546864998, + "y": 3662.3701416719264 + }, + "style": {}, + "focusable": true, + "resizing": false, + "selectable": true + }, + { + "id": "FFDNXuerzZhDzDuGnr06q", + "type": "linksgroup", + "position": { + "x": -520.8639110926986, + "y": -53.59494284475129 + }, + "selected": false, + "data": { + "label": "Other Resources", + "links": [ + { + "id": "KzjCrwLuhTpRzXxuxXoN6", + "label": "Coding Interview University", + "url": "https://github.com/jwasham/coding-interview-university" + } + ], + "oldId": "LOTsf9hmAVwt06ZulhoIi" + }, + "zIndex": 999, + "width": 344, + "height": 97, + "positionAbsolute": { + "x": -520.8639110926986, + "y": -53.59494284475129 + }, + "dragging": false, + "focusable": true, + "style": { + "width": 344, + "height": 97 + }, + "resizing": false, + "selectable": true + }, + { + "id": "LOTsf9hmAVwt06ZulhoIi", + "type": "linksgroup", + "position": { + "x": -519.0253254557053, + "y": -243.55566976101449 + }, + "selected": false, + "data": { + "label": "Related Roadmaps", + "links": [ + { + "id": "KzjCrwLuhTpRzXxuxXoN6", + "label": "Data Structures and Algorithms", + "url": "https://roadmap.sh/datastructures-and-algorithms" + }, + { + "id": "Wc3X1CTTaeJYznoU-VFTt", + "label": "System Design Roadmap", + "url": "https://roadmap.sh/system-design" + }, + { + "id": "fCoX6FYDUKZe2xta2Aw24", + "label": "Software Design & Architecture", + "url": "https://roadmap.sh/software-design-architecture" + } + ] + }, + "zIndex": 999, + "width": 344, + "height": 161, + "positionAbsolute": { + "x": -519.0253254557053, + "y": -243.55566976101449 + }, + "dragging": false, + "focusable": true, + "style": { + "width": 344, + "height": 161 + }, + "resizing": false, + "selectable": true + }, + { + "id": "tU4Umtnfu01t9gLlnlK6b", + "type": "topic", + "position": { + "x": -128.36391109269857, + "y": 56.94433023898546 + }, + "selected": false, + "data": { + "label": "Pick a Language", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 258, + "height": 49, + "style": { + "width": 258, + "height": 49 + }, + "positionAbsolute": { + "x": -128.36391109269857, + "y": 56.94433023898546 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "RlKZzs44biQPgxD0tK1qx", + "type": "subtopic", + "position": { + "x": 285.6360889073014, + "y": -22.555669761014542 + }, + "selected": false, + "data": { + "label": "Python", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 97, + "height": 49, + "style": { + "width": 97 + }, + "positionAbsolute": { + "x": 285.6360889073014, + "y": -22.555669761014542 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "mWW88VnkqWgDz02qw5zU-", + "type": "subtopic", + "position": { + "x": 385.6360889073014, + "y": -22.555669761014542 + }, + "selected": false, + "data": { + "label": "Go", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 102, + "height": 49, + "style": { + "width": 102, + "height": 49 + }, + "positionAbsolute": { + "x": 385.6360889073014, + "y": -22.555669761014542 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "jHKCLfLml8oZyj4829gx0", + "type": "subtopic", + "position": { + "x": 285.6360889073014, + "y": 29.944330238985458 + }, + "selected": false, + "data": { + "label": "C#", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 97, + "height": 49, + "style": { + "width": 97 + }, + "positionAbsolute": { + "x": 285.6360889073014, + "y": 29.944330238985458 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "1bDjg-KBDKRmE6f1MWY8l", + "type": "subtopic", + "position": { + "x": 285.6360889073014, + "y": 134.94433023898546 + }, + "selected": false, + "data": { + "label": "Rust", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 201, + "height": 49, + "style": { + "width": 201, + "height": 49 + }, + "positionAbsolute": { + "x": 285.6360889073014, + "y": 134.94433023898546 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "1kQJs-3Aw8Bi7d_Xh67zS", + "type": "subtopic", + "position": { + "x": 385.6360889073014, + "y": 29.944330238985458 + }, + "selected": false, + "data": { + "label": "C++", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 102, + "height": 49, + "style": { + "width": 102, + "height": 49 + }, + "positionAbsolute": { + "x": 385.6360889073014, + "y": 29.944330238985458 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "n4IsklfYJXFIyF1rGWuEa", + "type": "subtopic", + "position": { + "x": 285.6360889073014, + "y": 82.44433023898546 + }, + "selected": false, + "data": { + "label": "C", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 97, + "height": 49, + "style": { + "width": 97 + }, + "positionAbsolute": { + "x": 285.6360889073014, + "y": 82.44433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "1lQSUFrrIGq19nUnM92-I", + "type": "subtopic", + "position": { + "x": 385.6360889073014, + "y": 82.44433023898546 + }, + "selected": false, + "data": { + "label": "Java", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 102, + "height": 49, + "style": { + "width": 102, + "height": 49 + }, + "positionAbsolute": { + "x": 385.6360889073014, + "y": 82.44433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "NM7q5REW1sJgMhxJhPpLT", + "type": "topic", + "position": { + "x": -128.36391109269857, + "y": 200.90713538179 + }, + "selected": false, + "data": { + "label": "Data Structures", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "UpBrpmrUwYUB9eesNxCq5" + }, + "zIndex": 999, + "width": 258, + "height": 49, + "style": { + "width": 258, + "height": 49 + }, + "positionAbsolute": { + "x": -128.36391109269857, + "y": 200.90713538179 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "gr8BK6vq4AVwp_aUozZmf", + "type": "subtopic", + "position": { + "x": -379.3639110926986, + "y": 147.90713538179 + }, + "selected": false, + "data": { + "label": "Linked List", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 130, + "height": 49, + "style": { + "width": 130, + "height": 49 + }, + "positionAbsolute": { + "x": -379.3639110926986, + "y": 147.90713538179 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "hJB5gO9tosRlC4UmdSNzl", + "type": "subtopic", + "position": { + "x": -477.3639110926986, + "y": 200.90713538179 + }, + "selected": false, + "data": { + "label": "Stack", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 95, + "height": 49, + "style": { + "width": 95, + "height": 49 + }, + "positionAbsolute": { + "x": -477.3639110926986, + "y": 200.90713538179 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "JI990pDX2jjNe6IH_Y_t0", + "type": "subtopic", + "position": { + "x": -378.3639110926986, + "y": 200.90713538179 + }, + "selected": false, + "data": { + "label": "Queue", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 130, + "height": 49, + "style": { + "width": 130, + "height": 49 + }, + "positionAbsolute": { + "x": -378.3639110926986, + "y": 200.90713538179 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "G2dN2FO0SN_I-5AhO_EUk", + "type": "subtopic", + "position": { + "x": -378.3639110926986, + "y": 254.90713538179 + }, + "selected": false, + "data": { + "label": "Hash Table", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 131, + "height": 49, + "style": { + "width": 131, + "height": 49 + }, + "positionAbsolute": { + "x": -378.3639110926986, + "y": 254.90713538179 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "TwW6SO2IXqkxJXVjLzdwU", + "type": "subtopic", + "position": { + "x": -477.8639110926986, + "y": 147.90713538179 + }, + "selected": false, + "data": { + "label": "Array", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 95, + "height": 49, + "style": { + "width": 95, + "height": 49 + }, + "positionAbsolute": { + "x": -477.8639110926986, + "y": 147.90713538179 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "_eWqiWUmOj0zUo_Ix3j1O", + "type": "subtopic", + "position": { + "x": -477.8639110926986, + "y": 253.94433023898546 + }, + "selected": false, + "data": { + "label": "Tree", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "c" + } + }, + "zIndex": 999, + "width": 95, + "height": 49, + "style": { + "width": 95, + "height": 49 + }, + "positionAbsolute": { + "x": -477.8639110926986, + "y": 253.94433023898546 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "G9dnegZ6zNvxrCZ3O_b_z", + "type": "subtopic", + "position": { + "x": -474.8639110926986, + "y": 334.44433023898546 + }, + "selected": false, + "data": { + "label": "Binary Tree", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 226, + "height": 49, + "style": { + "width": 226, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -474.8639110926986, + "y": 334.44433023898546 + }, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "et7l85gnxjvzD2tDyHT_T", + "type": "subtopic", + "position": { + "x": -474.8639110926986, + "y": 387.44433023898546 + }, + "selected": false, + "data": { + "label": "Binary Search Tree", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 226, + "height": 49, + "style": { + "width": 226, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -474.8639110926986, + "y": 387.44433023898546 + }, + "selectable": true, + "focusable": true + }, + { + "id": "Q8ZJNeTbc22Q08Mra-McY", + "type": "subtopic", + "position": { + "x": -474.8639110926986, + "y": 440.44433023898546 + }, + "selected": false, + "data": { + "label": "Full Binary Tree", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 226, + "height": 49, + "style": { + "width": 226, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -474.8639110926986, + "y": 440.44433023898546 + }, + "selectable": true, + "focusable": true + }, + { + "id": "Jx1WWCjm8jkfAGtHv15n1", + "type": "subtopic", + "position": { + "x": -474.8639110926986, + "y": 493.44433023898546 + }, + "selected": false, + "data": { + "label": "Complete Binary Tree", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 226, + "height": 49, + "style": { + "width": 226, + "height": 49 + }, + "dragging": false, + "resizing": false, + "positionAbsolute": { + "x": -474.8639110926986, + "y": 493.44433023898546 + }, + "selectable": true, + "focusable": true + }, + { + "id": "ZaWGLvZyu4sIPn-zwVISN", + "type": "subtopic", + "position": { + "x": -474.8639110926986, + "y": 546.4443302389855 + }, + "selected": false, + "data": { + "label": " Balanced Tree", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 226, + "height": 49, + "style": { + "width": 226, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -474.8639110926986, + "y": 546.4443302389855 + }, + "selectable": true, + "focusable": true + }, + { + "id": "w4sxmZR1BjX6wlrZmuOlf", + "type": "subtopic", + "position": { + "x": -474.8639110926986, + "y": 599.4443302389855 + }, + "selected": false, + "data": { + "label": "Unbalanced Tree", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 226, + "height": 49, + "style": { + "width": 226, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -474.8639110926986, + "y": 599.4443302389855 + }, + "selectable": true, + "focusable": true + }, + { + "id": "vQm046o6ozcvLoqg9L6eL", + "type": "subtopic", + "position": { + "x": 287.1360889073014, + "y": 201.40713538179 + }, + "selected": false, + "data": { + "label": "Graph", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "c" + } + }, + "zIndex": 999, + "width": 95, + "height": 49, + "style": { + "width": 95, + "height": 49 + }, + "positionAbsolute": { + "x": 287.1360889073014, + "y": 201.40713538179 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "6Jy8SXHuYA08h9iLjKFWR", + "type": "subtopic", + "position": { + "x": 286.1360889073014, + "y": 280.90713538179 + }, + "selected": false, + "data": { + "label": "Directed Graph", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 183, + "height": 49, + "style": { + "width": 183, + "height": 49 + }, + "positionAbsolute": { + "x": 286.1360889073014, + "y": 280.90713538179 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "QGx8it2N_85PiPVjpTGK_", + "type": "subtopic", + "position": { + "x": 286.1360889073014, + "y": 333.90713538179 + }, + "selected": false, + "data": { + "label": "Undirected Graph", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 183, + "height": 49, + "style": { + "width": 183, + "height": 49 + }, + "positionAbsolute": { + "x": 286.1360889073014, + "y": 333.90713538179 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "L4xtWOdqGUf4SbJkoOsNM", + "type": "subtopic", + "position": { + "x": 286.1360889073014, + "y": 386.90713538179 + }, + "selected": false, + "data": { + "label": "Spanning Tree", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 183, + "height": 49, + "style": { + "width": 183, + "height": 49 + }, + "positionAbsolute": { + "x": 286.1360889073014, + "y": 386.90713538179 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Y12FonomjizN8-jM8AyCi", + "type": "label", + "position": { + "x": 309.1360889073014, + "y": 440.94433023898546 + }, + "selected": false, + "data": { + "label": "Representation", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 135, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": 309.1360889073014, + "y": 440.94433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "HZ1kk0TQ13FLC9t13BZl5", + "type": "subtopic", + "position": { + "x": 285.1360889073014, + "y": 530.9443302389855 + }, + "selected": false, + "data": { + "label": "Adjacency Matrix", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 183, + "height": 49, + "style": { + "width": 183, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 285.1360889073014, + "y": 530.9443302389855 + }, + "selectable": true, + "focusable": true + }, + { + "id": "rTnKJcPniUtqvfOyC88N0", + "type": "subtopic", + "position": { + "x": 285.1360889073014, + "y": 477.94433023898546 + }, + "selected": false, + "data": { + "label": "Adjacency List", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 183, + "height": 49, + "style": { + "width": 183, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 285.1360889073014, + "y": 477.94433023898546 + }, + "selectable": true, + "focusable": true + }, + { + "id": "pw3ZCC3HKU7D5SQwte4vE", + "type": "subtopic", + "position": { + "x": 384.2680496244592, + "y": 201.40713538179 + }, + "selected": false, + "data": { + "label": "Heap", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 95, + "height": 49, + "style": { + "width": 95, + "height": 49 + }, + "positionAbsolute": { + "x": 384.2680496244592, + "y": 201.40713538179 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "UpBrpmrUwYUB9eesNxCq5", + "type": "topic", + "position": { + "x": -128.36391109269857, + "y": 688.892308338741 + }, + "selected": false, + "data": { + "label": "Asymptotic Notation", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 258, + "height": 49, + "style": { + "width": 258, + "height": 49 + }, + "positionAbsolute": { + "x": -128.36391109269857, + "y": 688.892308338741 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "c-NrTtJuNihbHzyPEOKTW", + "type": "subtopic", + "position": { + "x": -162.23550208669644, + "y": 495.47581692833467 + }, + "selected": false, + "data": { + "label": "Big O", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 132, + "height": 49, + "style": { + "width": 132 + }, + "positionAbsolute": { + "x": -162.23550208669644, + "y": 495.47581692833467 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "ThLpVZQIJ4diY5m0dik8m", + "type": "subtopic", + "position": { + "x": -162.23550208669644, + "y": 548.4758169283347 + }, + "selected": false, + "data": { + "label": "Big-Theta", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 132, + "height": 49, + "style": { + "width": 132 + }, + "positionAbsolute": { + "x": -162.23550208669644, + "y": 548.4758169283347 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "X33735aeAVSlJ6yv9GS-h", + "type": "subtopic", + "position": { + "x": -162.23550208669644, + "y": 601.4758169283347 + }, + "selected": false, + "data": { + "label": "Big Omega", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 132, + "height": 49, + "style": { + "width": 132 + }, + "positionAbsolute": { + "x": -162.23550208669644, + "y": 601.4758169283347 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "AorTduRt5FU6ZxuZo6H6p", + "type": "label", + "position": { + "x": 39.87782517276179, + "y": 292.84403101269277 + }, + "selected": false, + "data": { + "label": "Common Runtimes", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 163, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": 39.87782517276179, + "y": 292.84403101269277 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "3F_QBv_sU39ehOxpurF88", + "type": "subtopic", + "position": { + "x": 39.87782517276179, + "y": 335.298079058721 + }, + "selected": false, + "data": { + "label": "Constant", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 163, + "height": 49, + "style": { + "width": 163, + "height": 49 + }, + "positionAbsolute": { + "x": 39.87782517276179, + "y": 335.298079058721 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "nnlMNkQn1HU4U9yPbV9kQ", + "type": "subtopic", + "position": { + "x": 39.87782517276179, + "y": 388.298079058721 + }, + "selected": false, + "data": { + "label": "Logarithmic", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 163, + "height": 49, + "style": { + "width": 163, + "height": 49 + }, + "positionAbsolute": { + "x": 39.87782517276179, + "y": 388.298079058721 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "jymhjv8GiFALQpox6aZeu", + "type": "subtopic", + "position": { + "x": 39.87782517276179, + "y": 441.298079058721 + }, + "selected": false, + "data": { + "label": "Linear", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 163, + "height": 49, + "style": { + "width": 163, + "height": 49 + }, + "positionAbsolute": { + "x": 39.87782517276179, + "y": 441.298079058721 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "sVFvpsAO1_ZH9aliEj9aF", + "type": "subtopic", + "position": { + "x": 39.87782517276179, + "y": 494.298079058721 + }, + "selected": false, + "data": { + "label": "Polynomial", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 163, + "height": 49, + "style": { + "width": 163, + "height": 49 + }, + "positionAbsolute": { + "x": 39.87782517276179, + "y": 494.298079058721 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "5mMLr6tWbiSZuox1lx0_B", + "type": "subtopic", + "position": { + "x": 39.87782517276179, + "y": 547.298079058721 + }, + "selected": false, + "data": { + "label": "Exponential", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 163, + "height": 49, + "style": { + "width": 163, + "height": 49 + }, + "positionAbsolute": { + "x": 39.87782517276179, + "y": 547.298079058721 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "m0umGQNdvg95UiNpQZsQN", + "type": "subtopic", + "position": { + "x": 39.87782517276179, + "y": 600.298079058721 + }, + "selected": false, + "data": { + "label": "Factorial", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 163, + "height": 49, + "style": { + "width": 163, + "height": 49 + }, + "positionAbsolute": { + "x": 39.87782517276179, + "y": 600.298079058721 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "7a6-AnBI-3tAU1dkOvPkx", + "type": "topic", + "position": { + "x": 315.1360889073014, + "y": 688.892308338741 + }, + "selected": false, + "data": { + "label": "Common Algorithms", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "vxvWZhnYGvF_XmpgYZaF0" + }, + "zIndex": 999, + "width": 224, + "height": 49, + "style": { + "width": 224, + "height": 49 + }, + "positionAbsolute": { + "x": 315.1360889073014, + "y": 688.892308338741 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "3YVSwyAWpOFGRNB2ORlTP", + "type": "label", + "position": { + "x": 51.285006211484074, + "y": 791.51024555143 + }, + "selected": false, + "data": { + "label": "Recursion", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + }, + "oldId": "rGPwumQxXvHokyYU2vXxP" + }, + "zIndex": 999, + "width": 94, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": 51.285006211484074, + "y": 791.51024555143 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "0_qNhprnXU3i8koW3XTdD", + "type": "subtopic", + "position": { + "x": 2.285006211484074, + "y": 829.6450861060737 + }, + "selected": false, + "data": { + "label": "Tail Recursion", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "hna0HLu0l4NTNNpyGqlW5" + }, + "zIndex": 999, + "width": 192, + "height": 49, + "style": { + "width": 192, + "height": 49 + }, + "positionAbsolute": { + "x": 2.285006211484074, + "y": 829.6450861060737 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "iLEOuQgUgU5Jc38iXDpp5", + "type": "subtopic", + "position": { + "x": 1.8363921197505988, + "y": 882.6450861060737 + }, + "selected": false, + "data": { + "label": "Non-Tail Recursion", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 192, + "height": 49, + "style": { + "width": 192, + "height": 49 + }, + "positionAbsolute": { + "x": 1.8363921197505988, + "y": 882.6450861060737 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "6NOTA9CTNjvXUYbvcEmV2", + "type": "label", + "position": { + "x": 77.14403325322604, + "y": 1118.5168968034543 + }, + "selected": false, + "data": { + "label": "Caches", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + }, + "oldId": "6NJT_BEA5GZlrLYKKIeZH" + }, + "zIndex": 999, + "width": 80, + "height": 36, + "style": { + "width": 80, + "height": 36 + }, + "positionAbsolute": { + "x": 77.14403325322604, + "y": 1118.5168968034543 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "cEsboPT8nLvo0Zt0_oBq6", + "type": "subtopic", + "position": { + "x": 40.64403325322604, + "y": 1207.5168968034543 + }, + "selected": false, + "data": { + "label": "LRU Cache", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "n11ujPI3of-52l2KW2CDQ" + }, + "zIndex": 999, + "width": 153, + "height": 49, + "style": { + "width": 153 + }, + "positionAbsolute": { + "x": 40.64403325322604, + "y": 1207.5168968034543 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "hna0HLu0l4NTNNpyGqlW5", + "type": "subtopic", + "position": { + "x": 40.64403325322604, + "y": 1154.5168968034543 + }, + "selected": false, + "data": { + "label": "MFU Cache", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 153, + "height": 49, + "style": { + "width": 153 + }, + "positionAbsolute": { + "x": 40.64403325322604, + "y": 1154.5168968034543 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "rGPwumQxXvHokyYU2vXxP", + "type": "label", + "position": { + "x": 50.8363921197506, + "y": 957.7179002282107 + }, + "selected": false, + "data": { + "label": "Searching", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 94, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": 50.8363921197506, + "y": 957.7179002282107 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "8kTg4O9MrTHRUrp6U-ctA", + "type": "subtopic", + "position": { + "x": 1.8363921197505988, + "y": 996.51024555143 + }, + "selected": false, + "data": { + "label": "Binary Search", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "XwyqBK9rgP1MMcJrdIzm5" + }, + "zIndex": 999, + "width": 192, + "height": 49, + "style": { + "width": 192, + "height": 49 + }, + "positionAbsolute": { + "x": 1.8363921197505988, + "y": 996.51024555143 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "XwyqBK9rgP1MMcJrdIzm5", + "type": "subtopic", + "position": { + "x": 1.8363921197505988, + "y": 1049.51024555143 + }, + "selected": false, + "data": { + "label": "Linear Search", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "hna0HLu0l4NTNNpyGqlW5" + }, + "zIndex": 999, + "width": 192, + "height": 49, + "style": { + "width": 192, + "height": 49 + }, + "positionAbsolute": { + "x": 1.8363921197505988, + "y": 1049.51024555143 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "6NJT_BEA5GZlrLYKKIeZH", + "type": "label", + "position": { + "x": 280.73997804371857, + "y": 790.5630912756469 + }, + "selected": false, + "data": { + "label": "Sorting", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + }, + "oldId": "rGPwumQxXvHokyYU2vXxP" + }, + "zIndex": 999, + "width": 71, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": 280.73997804371857, + "y": 790.5630912756469 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "4wGBYFZpcdTt97WTbSazx", + "type": "subtopic", + "position": { + "x": 217.23997804371857, + "y": 826.5630912756469 + }, + "selected": false, + "data": { + "label": "Bubble Sort", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 198, + "height": 49, + "style": { + "width": 198, + "height": 49 + }, + "positionAbsolute": { + "x": 217.23997804371857, + "y": 826.5630912756469 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "rOsHFXQm5jNz0RyZQ5ZGs", + "type": "subtopic", + "position": { + "x": 217.23997804371857, + "y": 879.5630912756469 + }, + "selected": false, + "data": { + "label": "Selection Sort", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 198, + "height": 49, + "style": { + "width": 198, + "height": 49 + }, + "positionAbsolute": { + "x": 217.23997804371857, + "y": 879.5630912756469 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "ujDCW6zZE8dV_fpNf-oIl", + "type": "subtopic", + "position": { + "x": 217.23997804371857, + "y": 932.5630912756467 + }, + "selected": false, + "data": { + "label": "Insertion Sort", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 198, + "height": 49, + "style": { + "width": 198, + "height": 49 + }, + "positionAbsolute": { + "x": 217.23997804371857, + "y": 932.5630912756467 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "CovrRsBY-sYW_xSegcN6N", + "type": "subtopic", + "position": { + "x": 217.23997804371857, + "y": 985.5630912756467 + }, + "selected": false, + "data": { + "label": "Heap Sort", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 198, + "height": 49, + "style": { + "width": 198, + "height": 49 + }, + "positionAbsolute": { + "x": 217.23997804371857, + "y": 985.5630912756467 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "be0Q8GW9ZX1JbPrBvbMji", + "type": "subtopic", + "position": { + "x": 217.23997804371857, + "y": 1038.5630912756467 + }, + "selected": false, + "data": { + "label": "Quick Sort", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 198, + "height": 49, + "style": { + "width": 198, + "height": 49 + }, + "positionAbsolute": { + "x": 217.23997804371857, + "y": 1038.5630912756467 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "Bh-whDbcCjl3m6mRm9w02", + "type": "subtopic", + "position": { + "x": 217.23997804371857, + "y": 1091.5630912756467 + }, + "selected": false, + "data": { + "label": "Merge Sort", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 198, + "height": 49, + "style": { + "width": 198, + "height": 49 + }, + "positionAbsolute": { + "x": 217.23997804371857, + "y": 1091.5630912756467 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "c-de-kUN0nzCH3rZJ9wpy", + "type": "label", + "position": { + "x": -156.17472655616905, + "y": 793.7862956363665 + }, + "selected": false, + "data": { + "label": "Tree", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + }, + "oldId": "8H_2ODi3qM_Hv80VH0hGE" + }, + "zIndex": 999, + "width": 51, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": -156.17472655616905, + "y": 793.7862956363665 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "psTN5N66xoFHFopgd5faW", + "type": "subtopic", + "position": { + "x": -239.67472655616905, + "y": 835.6811027811971 + }, + "selected": false, + "data": { + "label": "Pre-Order Traversal", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 218, + "height": 49, + "style": { + "width": 218, + "height": 49 + }, + "positionAbsolute": { + "x": -239.67472655616905, + "y": 835.6811027811971 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "KTrgf14Q6rg2f0v4dqq2s", + "type": "subtopic", + "position": { + "x": -239.67472655616905, + "y": 888.1811027811971 + }, + "selected": false, + "data": { + "label": "In-Order Traversal", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 218, + "height": 49, + "style": { + "width": 218, + "height": 49 + }, + "positionAbsolute": { + "x": -239.67472655616905, + "y": 888.1811027811971 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "4_oGXwjzSY5cX9n7L4iAA", + "type": "subtopic", + "position": { + "x": -239.67472655616905, + "y": 940.6811027811971 + }, + "selected": false, + "data": { + "label": "Post Order Traversal", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 218, + "height": 49, + "style": { + "width": 218, + "height": 49 + }, + "positionAbsolute": { + "x": -239.67472655616905, + "y": 940.6811027811971 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "Ke_ch4fnuKIiGAXUM_LPP", + "type": "subtopic", + "position": { + "x": -239.67472655616905, + "y": 993.1811027811971 + }, + "selected": false, + "data": { + "label": "Breadth First Search", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 218, + "height": 49, + "style": { + "width": 218, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": -239.67472655616905, + "y": 993.1811027811971 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "chzP5_t2gMi6MstxEzCi5", + "type": "subtopic", + "position": { + "x": -239.67472655616905, + "y": 1045.681102781197 + }, + "selected": false, + "data": { + "label": "Depth First Search", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 218, + "height": 49, + "style": { + "width": 218, + "height": 49 + }, + "positionAbsolute": { + "x": -239.67472655616905, + "y": 1045.681102781197 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "snRTZUq3QMJVpdJLemAqr", + "type": "label", + "position": { + "x": -416.0784533997364, + "y": 793.7862956363665 + }, + "selected": false, + "data": { + "label": "Graphs", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 72, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": -416.0784533997364, + "y": 793.7862956363665 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "vcV6TEM_PqXxtThdfMKGw", + "type": "subtopic", + "position": { + "x": -500.5784533997364, + "y": 834.1625053525993 + }, + "selected": false, + "data": { + "label": "Breadth First Search", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 241, + "height": 49, + "style": { + "width": 241, + "height": 49 + }, + "positionAbsolute": { + "x": -500.5784533997364, + "y": 834.1625053525993 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Yf5gOIe7oiL19MjEVcpdw", + "type": "subtopic", + "position": { + "x": -500.5784533997364, + "y": 887.1625053525993 + }, + "selected": false, + "data": { + "label": "Depth First Search", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 241, + "height": 49, + "style": { + "width": 241, + "height": 49 + }, + "positionAbsolute": { + "x": -500.5784533997364, + "y": 887.1625053525993 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "eY4nK2lPYsrR-a_8y2sao", + "type": "subtopic", + "position": { + "x": -500.5784533997364, + "y": 940.1625053525993 + }, + "selected": false, + "data": { + "label": "Bellman Ford's Algorithm", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 241, + "height": 49, + "style": { + "width": 241, + "height": 49 + }, + "positionAbsolute": { + "x": -500.5784533997364, + "y": 940.1625053525993 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "oJstm-8c-4seWbIWcNgDv", + "type": "subtopic", + "position": { + "x": -500.5784533997364, + "y": 993.1625053525993 + }, + "selected": false, + "data": { + "label": "Dijkstra's Algorithm", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 241, + "height": 49, + "style": { + "width": 241, + "height": 49 + }, + "positionAbsolute": { + "x": -500.5784533997364, + "y": 993.1625053525993 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Yrk2PLUa-_FAPlhCkMl3e", + "type": "subtopic", + "position": { + "x": -500.5784533997364, + "y": 1046.1625053525993 + }, + "selected": false, + "data": { + "label": "A* Algorithm", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 241, + "height": 49, + "style": { + "width": 241, + "height": 49 + }, + "positionAbsolute": { + "x": -500.5784533997364, + "y": 1046.1625053525993 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "6JcfglgWW6LmaLLZy1Qqc", + "type": "label", + "position": { + "x": -177.11437987820793, + "y": 1117.5325761366144 + }, + "selected": false, + "data": { + "label": "Back Tracking", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 125, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": -177.11437987820793, + "y": 1117.5325761366144 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "aBjBHpq_OajgQjxdCobXD", + "type": "subtopic", + "position": { + "x": -235.9251953416784, + "y": 1158.8950420048757 + }, + "selected": false, + "data": { + "label": "Finding Hamiltonian Paths", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 252, + "height": 49, + "style": { + "width": 252, + "height": 49 + }, + "positionAbsolute": { + "x": -235.9251953416784, + "y": 1158.8950420048757 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "HlAmTY1udqDT2mTfBU9P-", + "type": "subtopic", + "position": { + "x": -235.9251953416784, + "y": 1211.8950420048757 + }, + "selected": false, + "data": { + "label": "Solving N Queen Problem", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 252, + "height": 49, + "style": { + "width": 252, + "height": 49 + }, + "positionAbsolute": { + "x": -235.9251953416784, + "y": 1211.8950420048757 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "nODFT-i2YsxUVsgwWkIWn", + "type": "subtopic", + "position": { + "x": -235.9251953416784, + "y": 1264.8950420048757 + }, + "selected": false, + "data": { + "label": "Maze Solving Problem", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 252, + "height": 49, + "style": { + "width": 252, + "height": 49 + }, + "positionAbsolute": { + "x": -235.9251953416784, + "y": 1264.8950420048757 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "NcKW_3vJWL_rVlDBB_Qjs", + "type": "subtopic", + "position": { + "x": -235.9251953416784, + "y": 1317.8950420048757 + }, + "selected": false, + "data": { + "label": "The Knight's Tour Problem", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 252, + "height": 49, + "style": { + "width": 252, + "height": 49 + }, + "positionAbsolute": { + "x": -235.9251953416784, + "y": 1317.8950420048757 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "bxMi8XrUUxcnmRquiLfz4", + "type": "label", + "position": { + "x": -458.5838696000311, + "y": 1117.5325761366144 + }, + "selected": false, + "data": { + "label": "Greedy Algorithms", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 156, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": -458.5838696000311, + "y": 1117.5325761366144 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "l3X9UrEYTWs5kBXI1NNCf", + "type": "subtopic", + "position": { + "x": -504.0838696000311, + "y": 1158.5325761366144 + }, + "selected": false, + "data": { + "label": "Dijkstra's Algorithm", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 247, + "height": 49, + "style": { + "width": 247, + "height": 49 + }, + "positionAbsolute": { + "x": -504.0838696000311, + "y": 1158.5325761366144 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "QrcijPiVT3bgqfkF-6ssi", + "type": "subtopic", + "position": { + "x": -504.0838696000311, + "y": 1211.5325761366144 + }, + "selected": false, + "data": { + "label": "Huffman Coding", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 247, + "height": 49, + "style": { + "width": 247, + "height": 49 + }, + "positionAbsolute": { + "x": -504.0838696000311, + "y": 1211.5325761366144 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Wqhg7E-lOz1oNcRXjUej8", + "type": "subtopic", + "position": { + "x": -504.0838696000311, + "y": 1264.5325761366144 + }, + "selected": false, + "data": { + "label": "Kruskal's Algorithm", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 247, + "height": 49, + "style": { + "width": 247, + "height": 49 + }, + "positionAbsolute": { + "x": -504.0838696000311, + "y": 1264.5325761366144 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Hqw2eGtgfbVggqXBnIOdI", + "type": "subtopic", + "position": { + "x": -504.0838696000311, + "y": 1317.5325761366144 + }, + "selected": false, + "data": { + "label": "Ford-Fulkerson Algorithm", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 247, + "height": 49, + "style": { + "width": 247, + "height": 49 + }, + "positionAbsolute": { + "x": -504.0838696000311, + "y": 1317.5325761366144 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "znpFIKwMJlepKJ8dH3kvC", + "type": "subtopic", + "position": { + "x": -504.0838696000311, + "y": 1370.5325761366144 + }, + "selected": false, + "data": { + "label": "Prim's Algorithm", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 247, + "height": 49, + "style": { + "width": 247, + "height": 49 + }, + "positionAbsolute": { + "x": -504.0838696000311, + "y": 1370.5325761366144 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "l5--4opvZoc_seVn__5R3", + "type": "subtopic", + "position": { + "x": -247.36391109269857, + "y": 1385.9997521969883 + }, + "selected": false, + "data": { + "label": "Rabin-Karp Algorithm", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" } - ] - }, - "attributes": { - "name": "New Wireframe 1", - "order": 1000000, - "parentID": null, - "notes": "" - }, - "branchID": "Master", - "resourceID": "1C20FF29-764D-4639-A4FE-13A9869FED74", - "mockupH": "4000", - "mockupW": "1280", - "measuredW": "1644", - "measuredH": "4171", - "version": "1.0" - }, - "groupOffset": { - "x": 0, - "y": 0 - }, - "dependencies": [], - "projectID": "file:///Users/kamrify/Desktop/New%20Roadmaps/Android%20Roadmap.bmpr" + }, + "zIndex": 999, + "width": 274, + "height": 49, + "style": { + "width": 274, + "height": 49 + }, + "positionAbsolute": { + "x": -247.36391109269857, + "y": 1385.9997521969883 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "n11ujPI3of-52l2KW2CDQ", + "type": "subtopic", + "position": { + "x": 40.64403325322604, + "y": 1260.5168968034543 + }, + "selected": false, + "data": { + "label": "LFU Cache", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "hna0HLu0l4NTNNpyGqlW5" + }, + "zIndex": 999, + "width": 153, + "height": 49, + "style": { + "width": 153, + "height": 49 + }, + "positionAbsolute": { + "x": 40.64403325322604, + "y": 1260.5168968034543 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "NUWk-7IXmMU-4TT-oS8fF", + "type": "topic", + "position": { + "x": 263.1360889073014, + "y": 1477.9314484491165 + }, + "selected": false, + "data": { + "label": "String Search & Manipulations", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "vjMqqFsTxSjaiYxmliwLi" + }, + "zIndex": 999, + "width": 277, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 263.1360889073014, + "y": 1477.9314484491165 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "L4M5yFRKKR2axKXGcIA7d", + "type": "subtopic", + "position": { + "x": 240.88329772953705, + "y": 1331.9000012782158 + }, + "selected": false, + "data": { + "label": "Search Pattern in Text", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 219, + "height": 49, + "style": { + "width": 219, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 240.88329772953705, + "y": 1331.9000012782158 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "Ld1TUNS8713coMNvwhNIJ", + "type": "subtopic", + "position": { + "x": 240.88329772953705, + "y": 1384.9000012782158 + }, + "selected": false, + "data": { + "label": "Suffix Arrays", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "L4M5yFRKKR2axKXGcIA7d" + }, + "zIndex": 999, + "width": 219, + "height": 49, + "style": { + "width": 219, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 240.88329772953705, + "y": 1384.9000012782158 + }, + "selectable": true, + "focusable": true + }, + { + "id": "g3b0kt1fCAjjYyS2WelWi", + "type": "subtopic", + "position": { + "x": 306.1360889073014, + "y": 1615.309467926659 + }, + "selected": false, + "data": { + "label": "Brute Force Search", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 196, + "height": 49, + "style": { + "width": 196, + "height": 49 + }, + "positionAbsolute": { + "x": 306.1360889073014, + "y": 1615.309467926659 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "8abFKMfaV9H8F38I0DcMT", + "type": "subtopic", + "position": { + "x": 306.1360889073014, + "y": 1721.309467926659 + }, + "selected": false, + "data": { + "label": "Knuth-Morris Pratt", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 196, + "height": 49, + "style": { + "width": 196, + "height": 49 + }, + "positionAbsolute": { + "x": 306.1360889073014, + "y": 1721.309467926659 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "p6qub32jcaGloHXUDUrlG", + "type": "subtopic", + "position": { + "x": 306.1360889073014, + "y": 1774.309467926659 + }, + "selected": false, + "data": { + "label": "Boyer-Moore", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 196, + "height": 49, + "style": { + "width": 196, + "height": 49 + }, + "positionAbsolute": { + "x": 306.1360889073014, + "y": 1774.309467926659 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "Km5LvcJpyntrW2iA8h5e3", + "type": "subtopic", + "position": { + "x": 306.1360889073014, + "y": 1668.309467926659 + }, + "selected": false, + "data": { + "label": "Robin-Karp", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 196, + "height": 49, + "style": { + "width": 196, + "height": 49 + }, + "positionAbsolute": { + "x": 306.1360889073014, + "y": 1668.309467926659 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "E9hf1ux1KKGHvvAShm67w", + "type": "subtopic", + "position": { + "x": 295.6360889073014, + "y": 1558.309467926659 + }, + "selected": false, + "data": { + "label": "Substring Search", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 215, + "height": 49, + "style": { + "width": 215, + "height": 49 + }, + "positionAbsolute": { + "x": 295.6360889073014, + "y": 1558.309467926659 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "-bawIWfrYuAxy8cP-AGFS", + "type": "topic", + "position": { + "x": 1.3363921197505988, + "y": 1477.9314484491165 + }, + "selected": false, + "data": { + "label": "Floating Point Math", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "vjMqqFsTxSjaiYxmliwLi" + }, + "zIndex": 999, + "width": 193, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 1.3363921197505988, + "y": 1477.9314484491165 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "vjMqqFsTxSjaiYxmliwLi", + "type": "topic", + "position": { + "x": -188.15883786432016, + "y": 1477.9314484491165 + }, + "selected": false, + "data": { + "label": "Endianess", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "7a6-AnBI-3tAU1dkOvPkx" + }, + "zIndex": 999, + "width": 124, + "height": 49, + "style": { + "width": 124, + "height": 49 + }, + "positionAbsolute": { + "x": -188.15883786432016, + "y": 1477.9314484491165 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "U8AgY6I-62mN5Ohg9MsG6", + "type": "subtopic", + "position": { + "x": -202.15883786432016, + "y": 1568.7167292202673 + }, + "selected": false, + "data": { + "label": "Big Endian", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 152, + "height": 44, + "style": { + "width": 152, + "height": 44 + }, + "positionAbsolute": { + "x": -202.15883786432016, + "y": 1568.7167292202673 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "rD_5n5bjiNMVC0cPhEVyG", + "type": "subtopic", + "position": { + "x": -202.15883786432016, + "y": 1616.7167292202673 + }, + "selected": false, + "data": { + "label": "Little Endian", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 152, + "height": 49, + "style": { + "width": 152, + "height": 49 + }, + "positionAbsolute": { + "x": -202.15883786432016, + "y": 1616.7167292202673 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "DMuMsEowpevTCALtziwTB", + "type": "topic", + "position": { + "x": -516.9617569699752, + "y": 1716.7547950762062 + }, + "selected": false, + "data": { + "label": "Common UML Diagrams", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "vjMqqFsTxSjaiYxmliwLi" + }, + "zIndex": 999, + "width": 234, + "height": 49, + "style": { + "width": 234, + "height": 49 + }, + "positionAbsolute": { + "x": -516.9617569699752, + "y": 1716.7547950762062 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "04hpfxI2x958tQI-0clsp", + "type": "subtopic", + "position": { + "x": -520.1366572430921, + "y": 1521.5117730746028 + }, + "selected": false, + "data": { + "label": "Unicode", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 110, + "height": 49, + "style": { + "width": 110 + }, + "dragging": false, + "positionAbsolute": { + "x": -520.1366572430921, + "y": 1521.5117730746028 + }, + "selectable": true, + "focusable": true + }, + { + "id": "hmwsNp60alS43kJg4A_Og", + "type": "subtopic", + "position": { + "x": -403.13665724309215, + "y": 1521.5117730746028 + }, + "selected": false, + "data": { + "label": "ASCII", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 110, + "height": 49, + "style": { + "width": 110 + }, + "dragging": false, + "positionAbsolute": { + "x": -403.13665724309215, + "y": 1521.5117730746028 + }, + "selectable": true, + "focusable": true + }, + { + "id": "DtG9EJonWi4_2oQ4fWOKY", + "type": "topic", + "position": { + "x": -516.9617569699752, + "y": 1609.4287440599703 + }, + "selected": false, + "data": { + "label": "Character Encodings", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "DMuMsEowpevTCALtziwTB" + }, + "zIndex": 999, + "width": 234, + "height": 49, + "style": { + "width": 234, + "height": 49 + }, + "positionAbsolute": { + "x": -516.9617569699752, + "y": 1609.4287440599703 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "FZ8znJSz8PvQlnEyRLXmQ", + "type": "subtopic", + "position": { + "x": -516.9617569699752, + "y": 1831.6857669308667 + }, + "selected": false, + "data": { + "label": "Class Diagrams", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 234, + "height": 49, + "style": { + "width": 234, + "height": 49 + }, + "positionAbsolute": { + "x": -516.9617569699752, + "y": 1831.6857669308667 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "dVvYbrcaxHLpvtX6HbS7g", + "type": "subtopic", + "position": { + "x": -516.9617569699752, + "y": 1884.6857669308667 + }, + "selected": false, + "data": { + "label": "Usecase Diagrams", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 234, + "height": 49, + "style": { + "width": 234, + "height": 49 + }, + "positionAbsolute": { + "x": -516.9617569699752, + "y": 1884.6857669308667 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "ptfRNiU0mC0Q5SLA_FWZu", + "type": "subtopic", + "position": { + "x": -516.9617569699752, + "y": 1937.6857669308667 + }, + "selected": false, + "data": { + "label": "Activity Diagrams", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 234, + "height": 49, + "style": { + "width": 234, + "height": 49 + }, + "positionAbsolute": { + "x": -516.9617569699752, + "y": 1937.6857669308667 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "X0CKM9LaJUrgI5gIdqFvU", + "type": "subtopic", + "position": { + "x": -516.9617569699752, + "y": 1990.6857669308667 + }, + "selected": false, + "data": { + "label": "Statemachine Diagrams", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 234, + "height": 49, + "style": { + "width": 234, + "height": 49 + }, + "positionAbsolute": { + "x": -516.9617569699752, + "y": 1990.6857669308667 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "gaUT5K2xS-WQMrIA0Bkb_", + "type": "subtopic", + "position": { + "x": -516.9617569699752, + "y": 2043.685766930867 + }, + "selected": false, + "data": { + "label": "Sequence Diagrams", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 234, + "height": 49, + "style": { + "width": 234, + "height": 49 + }, + "positionAbsolute": { + "x": -516.9617569699752, + "y": 2043.685766930867 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "-De1hU2ONGwhQmUpsyrCO", + "type": "topic", + "position": { + "x": -206.23550208669644, + "y": 1716.309467926659 + }, + "selected": false, + "data": { + "label": "Design Patterns", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "YLCmZvoLkhOk9wlgYW2Ms" + }, + "zIndex": 999, + "width": 176, + "height": 49, + "style": { + "width": 176, + "height": 49 + }, + "positionAbsolute": { + "x": -206.23550208669644, + "y": 1716.309467926659 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "iPN9mSyFwYZER5HSkj6oL", + "type": "subtopic", + "position": { + "x": 59.26377479007613, + "y": 1614.9760683904424 + }, + "selected": false, + "data": { + "label": "GoF Design Patterns", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 213, + "height": 44, + "style": { + "width": 213, + "height": 44 + }, + "positionAbsolute": { + "x": 59.26377479007613, + "y": 1614.9760683904424 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "BGhJNtszbYJtKyhqr2jax", + "type": "subtopic", + "position": { + "x": 59.26377479007613, + "y": 1662.9760683904424 + }, + "selected": false, + "data": { + "label": "Architectural Patterns", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 213, + "height": 49, + "style": { + "width": 213, + "height": 49 + }, + "positionAbsolute": { + "x": 59.26377479007613, + "y": 1662.9760683904424 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "J7DKRklMtJ94Y-18Jo50r", + "type": "subtopic", + "position": { + "x": 59.26377479007613, + "y": 1715.9760683904422 + }, + "selected": false, + "data": { + "label": "Dependency Injection", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 213, + "height": 49, + "style": { + "width": 213, + "height": 49 + }, + "positionAbsolute": { + "x": 59.26377479007613, + "y": 1715.9760683904422 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "PpFQ0zmObZLvmBvqhTEMz", + "type": "subtopic", + "position": { + "x": 59.26377479007613, + "y": 1768.9760683904422 + }, + "selected": false, + "data": { + "label": "Null Object Pattern", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 213, + "height": 49, + "style": { + "width": 213, + "height": 49 + }, + "positionAbsolute": { + "x": 59.26377479007613, + "y": 1768.9760683904422 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "_2Jddpz_cdwyeIgrg5qt_", + "type": "subtopic", + "position": { + "x": 59.26377479007613, + "y": 1821.9760683904422 + }, + "selected": false, + "data": { + "label": "Type Object Pattern", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 213, + "height": 44, + "style": { + "width": 213, + "height": 44 + }, + "positionAbsolute": { + "x": 59.26377479007613, + "y": 1821.9760683904422 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "cdNi0EYrQ5nsgNxFVnXL8", + "type": "topic", + "position": { + "x": -206.23550208669644, + "y": 1915.2378578688945 + }, + "selected": false, + "data": { + "label": "Basic Math Skills", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "YLCmZvoLkhOk9wlgYW2Ms" + }, + "zIndex": 999, + "width": 176, + "height": 49, + "style": { + "width": 176, + "height": 49 + }, + "positionAbsolute": { + "x": -206.23550208669644, + "y": 1915.2378578688945 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "HZ3_xyphbjhBPwwQo_rHH", + "type": "subtopic", + "position": { + "x": -206.23550208669644, + "y": 1995.6072055704187 + }, + "selected": false, + "data": { + "label": "Probability", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 176, + "height": 44, + "style": { + "width": 176, + "height": 44 + }, + "positionAbsolute": { + "x": -206.23550208669644, + "y": 1995.6072055704187 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "lWnAY0DgrUOmT6yqnxeBN", + "type": "subtopic", + "position": { + "x": -206.23550208669644, + "y": 2043.6072055704187 + }, + "selected": false, + "data": { + "label": "Combinatorics", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 176, + "height": 49, + "style": { + "width": 176, + "height": 49 + }, + "positionAbsolute": { + "x": -206.23550208669644, + "y": 2043.6072055704187 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "YLCmZvoLkhOk9wlgYW2Ms", + "type": "topic", + "position": { + "x": 37.03713904234036, + "y": 1915.2378578688945 + }, + "selected": false, + "data": { + "label": "Complexity Classes", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "DMuMsEowpevTCALtziwTB" + }, + "zIndex": 999, + "width": 280, + "height": 49, + "style": { + "width": 280, + "height": 49 + }, + "positionAbsolute": { + "x": 37.03713904234036, + "y": 1915.2378578688945 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "3aM17dPKNi8tRJsW8lesI", + "type": "subtopic", + "position": { + "x": 37.03713904234036, + "y": 1996.162871464112 + }, + "selected": false, + "data": { + "label": "P", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 80, + "height": 49, + "style": { + "width": 80, + "height": 49 + }, + "positionAbsolute": { + "x": 37.03713904234036, + "y": 1996.162871464112 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "ewXUHpOnjm8YrLhce1dAQ", + "type": "subtopic", + "position": { + "x": 121.0371390423403, + "y": 1996.162871464112 + }, + "selected": false, + "data": { + "label": "NP", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 80, + "height": 49, + "style": { + "width": 80, + "height": 49 + }, + "positionAbsolute": { + "x": 121.0371390423403, + "y": 1996.162871464112 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "mJJ8DGUpBuHEJ7I6UTy1T", + "type": "subtopic", + "position": { + "x": 157.55559693259414, + "y": 2049.9610617973904 + }, + "selected": false, + "data": { + "label": "NP Hard", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 160, + "height": 49, + "style": { + "width": 160, + "height": 49 + }, + "positionAbsolute": { + "x": 157.55559693259414, + "y": 2049.9610617973904 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "Lwkz7qozXRlVNA20zJbSw", + "type": "topic", + "position": { + "x": 36.816461554047976, + "y": 2103.830862188433 + }, + "selected": false, + "data": { + "label": "NP Complete", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 283, + "height": 49, + "style": { + "width": 283, + "height": 49 + }, + "positionAbsolute": { + "x": 36.816461554047976, + "y": 2103.830862188433 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "0btHNkzWL1w_-pUgU_k2y", + "type": "subtopic", + "position": { + "x": 205.55559693259414, + "y": 1996.162871464112 + }, + "selected": false, + "data": { + "label": "P = NP", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 112, + "height": 49, + "style": { + "width": 112, + "height": 49 + }, + "positionAbsolute": { + "x": 205.55559693259414, + "y": 1996.162871464112 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "ZG-hWjVoS3p9XfrtBL0sD", + "type": "subtopic", + "position": { + "x": 44.816461554047976, + "y": 2160.830862188433 + }, + "selected": false, + "data": { + "label": "Travelling Salesman Problem", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 267, + "height": 49, + "style": { + "width": 267, + "height": 49 + }, + "positionAbsolute": { + "x": 44.816461554047976, + "y": 2160.830862188433 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "yHeCRPhfAOWiggZeUHPU9", + "type": "subtopic", + "position": { + "x": 44.816461554047976, + "y": 2213.830862188433 + }, + "selected": false, + "data": { + "label": "Knapsack Problem", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 267, + "height": 49, + "style": { + "width": 267, + "height": 49 + }, + "positionAbsolute": { + "x": 44.816461554047976, + "y": 2213.830862188433 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "4QVVYjDODMWsjnrE-4UBs", + "type": "subtopic", + "position": { + "x": 44.816461554047976, + "y": 2266.830862188433 + }, + "selected": false, + "data": { + "label": "Longest Path Problem", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 267, + "height": 49, + "style": { + "width": 267, + "height": 49 + }, + "positionAbsolute": { + "x": 44.816461554047976, + "y": 2266.830862188433 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "4qUVacMEz3XFiL_dMre6P", + "type": "topic", + "position": { + "x": 408.1360889073014, + "y": 2066.529637253211 + }, + "selected": false, + "data": { + "label": "Tries", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "zvlTQ0A-My4QDrslp_lru" + }, + "zIndex": 999, + "width": 131, + "height": 49, + "style": { + "width": 131, + "height": 49 + }, + "positionAbsolute": { + "x": 408.1360889073014, + "y": 2066.529637253211 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "rgAd-PibuMY6HtBl7OSyh", + "type": "vertical", + "position": { + "x": 463.6360889073014, + "y": 2115.529637253211 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.75, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 292, + "style": { + "width": 20, + "height": 292 + }, + "positionAbsolute": { + "x": 463.6360889073014, + "y": 2115.529637253211 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "7DF3UhefOSqqTuccH8c8X", + "type": "topic", + "position": { + "x": 319.816461554048, + "y": 2358.529637253211 + }, + "selected": false, + "data": { + "label": "Balanced Search Trees", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "zvlTQ0A-My4QDrslp_lru" + }, + "zIndex": 999, + "width": 225, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 319.816461554048, + "y": 2358.529637253211 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "OUistS7H7hQQxVV-lOg39", + "type": "subtopic", + "position": { + "x": 338.191407832647, + "y": 2451.253238399003 + }, + "selected": false, + "data": { + "label": "AVL Trees", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 197, + "height": 44, + "style": { + "width": 197, + "height": 44 + }, + "positionAbsolute": { + "x": 338.191407832647, + "y": 2451.253238399003 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "eOL0_SzxBn7_xhNcBDi2D", + "type": "subtopic", + "position": { + "x": 338.191407832647, + "y": 2499.253238399003 + }, + "selected": false, + "data": { + "label": "Red / Black Trees", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 197, + "height": 49, + "style": { + "width": 197, + "height": 49 + }, + "positionAbsolute": { + "x": 338.191407832647, + "y": 2499.253238399003 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "3jiV9R82qxpqIGfpEq_wK", + "type": "subtopic", + "position": { + "x": 338.191407832647, + "y": 2552.253238399003 + }, + "selected": false, + "data": { + "label": "2 3 Search Trees", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 197, + "height": 49, + "style": { + "width": 197, + "height": 49 + }, + "positionAbsolute": { + "x": 338.191407832647, + "y": 2552.253238399003 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "IaPd_zuLbiOCwoSHQLoIG", + "type": "subtopic", + "position": { + "x": 338.191407832647, + "y": 2605.253238399003 + }, + "selected": false, + "data": { + "label": "2 3 4 Trees", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 197, + "height": 49, + "style": { + "width": 197, + "height": 49 + }, + "positionAbsolute": { + "x": 338.191407832647, + "y": 2605.253238399003 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "UOYeM-hqIKCrB9hGez4Q_", + "type": "subtopic", + "position": { + "x": 338.191407832647, + "y": 2658.253238399003 + }, + "selected": false, + "data": { + "label": "K-ary / M-ary Tree", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 197, + "height": 49, + "style": { + "width": 197, + "height": 49 + }, + "positionAbsolute": { + "x": 338.191407832647, + "y": 2658.253238399003 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "s0Pi6CemUUsmZSEu2j2gH", + "type": "subtopic", + "position": { + "x": 338.191407832647, + "y": 2711.253238399003 + }, + "selected": false, + "data": { + "label": "B-Tree", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 197, + "height": 49, + "style": { + "width": 197, + "height": 49 + }, + "positionAbsolute": { + "x": 338.191407832647, + "y": 2711.253238399003 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "w-fvEiSJysywR3AOAB0ve", + "type": "topic", + "position": { + "x": 97.54324929534187, + "y": 2358.529637253211 + }, + "selected": false, + "data": { + "label": "System Design", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "zvlTQ0A-My4QDrslp_lru" + }, + "zIndex": 999, + "width": 164, + "height": 49, + "style": { + "width": 164, + "height": 49 + }, + "positionAbsolute": { + "x": 97.54324929534187, + "y": 2358.529637253211 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "-34WGppX6QC5fkCvfCghp", + "type": "subtopic", + "position": { + "x": 37.543249295341866, + "y": 2451.8089042926963 + }, + "selected": false, + "data": { + "label": "Horizontal vs Vertical Scaling", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 284, + "height": 49, + "style": { + "width": 284, + "height": 49 + }, + "positionAbsolute": { + "x": 37.543249295341866, + "y": 2451.8089042926963 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "xDiS0HmrEoPjkQg9x2O3o", + "type": "subtopic", + "position": { + "x": 37.543249295341866, + "y": 2503.8089042926963 + }, + "selected": false, + "data": { + "label": "Load Balancing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 284, + "height": 49, + "style": { + "width": 284, + "height": 49 + }, + "positionAbsolute": { + "x": 37.543249295341866, + "y": 2503.8089042926963 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "wAsZ-M5N9ERufQnBaXbAE", + "type": "subtopic", + "position": { + "x": 37.543249295341866, + "y": 2555.8089042926963 + }, + "selected": false, + "data": { + "label": "Clustering", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 178, + "height": 49, + "style": { + "width": 178, + "height": 49 + }, + "positionAbsolute": { + "x": 37.543249295341866, + "y": 2555.8089042926963 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "4u5w9QCptLWuY9O7_UU8V", + "type": "subtopic", + "position": { + "x": 222.54570078536193, + "y": 2555.8089042926963 + }, + "selected": false, + "data": { + "label": "Caching", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": 222.54570078536193, + "y": 2555.8089042926963 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "r8V9bZpc98SrLvXc070bZ", + "type": "subtopic", + "position": { + "x": 37.543249295341866, + "y": 2607.8089042926963 + }, + "selected": false, + "data": { + "label": "CDN", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 178, + "height": 49, + "style": { + "width": 178, + "height": 49 + }, + "positionAbsolute": { + "x": 37.543249295341866, + "y": 2607.8089042926963 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "qLLJ_ehC8tSRfXsorYMQz", + "type": "subtopic", + "position": { + "x": 222.10434580877705, + "y": 2607.8089042926963 + }, + "selected": false, + "data": { + "label": "Proxy", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": 222.10434580877705, + "y": 2607.8089042926963 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "GZI8EsEqiMJX3fSbO_E-7", + "type": "subtopic", + "position": { + "x": 37.543249295341866, + "y": 2659.8089042926963 + }, + "selected": false, + "data": { + "label": "CAP Theorem", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 178, + "height": 49, + "style": { + "width": 178, + "height": 49 + }, + "positionAbsolute": { + "x": 37.543249295341866, + "y": 2659.8089042926963 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "LCPEzpyAuHY3ggN3nYrNN", + "type": "subtopic", + "position": { + "x": 220.10434580877705, + "y": 2659.8089042926963 + }, + "selected": false, + "data": { + "label": "Queues", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 102, + "height": 49, + "style": { + "width": 102, + "height": 49 + }, + "positionAbsolute": { + "x": 220.10434580877705, + "y": 2659.8089042926963 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "X1wv7xV69IEzepg8bF8oZ", + "type": "subtopic", + "position": { + "x": 37.543249295341866, + "y": 2711.8089042926963 + }, + "selected": false, + "data": { + "label": "Architectural Styles", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 284, + "height": 49, + "style": { + "width": 284, + "height": 49 + }, + "positionAbsolute": { + "x": 37.543249295341866, + "y": 2711.8089042926963 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Kvz3Sn7L8CxP5ZXO1hlcU", + "type": "subtopic", + "position": { + "x": 37.543249295341866, + "y": 2763.8089042926963 + }, + "selected": false, + "data": { + "label": "REST", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 75, + "height": 49, + "style": { + "width": 75, + "height": 49 + }, + "positionAbsolute": { + "x": 37.543249295341866, + "y": 2763.8089042926963 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "DeE_dZecLmKCjePovTfFS", + "type": "subtopic", + "position": { + "x": 117.54570078536193, + "y": 2763.8089042926963 + }, + "selected": false, + "data": { + "label": "GraphQL", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 115, + "height": 49, + "style": { + "width": 115, + "height": 49 + }, + "positionAbsolute": { + "x": 117.54570078536193, + "y": 2763.8089042926963 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "M4vdwAbjLPrLjWUsG_P1I", + "type": "subtopic", + "position": { + "x": 235.54570078536193, + "y": 2763.8089042926963 + }, + "selected": false, + "data": { + "label": "gRPC", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 87, + "height": 49, + "style": { + "width": 87, + "height": 49 + }, + "positionAbsolute": { + "x": 235.54570078536193, + "y": 2763.8089042926963 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "YMO9oD_sbzyDZPNU2xZwe", + "type": "subtopic", + "position": { + "x": 37.543249295341866, + "y": 2815.8089042926963 + }, + "selected": false, + "data": { + "label": "Cloud Design Ptterns", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 284, + "height": 49, + "style": { + "width": 284, + "height": 49 + }, + "positionAbsolute": { + "x": 37.543249295341866, + "y": 2815.8089042926963 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": true + }, + { + "id": "XeJi6TwpI5Uaszj00Uv_2", + "type": "subtopic", + "position": { + "x": 37.543249295341866, + "y": 2867.8089042926963 + }, + "selected": false, + "data": { + "label": "Long Polling", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 139, + "height": 49, + "style": { + "width": 139, + "height": 49 + }, + "positionAbsolute": { + "x": 37.543249295341866, + "y": 2867.8089042926963 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "gGmNJ8dK28iqrlQHPz6md", + "type": "subtopic", + "position": { + "x": 181.32502329706938, + "y": 2867.8089042926963 + }, + "selected": false, + "data": { + "label": "Short Polling", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 142, + "height": 49, + "style": { + "width": 142, + "height": 49 + }, + "positionAbsolute": { + "x": 181.32502329706938, + "y": 2867.8089042926963 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "bVjI14VismTHNCyA0mEBP", + "type": "subtopic", + "position": { + "x": 37.543249295341866, + "y": 2919.8089042926963 + }, + "selected": false, + "data": { + "label": "Web Sockets", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 173, + "height": 49, + "style": { + "width": 173, + "height": 49 + }, + "positionAbsolute": { + "x": 37.543249295341866, + "y": 2919.8089042926963 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "JckRqZA8C6IqQLPpTCgf4", + "type": "subtopic", + "position": { + "x": 213.93191750795512, + "y": 2919.8089042926963 + }, + "selected": false, + "data": { + "label": "SSE", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 110, + "height": 49, + "style": { + "width": 110, + "height": 49 + }, + "positionAbsolute": { + "x": 213.93191750795512, + "y": 2919.8089042926963 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "zvlTQ0A-My4QDrslp_lru", + "type": "topic", + "position": { + "x": -284.16095135864697, + "y": 2358.529637253211 + }, + "selected": false, + "data": { + "label": "Databases", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "YLCmZvoLkhOk9wlgYW2Ms" + }, + "zIndex": 999, + "width": 295, + "height": 49, + "style": { + "width": 295, + "height": 49 + }, + "positionAbsolute": { + "x": -284.16095135864697, + "y": 2358.529637253211 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "nprZscHdC_RdRIcGeGyVk", + "type": "subtopic", + "position": { + "x": -283.61511179817643, + "y": 2116.837658677318 + }, + "selected": false, + "data": { + "label": "SQL vs NoSQL Databases", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 293, + "height": 50, + "style": { + "width": 293, + "height": 50.3759765625 + }, + "positionAbsolute": { + "x": -283.61511179817643, + "y": 2116.837658677318 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Rw7QjLC8hLtXSwmU_9kHC", + "type": "subtopic", + "position": { + "x": -283.61511179817643, + "y": 2170.837658677318 + }, + "selected": false, + "data": { + "label": "Normalization / Denormalization", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 293, + "height": 49, + "style": { + "width": 293 + }, + "positionAbsolute": { + "x": -283.61511179817643, + "y": 2170.837658677318 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "XnxxEmr2TyW2kOpB4gtR5", + "type": "subtopic", + "position": { + "x": -283.61511179817643, + "y": 2223.837658677318 + }, + "selected": false, + "data": { + "label": "Entity-Relationship Model", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 293, + "height": 49, + "style": { + "width": 293 + }, + "positionAbsolute": { + "x": -283.61511179817643, + "y": 2223.837658677318 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "ii1vF74u3yrFNlw_21b3B", + "type": "subtopic", + "position": { + "x": -283.61511179817643, + "y": 2276.837658677318 + }, + "selected": false, + "data": { + "label": "DDL", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 70, + "height": 49, + "style": { + "width": 70, + "height": 49 + }, + "positionAbsolute": { + "x": -283.61511179817643, + "y": 2276.837658677318 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "tcQSH-eAvJUZuePTDjAIb", + "type": "subtopic", + "position": { + "x": -209.61511179817643, + "y": 2276.837658677318 + }, + "selected": false, + "data": { + "label": "DML", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 70, + "height": 49, + "style": { + "width": 70, + "height": 49 + }, + "positionAbsolute": { + "x": -209.61511179817643, + "y": 2276.837658677318 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "05lkb3B86Won7Rkf-8DeD", + "type": "subtopic", + "position": { + "x": -135.61511179817649, + "y": 2276.837658677318 + }, + "selected": false, + "data": { + "label": "DQL", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 70, + "height": 49, + "style": { + "width": 70, + "height": 49 + }, + "positionAbsolute": { + "x": -135.61511179817649, + "y": 2276.837658677318 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "4bUmfuP2qgcli8I2Vm9zh", + "type": "subtopic", + "position": { + "x": -61.615111798176486, + "y": 2276.837658677318 + }, + "selected": false, + "data": { + "label": "DCL", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 70, + "height": 49, + "style": { + "width": 70, + "height": 49 + }, + "positionAbsolute": { + "x": -61.615111798176486, + "y": 2276.837658677318 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "_sm63rZNKoibVndeNgOpW", + "type": "subtopic", + "position": { + "x": -285.56048010753005, + "y": 2449.793713263629 + }, + "selected": false, + "data": { + "label": "Locking", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 293, + "height": 49, + "style": { + "width": 293 + }, + "positionAbsolute": { + "x": -285.56048010753005, + "y": 2449.793713263629 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "W5B-v-BFcCRmuN0L1m6PI", + "type": "subtopic", + "position": { + "x": -285.56048010753005, + "y": 2502.793713263629 + }, + "selected": false, + "data": { + "label": "ACID Model", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 153, + "height": 49, + "style": { + "width": 153, + "height": 49 + }, + "positionAbsolute": { + "x": -285.56048010753005, + "y": 2502.793713263629 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "q3nRhTYS5wg9tYnQe2sCF", + "type": "subtopic", + "position": { + "x": -128.53316426220692, + "y": 2503.2245852639517 + }, + "selected": false, + "data": { + "label": "BASE", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 134, + "height": 49, + "style": { + "width": 134, + "height": 49 + }, + "positionAbsolute": { + "x": -128.53316426220692, + "y": 2503.2245852639517 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "uqfeiQ9K--QkGNwks4kjk", + "type": "subtopic", + "position": { + "x": -285.56048010753005, + "y": 2555.2245852639517 + }, + "selected": false, + "data": { + "label": "CAP Theorem", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 153, + "height": 49, + "style": { + "width": 153, + "height": 49 + }, + "positionAbsolute": { + "x": -285.56048010753005, + "y": 2555.2245852639517 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "g6HeyLptaAYx9QBKuHQyM", + "type": "subtopic", + "position": { + "x": -128.53316426220692, + "y": 2555.2245852639517 + }, + "selected": false, + "data": { + "label": "PACELC", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 134, + "height": 49, + "style": { + "width": 134, + "height": 49 + }, + "positionAbsolute": { + "x": -128.53316426220692, + "y": 2555.2245852639517 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "BEbsUA39kZ5itqCwD585f", + "type": "subtopic", + "position": { + "x": -286.533164262207, + "y": 2607.2245852639517 + }, + "selected": false, + "data": { + "label": "Indexes", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 153, + "height": 49, + "style": { + "width": 153, + "height": 49 + }, + "positionAbsolute": { + "x": -286.533164262207, + "y": 2607.2245852639517 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "lOj_ReWI1kQ3WajJZYOWU", + "type": "subtopic", + "position": { + "x": -128.53316426220692, + "y": 2607.2245852639517 + }, + "selected": false, + "data": { + "label": "Views", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 134, + "height": 49, + "style": { + "width": 134, + "height": 49 + }, + "positionAbsolute": { + "x": -128.53316426220692, + "y": 2607.2245852639517 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "KhvYJtSCUBOpEZXjHpQde", + "type": "subtopic", + "position": { + "x": -287.533164262207, + "y": 2659.2245852639517 + }, + "selected": false, + "data": { + "label": "Transactions", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 293, + "height": 49, + "style": { + "width": 293 + }, + "positionAbsolute": { + "x": -287.533164262207, + "y": 2659.2245852639517 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "FjhZGhzJjYyDn0PShKmpX", + "type": "subtopic", + "position": { + "x": -286.533164262207, + "y": 2711.2245852639517 + }, + "selected": false, + "data": { + "label": "Stored Procedures", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 293, + "height": 49, + "style": { + "width": 293 + }, + "positionAbsolute": { + "x": -286.533164262207, + "y": 2711.2245852639517 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "3r21avMlo0xFB9i7PHccX", + "type": "subtopic", + "position": { + "x": -285.56048010753005, + "y": 2763.2245852639517 + }, + "selected": false, + "data": { + "label": "Database Federation", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 293, + "height": 49, + "style": { + "width": 293 + }, + "positionAbsolute": { + "x": -285.56048010753005, + "y": 2763.2245852639517 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "WUEmEtlszbISSIWDKpvg6", + "type": "subtopic", + "position": { + "x": -287.533164262207, + "y": 2815.2245852639517 + }, + "selected": false, + "data": { + "label": "Replication", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 156, + "height": 49, + "style": { + "width": 156, + "height": 49 + }, + "positionAbsolute": { + "x": -287.533164262207, + "y": 2815.2245852639517 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "3K65efPag2076dy-MeTg4", + "type": "subtopic", + "position": { + "x": -128.53316426220692, + "y": 2815.2245852639517 + }, + "selected": false, + "data": { + "label": "Sharding", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 134, + "height": 49, + "style": { + "width": 134, + "height": 49 + }, + "positionAbsolute": { + "x": -128.53316426220692, + "y": 2815.2245852639517 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "zG5t3HqbZnh9CGRqp1Sb-", + "type": "topic", + "position": { + "x": -518.9723390716184, + "y": 2430.1119032208103 + }, + "selected": false, + "data": { + "label": "Networking", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "JnJbJtsqKbVETY2vdLqCO" + }, + "zIndex": 999, + "width": 159, + "height": 50, + "style": { + "width": 159, + "height": 50 + }, + "positionAbsolute": { + "x": -518.9723390716184, + "y": 2430.1119032208103 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "pZ5x_zDYGzW9VxYycyXtN", + "type": "subtopic", + "position": { + "x": -518.9723390716184, + "y": 2119.7557111413485 + }, + "selected": false, + "data": { + "label": "OSI Model", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 159, + "height": 49, + "style": { + "width": 159, + "height": 49 + }, + "positionAbsolute": { + "x": -518.9723390716184, + "y": 2119.7557111413485 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Fed5y1D95WPpqoVg7kmob", + "type": "subtopic", + "position": { + "x": -518.9723390716184, + "y": 2172.7557111413485 + }, + "selected": false, + "data": { + "label": "TCP/IP Model", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 159, + "height": 49, + "style": { + "width": 159, + "height": 49 + }, + "positionAbsolute": { + "x": -518.9723390716184, + "y": 2172.7557111413485 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "fYjoXB4rnkM5gg46sqVz5", + "type": "subtopic", + "position": { + "x": -518.9723390716184, + "y": 2225.7557111413485 + }, + "selected": false, + "data": { + "label": "DNS", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 78, + "height": 49, + "style": { + "width": 78, + "height": 49 + }, + "positionAbsolute": { + "x": -518.9723390716184, + "y": 2225.7557111413485 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "2tUwl-br-SRuwADSzmQag", + "type": "subtopic", + "position": { + "x": -436.9723390716184, + "y": 2225.7557111413485 + }, + "selected": false, + "data": { + "label": "HTTP", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 78, + "height": 49, + "style": { + "width": 78, + "height": 49 + }, + "positionAbsolute": { + "x": -436.9723390716184, + "y": 2225.7557111413485 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "3pu2bGhoCLFIs6kNanwtz", + "type": "subtopic", + "position": { + "x": -518.9723390716184, + "y": 2278.7557111413485 + }, + "selected": false, + "data": { + "label": "TLS & HTTPS", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 159, + "height": 49, + "style": { + "width": 159, + "height": 49 + }, + "positionAbsolute": { + "x": -518.9723390716184, + "y": 2278.7557111413485 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "u-c-UFegRb7xqsmvj9gVb", + "type": "subtopic", + "position": { + "x": -518.9723390716184, + "y": 2331.7557111413485 + }, + "selected": false, + "data": { + "label": "Sockets", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 159, + "height": 49, + "style": { + "width": 159, + "height": 49 + }, + "positionAbsolute": { + "x": -518.9723390716184, + "y": 2331.7557111413485 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "JnJbJtsqKbVETY2vdLqCO", + "type": "topic", + "position": { + "x": -517.9723390716184, + "y": 2947.7963038901817 + }, + "selected": false, + "data": { + "label": "Security", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 159, + "height": 50, + "style": { + "width": 159, + "height": 50 + }, + "positionAbsolute": { + "x": -517.9723390716184, + "y": 2947.7963038901817 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "bDZ34BPm3lX06ERSE10cY", + "type": "subtopic", + "position": { + "x": -289.0599306711012, + "y": 2947.7963038901817 + }, + "selected": false, + "data": { + "label": "Public Key Cryptography", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "EX_e4B6G07zTb4JjJ7482" + }, + "zIndex": 999, + "width": 297, + "height": 49, + "style": { + "width": 297, + "height": 49 + }, + "positionAbsolute": { + "x": -289.0599306711012, + "y": 2947.7963038901817 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "7r7o8pYhFHVAJIv0wNT6X", + "type": "subtopic", + "position": { + "x": -289.0599306711012, + "y": 2894.7963038901817 + }, + "selected": false, + "data": { + "label": "Hashing / Encryption / Encoding", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 297, + "height": 49, + "style": { + "width": 297, + "height": 49 + }, + "positionAbsolute": { + "x": -289.0599306711012, + "y": 2894.7963038901817 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "EX_e4B6G07zTb4JjJ7482", + "type": "subtopic", + "position": { + "x": -289.0599306711012, + "y": 3000.7963038901817 + }, + "selected": false, + "data": { + "label": "Hashing Algorithms", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "7r7o8pYhFHVAJIv0wNT6X" + }, + "zIndex": 999, + "width": 297, + "height": 49, + "style": { + "width": 297, + "height": 49 + }, + "positionAbsolute": { + "x": -289.0599306711012, + "y": 3000.7963038901817 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "3rPSp135TdSCyvXzEzn4p", + "type": "subtopic", + "position": { + "x": -289.0599306711012, + "y": 3053.7963038901817 + }, + "selected": false, + "data": { + "label": "OWASP Top 10", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 297, + "height": 49, + "style": { + "width": 297, + "height": 49 + }, + "positionAbsolute": { + "x": -289.0599306711012, + "y": 3053.7963038901817 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "-emdKpD5uRNuvem5rbFXJ", + "type": "topic", + "position": { + "x": -257.35962105332527, + "y": 3194.128717156272 + }, + "selected": false, + "data": { + "label": "How Computers Work", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "K96ggeWqd5OwoNnkL04pc" + }, + "zIndex": 999, + "width": 213, + "height": 49, + "style": { + "width": 213, + "height": 49 + }, + "positionAbsolute": { + "x": -257.35962105332527, + "y": 3194.128717156272 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "1eglba39q426Nh0E0qcdj", + "type": "subtopic", + "position": { + "x": -289.85962105332527, + "y": 3280.116619209424 + }, + "selected": false, + "data": { + "label": "How CPU Executes Programs", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "GDLKJkKgB-i7n0YcV2NDa" + }, + "zIndex": 999, + "width": 278, + "height": 49, + "style": { + "width": 278, + "height": 49 + }, + "positionAbsolute": { + "x": -289.85962105332527, + "y": 3280.116619209424 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "id": "GDLKJkKgB-i7n0YcV2NDa", + "type": "subtopic", + "position": { + "x": -289.85962105332527, + "y": 3492.116619209424 + }, + "selected": false, + "data": { + "label": "How Computers Calculate", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 278, + "height": 49, + "style": { + "width": 278, + "height": 49 + }, + "positionAbsolute": { + "x": -289.85962105332527, + "y": 3492.116619209424 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "U3379F4AO1KSmGtVmPr27", + "type": "subtopic", + "position": { + "x": -289.85962105332527, + "y": 3333.116619209424 + }, + "selected": false, + "data": { + "label": "Registers and RAM", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 278, + "height": 49, + "style": { + "width": 278, + "height": 49 + }, + "positionAbsolute": { + "x": -289.85962105332527, + "y": 3333.116619209424 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "AxiGqbteK7ZSXEUt_zckH", + "type": "subtopic", + "position": { + "x": -289.85962105332527, + "y": 3386.116619209424 + }, + "selected": false, + "data": { + "label": "Instructions and Programs", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 278, + "height": 49, + "style": { + "width": 278, + "height": 49 + }, + "positionAbsolute": { + "x": -289.85962105332527, + "y": 3386.116619209424 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "DjTQjMbika4_yTzrBpcmB", + "type": "subtopic", + "position": { + "x": -289.85962105332527, + "y": 3439.116619209424 + }, + "selected": false, + "data": { + "label": "CPU Cache", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "KmPaeu9L_ljttFtmT-oja" + }, + "zIndex": 999, + "width": 278, + "height": 49, + "style": { + "width": 278, + "height": 49 + }, + "positionAbsolute": { + "x": -289.85962105332527, + "y": 3439.116619209424 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "ETEUA7jaEGyOEX8tAVNWs", + "type": "topic", + "position": { + "x": 67.9712244806118, + "y": 3194.128717156272 + }, + "selected": false, + "data": { + "label": "Porcesses and Threads", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "K96ggeWqd5OwoNnkL04pc" + }, + "zIndex": 999, + "width": 226, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 67.9712244806118, + "y": 3194.128717156272 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "RbdT5MOE4L-E7PPWKRITX", + "type": "subtopic", + "position": { + "x": 38.971224480611795, + "y": 2993.332407055286 + }, + "selected": false, + "data": { + "label": "Process Forking", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 283, + "height": 46, + "style": { + "width": 283, + "height": 45.590576171875 + }, + "positionAbsolute": { + "x": 38.971224480611795, + "y": 2993.332407055286 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "jVsZFTzyrYEDyR8LiBQL0", + "type": "subtopic", + "position": { + "x": 38.971224480611795, + "y": 3043.332407055286 + }, + "selected": false, + "data": { + "label": "Memory Management", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 283, + "height": 49, + "style": { + "width": 283 + }, + "positionAbsolute": { + "x": 38.971224480611795, + "y": 3043.332407055286 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "O6-vG3FuoYet4D0hbiyrv", + "type": "subtopic", + "position": { + "x": 38.971224480611795, + "y": 3096.332407055286 + }, + "selected": false, + "data": { + "label": "Lock / Mutex / Semaphore", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 283, + "height": 49, + "style": { + "width": 283 + }, + "positionAbsolute": { + "x": 38.971224480611795, + "y": 3096.332407055286 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "xUo5Ox_HTgGyeQMDIkVyK", + "type": "subtopic", + "position": { + "x": 38.971224480611795, + "y": 3299.9412997889485 + }, + "selected": false, + "data": { + "label": "Concurrency in Multiple Cores", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 283, + "height": 49, + "style": { + "width": 283, + "height": 49 + }, + "positionAbsolute": { + "x": 38.971224480611795, + "y": 3299.9412997889485 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "id": "Ge2nagN86ofa2y-yYR1lv", + "type": "subtopic", + "position": { + "x": 38.971224480611795, + "y": 3352.9412997889485 + }, + "selected": false, + "data": { + "label": "Scheduling Algorithms", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 283, + "height": 49, + "style": { + "width": 283 + }, + "positionAbsolute": { + "x": 38.971224480611795, + "y": 3352.9412997889485 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "cpQvB0qMDL3-NWret7oeA", + "type": "subtopic", + "position": { + "x": 38.971224480611795, + "y": 3405.9412997889485 + }, + "selected": false, + "data": { + "label": "CPU Interrupts", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 283, + "height": 49, + "style": { + "width": 283 + }, + "positionAbsolute": { + "x": 38.971224480611795, + "y": 3405.9412997889485 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "IEX6v_MYpE5Ylk_28K2ZU", + "type": "subtopic", + "position": { + "x": 38.971224480611795, + "y": 3458.9412997889485 + }, + "selected": false, + "data": { + "label": "Processes vs Threads", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 283, + "height": 49, + "style": { + "width": 283 + }, + "positionAbsolute": { + "x": 38.971224480611795, + "y": 3458.9412997889485 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "C1eNsPjiQo8INbvL2Lt7L", + "type": "topic", + "position": { + "x": 364.5440348728025, + "y": 2835.048451525693 + }, + "selected": false, + "data": { + "label": "K-D Trees", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "K96ggeWqd5OwoNnkL04pc" + }, + "zIndex": 999, + "width": 160, + "height": 49, + "style": { + "width": 160, + "height": 49 + }, + "positionAbsolute": { + "x": 364.5440348728025, + "y": 2835.048451525693 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "K96ggeWqd5OwoNnkL04pc", + "type": "topic", + "position": { + "x": 364.5440348728025, + "y": 2888.048451525693 + }, + "selected": false, + "data": { + "label": "Skip Lists", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "JnJbJtsqKbVETY2vdLqCO" + }, + "zIndex": 999, + "width": 160, + "height": 49, + "style": { + "width": 160, + "height": 49 + }, + "positionAbsolute": { + "x": 364.5440348728025, + "y": 2888.048451525693 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "diInbFoBy8YracmAhlDsu", + "type": "horizontal", + "position": { + "x": 251.13608890730143, + "y": 3651.669282617722 + }, + "selected": false, + "data": { + "label": "horizontal node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75 + } + }, + "zIndex": 999, + "width": 192, + "height": 20, + "style": { + "width": 192, + "height": 20 + }, + "positionAbsolute": { + "x": 251.13608890730143, + "y": 3651.669282617722 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "pLBfkzi0qfgVRqi_4AmMI", + "type": "subtopic", + "position": { + "x": 39.04484613528683, + "y": 2049.9610617973904 + }, + "selected": false, + "data": { + "label": "Co-NP", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 112, + "height": 50, + "positionAbsolute": { + "x": 39.04484613528683, + "y": 2049.9610617973904 + }, + "dragging": false, + "style": { + "width": 112, + "height": 50 + }, + "resizing": false + }, + { + "id": "hTPLcuOW7eEE5oYhNfmOG", + "type": "topic", + "position": { + "x": -516.9617569699752, + "y": 1663.9760683904424 + }, + "selected": false, + "data": { + "label": "Bitwise Operators", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "-bawIWfrYuAxy8cP-AGFS" + }, + "zIndex": 999, + "width": 232, + "height": 49, + "style": { + "width": 232, + "height": 49 + }, + "positionAbsolute": { + "x": -516.9617569699752, + "y": 1663.9760683904424 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + } + ], + "edges": [ + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "M0aRyhxjzTWUOW95D1g1y", + "selected": false, + "type": "smoothstep", + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "Xw4lLz2zWuTkNu8r4oheF", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "mbCXMk97_HKXG3d4TxBOC", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tU4Umtnfu01t9gLlnlK6b", + "sourceHandle": "z2", + "target": "RlKZzs44biQPgxD0tK1qx", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-tU4Umtnfu01t9gLlnlK6bz2-RlKZzs44biQPgxD0tK1qxy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tU4Umtnfu01t9gLlnlK6b", + "sourceHandle": "z2", + "target": "jHKCLfLml8oZyj4829gx0", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-tU4Umtnfu01t9gLlnlK6bz2-jHKCLfLml8oZyj4829gx0y2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tU4Umtnfu01t9gLlnlK6b", + "sourceHandle": "z2", + "target": "n4IsklfYJXFIyF1rGWuEa", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-tU4Umtnfu01t9gLlnlK6bz2-n4IsklfYJXFIyF1rGWuEay1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tU4Umtnfu01t9gLlnlK6b", + "sourceHandle": "z2", + "target": "1bDjg-KBDKRmE6f1MWY8l", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-tU4Umtnfu01t9gLlnlK6bz2-1bDjg-KBDKRmE6f1MWY8ly2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tU4Umtnfu01t9gLlnlK6b", + "sourceHandle": "x2", + "target": "NM7q5REW1sJgMhxJhPpLT", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-tU4Umtnfu01t9gLlnlK6bx2-UpBrpmrUwYUB9eesNxCq5w1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "NM7q5REW1sJgMhxJhPpLT", + "sourceHandle": "y2", + "target": "JI990pDX2jjNe6IH_Y_t0", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-UpBrpmrUwYUB9eesNxCq5y2-JI990pDX2jjNe6IH_Y_t0z1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "NM7q5REW1sJgMhxJhPpLT", + "sourceHandle": "y2", + "target": "G2dN2FO0SN_I-5AhO_EUk", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-UpBrpmrUwYUB9eesNxCq5y2-G2dN2FO0SN_I-5AhO_EUkz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "NM7q5REW1sJgMhxJhPpLT", + "sourceHandle": "y2", + "target": "gr8BK6vq4AVwp_aUozZmf", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "selected": false, + "selectable": true, + "focusable": true, + "id": "reactflow__edge-UpBrpmrUwYUB9eesNxCq5y2-gr8BK6vq4AVwp_aUozZmfz1" + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "iogwMmOvub2ZF4zgg6WyF", + "sourceHandle": "x2", + "target": "tU4Umtnfu01t9gLlnlK6b", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-iogwMmOvub2ZF4zgg6WyFx2-tU4Umtnfu01t9gLlnlK6bw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "NM7q5REW1sJgMhxJhPpLT", + "sourceHandle": "z2", + "target": "vQm046o6ozcvLoqg9L6eL", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-UpBrpmrUwYUB9eesNxCq5z2-vQm046o6ozcvLoqg9L6eLy2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "NM7q5REW1sJgMhxJhPpLT", + "sourceHandle": "x2", + "target": "UpBrpmrUwYUB9eesNxCq5", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-NM7q5REW1sJgMhxJhPpLTx2-UpBrpmrUwYUB9eesNxCq5w1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "UpBrpmrUwYUB9eesNxCq5", + "sourceHandle": "z2", + "target": "7a6-AnBI-3tAU1dkOvPkx", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-UpBrpmrUwYUB9eesNxCq5z2-7a6-AnBI-3tAU1dkOvPkxy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "NUWk-7IXmMU-4TT-oS8fF", + "sourceHandle": "y2", + "target": "-bawIWfrYuAxy8cP-AGFS", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-NUWk-7IXmMU-4TT-oS8fFy2-vjMqqFsTxSjaiYxmliwLiz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "-bawIWfrYuAxy8cP-AGFS", + "sourceHandle": "y2", + "target": "vjMqqFsTxSjaiYxmliwLi", + "targetHandle": "z2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge--bawIWfrYuAxy8cP-AGFSy2-vjMqqFsTxSjaiYxmliwLiz2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "vjMqqFsTxSjaiYxmliwLi", + "sourceHandle": "x2", + "target": "U8AgY6I-62mN5Ohg9MsG6", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-vjMqqFsTxSjaiYxmliwLix2-U8AgY6I-62mN5Ohg9MsG6w1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "vjMqqFsTxSjaiYxmliwLi", + "sourceHandle": "y2", + "target": "DtG9EJonWi4_2oQ4fWOKY", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-vjMqqFsTxSjaiYxmliwLiy2-DtG9EJonWi4_2oQ4fWOKYz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "DMuMsEowpevTCALtziwTB", + "sourceHandle": "x2", + "target": "FZ8znJSz8PvQlnEyRLXmQ", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-DMuMsEowpevTCALtziwTBx2-FZ8znJSz8PvQlnEyRLXmQw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "DMuMsEowpevTCALtziwTB", + "sourceHandle": "z2", + "target": "-De1hU2ONGwhQmUpsyrCO", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-DMuMsEowpevTCALtziwTBz2-YLCmZvoLkhOk9wlgYW2Msy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "-De1hU2ONGwhQmUpsyrCO", + "sourceHandle": "z2", + "target": "iPN9mSyFwYZER5HSkj6oL", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-YLCmZvoLkhOk9wlgYW2Msz2-iPN9mSyFwYZER5HSkj6oLy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "-De1hU2ONGwhQmUpsyrCO", + "sourceHandle": "z2", + "target": "BGhJNtszbYJtKyhqr2jax", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-YLCmZvoLkhOk9wlgYW2Msz2-BGhJNtszbYJtKyhqr2jaxy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "-De1hU2ONGwhQmUpsyrCO", + "sourceHandle": "z2", + "target": "J7DKRklMtJ94Y-18Jo50r", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-YLCmZvoLkhOk9wlgYW2Msz2-J7DKRklMtJ94Y-18Jo50ry1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "-De1hU2ONGwhQmUpsyrCO", + "sourceHandle": "z2", + "target": "PpFQ0zmObZLvmBvqhTEMz", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-YLCmZvoLkhOk9wlgYW2Msz2-PpFQ0zmObZLvmBvqhTEMzy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "-De1hU2ONGwhQmUpsyrCO", + "sourceHandle": "z2", + "target": "_2Jddpz_cdwyeIgrg5qt_", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-YLCmZvoLkhOk9wlgYW2Msz2-_2Jddpz_cdwyeIgrg5qt_y1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "-De1hU2ONGwhQmUpsyrCO", + "sourceHandle": "x2", + "target": "cdNi0EYrQ5nsgNxFVnXL8", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge--De1hU2ONGwhQmUpsyrCOx2-YLCmZvoLkhOk9wlgYW2Msw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "cdNi0EYrQ5nsgNxFVnXL8", + "sourceHandle": "x2", + "target": "HZ3_xyphbjhBPwwQo_rHH", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-YLCmZvoLkhOk9wlgYW2Msx2-HZ3_xyphbjhBPwwQo_rHHw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "cdNi0EYrQ5nsgNxFVnXL8", + "sourceHandle": "z2", + "target": "YLCmZvoLkhOk9wlgYW2Ms", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-cdNi0EYrQ5nsgNxFVnXL8z2-YLCmZvoLkhOk9wlgYW2Msy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "YLCmZvoLkhOk9wlgYW2Ms", + "sourceHandle": "z2", + "target": "4qUVacMEz3XFiL_dMre6P", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-YLCmZvoLkhOk9wlgYW2Msz2-zvlTQ0A-My4QDrslp_lruw1", + "selected": false, + "type": "smoothstep", + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "7DF3UhefOSqqTuccH8c8X", + "sourceHandle": "y2", + "target": "w-fvEiSJysywR3AOAB0ve", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-7DF3UhefOSqqTuccH8c8Xy2-zvlTQ0A-My4QDrslp_lruz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "w-fvEiSJysywR3AOAB0ve", + "sourceHandle": "x2", + "target": "-34WGppX6QC5fkCvfCghp", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-zvlTQ0A-My4QDrslp_lrux2--34WGppX6QC5fkCvfCghpw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "w-fvEiSJysywR3AOAB0ve", + "sourceHandle": "y2", + "target": "zvlTQ0A-My4QDrslp_lru", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-w-fvEiSJysywR3AOAB0vey2-zvlTQ0A-My4QDrslp_lruz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "zvlTQ0A-My4QDrslp_lru", + "sourceHandle": "y2", + "target": "zG5t3HqbZnh9CGRqp1Sb-", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-zvlTQ0A-My4QDrslp_lruy2-JnJbJtsqKbVETY2vdLqCOz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "zG5t3HqbZnh9CGRqp1Sb-", + "sourceHandle": "w2", + "target": "u-c-UFegRb7xqsmvj9gVb", + "targetHandle": "x2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-JnJbJtsqKbVETY2vdLqCOw2-u-c-UFegRb7xqsmvj9gVbx2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "zG5t3HqbZnh9CGRqp1Sb-", + "sourceHandle": "x2", + "target": "JnJbJtsqKbVETY2vdLqCO", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-zG5t3HqbZnh9CGRqp1Sb-x2-JnJbJtsqKbVETY2vdLqCOw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "JnJbJtsqKbVETY2vdLqCO", + "sourceHandle": "z2", + "target": "7r7o8pYhFHVAJIv0wNT6X", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-JnJbJtsqKbVETY2vdLqCOz2-7r7o8pYhFHVAJIv0wNT6Xy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "JnJbJtsqKbVETY2vdLqCO", + "sourceHandle": "z2", + "target": "bDZ34BPm3lX06ERSE10cY", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-JnJbJtsqKbVETY2vdLqCOz2-bDZ34BPm3lX06ERSE10cYy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "JnJbJtsqKbVETY2vdLqCO", + "sourceHandle": "z2", + "target": "EX_e4B6G07zTb4JjJ7482", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-JnJbJtsqKbVETY2vdLqCOz2-EX_e4B6G07zTb4JjJ7482y1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "JnJbJtsqKbVETY2vdLqCO", + "sourceHandle": "z2", + "target": "3rPSp135TdSCyvXzEzn4p", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-JnJbJtsqKbVETY2vdLqCOz2-3rPSp135TdSCyvXzEzn4py1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "JnJbJtsqKbVETY2vdLqCO", + "sourceHandle": "x2", + "target": "-emdKpD5uRNuvem5rbFXJ", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-JnJbJtsqKbVETY2vdLqCOx2-K96ggeWqd5OwoNnkL04pcy1", + "selected": false, + "type": "smoothstep", + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "-emdKpD5uRNuvem5rbFXJ", + "sourceHandle": "x2", + "target": "1eglba39q426Nh0E0qcdj", + "targetHandle": "w2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-K96ggeWqd5OwoNnkL04pcx2-1eglba39q426Nh0E0qcdjw2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "-emdKpD5uRNuvem5rbFXJ", + "sourceHandle": "z2", + "target": "ETEUA7jaEGyOEX8tAVNWs", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge--emdKpD5uRNuvem5rbFXJz2-K96ggeWqd5OwoNnkL04pcy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "ETEUA7jaEGyOEX8tAVNWs", + "sourceHandle": "w2", + "target": "O6-vG3FuoYet4D0hbiyrv", + "targetHandle": "x2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-K96ggeWqd5OwoNnkL04pcw2-O6-vG3FuoYet4D0hbiyrvx2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "ETEUA7jaEGyOEX8tAVNWs", + "sourceHandle": "x2", + "target": "xUo5Ox_HTgGyeQMDIkVyK", + "targetHandle": "w2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-K96ggeWqd5OwoNnkL04pcx2-xUo5Ox_HTgGyeQMDIkVyKw2", + "selected": false, + "selectable": true, + "focusable": true + } + ] } \ No newline at end of file diff --git a/src/data/roadmaps/computer-science/computer-science.md b/src/data/roadmaps/computer-science/computer-science.md index 4455617e5..47644a4ef 100644 --- a/src/data/roadmaps/computer-science/computer-science.md +++ b/src/data/roadmaps/computer-science/computer-science.md @@ -2,6 +2,7 @@ jsonUrl: '/jsons/roadmaps/computer-science.json' pdfUrl: '/pdfs/roadmaps/computer-science.pdf' order: 1 +renderer: 'editor' briefTitle: 'Computer Science' briefDescription: 'Curriculum with free resources for a self-taught developer.' title: 'Computer Science' @@ -10,7 +11,7 @@ isNew: false hasTopics: true dimensions: width: 968 - height: 3009.05 + height: 3550 schema: headline: 'Computer Science Roadmap' description: 'Computer Science roadmap for the self-taught developers and bootcamp grads. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' diff --git a/src/data/roadmaps/computer-science/content/100-roadmap-note.md b/src/data/roadmaps/computer-science/content/100-roadmap-note.md deleted file mode 100644 index d75e2e3bf..000000000 --- a/src/data/roadmaps/computer-science/content/100-roadmap-note.md +++ /dev/null @@ -1,5 +0,0 @@ -# Readme - -Please note that this is a study plan for Computer Science, not web development, we have [separate roadmaps for web development](/). Also, note that this is not an exhaustive list and is a highly opinionated list of topics. - -We are continuously working on improving the roadmaps. Please [create an issue with your suggestions](https://github.com/kamranahmedse/developer-roadmap/issues) or [reach out to me on twitter](https://twitter.com/kamrify) with your feedback and suggestions for improving this roadmap further. diff --git a/src/data/roadmaps/computer-science/content/103-asymptotic-notation/103-common-runtimes/index.md b/src/data/roadmaps/computer-science/content/103-asymptotic-notation/103-common-runtimes/index.md deleted file mode 100644 index 63bb213c7..000000000 --- a/src/data/roadmaps/computer-science/content/103-asymptotic-notation/103-common-runtimes/index.md +++ /dev/null @@ -1,18 +0,0 @@ -# Common Runtimes - -Given below is the list of common algorithmic runtimes. The runtimes are listed in ascending order of their complexity. - -- O(1) - Constant -- O(log n) - Logarithmic -- O(n) - Linear -- O(n log n) - Linearithmic -- O(n^2) - Quadratic -- O(n^3) - Cubic -- O(2^n) - Exponential -- O(n!) - Factorial -- O(n^k) - Polynomial - -Visit the following resources to learn more: - -- [@video@Big O Notation — Calculating Time Complexity](https://www.youtube.com/watch?v=Z0bH0cMY0E8) -- [@video@Big O Notations](https://www.youtube.com/watch?v=V6mKVRU1evU) diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/index.md b/src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/index.md deleted file mode 100644 index 4e133de9e..000000000 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/index.md +++ /dev/null @@ -1,13 +0,0 @@ -# Sorting Algorithms - -Sorting algorithms are used to sort data in a collection. Sorting is a very common task in computer science, and it is also a very common interview question. There are many different ways to sort data, and different algorithms have different advantages and disadvantages. - -Learn about the sorting algorithms and know the best case/worst case, average complexity of each. Also, learn about the stability of sorting algorithms. - -Visit the following resources to learn more: - -- [@article@CS 61B Lecture 29: Sorting I](https://archive.org/details/ucberkeley_webcast_EiUvYS2DT6I) -- [@article@CS 61B Lecture 30: Sorting II](https://archive.org/details/ucberkeley_webcast_2hTY3t80Qsk) -- [@article@CS 61B Lecture 32: Sorting III](https://archive.org/details/ucberkeley_webcast_Y6LOLpxg6Dc) -- [@article@CS 61B Lecture 33: Sorting V](https://archive.org/details/ucberkeley_webcast_qNMQ4ly43p4) -- [@feed@Explore top posts about Algorithms](https://app.daily.dev/tags/algorithms?ref=roadmapsh) diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/101-tree-algorithms/index.md b/src/data/roadmaps/computer-science/content/104-common-algorithms/101-tree-algorithms/index.md deleted file mode 100644 index f5debc81f..000000000 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/101-tree-algorithms/index.md +++ /dev/null @@ -1,12 +0,0 @@ -# Tree Algorithms - -A tree is non-linear and a hierarchical data structure consisting of a collection of nodes such that each node of the tree stores a value and a list of references to other nodes (the “children”). - -Here is the list of common tree algorithms: - -- Tree Traversal: - - Pre-Order Traversal - - In-Order Traversal - - Post-Order Traversal -- Breadth First Search -- Depth First Search diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/index.md b/src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/index.md deleted file mode 100644 index b7f0028fb..000000000 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/index.md +++ /dev/null @@ -1,15 +0,0 @@ -# Graph Algorithms - -Graphs in data structures are non-linear data structures made up of a finite number of nodes or vertices and the edges that connect them. Graphs in data structures are used to address real-world problems in which it represents the problem area as a network like telephone networks, circuit networks, and social networks. - -Visit the following resources to learn more: - -- [@video@Graph Algorithms I - Topological Sorting, Minimum Spanning Trees, Prims Algorithm - Lecture 6](https://www.youtube.com/watch?v=i_AQT_XfvD8\&index=6\&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm) -- [@video@Graph Algorithms II - DFS, BFS, Kruskals Algorithm, Union Find Data Structure - Lecture 7](https://www.youtube.com/watch?v=ufj5_bppBsA\&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm\&index=7) -- [@video@Graph Algorithms III: Shortest Path - Lecture 8](https://www.youtube.com/watch?v=DiedsPsMKXc\&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm\&index=8) -- [@video@Graph Alg. IV: Intro to geometric algorithms - Lecture 9](https://www.youtube.com/watch?v=XIAQRlNkJAw\&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm\&index=9) -- [@video@Strongly Connected Components Kosarajus Algorithm Graph Algorithm](https://www.youtube.com/watch?v=RpgcYiky7uw) -- [@video@Shortest Path Algorithms (playlist) in 16 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZO-Y-H3xIC9DGSfVYJng9Yw) -- [@video@Minimum Spanning Trees (playlist) in 4 minutes](https://www.youtube.com/playlist?list=PL9xmBV_5YoZObEi3Hf6lmyW-CBfs7nkOV) -- [@course@Algorithms on Graphs - Coursera](https://www.coursera.org/learn/algorithms-on-graphs) -- [@feed@Explore top posts about Algorithms](https://app.daily.dev/tags/algorithms?ref=roadmapsh) diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/104-greedy-algorithms/index.md b/src/data/roadmaps/computer-science/content/104-common-algorithms/104-greedy-algorithms/index.md deleted file mode 100644 index 2aace1e67..000000000 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/104-greedy-algorithms/index.md +++ /dev/null @@ -1,10 +0,0 @@ -# Greedy Algorithms - -Greedy algorithms are a type of algorithm that always makes the choice that seems to be the best at that moment. This means that it makes a locally-optimal choice in the hope that this choice will lead to a globally-optimal solution. - -Visit the following resources to learn more: - -- [@article@Greedy Algorithms - Geeks for Geeks](https://www.geeksforgeeks.org/greedy-algorithms/) -- [@article@Greedy Algorithms - Programiz](https://www.programiz.com/dsa/greedy-algorithm) -- [@video@Greedy Algorithms Tutorial – Solve Coding Challenges](https://www.youtube.com/watch?v=bC7o8P_Ste4) -- [@feed@Explore top posts about Algorithms](https://app.daily.dev/tags/algorithms?ref=roadmapsh) diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/105-back-tracking-algorithms/index.md b/src/data/roadmaps/computer-science/content/104-common-algorithms/105-back-tracking-algorithms/index.md deleted file mode 100644 index 6c3b90e53..000000000 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/105-back-tracking-algorithms/index.md +++ /dev/null @@ -1,9 +0,0 @@ -# Back Tracking Algorithm - -Back tracking algorithms are used to solve problems that can be broken down into smaller sub-problems. The algorithm tries to solve each sub-problem and if it fails, it backtracks and tries to solve the sub-problem in a different way. - -Visit the following resources to learn more: - -- [@article@Backtracking Algorithms](https://www.geeksforgeeks.org/backtracking-algorithms) -- [@article@Backtracking Algorithm](https://www.programiz.com/dsa/backtracking-algorithm) -- [@feed@Explore top posts about Algorithms](https://app.daily.dev/tags/algorithms?ref=roadmapsh) diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/107-recursion/index.md b/src/data/roadmaps/computer-science/content/104-common-algorithms/107-recursion/index.md deleted file mode 100644 index 656d5cef2..000000000 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/107-recursion/index.md +++ /dev/null @@ -1,13 +0,0 @@ -# Recursion - -Recursion is a method of solving problems where the solution depends on solutions to smaller instances of the same problem. A recursive algorithm must have a base case. A recursive algorithm calls itself, recursively. - -Visit the following resources to learn more: - -- [@video@Recursion in 100 Seconds](https://www.youtube.com/watch?v=rf60MejMz3E) -- [@video@Lecture 8 | Programming Abstractions (Stanford)](https://www.youtube.com/watch?v=gl3emqCuueQ\&list=PLFE6E58F856038C69\&index=9) -- [@video@Lecture 9 | Programming Abstractions (Stanford)](https://www.youtube.com/watch?v=uFJhEPrbycQ\&list=PLFE6E58F856038C69\&index=10) -- [@video@Lecture 10 | Programming Abstractions (Stanford)](https://www.youtube.com/watch?v=NdF1QDTRkck\&list=PLFE6E58F856038C69\&index=11) -- [@video@Lecture 11 | Programming Abstractions (Stanford)](https://www.youtube.com/watch?v=p-gpaIGRCQI\&list=PLFE6E58F856038C69\&index=12) -- [@video@5 Simple Steps for Solving Any Recursive Problem](https://www.youtube.com/watch?v=ngCos392W4w) -- [@feed@Explore top posts about Recursion](https://app.daily.dev/tags/recursion?ref=roadmapsh) diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/108-search-algorithms/index.md b/src/data/roadmaps/computer-science/content/104-common-algorithms/108-search-algorithms/index.md deleted file mode 100644 index 75faae7c5..000000000 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/108-search-algorithms/index.md +++ /dev/null @@ -1,9 +0,0 @@ -# Search Algorithms - -Search algorithms are used to find a specific item in a collection of items. For example, if you have a list of names and you want to find a specific name, you can use a search algorithm to find that name. - -Visit the following resources to learn more: - -- [@article@Searching Algorithms](https://www.geeksforgeeks.org/searching-algorithms/) -- [@article@Search Algorithms – Linear Search and Binary Search](https://www.freecodecamp.org/news/search-algorithms-linear-and-binary-search-explained/) -- [@feed@Explore top posts about Algorithms](https://app.daily.dev/tags/algorithms?ref=roadmapsh) diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/109-cache-algorithms/index.md b/src/data/roadmaps/computer-science/content/104-common-algorithms/109-cache-algorithms/index.md deleted file mode 100644 index b9c3b41aa..000000000 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/109-cache-algorithms/index.md +++ /dev/null @@ -1,9 +0,0 @@ -# Cache Algorithms - -Cache algorithms are used to manage the cache memory of a computer. Cache memory is a small amount of memory that is used to store data that is frequently accessed. This allows the computer to access the data faster than if it had to go to the main memory. Cache algorithms are used to determine which data should be stored in the cache memory and which data should be removed from the cache memory. - -Visit the following resources to learn more: - -- [@article@Cache Replacement Algorithms: How To Efficiently Manage The Cache Storage](https://dev.to/satrobit/cache-replacement-algorithms-how-to-efficiently-manage-the-cache-storage-2ne1) -- [@video@14. Caching and Cache-Efficient Algorithms](https://www.youtube.com/watch?v=xDKnMXtZKq8) -- [@feed@Explore top posts about Algorithms](https://app.daily.dev/tags/algorithms?ref=roadmapsh) diff --git a/src/data/roadmaps/computer-science/content/115-balanced-search-trees/103-the-2-3-4-trees.md b/src/data/roadmaps/computer-science/content/2-3-4-trees@IaPd_zuLbiOCwoSHQLoIG.md similarity index 100% rename from src/data/roadmaps/computer-science/content/115-balanced-search-trees/103-the-2-3-4-trees.md rename to src/data/roadmaps/computer-science/content/2-3-4-trees@IaPd_zuLbiOCwoSHQLoIG.md diff --git a/src/data/roadmaps/computer-science/content/115-balanced-search-trees/102-the-2-3-search-trees.md b/src/data/roadmaps/computer-science/content/2-3-search-trees@3jiV9R82qxpqIGfpEq_wK.md similarity index 99% rename from src/data/roadmaps/computer-science/content/115-balanced-search-trees/102-the-2-3-search-trees.md rename to src/data/roadmaps/computer-science/content/2-3-search-trees@3jiV9R82qxpqIGfpEq_wK.md index 26fce4154..6b6c8cf95 100644 --- a/src/data/roadmaps/computer-science/content/115-balanced-search-trees/102-the-2-3-search-trees.md +++ b/src/data/roadmaps/computer-science/content/2-3-search-trees@3jiV9R82qxpqIGfpEq_wK.md @@ -8,4 +8,4 @@ Visit the following resources to learn more: - [@video@23-Tree Intuition and Definition](https://www.youtube.com/watch?v=C3SsdUqasD4&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6&index=2) - [@video@Binary View of 23-Tree](https://www.youtube.com/watch?v=iYvBtGKsqSg&index=3&list=PLA5Lqm4uh9Bbq-E0ZnqTIa8LRaL77ica6) -- [@video@2-3 Trees (student recitation)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) +- [@video@2-3 Trees (student recitation)](https://www.youtube.com/watch?v=TOb1tuEZ2X4&index=5&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp) \ No newline at end of file diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/104-a-star-algorithm.md b/src/data/roadmaps/computer-science/content/a-algorithm@Yrk2PLUa-_FAPlhCkMl3e.md similarity index 100% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/104-a-star-algorithm.md rename to src/data/roadmaps/computer-science/content/a-algorithm@Yrk2PLUa-_FAPlhCkMl3e.md diff --git a/src/data/roadmaps/computer-science/content/117-databases/109-acid-model.md b/src/data/roadmaps/computer-science/content/acid-model@W5B-v-BFcCRmuN0L1m6PI.md similarity index 100% rename from src/data/roadmaps/computer-science/content/117-databases/109-acid-model.md rename to src/data/roadmaps/computer-science/content/acid-model@W5B-v-BFcCRmuN0L1m6PI.md diff --git a/src/data/roadmaps/computer-science/content/110-common-uml-diagrams/103-activity-diagrams.md b/src/data/roadmaps/computer-science/content/activity-diagrams@ptfRNiU0mC0Q5SLA_FWZu.md similarity index 100% rename from src/data/roadmaps/computer-science/content/110-common-uml-diagrams/103-activity-diagrams.md rename to src/data/roadmaps/computer-science/content/activity-diagrams@ptfRNiU0mC0Q5SLA_FWZu.md diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/106-graph/103-graph-representation.md b/src/data/roadmaps/computer-science/content/adjacency-list@rTnKJcPniUtqvfOyC88N0.md similarity index 100% rename from src/data/roadmaps/computer-science/content/102-data-structures/106-graph/103-graph-representation.md rename to src/data/roadmaps/computer-science/content/adjacency-list@rTnKJcPniUtqvfOyC88N0.md diff --git a/src/data/roadmaps/computer-science/content/adjacency-matrix@HZ1kk0TQ13FLC9t13BZl5.md b/src/data/roadmaps/computer-science/content/adjacency-matrix@HZ1kk0TQ13FLC9t13BZl5.md new file mode 100644 index 000000000..cd9f7a399 --- /dev/null +++ b/src/data/roadmaps/computer-science/content/adjacency-matrix@HZ1kk0TQ13FLC9t13BZl5.md @@ -0,0 +1 @@ +# Adjacency Matrix \ No newline at end of file diff --git a/src/data/roadmaps/computer-science/content/111-design-patterns/101-architectural-patterns.md b/src/data/roadmaps/computer-science/content/architectural-patterns@BGhJNtszbYJtKyhqr2jax.md similarity index 100% rename from src/data/roadmaps/computer-science/content/111-design-patterns/101-architectural-patterns.md rename to src/data/roadmaps/computer-science/content/architectural-patterns@BGhJNtszbYJtKyhqr2jax.md diff --git a/src/data/roadmaps/computer-science/content/116-system-design/107-architectural-styles.md b/src/data/roadmaps/computer-science/content/architectural-styles@X1wv7xV69IEzepg8bF8oZ.md similarity index 100% rename from src/data/roadmaps/computer-science/content/116-system-design/107-architectural-styles.md rename to src/data/roadmaps/computer-science/content/architectural-styles@X1wv7xV69IEzepg8bF8oZ.md diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/100-array.md b/src/data/roadmaps/computer-science/content/array@TwW6SO2IXqkxJXVjLzdwU.md similarity index 100% rename from src/data/roadmaps/computer-science/content/102-data-structures/100-array.md rename to src/data/roadmaps/computer-science/content/array@TwW6SO2IXqkxJXVjLzdwU.md diff --git a/src/data/roadmaps/computer-science/content/109-character-encodings/101-ascii.md b/src/data/roadmaps/computer-science/content/ascii@hmwsNp60alS43kJg4A_Og.md similarity index 100% rename from src/data/roadmaps/computer-science/content/109-character-encodings/101-ascii.md rename to src/data/roadmaps/computer-science/content/ascii@hmwsNp60alS43kJg4A_Og.md diff --git a/src/data/roadmaps/computer-science/content/103-asymptotic-notation/index.md b/src/data/roadmaps/computer-science/content/asymptotic-notation@UpBrpmrUwYUB9eesNxCq5.md similarity index 100% rename from src/data/roadmaps/computer-science/content/103-asymptotic-notation/index.md rename to src/data/roadmaps/computer-science/content/asymptotic-notation@UpBrpmrUwYUB9eesNxCq5.md diff --git a/src/data/roadmaps/computer-science/content/115-balanced-search-trees/100-avl-trees.md b/src/data/roadmaps/computer-science/content/avl-trees@OUistS7H7hQQxVV-lOg39.md similarity index 100% rename from src/data/roadmaps/computer-science/content/115-balanced-search-trees/100-avl-trees.md rename to src/data/roadmaps/computer-science/content/avl-trees@OUistS7H7hQQxVV-lOg39.md diff --git a/src/data/roadmaps/computer-science/content/115-balanced-search-trees/105-b-tree.md b/src/data/roadmaps/computer-science/content/b-tree@s0Pi6CemUUsmZSEu2j2gH.md similarity index 100% rename from src/data/roadmaps/computer-science/content/115-balanced-search-trees/105-b-tree.md rename to src/data/roadmaps/computer-science/content/b-tree@s0Pi6CemUUsmZSEu2j2gH.md diff --git a/src/data/roadmaps/computer-science/content/115-balanced-search-trees/index.md b/src/data/roadmaps/computer-science/content/balanced-search-trees@7DF3UhefOSqqTuccH8c8X.md similarity index 100% rename from src/data/roadmaps/computer-science/content/115-balanced-search-trees/index.md rename to src/data/roadmaps/computer-science/content/balanced-search-trees@7DF3UhefOSqqTuccH8c8X.md diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/105-tree/104-balanced-tree.md b/src/data/roadmaps/computer-science/content/balanced-tree@ZaWGLvZyu4sIPn-zwVISN.md similarity index 100% rename from src/data/roadmaps/computer-science/content/102-data-structures/105-tree/104-balanced-tree.md rename to src/data/roadmaps/computer-science/content/balanced-tree@ZaWGLvZyu4sIPn-zwVISN.md diff --git a/src/data/roadmaps/computer-science/content/117-databases/110-base-model.md b/src/data/roadmaps/computer-science/content/base@q3nRhTYS5wg9tYnQe2sCF.md similarity index 80% rename from src/data/roadmaps/computer-science/content/117-databases/110-base-model.md rename to src/data/roadmaps/computer-science/content/base@q3nRhTYS5wg9tYnQe2sCF.md index fcc1d9189..b278da770 100644 --- a/src/data/roadmaps/computer-science/content/117-databases/110-base-model.md +++ b/src/data/roadmaps/computer-science/content/base@q3nRhTYS5wg9tYnQe2sCF.md @@ -8,4 +8,3 @@ The rise in popularity of NoSQL databases provided a flexible and fluidity with Visit the following resources to learn more: -- [@article@ACID Model vs BASE Model For Database](https://www.geeksforgeeks.org/acid-model-vs-base-model-for-database/) diff --git a/src/data/roadmaps/computer-science/content/112-basic-math-skills/index.md b/src/data/roadmaps/computer-science/content/basic-math-skills@cdNi0EYrQ5nsgNxFVnXL8.md similarity index 100% rename from src/data/roadmaps/computer-science/content/112-basic-math-skills/index.md rename to src/data/roadmaps/computer-science/content/basic-math-skills@cdNi0EYrQ5nsgNxFVnXL8.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/102-bellman-fords-algorithm.md b/src/data/roadmaps/computer-science/content/bellman-fords-algorithm@eY4nK2lPYsrR-a_8y2sao.md similarity index 100% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/102-bellman-fords-algorithm.md rename to src/data/roadmaps/computer-science/content/bellman-fords-algorithm@eY4nK2lPYsrR-a_8y2sao.md diff --git a/src/data/roadmaps/computer-science/content/108-endianess/100-big-endian.md b/src/data/roadmaps/computer-science/content/big-endian@U8AgY6I-62mN5Ohg9MsG6.md similarity index 78% rename from src/data/roadmaps/computer-science/content/108-endianess/100-big-endian.md rename to src/data/roadmaps/computer-science/content/big-endian@U8AgY6I-62mN5Ohg9MsG6.md index df44294d1..99b3f1ee2 100644 --- a/src/data/roadmaps/computer-science/content/108-endianess/100-big-endian.md +++ b/src/data/roadmaps/computer-science/content/big-endian@U8AgY6I-62mN5Ohg9MsG6.md @@ -4,5 +4,4 @@ Big endian is the most common type of endianness. In this type, the most signifi Visit the following resources to learn more: -- [@article@Little and Big Endian Mystery](https://www.geeksforgeeks.org/little-and-big-endian-mystery/) - [@video@Lecture 22. Big Endian and Little Endian](https://www.youtube.com/watch?v=T1C9Kj_78ek) diff --git a/src/data/roadmaps/computer-science/content/103-asymptotic-notation/100-big-o-notation.md b/src/data/roadmaps/computer-science/content/big-o@c-NrTtJuNihbHzyPEOKTW.md similarity index 100% rename from src/data/roadmaps/computer-science/content/103-asymptotic-notation/100-big-o-notation.md rename to src/data/roadmaps/computer-science/content/big-o@c-NrTtJuNihbHzyPEOKTW.md diff --git a/src/data/roadmaps/computer-science/content/103-asymptotic-notation/102-big-omega-notation.md b/src/data/roadmaps/computer-science/content/big-omega@X33735aeAVSlJ6yv9GS-h.md similarity index 100% rename from src/data/roadmaps/computer-science/content/103-asymptotic-notation/102-big-omega-notation.md rename to src/data/roadmaps/computer-science/content/big-omega@X33735aeAVSlJ6yv9GS-h.md diff --git a/src/data/roadmaps/computer-science/content/103-asymptotic-notation/101-big-theta-notation.md b/src/data/roadmaps/computer-science/content/big-theta@ThLpVZQIJ4diY5m0dik8m.md similarity index 100% rename from src/data/roadmaps/computer-science/content/103-asymptotic-notation/101-big-theta-notation.md rename to src/data/roadmaps/computer-science/content/big-theta@ThLpVZQIJ4diY5m0dik8m.md diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/105-tree/101-binary-search-tree.md b/src/data/roadmaps/computer-science/content/binary-search-tree@et7l85gnxjvzD2tDyHT_T.md similarity index 100% rename from src/data/roadmaps/computer-science/content/102-data-structures/105-tree/101-binary-search-tree.md rename to src/data/roadmaps/computer-science/content/binary-search-tree@et7l85gnxjvzD2tDyHT_T.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/108-search-algorithms/100-binary-search.md b/src/data/roadmaps/computer-science/content/binary-search@8kTg4O9MrTHRUrp6U-ctA.md similarity index 100% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/108-search-algorithms/100-binary-search.md rename to src/data/roadmaps/computer-science/content/binary-search@8kTg4O9MrTHRUrp6U-ctA.md diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/105-tree/100-binary-tree.md b/src/data/roadmaps/computer-science/content/binary-tree@G9dnegZ6zNvxrCZ3O_b_z.md similarity index 100% rename from src/data/roadmaps/computer-science/content/102-data-structures/105-tree/100-binary-tree.md rename to src/data/roadmaps/computer-science/content/binary-tree@G9dnegZ6zNvxrCZ3O_b_z.md diff --git a/src/data/roadmaps/computer-science/content/106-bitwise-operators.md b/src/data/roadmaps/computer-science/content/bitwise-operators@hTPLcuOW7eEE5oYhNfmOG.md similarity index 100% rename from src/data/roadmaps/computer-science/content/106-bitwise-operators.md rename to src/data/roadmaps/computer-science/content/bitwise-operators@hTPLcuOW7eEE5oYhNfmOG.md diff --git a/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/102-boyer-moore.md b/src/data/roadmaps/computer-science/content/boyer-moore@p6qub32jcaGloHXUDUrlG.md similarity index 79% rename from src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/102-boyer-moore.md rename to src/data/roadmaps/computer-science/content/boyer-moore@p6qub32jcaGloHXUDUrlG.md index 597e4ac32..1e20f1c37 100644 --- a/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/102-boyer-moore.md +++ b/src/data/roadmaps/computer-science/content/boyer-moore@p6qub32jcaGloHXUDUrlG.md @@ -4,6 +4,5 @@ Boyer Moore algorithm is a string searching algorithm that is used to find the i Visit the following resources to learn more: -- [@article@Boyer Moore Algorithm for Pattern Searching](https://www.geeksforgeeks.org/boyer-moore-algorithm-for-pattern-searching/) - [@article@The Boyer-Moore Algorithm](https://www.javatpoint.com/daa-boyer-moore-algorithm) - [@course@Boyer Moore Algorithm](https://www.coursera.org/learn/algorithms-part2/lecture/CYxOT/boyer-moore) diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/101-tree-algorithms/103-breadth-first-search.md b/src/data/roadmaps/computer-science/content/breadth-first-search@Ke_ch4fnuKIiGAXUM_LPP.md similarity index 100% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/101-tree-algorithms/103-breadth-first-search.md rename to src/data/roadmaps/computer-science/content/breadth-first-search@Ke_ch4fnuKIiGAXUM_LPP.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/100-breadth-first-search.md b/src/data/roadmaps/computer-science/content/breadth-first-search@vcV6TEM_PqXxtThdfMKGw.md similarity index 78% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/100-breadth-first-search.md rename to src/data/roadmaps/computer-science/content/breadth-first-search@vcV6TEM_PqXxtThdfMKGw.md index b7b739129..19a92d58b 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/100-breadth-first-search.md +++ b/src/data/roadmaps/computer-science/content/breadth-first-search@vcV6TEM_PqXxtThdfMKGw.md @@ -4,6 +4,5 @@ Breadth first search for a graph is a way to traverse the graph. It starts at th Visit the following resources to learn more: -- [@article@Breadth First Search or BFS for a Graph](https://www.geeksforgeeks.org/breadth-first-search-or-bfs-for-a-graph/) - [@video@Graph Algorithms II - DFS, BFS, Kruskals Algorithm, Union Find Data Structure - Lecture 7](https://www.youtube.com/watch?v=ufj5_bppBsA&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&index=7) - [@video@Breadth-first search in 4 minutes](https://www.youtube.com/watch?v=hz5ytanv5qe) \ No newline at end of file diff --git a/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/100-brute-force-search.md b/src/data/roadmaps/computer-science/content/brute-force-search@g3b0kt1fCAjjYyS2WelWi.md similarity index 100% rename from src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/100-brute-force-search.md rename to src/data/roadmaps/computer-science/content/brute-force-search@g3b0kt1fCAjjYyS2WelWi.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/100-bubble-sort.md b/src/data/roadmaps/computer-science/content/bubble-sort@4wGBYFZpcdTt97WTbSazx.md similarity index 100% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/100-bubble-sort.md rename to src/data/roadmaps/computer-science/content/bubble-sort@4wGBYFZpcdTt97WTbSazx.md diff --git a/src/data/roadmaps/computer-science/content/101-pick-a-language/100-c-plus-plus.md b/src/data/roadmaps/computer-science/content/c@1kQJs-3Aw8Bi7d_Xh67zS.md similarity index 100% rename from src/data/roadmaps/computer-science/content/101-pick-a-language/100-c-plus-plus.md rename to src/data/roadmaps/computer-science/content/c@1kQJs-3Aw8Bi7d_Xh67zS.md diff --git a/src/data/roadmaps/computer-science/content/101-pick-a-language/105-c-sharp.md b/src/data/roadmaps/computer-science/content/c@jHKCLfLml8oZyj4829gx0.md similarity index 100% rename from src/data/roadmaps/computer-science/content/101-pick-a-language/105-c-sharp.md rename to src/data/roadmaps/computer-science/content/c@jHKCLfLml8oZyj4829gx0.md diff --git a/src/data/roadmaps/computer-science/content/101-pick-a-language/101-c.md b/src/data/roadmaps/computer-science/content/c@n4IsklfYJXFIyF1rGWuEa.md similarity index 100% rename from src/data/roadmaps/computer-science/content/101-pick-a-language/101-c.md rename to src/data/roadmaps/computer-science/content/c@n4IsklfYJXFIyF1rGWuEa.md diff --git a/src/data/roadmaps/computer-science/content/116-system-design/102-caching.md b/src/data/roadmaps/computer-science/content/caching@4u5w9QCptLWuY9O7_UU8V.md similarity index 100% rename from src/data/roadmaps/computer-science/content/116-system-design/102-caching.md rename to src/data/roadmaps/computer-science/content/caching@4u5w9QCptLWuY9O7_UU8V.md diff --git a/src/data/roadmaps/computer-science/content/116-system-design/105-cap-theorem.md b/src/data/roadmaps/computer-science/content/cap-theorem@GZI8EsEqiMJX3fSbO_E-7.md similarity index 100% rename from src/data/roadmaps/computer-science/content/116-system-design/105-cap-theorem.md rename to src/data/roadmaps/computer-science/content/cap-theorem@GZI8EsEqiMJX3fSbO_E-7.md diff --git a/src/data/roadmaps/computer-science/content/117-databases/111-cap-theorem.md b/src/data/roadmaps/computer-science/content/cap-theorem@uqfeiQ9K--QkGNwks4kjk.md similarity index 100% rename from src/data/roadmaps/computer-science/content/117-databases/111-cap-theorem.md rename to src/data/roadmaps/computer-science/content/cap-theorem@uqfeiQ9K--QkGNwks4kjk.md diff --git a/src/data/roadmaps/computer-science/content/116-system-design/103-cdn.md b/src/data/roadmaps/computer-science/content/cdn@r8V9bZpc98SrLvXc070bZ.md similarity index 100% rename from src/data/roadmaps/computer-science/content/116-system-design/103-cdn.md rename to src/data/roadmaps/computer-science/content/cdn@r8V9bZpc98SrLvXc070bZ.md diff --git a/src/data/roadmaps/computer-science/content/109-character-encodings/index.md b/src/data/roadmaps/computer-science/content/character-encodings@DtG9EJonWi4_2oQ4fWOKY.md similarity index 100% rename from src/data/roadmaps/computer-science/content/109-character-encodings/index.md rename to src/data/roadmaps/computer-science/content/character-encodings@DtG9EJonWi4_2oQ4fWOKY.md diff --git a/src/data/roadmaps/computer-science/content/110-common-uml-diagrams/100-class-diagrams.md b/src/data/roadmaps/computer-science/content/class-diagrams@FZ8znJSz8PvQlnEyRLXmQ.md similarity index 100% rename from src/data/roadmaps/computer-science/content/110-common-uml-diagrams/100-class-diagrams.md rename to src/data/roadmaps/computer-science/content/class-diagrams@FZ8znJSz8PvQlnEyRLXmQ.md diff --git a/src/data/roadmaps/computer-science/content/116-system-design/111-cloud-design-patterns.md b/src/data/roadmaps/computer-science/content/cloud-design-ptterns@YMO9oD_sbzyDZPNU2xZwe.md similarity index 100% rename from src/data/roadmaps/computer-science/content/116-system-design/111-cloud-design-patterns.md rename to src/data/roadmaps/computer-science/content/cloud-design-ptterns@YMO9oD_sbzyDZPNU2xZwe.md diff --git a/src/data/roadmaps/computer-science/content/116-system-design/101-clustering.md b/src/data/roadmaps/computer-science/content/clustering@wAsZ-M5N9ERufQnBaXbAE.md similarity index 100% rename from src/data/roadmaps/computer-science/content/116-system-design/101-clustering.md rename to src/data/roadmaps/computer-science/content/clustering@wAsZ-M5N9ERufQnBaXbAE.md diff --git a/src/data/roadmaps/computer-science/content/113-complexity-classes/102-co-np.md b/src/data/roadmaps/computer-science/content/co-np@pLBfkzi0qfgVRqi_4AmMI.md similarity index 92% rename from src/data/roadmaps/computer-science/content/113-complexity-classes/102-co-np.md rename to src/data/roadmaps/computer-science/content/co-np@pLBfkzi0qfgVRqi_4AmMI.md index dab64df25..28509c6f7 100644 --- a/src/data/roadmaps/computer-science/content/113-complexity-classes/102-co-np.md +++ b/src/data/roadmaps/computer-science/content/co-np@pLBfkzi0qfgVRqi_4AmMI.md @@ -4,7 +4,6 @@ Co-NP stands for the complement of NP Class. It means if the answer to a problem Visit the following resources to learn more: -- [@article@Types of Complexity Classes | P, NP, CoNP, NP hard and NP complete](https://www.geeksforgeeks.org/types-of-complexity-classes-p-np-conp-np-hard-and-np-complete/) - [@article@Trying to understand P vs NP vs NP Complete vs NP Hard](https://softwareengineering.stackexchange.com/questions/308178/trying-to-understand-p-vs-np-vs-np-complete-vs-np-hard) - [@video@Complexity: P, NP, NP-completeness, Reductions](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [@video@Complexity: Approximation Algorithms](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) diff --git a/src/data/roadmaps/computer-science/content/112-basic-math-skills/101-combinatorics.md b/src/data/roadmaps/computer-science/content/combinatorics@lWnAY0DgrUOmT6yqnxeBN.md similarity index 100% rename from src/data/roadmaps/computer-science/content/112-basic-math-skills/101-combinatorics.md rename to src/data/roadmaps/computer-science/content/combinatorics@lWnAY0DgrUOmT6yqnxeBN.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/index.md b/src/data/roadmaps/computer-science/content/common-algorithms@7a6-AnBI-3tAU1dkOvPkx.md similarity index 100% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/index.md rename to src/data/roadmaps/computer-science/content/common-algorithms@7a6-AnBI-3tAU1dkOvPkx.md diff --git a/src/data/roadmaps/computer-science/content/110-common-uml-diagrams/index.md b/src/data/roadmaps/computer-science/content/common-uml-diagrams@DMuMsEowpevTCALtziwTB.md similarity index 100% rename from src/data/roadmaps/computer-science/content/110-common-uml-diagrams/index.md rename to src/data/roadmaps/computer-science/content/common-uml-diagrams@DMuMsEowpevTCALtziwTB.md diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/105-tree/103-complete-binary-tree.md b/src/data/roadmaps/computer-science/content/complete-binary-tree@Jx1WWCjm8jkfAGtHv15n1.md similarity index 77% rename from src/data/roadmaps/computer-science/content/102-data-structures/105-tree/103-complete-binary-tree.md rename to src/data/roadmaps/computer-science/content/complete-binary-tree@Jx1WWCjm8jkfAGtHv15n1.md index ee028f274..ef00407c7 100644 --- a/src/data/roadmaps/computer-science/content/102-data-structures/105-tree/103-complete-binary-tree.md +++ b/src/data/roadmaps/computer-science/content/complete-binary-tree@Jx1WWCjm8jkfAGtHv15n1.md @@ -4,5 +4,4 @@ A complete binary tree is a special type of binary tree where all the levels of Visit the following resources to learn more: -- [@article@Complete Binary Tree - Geeks for Geeks](https://www.geeksforgeeks.org/complete-binary-tree) - [@article@Complete Binary Tree - Programiz](https://www.programiz.com/dsa/complete-binary-tree) diff --git a/src/data/roadmaps/computer-science/content/113-complexity-classes/index.md b/src/data/roadmaps/computer-science/content/complexity-classes@YLCmZvoLkhOk9wlgYW2Ms.md similarity index 93% rename from src/data/roadmaps/computer-science/content/113-complexity-classes/index.md rename to src/data/roadmaps/computer-science/content/complexity-classes@YLCmZvoLkhOk9wlgYW2Ms.md index 556fdcb61..c4b77494c 100644 --- a/src/data/roadmaps/computer-science/content/113-complexity-classes/index.md +++ b/src/data/roadmaps/computer-science/content/complexity-classes@YLCmZvoLkhOk9wlgYW2Ms.md @@ -4,7 +4,6 @@ In computer science, there exist some problems whose solutions are not yet found Visit the following resources to learn more: -- [@article@Types of Complexity Classes | P, NP, CoNP, NP hard and NP complete](https://www.geeksforgeeks.org/types-of-complexity-classes-p-np-conp-np-hard-and-np-complete/) - [@article@Trying to understand P vs NP vs NP Complete vs NP Hard](https://softwareengineering.stackexchange.com/questions/308178/trying-to-understand-p-vs-np-vs-np-complete-vs-np-hard) - [@video@Complexity: P, NP, NP-completeness, Reductions](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [@video@Complexity: Approximation Algorithms](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) diff --git a/src/data/roadmaps/computer-science/content/121-processes-and-threads/103-concurrency-in-multiple-cores.md b/src/data/roadmaps/computer-science/content/concurrency-in-multiple-cores@xUo5Ox_HTgGyeQMDIkVyK.md similarity index 100% rename from src/data/roadmaps/computer-science/content/121-processes-and-threads/103-concurrency-in-multiple-cores.md rename to src/data/roadmaps/computer-science/content/concurrency-in-multiple-cores@xUo5Ox_HTgGyeQMDIkVyK.md diff --git a/src/data/roadmaps/computer-science/content/103-asymptotic-notation/103-common-runtimes/100-constant.md b/src/data/roadmaps/computer-science/content/constant@3F_QBv_sU39ehOxpurF88.md similarity index 100% rename from src/data/roadmaps/computer-science/content/103-asymptotic-notation/103-common-runtimes/100-constant.md rename to src/data/roadmaps/computer-science/content/constant@3F_QBv_sU39ehOxpurF88.md diff --git a/src/data/roadmaps/computer-science/content/120-how-computers-work/104-cpu-cache.md b/src/data/roadmaps/computer-science/content/cpu-cache@DjTQjMbika4_yTzrBpcmB.md similarity index 100% rename from src/data/roadmaps/computer-science/content/120-how-computers-work/104-cpu-cache.md rename to src/data/roadmaps/computer-science/content/cpu-cache@DjTQjMbika4_yTzrBpcmB.md diff --git a/src/data/roadmaps/computer-science/content/121-processes-and-threads/104-cpu-interrupts.md b/src/data/roadmaps/computer-science/content/cpu-interrupts@cpQvB0qMDL3-NWret7oeA.md similarity index 100% rename from src/data/roadmaps/computer-science/content/121-processes-and-threads/104-cpu-interrupts.md rename to src/data/roadmaps/computer-science/content/cpu-interrupts@cpQvB0qMDL3-NWret7oeA.md diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/index.md b/src/data/roadmaps/computer-science/content/data-structures@NM7q5REW1sJgMhxJhPpLT.md similarity index 91% rename from src/data/roadmaps/computer-science/content/102-data-structures/index.md rename to src/data/roadmaps/computer-science/content/data-structures@NM7q5REW1sJgMhxJhPpLT.md index 58bd956aa..1deb00610 100644 --- a/src/data/roadmaps/computer-science/content/102-data-structures/index.md +++ b/src/data/roadmaps/computer-science/content/data-structures@NM7q5REW1sJgMhxJhPpLT.md @@ -4,7 +4,6 @@ As the name indicates itself, a **Data Structure** is a way of organizing the da Visit the following resources to learn more: -- [@article@What are Data Structures?](https://www.geeksforgeeks.org/data-structures) - [@article@Data Structures and Algorithms](https://www.javatpoint.com/data-structure-tutorial) - [@course@Data Structures and Algorithms By Google](https://techdevguide.withgoogle.com/paths/data-structures-and-algorithms/) - [@video@Data Structures Illustrated](https://www.youtube.com/watch?v=9rhT3P1MDHk\&list=PLkZYeFmDuaN2-KUIv-mvbjfKszIGJ4FaY) diff --git a/src/data/roadmaps/computer-science/content/117-databases/117-database-federation.md b/src/data/roadmaps/computer-science/content/database-federation@3r21avMlo0xFB9i7PHccX.md similarity index 100% rename from src/data/roadmaps/computer-science/content/117-databases/117-database-federation.md rename to src/data/roadmaps/computer-science/content/database-federation@3r21avMlo0xFB9i7PHccX.md diff --git a/src/data/roadmaps/computer-science/content/117-databases/index.md b/src/data/roadmaps/computer-science/content/databases@zvlTQ0A-My4QDrslp_lru.md similarity index 100% rename from src/data/roadmaps/computer-science/content/117-databases/index.md rename to src/data/roadmaps/computer-science/content/databases@zvlTQ0A-My4QDrslp_lru.md diff --git a/src/data/roadmaps/computer-science/content/117-databases/106-dcl.md b/src/data/roadmaps/computer-science/content/dcl@4bUmfuP2qgcli8I2Vm9zh.md similarity index 64% rename from src/data/roadmaps/computer-science/content/117-databases/106-dcl.md rename to src/data/roadmaps/computer-science/content/dcl@4bUmfuP2qgcli8I2Vm9zh.md index f78bcc289..2ec36390c 100644 --- a/src/data/roadmaps/computer-science/content/117-databases/106-dcl.md +++ b/src/data/roadmaps/computer-science/content/dcl@4bUmfuP2qgcli8I2Vm9zh.md @@ -4,4 +4,3 @@ DCL includes commands such as GRANT and REVOKE which mainly deal with the rights Visit the following resources to learn more: -- [@article@SQL | DDL, DQL, DML, DCL and TCL Commands](https://www.geeksforgeeks.org/sql-ddl-dql-dml-dcl-tcl-commands/) diff --git a/src/data/roadmaps/computer-science/content/117-databases/103-ddl.md b/src/data/roadmaps/computer-science/content/ddl@ii1vF74u3yrFNlw_21b3B.md similarity index 82% rename from src/data/roadmaps/computer-science/content/117-databases/103-ddl.md rename to src/data/roadmaps/computer-science/content/ddl@ii1vF74u3yrFNlw_21b3B.md index dcb28ed08..88d234310 100644 --- a/src/data/roadmaps/computer-science/content/117-databases/103-ddl.md +++ b/src/data/roadmaps/computer-science/content/ddl@ii1vF74u3yrFNlw_21b3B.md @@ -4,4 +4,3 @@ DDL or Data Definition Language actually consists of the SQL commands that can b Visit the following resources to learn more: -- [@article@SQL | DDL, DQL, DML, DCL and TCL Commands](https://www.geeksforgeeks.org/sql-ddl-dql-dml-dcl-tcl-commands/) diff --git a/src/data/roadmaps/computer-science/content/111-design-patterns/102-dependency-injection.md b/src/data/roadmaps/computer-science/content/dependency-injection@J7DKRklMtJ94Y-18Jo50r.md similarity index 100% rename from src/data/roadmaps/computer-science/content/111-design-patterns/102-dependency-injection.md rename to src/data/roadmaps/computer-science/content/dependency-injection@J7DKRklMtJ94Y-18Jo50r.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/101-depth-first-search.md b/src/data/roadmaps/computer-science/content/depth-first-search@Yf5gOIe7oiL19MjEVcpdw.md similarity index 62% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/101-depth-first-search.md rename to src/data/roadmaps/computer-science/content/depth-first-search@Yf5gOIe7oiL19MjEVcpdw.md index a733c61b8..859313b11 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/101-depth-first-search.md +++ b/src/data/roadmaps/computer-science/content/depth-first-search@Yf5gOIe7oiL19MjEVcpdw.md @@ -4,4 +4,3 @@ Depth first search is a graph traversal algorithm that starts at a root node and Visit the following resources to learn more: -- [@article@Depth First Search or DFS for a Graph](https://www.geeksforgeeks.org/depth-first-search-or-dfs-for-a-graph/?ref=lbp) diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/101-tree-algorithms/104-depth-first-search.md b/src/data/roadmaps/computer-science/content/depth-first-search@chzP5_t2gMi6MstxEzCi5.md similarity index 100% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/101-tree-algorithms/104-depth-first-search.md rename to src/data/roadmaps/computer-science/content/depth-first-search@chzP5_t2gMi6MstxEzCi5.md diff --git a/src/data/roadmaps/computer-science/content/111-design-patterns/index.md b/src/data/roadmaps/computer-science/content/design-patterns@-De1hU2ONGwhQmUpsyrCO.md similarity index 100% rename from src/data/roadmaps/computer-science/content/111-design-patterns/index.md rename to src/data/roadmaps/computer-science/content/design-patterns@-De1hU2ONGwhQmUpsyrCO.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/104-greedy-algorithms/100-dijkstras-algorithm.md b/src/data/roadmaps/computer-science/content/dijkstras-algorithm@l3X9UrEYTWs5kBXI1NNCf.md similarity index 100% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/104-greedy-algorithms/100-dijkstras-algorithm.md rename to src/data/roadmaps/computer-science/content/dijkstras-algorithm@l3X9UrEYTWs5kBXI1NNCf.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/103-dijkstras-algorithm.md b/src/data/roadmaps/computer-science/content/dijkstras-algorithm@oJstm-8c-4seWbIWcNgDv.md similarity index 100% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/102-graph-algorithms/103-dijkstras-algorithm.md rename to src/data/roadmaps/computer-science/content/dijkstras-algorithm@oJstm-8c-4seWbIWcNgDv.md diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/106-graph/100-directed-graph.md b/src/data/roadmaps/computer-science/content/directed-graph@6Jy8SXHuYA08h9iLjKFWR.md similarity index 100% rename from src/data/roadmaps/computer-science/content/102-data-structures/106-graph/100-directed-graph.md rename to src/data/roadmaps/computer-science/content/directed-graph@6Jy8SXHuYA08h9iLjKFWR.md diff --git a/src/data/roadmaps/computer-science/content/117-databases/104-dml.md b/src/data/roadmaps/computer-science/content/dml@tcQSH-eAvJUZuePTDjAIb.md similarity index 77% rename from src/data/roadmaps/computer-science/content/117-databases/104-dml.md rename to src/data/roadmaps/computer-science/content/dml@tcQSH-eAvJUZuePTDjAIb.md index cbe3924bc..f9615dcab 100644 --- a/src/data/roadmaps/computer-science/content/117-databases/104-dml.md +++ b/src/data/roadmaps/computer-science/content/dml@tcQSH-eAvJUZuePTDjAIb.md @@ -4,4 +4,3 @@ The SQL commands that deals with the manipulation of data present in the databas Visit the following resources to learn more: -- [@article@SQL | DDL, DQL, DML, DCL and TCL Commands](https://www.geeksforgeeks.org/sql-ddl-dql-dml-dcl-tcl-commands/) diff --git a/src/data/roadmaps/computer-science/content/118-networking/103-dns.md b/src/data/roadmaps/computer-science/content/dns@fYjoXB4rnkM5gg46sqVz5.md similarity index 100% rename from src/data/roadmaps/computer-science/content/118-networking/103-dns.md rename to src/data/roadmaps/computer-science/content/dns@fYjoXB4rnkM5gg46sqVz5.md diff --git a/src/data/roadmaps/computer-science/content/117-databases/105-dql.md b/src/data/roadmaps/computer-science/content/dql@05lkb3B86Won7Rkf-8DeD.md similarity index 85% rename from src/data/roadmaps/computer-science/content/117-databases/105-dql.md rename to src/data/roadmaps/computer-science/content/dql@05lkb3B86Won7Rkf-8DeD.md index 7f588e495..3b4a6a691 100644 --- a/src/data/roadmaps/computer-science/content/117-databases/105-dql.md +++ b/src/data/roadmaps/computer-science/content/dql@05lkb3B86Won7Rkf-8DeD.md @@ -4,4 +4,3 @@ DQL statements are used for performing queries on the data within schema objects Visit the following resources to learn more: -- [@article@SQL | DDL, DQL, DML, DCL and TCL Commands](https://www.geeksforgeeks.org/sql-ddl-dql-dml-dcl-tcl-commands/) diff --git a/src/data/roadmaps/computer-science/content/108-endianess/index.md b/src/data/roadmaps/computer-science/content/endianess@vjMqqFsTxSjaiYxmliwLi.md similarity index 74% rename from src/data/roadmaps/computer-science/content/108-endianess/index.md rename to src/data/roadmaps/computer-science/content/endianess@vjMqqFsTxSjaiYxmliwLi.md index 0fc85d58c..ae5995abe 100644 --- a/src/data/roadmaps/computer-science/content/108-endianess/index.md +++ b/src/data/roadmaps/computer-science/content/endianess@vjMqqFsTxSjaiYxmliwLi.md @@ -4,6 +4,5 @@ Endianess is the order in which bytes are stored in memory. The two most common Visit the following resources to learn more: -- [@article@What is Endianness? Big-Endian vs Little-Endian Explained with Examples](https://www.freecodecamp.org/news/what-is-endianness-big-endian-vs-little-endian/) - [@video@Big Endian vs Little Endian.mp4](https://www.youtube.com/watch?v=JrNF0KRAlyo) - [@video@Endianness Explained With an Egg - Computerphile](https://www.youtube.com/watch?v=NcaiHcBvDR4) diff --git a/src/data/roadmaps/computer-science/content/117-databases/102-entity-relationship-model.md b/src/data/roadmaps/computer-science/content/entity-relationship-model@XnxxEmr2TyW2kOpB4gtR5.md similarity index 100% rename from src/data/roadmaps/computer-science/content/117-databases/102-entity-relationship-model.md rename to src/data/roadmaps/computer-science/content/entity-relationship-model@XnxxEmr2TyW2kOpB4gtR5.md diff --git a/src/data/roadmaps/computer-science/content/103-asymptotic-notation/103-common-runtimes/104-exponential.md b/src/data/roadmaps/computer-science/content/exponential@5mMLr6tWbiSZuox1lx0_B.md similarity index 100% rename from src/data/roadmaps/computer-science/content/103-asymptotic-notation/103-common-runtimes/104-exponential.md rename to src/data/roadmaps/computer-science/content/exponential@5mMLr6tWbiSZuox1lx0_B.md diff --git a/src/data/roadmaps/computer-science/content/103-asymptotic-notation/103-common-runtimes/105-factorial.md b/src/data/roadmaps/computer-science/content/factorial@m0umGQNdvg95UiNpQZsQN.md similarity index 100% rename from src/data/roadmaps/computer-science/content/103-asymptotic-notation/103-common-runtimes/105-factorial.md rename to src/data/roadmaps/computer-science/content/factorial@m0umGQNdvg95UiNpQZsQN.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/105-back-tracking-algorithms/100-finding-hamiltonian-paths.md b/src/data/roadmaps/computer-science/content/finding-hamiltonian-paths@aBjBHpq_OajgQjxdCobXD.md similarity index 87% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/105-back-tracking-algorithms/100-finding-hamiltonian-paths.md rename to src/data/roadmaps/computer-science/content/finding-hamiltonian-paths@aBjBHpq_OajgQjxdCobXD.md index 4c8aca693..5455354a8 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/105-back-tracking-algorithms/100-finding-hamiltonian-paths.md +++ b/src/data/roadmaps/computer-science/content/finding-hamiltonian-paths@aBjBHpq_OajgQjxdCobXD.md @@ -5,6 +5,5 @@ Hamiltonian paths are paths that visit every node in a graph exactly once. They Visit the following resources to learn more: - [@article@Hamiltonian Path](https://www.hackerearth.com/practice/algorithms/graphs/hamiltonian-path/tutorial/) -- [@article@Hamiltonian Cycle | Backtracking-6](https://www.geeksforgeeks.org/hamiltonian-cycle-backtracking-6/) - [@article@Hamiltonian Paths and Cycles](https://medium.com/stamatics-iit-kanpur/hamiltonian-paths-and-cycles-4f233bfbc53a) - [@article@Hamiltonian Paths - Lecture 7](https://people.csail.mit.edu/virgi/6.s078/lecture17.pdf) diff --git a/src/data/roadmaps/computer-science/content/107-floating-point-numbers.md b/src/data/roadmaps/computer-science/content/floating-point-math@-bawIWfrYuAxy8cP-AGFS.md similarity index 100% rename from src/data/roadmaps/computer-science/content/107-floating-point-numbers.md rename to src/data/roadmaps/computer-science/content/floating-point-math@-bawIWfrYuAxy8cP-AGFS.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/104-greedy-algorithms/103-ford-fulkerson-algorithm.md b/src/data/roadmaps/computer-science/content/ford-fulkerson-algorithm@Hqw2eGtgfbVggqXBnIOdI.md similarity index 77% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/104-greedy-algorithms/103-ford-fulkerson-algorithm.md rename to src/data/roadmaps/computer-science/content/ford-fulkerson-algorithm@Hqw2eGtgfbVggqXBnIOdI.md index b8fa5f031..d6ba4268e 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/104-greedy-algorithms/103-ford-fulkerson-algorithm.md +++ b/src/data/roadmaps/computer-science/content/ford-fulkerson-algorithm@Hqw2eGtgfbVggqXBnIOdI.md @@ -5,6 +5,5 @@ Ford Fulkerson Algorithm is a greedy algorithm that is used to find the maximum Visit the following resources to learn more: - [@video@Ford-Fulkerson in 5 minutes](https://www.youtube.com/watch?v=Tl90tNtKvxs) -- [@article@Ford-Fulkerson Algorithm for Maximum Flow Problem](https://www.geeksforgeeks.org/ford-fulkerson-algorithm-for-maximum-flow-problem/) - [@article@Ford-Fulkerson Algorithm](https://www.programiz.com/dsa/ford-fulkerson-algorithm) - [@feed@Explore top posts about Data Science](https://app.daily.dev/tags/data-science?ref=roadmapsh) diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/105-tree/102-full-binary-tree.md b/src/data/roadmaps/computer-science/content/full-binary-tree@Q8ZJNeTbc22Q08Mra-McY.md similarity index 78% rename from src/data/roadmaps/computer-science/content/102-data-structures/105-tree/102-full-binary-tree.md rename to src/data/roadmaps/computer-science/content/full-binary-tree@Q8ZJNeTbc22Q08Mra-McY.md index 6677ffae3..e15494ae3 100644 --- a/src/data/roadmaps/computer-science/content/102-data-structures/105-tree/102-full-binary-tree.md +++ b/src/data/roadmaps/computer-science/content/full-binary-tree@Q8ZJNeTbc22Q08Mra-McY.md @@ -5,4 +5,3 @@ A full Binary tree is a special type of binary tree in which every parent node/i Visit the following resources to learn more: - [@article@Full Binary Tree](https://www.programiz.com/dsa/full-binary-tree) -- [@article@Types of Binary Tree](https://www.geeksforgeeks.org/types-of-binary-tree/) diff --git a/src/data/roadmaps/computer-science/content/101-pick-a-language/104-go.md b/src/data/roadmaps/computer-science/content/go@mWW88VnkqWgDz02qw5zU-.md similarity index 100% rename from src/data/roadmaps/computer-science/content/101-pick-a-language/104-go.md rename to src/data/roadmaps/computer-science/content/go@mWW88VnkqWgDz02qw5zU-.md diff --git a/src/data/roadmaps/computer-science/content/111-design-patterns/100-gof-design-patterns.md b/src/data/roadmaps/computer-science/content/gof-design-patterns@iPN9mSyFwYZER5HSkj6oL.md similarity index 100% rename from src/data/roadmaps/computer-science/content/111-design-patterns/100-gof-design-patterns.md rename to src/data/roadmaps/computer-science/content/gof-design-patterns@iPN9mSyFwYZER5HSkj6oL.md diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/106-graph/index.md b/src/data/roadmaps/computer-science/content/graph@vQm046o6ozcvLoqg9L6eL.md similarity index 100% rename from src/data/roadmaps/computer-science/content/102-data-structures/106-graph/index.md rename to src/data/roadmaps/computer-science/content/graph@vQm046o6ozcvLoqg9L6eL.md diff --git a/src/data/roadmaps/computer-science/content/116-system-design/109-graphql.md b/src/data/roadmaps/computer-science/content/graphql@DeE_dZecLmKCjePovTfFS.md similarity index 100% rename from src/data/roadmaps/computer-science/content/116-system-design/109-graphql.md rename to src/data/roadmaps/computer-science/content/graphql@DeE_dZecLmKCjePovTfFS.md diff --git a/src/data/roadmaps/computer-science/content/116-system-design/110-grpc.md b/src/data/roadmaps/computer-science/content/grpc@M4vdwAbjLPrLjWUsG_P1I.md similarity index 100% rename from src/data/roadmaps/computer-science/content/116-system-design/110-grpc.md rename to src/data/roadmaps/computer-science/content/grpc@M4vdwAbjLPrLjWUsG_P1I.md diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/104-hash-table.md b/src/data/roadmaps/computer-science/content/hash-table@G2dN2FO0SN_I-5AhO_EUk.md similarity index 100% rename from src/data/roadmaps/computer-science/content/102-data-structures/104-hash-table.md rename to src/data/roadmaps/computer-science/content/hash-table@G2dN2FO0SN_I-5AhO_EUk.md diff --git a/src/data/roadmaps/computer-science/content/119-security/101-hashing-encryption-encoding.md b/src/data/roadmaps/computer-science/content/hashing--encryption--encoding@7r7o8pYhFHVAJIv0wNT6X.md similarity index 100% rename from src/data/roadmaps/computer-science/content/119-security/101-hashing-encryption-encoding.md rename to src/data/roadmaps/computer-science/content/hashing--encryption--encoding@7r7o8pYhFHVAJIv0wNT6X.md diff --git a/src/data/roadmaps/computer-science/content/119-security/102-hashing-algorithms.md b/src/data/roadmaps/computer-science/content/hashing-algorithms@EX_e4B6G07zTb4JjJ7482.md similarity index 100% rename from src/data/roadmaps/computer-science/content/119-security/102-hashing-algorithms.md rename to src/data/roadmaps/computer-science/content/hashing-algorithms@EX_e4B6G07zTb4JjJ7482.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/103-heap-sort.md b/src/data/roadmaps/computer-science/content/heap-sort@CovrRsBY-sYW_xSegcN6N.md similarity index 89% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/103-heap-sort.md rename to src/data/roadmaps/computer-science/content/heap-sort@CovrRsBY-sYW_xSegcN6N.md index 97c171412..26e127f2b 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/103-heap-sort.md +++ b/src/data/roadmaps/computer-science/content/heap-sort@CovrRsBY-sYW_xSegcN6N.md @@ -5,7 +5,6 @@ Heap sort is a comparison based sorting algorithm. It is similar to selection so Visit the following resources to learn more: - [@article@Heap Sort Algorithm](https://www.programiz.com/dsa/heap-sort) -- [@article@Heap Sort Algorithm - Geeks for Geeks](https://www.geeksforgeeks.org/heap-sort/) - [@video@Heap Sort in 4 Minutes](https://www.youtube.com/watch?v=2DmK_H7IdTo) - [@video@Heap Sort Algorithm - MIT](https://www.youtube.com/watch?v=odNJmw5TOEE&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm&t=3291s) - [@course@Heap Sort Algorithm](https://www.coursera.org/lecture/data-structures/heap-sort-hSzMO) diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/107-heap.md b/src/data/roadmaps/computer-science/content/heap@pw3ZCC3HKU7D5SQwte4vE.md similarity index 100% rename from src/data/roadmaps/computer-science/content/102-data-structures/107-heap.md rename to src/data/roadmaps/computer-science/content/heap@pw3ZCC3HKU7D5SQwte4vE.md diff --git a/src/data/roadmaps/computer-science/content/116-system-design/100-horizontal-vs-vertical-scaling.md b/src/data/roadmaps/computer-science/content/horizontal-vs-vertical-scaling@-34WGppX6QC5fkCvfCghp.md similarity index 100% rename from src/data/roadmaps/computer-science/content/116-system-design/100-horizontal-vs-vertical-scaling.md rename to src/data/roadmaps/computer-science/content/horizontal-vs-vertical-scaling@-34WGppX6QC5fkCvfCghp.md diff --git a/src/data/roadmaps/computer-science/content/120-how-computers-work/101-how-computers-calculate.md b/src/data/roadmaps/computer-science/content/how-computers-calculate@GDLKJkKgB-i7n0YcV2NDa.md similarity index 100% rename from src/data/roadmaps/computer-science/content/120-how-computers-work/101-how-computers-calculate.md rename to src/data/roadmaps/computer-science/content/how-computers-calculate@GDLKJkKgB-i7n0YcV2NDa.md diff --git a/src/data/roadmaps/computer-science/content/120-how-computers-work/index.md b/src/data/roadmaps/computer-science/content/how-computers-work@-emdKpD5uRNuvem5rbFXJ.md similarity index 100% rename from src/data/roadmaps/computer-science/content/120-how-computers-work/index.md rename to src/data/roadmaps/computer-science/content/how-computers-work@-emdKpD5uRNuvem5rbFXJ.md diff --git a/src/data/roadmaps/computer-science/content/120-how-computers-work/100-how-cpu-executes-programs.md b/src/data/roadmaps/computer-science/content/how-cpu-executes-programs@1eglba39q426Nh0E0qcdj.md similarity index 100% rename from src/data/roadmaps/computer-science/content/120-how-computers-work/100-how-cpu-executes-programs.md rename to src/data/roadmaps/computer-science/content/how-cpu-executes-programs@1eglba39q426Nh0E0qcdj.md diff --git a/src/data/roadmaps/computer-science/content/118-networking/102-http.md b/src/data/roadmaps/computer-science/content/http@2tUwl-br-SRuwADSzmQag.md similarity index 100% rename from src/data/roadmaps/computer-science/content/118-networking/102-http.md rename to src/data/roadmaps/computer-science/content/http@2tUwl-br-SRuwADSzmQag.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/104-greedy-algorithms/101-huffman-coding.md b/src/data/roadmaps/computer-science/content/huffman-coding@QrcijPiVT3bgqfkF-6ssi.md similarity index 83% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/104-greedy-algorithms/101-huffman-coding.md rename to src/data/roadmaps/computer-science/content/huffman-coding@QrcijPiVT3bgqfkF-6ssi.md index 5385049fb..74a909043 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/104-greedy-algorithms/101-huffman-coding.md +++ b/src/data/roadmaps/computer-science/content/huffman-coding@QrcijPiVT3bgqfkF-6ssi.md @@ -5,5 +5,4 @@ Huffman coding is a lossless data compression algorithm. The idea is to assign v Visit the following resources to learn more: - [@article@Huffman Coding](https://www.programiz.com/dsa/huffman-coding) -- [@article@Huffman Coding | Greedy Algo-3](https://www.geeksforgeeks.org/huffman-coding-greedy-algo-3/) - [@video@Huffman Coding - Greedy Method](https://www.youtube.com/watch?v=co4_ahEDCho) diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/101-tree-algorithms/101-in-order-traversal.md b/src/data/roadmaps/computer-science/content/in-order-traversal@KTrgf14Q6rg2f0v4dqq2s.md similarity index 74% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/101-tree-algorithms/101-in-order-traversal.md rename to src/data/roadmaps/computer-science/content/in-order-traversal@KTrgf14Q6rg2f0v4dqq2s.md index a528cc8ee..26bc73b90 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/101-tree-algorithms/101-in-order-traversal.md +++ b/src/data/roadmaps/computer-science/content/in-order-traversal@KTrgf14Q6rg2f0v4dqq2s.md @@ -5,4 +5,3 @@ In-order traversal is a tree traversal algorithm that visits the left subtree, t Visit the following resources to learn more: - [@video@Tree | Illustrated Data Structures](https://www.youtube.com/watch?v=S2W3SXGPVyU) -- [@article@Tree Traversals (Inorder, Preorder and Postorder)](https://www.geeksforgeeks.org/tree-traversals-inorder-preorder-and-postorder/) diff --git a/src/data/roadmaps/computer-science/content/117-databases/113-indexes.md b/src/data/roadmaps/computer-science/content/indexes@BEbsUA39kZ5itqCwD585f.md similarity index 72% rename from src/data/roadmaps/computer-science/content/117-databases/113-indexes.md rename to src/data/roadmaps/computer-science/content/indexes@BEbsUA39kZ5itqCwD585f.md index aeef849ce..efd30cac9 100644 --- a/src/data/roadmaps/computer-science/content/117-databases/113-indexes.md +++ b/src/data/roadmaps/computer-science/content/indexes@BEbsUA39kZ5itqCwD585f.md @@ -4,5 +4,4 @@ An index is a data structure that you build and assign on top of an existing tab Visit the following resources to learn more: -- [@article@An in-depth look at Database Indexing](https://www.freecodecamp.org/news/database-indexing-at-a-glance-bb50809d48bd/) - [@video@Database Indexing Explained](https://www.youtube.com/watch?v=-qNSXK7s7_w) diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/102-insertion-sort.md b/src/data/roadmaps/computer-science/content/insertion-sort@ujDCW6zZE8dV_fpNf-oIl.md similarity index 100% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/102-insertion-sort.md rename to src/data/roadmaps/computer-science/content/insertion-sort@ujDCW6zZE8dV_fpNf-oIl.md diff --git a/src/data/roadmaps/computer-science/content/120-how-computers-work/103-instructions-and-programs.md b/src/data/roadmaps/computer-science/content/instructions-and-programs@AxiGqbteK7ZSXEUt_zckH.md similarity index 100% rename from src/data/roadmaps/computer-science/content/120-how-computers-work/103-instructions-and-programs.md rename to src/data/roadmaps/computer-science/content/instructions-and-programs@AxiGqbteK7ZSXEUt_zckH.md diff --git a/src/data/roadmaps/computer-science/content/101-pick-a-language/102-java.md b/src/data/roadmaps/computer-science/content/java@1lQSUFrrIGq19nUnM92-I.md similarity index 100% rename from src/data/roadmaps/computer-science/content/101-pick-a-language/102-java.md rename to src/data/roadmaps/computer-science/content/java@1lQSUFrrIGq19nUnM92-I.md diff --git a/src/data/roadmaps/computer-science/content/115-balanced-search-trees/104-n-ary-trees.md b/src/data/roadmaps/computer-science/content/k-ary--m-ary-tree@UOYeM-hqIKCrB9hGez4Q_.md similarity index 100% rename from src/data/roadmaps/computer-science/content/115-balanced-search-trees/104-n-ary-trees.md rename to src/data/roadmaps/computer-science/content/k-ary--m-ary-tree@UOYeM-hqIKCrB9hGez4Q_.md diff --git a/src/data/roadmaps/computer-science/content/122-kd-trees.md b/src/data/roadmaps/computer-science/content/k-d-trees@C1eNsPjiQo8INbvL2Lt7L.md similarity index 100% rename from src/data/roadmaps/computer-science/content/122-kd-trees.md rename to src/data/roadmaps/computer-science/content/k-d-trees@C1eNsPjiQo8INbvL2Lt7L.md diff --git a/src/data/roadmaps/computer-science/content/113-complexity-classes/104-np-complete/101-knapsack-problem.md b/src/data/roadmaps/computer-science/content/knapsack-problem@yHeCRPhfAOWiggZeUHPU9.md similarity index 86% rename from src/data/roadmaps/computer-science/content/113-complexity-classes/104-np-complete/101-knapsack-problem.md rename to src/data/roadmaps/computer-science/content/knapsack-problem@yHeCRPhfAOWiggZeUHPU9.md index 87e065aa0..6937a8ae1 100644 --- a/src/data/roadmaps/computer-science/content/113-complexity-classes/104-np-complete/101-knapsack-problem.md +++ b/src/data/roadmaps/computer-science/content/knapsack-problem@yHeCRPhfAOWiggZeUHPU9.md @@ -4,6 +4,5 @@ KnapSack Problem is a classic problem in computer science. It is a problem in wh Visit the following resources to learn more: -- [@article@0-1 Knapsack Problem | DP-10](https://www.geeksforgeeks.org/0-1-knapsack-problem-dp-10/) - [@article@How to solve the Knapsack Problem with dynamic programming](https://medium.com/@fabianterh/how-to-solve-the-knapsack-problem-with-dynamic-programming-eb88c706d3cf) - [@video@3.1 Knapsack Problem - Greedy Method](https://www.youtube.com/watch?v=oTTzNMHM05I) diff --git a/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/101-knuth-morris-pratt.md b/src/data/roadmaps/computer-science/content/knuth-morris-pratt@8abFKMfaV9H8F38I0DcMT.md similarity index 90% rename from src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/101-knuth-morris-pratt.md rename to src/data/roadmaps/computer-science/content/knuth-morris-pratt@8abFKMfaV9H8F38I0DcMT.md index ea3eb4348..6fdb8f0ae 100644 --- a/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/101-knuth-morris-pratt.md +++ b/src/data/roadmaps/computer-science/content/knuth-morris-pratt@8abFKMfaV9H8F38I0DcMT.md @@ -9,7 +9,6 @@ Knuth morris pratt is a string searching algorithm that uses a precomputed array Visit the following resources to learn more: -- [@article@KMP Algorithm for Pattern Searching](https://www.geeksforgeeks.org/kmp-algorithm-for-pattern-searching/) - [@article@The Knuth-Morris-Pratt (KMP)Algorithm](https://www.javatpoint.com/daa-knuth-morris-pratt-algorithm) - [@video@9.1 Knuth-Morris-Pratt KMP String Matching Algorithm](https://www.youtube.com/watch?v=V5-7GzOfADQ) - [@course@Knuth-Morris Pratt](https://www.coursera.org/learn/algorithms-part2/lecture/TAtDr/knuth-morris-pratt) diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/104-greedy-algorithms/102-kruskas-algorithm.md b/src/data/roadmaps/computer-science/content/kruskals-algorithm@Wqhg7E-lOz1oNcRXjUej8.md similarity index 100% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/104-greedy-algorithms/102-kruskas-algorithm.md rename to src/data/roadmaps/computer-science/content/kruskals-algorithm@Wqhg7E-lOz1oNcRXjUej8.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/109-cache-algorithms/101-lfu-cache.md b/src/data/roadmaps/computer-science/content/lfu-cache@n11ujPI3of-52l2KW2CDQ.md similarity index 76% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/109-cache-algorithms/101-lfu-cache.md rename to src/data/roadmaps/computer-science/content/lfu-cache@n11ujPI3of-52l2KW2CDQ.md index ca17bb9ed..a8b7120c1 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/109-cache-algorithms/101-lfu-cache.md +++ b/src/data/roadmaps/computer-science/content/lfu-cache@n11ujPI3of-52l2KW2CDQ.md @@ -4,5 +4,4 @@ LFU Cache is a data structure that stores key-value pairs. It has a fixed size a Visit the following resources to learn more: -- [@article@Least Frequently Used (LFU) Cache Implementation](https://www.geeksforgeeks.org/least-frequently-used-lfu-cache-implementation/) - [@article@1117. Data Structure - LFU Cache](https://jojozhuang.github.io/algorithm/data-structure-lfu-cache/) diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/108-search-algorithms/101-linear-search.md b/src/data/roadmaps/computer-science/content/linear-search@XwyqBK9rgP1MMcJrdIzm5.md similarity index 76% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/108-search-algorithms/101-linear-search.md rename to src/data/roadmaps/computer-science/content/linear-search@XwyqBK9rgP1MMcJrdIzm5.md index 4de8ea569..774fa4a18 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/108-search-algorithms/101-linear-search.md +++ b/src/data/roadmaps/computer-science/content/linear-search@XwyqBK9rgP1MMcJrdIzm5.md @@ -4,4 +4,3 @@ Linear search is a very simple algorithm that is used to search for a value in a Visit the following resources to learn more: -- [@article@Linear Search Algorithm](https://www.geeksforgeeks.org/linear-search/) diff --git a/src/data/roadmaps/computer-science/content/103-asymptotic-notation/103-common-runtimes/102-linear.md b/src/data/roadmaps/computer-science/content/linear@jymhjv8GiFALQpox6aZeu.md similarity index 100% rename from src/data/roadmaps/computer-science/content/103-asymptotic-notation/103-common-runtimes/102-linear.md rename to src/data/roadmaps/computer-science/content/linear@jymhjv8GiFALQpox6aZeu.md diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/101-linked-list.md b/src/data/roadmaps/computer-science/content/linked-list@gr8BK6vq4AVwp_aUozZmf.md similarity index 100% rename from src/data/roadmaps/computer-science/content/102-data-structures/101-linked-list.md rename to src/data/roadmaps/computer-science/content/linked-list@gr8BK6vq4AVwp_aUozZmf.md diff --git a/src/data/roadmaps/computer-science/content/108-endianess/101-little-endian.md b/src/data/roadmaps/computer-science/content/little-endian@rD_5n5bjiNMVC0cPhEVyG.md similarity index 73% rename from src/data/roadmaps/computer-science/content/108-endianess/101-little-endian.md rename to src/data/roadmaps/computer-science/content/little-endian@rD_5n5bjiNMVC0cPhEVyG.md index b6566738d..e55a54e11 100644 --- a/src/data/roadmaps/computer-science/content/108-endianess/101-little-endian.md +++ b/src/data/roadmaps/computer-science/content/little-endian@rD_5n5bjiNMVC0cPhEVyG.md @@ -4,6 +4,5 @@ Little Endian is a way of storing data in memory. It is the opposite of Big Endi Visit the following resources to learn more: -- [@article@What is Endianness? Big-Endian vs Little-Endian Explained with Examples](https://www.freecodecamp.org/news/what-is-endianness-big-endian-vs-little-endian/) - [@video@Big Endian vs Little Endian.mp4](https://www.youtube.com/watch?v=JrNF0KRAlyo) - [@video@Endianness Explained With an Egg - Computerphile](https://www.youtube.com/watch?v=NcaiHcBvDR4) diff --git a/src/data/roadmaps/computer-science/content/116-system-design/101-load-balancing.md b/src/data/roadmaps/computer-science/content/load-balancing@xDiS0HmrEoPjkQg9x2O3o.md similarity index 100% rename from src/data/roadmaps/computer-science/content/116-system-design/101-load-balancing.md rename to src/data/roadmaps/computer-science/content/load-balancing@xDiS0HmrEoPjkQg9x2O3o.md diff --git a/src/data/roadmaps/computer-science/content/121-processes-and-threads/102-lock-mutex-semaphore.md b/src/data/roadmaps/computer-science/content/lock--mutex--semaphore@O6-vG3FuoYet4D0hbiyrv.md similarity index 90% rename from src/data/roadmaps/computer-science/content/121-processes-and-threads/102-lock-mutex-semaphore.md rename to src/data/roadmaps/computer-science/content/lock--mutex--semaphore@O6-vG3FuoYet4D0hbiyrv.md index 197e59858..bd3f60e04 100644 --- a/src/data/roadmaps/computer-science/content/121-processes-and-threads/102-lock-mutex-semaphore.md +++ b/src/data/roadmaps/computer-science/content/lock--mutex--semaphore@O6-vG3FuoYet4D0hbiyrv.md @@ -10,4 +10,3 @@ Visit the following resources to learn more: - [@article@What is the difference between lock, mutex and semaphore?](https://stackoverflow.com/questions/2332765/what-is-the-difference-between-lock-mutex-and-semaphore) - [@article@What is a Semaphore](https://stackoverflow.com/questions/34519/what-is-a-semaphore/40238#40238) -- [@article@Mutex vs Semaphore](https://www.geeksforgeeks.org/mutex-vs-semaphore/) diff --git a/src/data/roadmaps/computer-science/content/117-databases/107-locking.md b/src/data/roadmaps/computer-science/content/locking@_sm63rZNKoibVndeNgOpW.md similarity index 100% rename from src/data/roadmaps/computer-science/content/117-databases/107-locking.md rename to src/data/roadmaps/computer-science/content/locking@_sm63rZNKoibVndeNgOpW.md diff --git a/src/data/roadmaps/computer-science/content/103-asymptotic-notation/103-common-runtimes/101-logarithmic.md b/src/data/roadmaps/computer-science/content/logarithmic@nnlMNkQn1HU4U9yPbV9kQ.md similarity index 100% rename from src/data/roadmaps/computer-science/content/103-asymptotic-notation/103-common-runtimes/101-logarithmic.md rename to src/data/roadmaps/computer-science/content/logarithmic@nnlMNkQn1HU4U9yPbV9kQ.md diff --git a/src/data/roadmaps/computer-science/content/116-system-design/112-long-polling.md b/src/data/roadmaps/computer-science/content/long-polling@XeJi6TwpI5Uaszj00Uv_2.md similarity index 100% rename from src/data/roadmaps/computer-science/content/116-system-design/112-long-polling.md rename to src/data/roadmaps/computer-science/content/long-polling@XeJi6TwpI5Uaszj00Uv_2.md diff --git a/src/data/roadmaps/computer-science/content/113-complexity-classes/104-np-complete/102-longest-path-problem.md b/src/data/roadmaps/computer-science/content/longest-path-problem@4QVVYjDODMWsjnrE-4UBs.md similarity index 74% rename from src/data/roadmaps/computer-science/content/113-complexity-classes/104-np-complete/102-longest-path-problem.md rename to src/data/roadmaps/computer-science/content/longest-path-problem@4QVVYjDODMWsjnrE-4UBs.md index f275f4de9..dc97ef816 100644 --- a/src/data/roadmaps/computer-science/content/113-complexity-classes/104-np-complete/102-longest-path-problem.md +++ b/src/data/roadmaps/computer-science/content/longest-path-problem@4QVVYjDODMWsjnrE-4UBs.md @@ -4,6 +4,5 @@ Longest path problem is a problem that asks us to find the longest path in a gra Visit the following resources to learn more: -- [@article@Longest Path in a Directed Acyclic Graph](https://www.geeksforgeeks.org/find-longest-path-directed-acyclic-graph/) - [@video@Shortest/Longest path on a Directed Acyclic Graph (DAG) | Graph Theory](https://www.youtube.com/watch?v=TXkDpqjDMHA) - [@video@Longest Simple Path - Intro to Algorithms](https://www.youtube.com/watch?v=lRH0tax5dFA) diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/109-cache-algorithms/100-lru-cache.md b/src/data/roadmaps/computer-science/content/lru-cache@cEsboPT8nLvo0Zt0_oBq6.md similarity index 100% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/109-cache-algorithms/100-lru-cache.md rename to src/data/roadmaps/computer-science/content/lru-cache@cEsboPT8nLvo0Zt0_oBq6.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/105-back-tracking-algorithms/102-maze-solving-problem.md b/src/data/roadmaps/computer-science/content/maze-solving-problem@nODFT-i2YsxUVsgwWkIWn.md similarity index 100% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/105-back-tracking-algorithms/102-maze-solving-problem.md rename to src/data/roadmaps/computer-science/content/maze-solving-problem@nODFT-i2YsxUVsgwWkIWn.md diff --git a/src/data/roadmaps/computer-science/content/121-processes-and-threads/101-memory-management.md b/src/data/roadmaps/computer-science/content/memory-management@jVsZFTzyrYEDyR8LiBQL0.md similarity index 100% rename from src/data/roadmaps/computer-science/content/121-processes-and-threads/101-memory-management.md rename to src/data/roadmaps/computer-science/content/memory-management@jVsZFTzyrYEDyR8LiBQL0.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/105-merge-sort.md b/src/data/roadmaps/computer-science/content/merge-sort@Bh-whDbcCjl3m6mRm9w02.md similarity index 75% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/105-merge-sort.md rename to src/data/roadmaps/computer-science/content/merge-sort@Bh-whDbcCjl3m6mRm9w02.md index 052534a7d..d8f33ec8c 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/105-merge-sort.md +++ b/src/data/roadmaps/computer-science/content/merge-sort@Bh-whDbcCjl3m6mRm9w02.md @@ -4,7 +4,5 @@ Merge sort is a divide and conquer algorithm. It divides the input array into tw Visit the following resources to learn more: -- [@article@Merge Sort - Geeks for Geeks](https://www.geeksforgeeks.org/merge-sort/) - [@article@Merge Sort Algorithm](https://www.programiz.com/dsa/merge-sort) -- [@article@Merge Sort for Linked Lists](https://www.geeksforgeeks.org/merge-sort-for-linked-list/) - [@video@Merge Sort in 3 Minutes](https://www.youtube.com/watch?v=4VqmGXwpLqc) diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/109-cache-algorithms/102-mfu-cache.md b/src/data/roadmaps/computer-science/content/mfu-cache@hna0HLu0l4NTNNpyGqlW5.md similarity index 100% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/109-cache-algorithms/102-mfu-cache.md rename to src/data/roadmaps/computer-science/content/mfu-cache@hna0HLu0l4NTNNpyGqlW5.md diff --git a/src/data/roadmaps/computer-science/content/118-networking/index.md b/src/data/roadmaps/computer-science/content/networking@zG5t3HqbZnh9CGRqp1Sb-.md similarity index 100% rename from src/data/roadmaps/computer-science/content/118-networking/index.md rename to src/data/roadmaps/computer-science/content/networking@zG5t3HqbZnh9CGRqp1Sb-.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/107-recursion/101-non-tail-recursion.md b/src/data/roadmaps/computer-science/content/non-tail-recursion@iLEOuQgUgU5Jc38iXDpp5.md similarity index 100% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/107-recursion/101-non-tail-recursion.md rename to src/data/roadmaps/computer-science/content/non-tail-recursion@iLEOuQgUgU5Jc38iXDpp5.md diff --git a/src/data/roadmaps/computer-science/content/117-databases/101-normalization-denormalization.md b/src/data/roadmaps/computer-science/content/normalization--denormalization@Rw7QjLC8hLtXSwmU_9kHC.md similarity index 100% rename from src/data/roadmaps/computer-science/content/117-databases/101-normalization-denormalization.md rename to src/data/roadmaps/computer-science/content/normalization--denormalization@Rw7QjLC8hLtXSwmU_9kHC.md diff --git a/src/data/roadmaps/computer-science/content/113-complexity-classes/104-np-complete/index.md b/src/data/roadmaps/computer-science/content/np-complete@Lwkz7qozXRlVNA20zJbSw.md similarity index 92% rename from src/data/roadmaps/computer-science/content/113-complexity-classes/104-np-complete/index.md rename to src/data/roadmaps/computer-science/content/np-complete@Lwkz7qozXRlVNA20zJbSw.md index 2a878b058..6c8b6c66d 100644 --- a/src/data/roadmaps/computer-science/content/113-complexity-classes/104-np-complete/index.md +++ b/src/data/roadmaps/computer-science/content/np-complete@Lwkz7qozXRlVNA20zJbSw.md @@ -4,7 +4,6 @@ A problem is NP-complete if it is both NP and NP-hard. NP-complete problems are Visit the following resources to learn more: -- [@article@Types of Complexity Classes | P, NP, CoNP, NP hard and NP complete](https://www.geeksforgeeks.org/types-of-complexity-classes-p-np-conp-np-hard-and-np-complete/) - [@article@Trying to understand P vs NP vs NP Complete vs NP Hard](https://softwareengineering.stackexchange.com/questions/308178/trying-to-understand-p-vs-np-vs-np-complete-vs-np-hard) - [@video@Complexity: P, NP, NP-completeness, Reductions](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [@video@P vs. NP and the Computational Complexity Zoo](https://www.youtube.com/watch?v=YX40hbAHx3s) diff --git a/src/data/roadmaps/computer-science/content/113-complexity-classes/103-np-hard.md b/src/data/roadmaps/computer-science/content/np-hard@mJJ8DGUpBuHEJ7I6UTy1T.md similarity index 92% rename from src/data/roadmaps/computer-science/content/113-complexity-classes/103-np-hard.md rename to src/data/roadmaps/computer-science/content/np-hard@mJJ8DGUpBuHEJ7I6UTy1T.md index 478ce09e6..efc5a832b 100644 --- a/src/data/roadmaps/computer-science/content/113-complexity-classes/103-np-hard.md +++ b/src/data/roadmaps/computer-science/content/np-hard@mJJ8DGUpBuHEJ7I6UTy1T.md @@ -4,7 +4,6 @@ An NP-hard problem is at least as hard as the hardest problem in NP and it is th Visit the following resources to learn more: -- [@article@Types of Complexity Classes | P, NP, CoNP, NP hard and NP complete](https://www.geeksforgeeks.org/types-of-complexity-classes-p-np-conp-np-hard-and-np-complete/) - [@article@Trying to understand P vs NP vs NP Complete vs NP Hard](https://softwareengineering.stackexchange.com/questions/308178/trying-to-understand-p-vs-np-vs-np-complete-vs-np-hard) - [@video@Complexity: P, NP, NP-completeness, Reductions](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [@video@Complexity: Approximation Algorithms](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) diff --git a/src/data/roadmaps/computer-science/content/113-complexity-classes/101-np.md b/src/data/roadmaps/computer-science/content/np@ewXUHpOnjm8YrLhce1dAQ.md similarity index 92% rename from src/data/roadmaps/computer-science/content/113-complexity-classes/101-np.md rename to src/data/roadmaps/computer-science/content/np@ewXUHpOnjm8YrLhce1dAQ.md index d2150d3f2..e2278c5b0 100644 --- a/src/data/roadmaps/computer-science/content/113-complexity-classes/101-np.md +++ b/src/data/roadmaps/computer-science/content/np@ewXUHpOnjm8YrLhce1dAQ.md @@ -4,7 +4,6 @@ The NP in NP class stands for Non-deterministic Polynomial Time. It is the colle Visit the following resources to learn more: -- [@article@Types of Complexity Classes | P, NP, CoNP, NP hard and NP complete](https://www.geeksforgeeks.org/types-of-complexity-classes-p-np-conp-np-hard-and-np-complete/) - [@article@Trying to understand P vs NP vs NP Complete vs NP Hard](https://softwareengineering.stackexchange.com/questions/308178/trying-to-understand-p-vs-np-vs-np-complete-vs-np-hard) - [@video@Complexity: P, NP, NP-completeness, Reductions](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [@video@Complexity: Approximation Algorithms](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) diff --git a/src/data/roadmaps/computer-science/content/111-design-patterns/103-null-object-pattern.md b/src/data/roadmaps/computer-science/content/null-object-pattern@PpFQ0zmObZLvmBvqhTEMz.md similarity index 79% rename from src/data/roadmaps/computer-science/content/111-design-patterns/103-null-object-pattern.md rename to src/data/roadmaps/computer-science/content/null-object-pattern@PpFQ0zmObZLvmBvqhTEMz.md index 5107b4c19..fe9730feb 100644 --- a/src/data/roadmaps/computer-science/content/111-design-patterns/103-null-object-pattern.md +++ b/src/data/roadmaps/computer-science/content/null-object-pattern@PpFQ0zmObZLvmBvqhTEMz.md @@ -5,4 +5,3 @@ Null object pattern is a design pattern that is used to represent a null value w Visit the following resources to learn more: - [@article@Design Patterns - Null Object Pattern](https://www.tutorialspoint.com/design_pattern/null_object_pattern.htm) -- [@article@Null Object Design Pattern - Geeks for Geeks](https://www.geeksforgeeks.org/null-object-design-pattern/) diff --git a/src/data/roadmaps/computer-science/content/118-networking/104-tcp-ip-model.md b/src/data/roadmaps/computer-science/content/osi-model@pZ5x_zDYGzW9VxYycyXtN.md similarity index 76% rename from src/data/roadmaps/computer-science/content/118-networking/104-tcp-ip-model.md rename to src/data/roadmaps/computer-science/content/osi-model@pZ5x_zDYGzW9VxYycyXtN.md index 07faaac46..9e7a2c51c 100644 --- a/src/data/roadmaps/computer-science/content/118-networking/104-tcp-ip-model.md +++ b/src/data/roadmaps/computer-science/content/osi-model@pZ5x_zDYGzW9VxYycyXtN.md @@ -5,6 +5,4 @@ The OSI and TCP/IP model is used to help the developer to design their system fo Visit the following resources to learn more: - [@article@Cloudflare - What is the OSI model](https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi/) -- [@article@Geeksforgeeks - Layers of OSI model](https://www.geeksforgeeks.org/layers-of-osi-model/) -- [@article@Geeksforgeeks - TCP/IP model](https://www.geeksforgeeks.org/tcp-ip-model/) - [@video@TCP/IP and the OSI Model Explained!](https://www.youtube.com/watch?v=e5DEVa9eSN0) diff --git a/src/data/roadmaps/computer-science/content/119-security/103-owasp-top-10.md b/src/data/roadmaps/computer-science/content/owasp-top-10@3rPSp135TdSCyvXzEzn4p.md similarity index 100% rename from src/data/roadmaps/computer-science/content/119-security/103-owasp-top-10.md rename to src/data/roadmaps/computer-science/content/owasp-top-10@3rPSp135TdSCyvXzEzn4p.md diff --git a/src/data/roadmaps/computer-science/content/113-complexity-classes/105-p-equals-np.md b/src/data/roadmaps/computer-science/content/p--np@0btHNkzWL1w_-pUgU_k2y.md similarity index 100% rename from src/data/roadmaps/computer-science/content/113-complexity-classes/105-p-equals-np.md rename to src/data/roadmaps/computer-science/content/p--np@0btHNkzWL1w_-pUgU_k2y.md diff --git a/src/data/roadmaps/computer-science/content/113-complexity-classes/100-p.md b/src/data/roadmaps/computer-science/content/p@3aM17dPKNi8tRJsW8lesI.md similarity index 92% rename from src/data/roadmaps/computer-science/content/113-complexity-classes/100-p.md rename to src/data/roadmaps/computer-science/content/p@3aM17dPKNi8tRJsW8lesI.md index 209675dfd..aeb8970f2 100644 --- a/src/data/roadmaps/computer-science/content/113-complexity-classes/100-p.md +++ b/src/data/roadmaps/computer-science/content/p@3aM17dPKNi8tRJsW8lesI.md @@ -4,7 +4,6 @@ The P in the P class stands for Polynomial Time. It is the collection of decisio Visit the following resources to learn more: -- [@article@Types of Complexity Classes | P, NP, CoNP, NP hard and NP complete](https://www.geeksforgeeks.org/types-of-complexity-classes-p-np-conp-np-hard-and-np-complete/) - [@article@Trying to understand P vs NP vs NP Complete vs NP Hard](https://softwareengineering.stackexchange.com/questions/308178/trying-to-understand-p-vs-np-vs-np-complete-vs-np-hard) - [@video@Complexity: P, NP, NP-completeness, Reductions](https://www.youtube.com/watch?v=eHZifpgyH_4&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=22) - [@video@Complexity: Approximation Algorithms](https://www.youtube.com/watch?v=MEz1J9wY2iM&list=PLUl4u3cNGP6317WaSNfmCvGym2ucw3oGp&index=24) diff --git a/src/data/roadmaps/computer-science/content/117-databases/112-pacelc-theorem.md b/src/data/roadmaps/computer-science/content/pacelc@g6HeyLptaAYx9QBKuHQyM.md similarity index 87% rename from src/data/roadmaps/computer-science/content/117-databases/112-pacelc-theorem.md rename to src/data/roadmaps/computer-science/content/pacelc@g6HeyLptaAYx9QBKuHQyM.md index 521d7783c..96bac5091 100644 --- a/src/data/roadmaps/computer-science/content/117-databases/112-pacelc-theorem.md +++ b/src/data/roadmaps/computer-science/content/pacelc@g6HeyLptaAYx9QBKuHQyM.md @@ -4,5 +4,4 @@ The PACELC Theorem is an extension of the CAP Theorem. One of the questions that Visit the following resources to learn more: -- [@article@PACELC Theorem - Geeks for Geeks](https://www.geeksforgeeks.org/pacelc-theorem/) - [@article@PACELC Theorem](https://www.scylladb.com/glossary/pacelc-theorem/) diff --git a/src/data/roadmaps/computer-science/content/101-pick-a-language/index.md b/src/data/roadmaps/computer-science/content/pick-a-language@tU4Umtnfu01t9gLlnlK6b.md similarity index 100% rename from src/data/roadmaps/computer-science/content/101-pick-a-language/index.md rename to src/data/roadmaps/computer-science/content/pick-a-language@tU4Umtnfu01t9gLlnlK6b.md diff --git a/src/data/roadmaps/computer-science/content/103-asymptotic-notation/103-common-runtimes/103-polynomial.md b/src/data/roadmaps/computer-science/content/polynomial@sVFvpsAO1_ZH9aliEj9aF.md similarity index 100% rename from src/data/roadmaps/computer-science/content/103-asymptotic-notation/103-common-runtimes/103-polynomial.md rename to src/data/roadmaps/computer-science/content/polynomial@sVFvpsAO1_ZH9aliEj9aF.md diff --git a/src/data/roadmaps/computer-science/content/121-processes-and-threads/105-processes-vs-threads.md b/src/data/roadmaps/computer-science/content/porcesses-and-threads@ETEUA7jaEGyOEX8tAVNWs.md similarity index 100% rename from src/data/roadmaps/computer-science/content/121-processes-and-threads/105-processes-vs-threads.md rename to src/data/roadmaps/computer-science/content/porcesses-and-threads@ETEUA7jaEGyOEX8tAVNWs.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/101-tree-algorithms/102-post-order-traversal.md b/src/data/roadmaps/computer-science/content/post-order-traversal@4_oGXwjzSY5cX9n7L4iAA.md similarity index 74% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/101-tree-algorithms/102-post-order-traversal.md rename to src/data/roadmaps/computer-science/content/post-order-traversal@4_oGXwjzSY5cX9n7L4iAA.md index a31e561e6..13f83bf69 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/101-tree-algorithms/102-post-order-traversal.md +++ b/src/data/roadmaps/computer-science/content/post-order-traversal@4_oGXwjzSY5cX9n7L4iAA.md @@ -5,4 +5,3 @@ Post-order traversal is a type of tree traversal that visits the left subtree, t Visit the following resources to learn more: - [@video@Tree | Illustrated Data Structures](https://www.youtube.com/watch?v=S2W3SXGPVyU) -- [@article@Tree Traversals (Inorder, Preorder and Postorder)](https://www.geeksforgeeks.org/tree-traversals-inorder-preorder-and-postorder/) diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/101-tree-algorithms/100-pre-order-traversal.md b/src/data/roadmaps/computer-science/content/pre-order-traversal@psTN5N66xoFHFopgd5faW.md similarity index 74% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/101-tree-algorithms/100-pre-order-traversal.md rename to src/data/roadmaps/computer-science/content/pre-order-traversal@psTN5N66xoFHFopgd5faW.md index a3f670f30..b4a39e52d 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/101-tree-algorithms/100-pre-order-traversal.md +++ b/src/data/roadmaps/computer-science/content/pre-order-traversal@psTN5N66xoFHFopgd5faW.md @@ -5,5 +5,4 @@ Pre-order traversal is a tree traversal algorithm that visits the root node firs Visit the following resources to learn more: - [@video@Tree | Illustrated Data Structures](https://www.youtube.com/watch?v=S2W3SXGPVyU) -- [@article@Tree Traversals (Inorder, Preorder and Postorder)](https://www.geeksforgeeks.org/tree-traversals-inorder-preorder-and-postorder/) - [@video@Pre-order tree traversal in 3 minutes](https://www.youtube.com/watch?v=1WxLM2hwL-U) diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/104-greedy-algorithms/104-prims-algorithm.md b/src/data/roadmaps/computer-science/content/prims-algorithm@znpFIKwMJlepKJ8dH3kvC.md similarity index 85% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/104-greedy-algorithms/104-prims-algorithm.md rename to src/data/roadmaps/computer-science/content/prims-algorithm@znpFIKwMJlepKJ8dH3kvC.md index d13cab976..1f23e09ec 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/104-greedy-algorithms/104-prims-algorithm.md +++ b/src/data/roadmaps/computer-science/content/prims-algorithm@znpFIKwMJlepKJ8dH3kvC.md @@ -5,6 +5,5 @@ Prim's algorithm is a greedy algorithm that finds a minimum spanning tree for a Visit the following resources to learn more: - [@video@Graph Algorithms I - Topological Sorting, Prims Algorithm - Lecture 6](https://www.youtube.com/watch?v=i_AQT_XfvD8\&list=PLFDnELG9dpVxQCxuD-9BSy2E7BWY3t5Sm\&index=7) -- [@article@Prim’s Minimum Spanning Tree (MST) | Greedy Algo-5](https://www.geeksforgeeks.org/prims-minimum-spanning-tree-mst-greedy-algo-5/) - [@article@Prims Algorithm](https://www.programiz.com/dsa/prim-algorithm) - [@feed@Explore top posts about Data Science](https://app.daily.dev/tags/data-science?ref=roadmapsh) diff --git a/src/data/roadmaps/computer-science/content/112-basic-math-skills/100-probability.md b/src/data/roadmaps/computer-science/content/probability@HZ3_xyphbjhBPwwQo_rHH.md similarity index 100% rename from src/data/roadmaps/computer-science/content/112-basic-math-skills/100-probability.md rename to src/data/roadmaps/computer-science/content/probability@HZ3_xyphbjhBPwwQo_rHH.md diff --git a/src/data/roadmaps/computer-science/content/121-processes-and-threads/100-process-forking.md b/src/data/roadmaps/computer-science/content/process-forking@RbdT5MOE4L-E7PPWKRITX.md similarity index 100% rename from src/data/roadmaps/computer-science/content/121-processes-and-threads/100-process-forking.md rename to src/data/roadmaps/computer-science/content/process-forking@RbdT5MOE4L-E7PPWKRITX.md diff --git a/src/data/roadmaps/computer-science/content/121-processes-and-threads/index.md b/src/data/roadmaps/computer-science/content/processes-vs-threads@IEX6v_MYpE5Ylk_28K2ZU.md similarity index 100% rename from src/data/roadmaps/computer-science/content/121-processes-and-threads/index.md rename to src/data/roadmaps/computer-science/content/processes-vs-threads@IEX6v_MYpE5Ylk_28K2ZU.md diff --git a/src/data/roadmaps/computer-science/content/116-system-design/104-proxy.md b/src/data/roadmaps/computer-science/content/proxy@qLLJ_ehC8tSRfXsorYMQz.md similarity index 100% rename from src/data/roadmaps/computer-science/content/116-system-design/104-proxy.md rename to src/data/roadmaps/computer-science/content/proxy@qLLJ_ehC8tSRfXsorYMQz.md diff --git a/src/data/roadmaps/computer-science/content/119-security/100-public-key-cryptography.md b/src/data/roadmaps/computer-science/content/public-key-cryptography@bDZ34BPm3lX06ERSE10cY.md similarity index 100% rename from src/data/roadmaps/computer-science/content/119-security/100-public-key-cryptography.md rename to src/data/roadmaps/computer-science/content/public-key-cryptography@bDZ34BPm3lX06ERSE10cY.md diff --git a/src/data/roadmaps/computer-science/content/101-pick-a-language/103-python.md b/src/data/roadmaps/computer-science/content/python@RlKZzs44biQPgxD0tK1qx.md similarity index 91% rename from src/data/roadmaps/computer-science/content/101-pick-a-language/103-python.md rename to src/data/roadmaps/computer-science/content/python@RlKZzs44biQPgxD0tK1qx.md index 26561bb42..e1f682420 100644 --- a/src/data/roadmaps/computer-science/content/101-pick-a-language/103-python.md +++ b/src/data/roadmaps/computer-science/content/python@RlKZzs44biQPgxD0tK1qx.md @@ -8,7 +8,6 @@ Visit the following resources to learn more: - [@official@Python Website](https://www.python.org/) - [@official@Python Getting Started](https://www.python.org/about/gettingstarted/) - [@article@Automate the Boring Stuff](https://automatetheboringstuff.com/) -- [@article@FreeCodeCamp.org - How to Learn Python ? ](https://www.freecodecamp.org/news/how-to-learn-python/) - [@article@Python principles - Python basics](https://pythonprinciples.com/) - [@article@W3Schools - Python Tutorial ](https://www.w3schools.com/python/) - [@article@Python Crash Course](https://ehmatthes.github.io/pcc/) diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/103-queue.md b/src/data/roadmaps/computer-science/content/queue@JI990pDX2jjNe6IH_Y_t0.md similarity index 100% rename from src/data/roadmaps/computer-science/content/102-data-structures/103-queue.md rename to src/data/roadmaps/computer-science/content/queue@JI990pDX2jjNe6IH_Y_t0.md diff --git a/src/data/roadmaps/computer-science/content/116-system-design/106-queues.md b/src/data/roadmaps/computer-science/content/queues@LCPEzpyAuHY3ggN3nYrNN.md similarity index 100% rename from src/data/roadmaps/computer-science/content/116-system-design/106-queues.md rename to src/data/roadmaps/computer-science/content/queues@LCPEzpyAuHY3ggN3nYrNN.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/104-quick-sort.md b/src/data/roadmaps/computer-science/content/quick-sort@be0Q8GW9ZX1JbPrBvbMji.md similarity index 88% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/104-quick-sort.md rename to src/data/roadmaps/computer-science/content/quick-sort@be0Q8GW9ZX1JbPrBvbMji.md index 7e8db873d..8528882d5 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/104-quick-sort.md +++ b/src/data/roadmaps/computer-science/content/quick-sort@be0Q8GW9ZX1JbPrBvbMji.md @@ -5,7 +5,6 @@ Quick Sort is a divide and conquer algorithm. It picks an element as pivot and p Visit the following resources to learn more: - [@article@Quick Sort Algorithm](https://www.programiz.com/dsa/quick-sort) -- [@article@Quick Sort Algorithm - Geeks for Geeks](https://www.geeksforgeeks.org/quick-sort/) - [@video@Quick Sort in 4 Minutes](https://www.youtube.com/watch?v=Hoixgm4-P4M&feature=youtu.be) - [@article@Quick Sort Implementation in C](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c) - [@opensource@Quick Sort Implementation in Python](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py) diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/106-robin-karp-algorithm.md b/src/data/roadmaps/computer-science/content/rabin-karp-algorithm@l5--4opvZoc_seVn__5R3.md similarity index 100% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/106-robin-karp-algorithm.md rename to src/data/roadmaps/computer-science/content/rabin-karp-algorithm@l5--4opvZoc_seVn__5R3.md diff --git a/src/data/roadmaps/computer-science/content/115-balanced-search-trees/101-red-black-trees.md b/src/data/roadmaps/computer-science/content/red--black-trees@eOL0_SzxBn7_xhNcBDi2D.md similarity index 100% rename from src/data/roadmaps/computer-science/content/115-balanced-search-trees/101-red-black-trees.md rename to src/data/roadmaps/computer-science/content/red--black-trees@eOL0_SzxBn7_xhNcBDi2D.md diff --git a/src/data/roadmaps/computer-science/content/120-how-computers-work/102-registers-and-ram.md b/src/data/roadmaps/computer-science/content/registers-and-ram@U3379F4AO1KSmGtVmPr27.md similarity index 100% rename from src/data/roadmaps/computer-science/content/120-how-computers-work/102-registers-and-ram.md rename to src/data/roadmaps/computer-science/content/registers-and-ram@U3379F4AO1KSmGtVmPr27.md diff --git a/src/data/roadmaps/computer-science/content/117-databases/118-replication.md b/src/data/roadmaps/computer-science/content/replication@WUEmEtlszbISSIWDKpvg6.md similarity index 100% rename from src/data/roadmaps/computer-science/content/117-databases/118-replication.md rename to src/data/roadmaps/computer-science/content/replication@WUEmEtlszbISSIWDKpvg6.md diff --git a/src/data/roadmaps/computer-science/content/116-system-design/108-rest.md b/src/data/roadmaps/computer-science/content/rest@Kvz3Sn7L8CxP5ZXO1hlcU.md similarity index 100% rename from src/data/roadmaps/computer-science/content/116-system-design/108-rest.md rename to src/data/roadmaps/computer-science/content/rest@Kvz3Sn7L8CxP5ZXO1hlcU.md diff --git a/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/103-rabin-karp.md b/src/data/roadmaps/computer-science/content/robin-karp@Km5LvcJpyntrW2iA8h5e3.md similarity index 100% rename from src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/103-rabin-karp.md rename to src/data/roadmaps/computer-science/content/robin-karp@Km5LvcJpyntrW2iA8h5e3.md diff --git a/src/data/roadmaps/computer-science/content/101-pick-a-language/106-rust.md b/src/data/roadmaps/computer-science/content/rust@1bDjg-KBDKRmE6f1MWY8l.md similarity index 100% rename from src/data/roadmaps/computer-science/content/101-pick-a-language/106-rust.md rename to src/data/roadmaps/computer-science/content/rust@1bDjg-KBDKRmE6f1MWY8l.md diff --git a/src/data/roadmaps/computer-science/content/121-processes-and-threads/103-scheduling-algorithms.md b/src/data/roadmaps/computer-science/content/scheduling-algorithms@Ge2nagN86ofa2y-yYR1lv.md similarity index 100% rename from src/data/roadmaps/computer-science/content/121-processes-and-threads/103-scheduling-algorithms.md rename to src/data/roadmaps/computer-science/content/scheduling-algorithms@Ge2nagN86ofa2y-yYR1lv.md diff --git a/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/101-search-pattern-in-text.md b/src/data/roadmaps/computer-science/content/search-pattern-in-text@L4M5yFRKKR2axKXGcIA7d.md similarity index 100% rename from src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/101-search-pattern-in-text.md rename to src/data/roadmaps/computer-science/content/search-pattern-in-text@L4M5yFRKKR2axKXGcIA7d.md diff --git a/src/data/roadmaps/computer-science/content/119-security/index.md b/src/data/roadmaps/computer-science/content/security@JnJbJtsqKbVETY2vdLqCO.md similarity index 100% rename from src/data/roadmaps/computer-science/content/119-security/index.md rename to src/data/roadmaps/computer-science/content/security@JnJbJtsqKbVETY2vdLqCO.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/101-selection-sort.md b/src/data/roadmaps/computer-science/content/selection-sort@rOsHFXQm5jNz0RyZQ5ZGs.md similarity index 100% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/101-selection-sort.md rename to src/data/roadmaps/computer-science/content/selection-sort@rOsHFXQm5jNz0RyZQ5ZGs.md diff --git a/src/data/roadmaps/computer-science/content/110-common-uml-diagrams/105-sequence-diagrams.md b/src/data/roadmaps/computer-science/content/sequence-diagrams@gaUT5K2xS-WQMrIA0Bkb_.md similarity index 100% rename from src/data/roadmaps/computer-science/content/110-common-uml-diagrams/105-sequence-diagrams.md rename to src/data/roadmaps/computer-science/content/sequence-diagrams@gaUT5K2xS-WQMrIA0Bkb_.md diff --git a/src/data/roadmaps/computer-science/content/117-databases/119-sharding.md b/src/data/roadmaps/computer-science/content/sharding@3K65efPag2076dy-MeTg4.md similarity index 100% rename from src/data/roadmaps/computer-science/content/117-databases/119-sharding.md rename to src/data/roadmaps/computer-science/content/sharding@3K65efPag2076dy-MeTg4.md diff --git a/src/data/roadmaps/computer-science/content/116-system-design/113-short-polling.md b/src/data/roadmaps/computer-science/content/short-polling@gGmNJ8dK28iqrlQHPz6md.md similarity index 100% rename from src/data/roadmaps/computer-science/content/116-system-design/113-short-polling.md rename to src/data/roadmaps/computer-science/content/short-polling@gGmNJ8dK28iqrlQHPz6md.md diff --git a/src/data/roadmaps/computer-science/content/123-skip-lists.md b/src/data/roadmaps/computer-science/content/skip-lists@K96ggeWqd5OwoNnkL04pc.md similarity index 100% rename from src/data/roadmaps/computer-science/content/123-skip-lists.md rename to src/data/roadmaps/computer-science/content/skip-lists@K96ggeWqd5OwoNnkL04pc.md diff --git a/src/data/roadmaps/computer-science/content/118-networking/100-sockets.md b/src/data/roadmaps/computer-science/content/sockets@u-c-UFegRb7xqsmvj9gVb.md similarity index 100% rename from src/data/roadmaps/computer-science/content/118-networking/100-sockets.md rename to src/data/roadmaps/computer-science/content/sockets@u-c-UFegRb7xqsmvj9gVb.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/105-back-tracking-algorithms/101-solving-n-queen-problem.md b/src/data/roadmaps/computer-science/content/solving-n-queen-problem@HlAmTY1udqDT2mTfBU9P-.md similarity index 83% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/105-back-tracking-algorithms/101-solving-n-queen-problem.md rename to src/data/roadmaps/computer-science/content/solving-n-queen-problem@HlAmTY1udqDT2mTfBU9P-.md index 9c0db69ae..5a6a3da5b 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/105-back-tracking-algorithms/101-solving-n-queen-problem.md +++ b/src/data/roadmaps/computer-science/content/solving-n-queen-problem@HlAmTY1udqDT2mTfBU9P-.md @@ -5,5 +5,4 @@ N Queen Problem is a famous problem in Computer Science. It is a problem of plac Visit the following resources to learn more: - [@article@N-Queens problem using backtracking in Java/C++](https://www.digitalocean.com/community/tutorials/n-queens-problem-java-c-plus-plus) -- [@article@N Queen Problem | Backtracking-3](https://www.geeksforgeeks.org/n-queen-problem-backtracking-3/) - [@video@6.1 N Queens Problem using Backtracking](https://www.youtube.com/watch?v=xFv_Hl4B83A) diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/106-graph/102-spanning-tree.md b/src/data/roadmaps/computer-science/content/spanning-tree@L4xtWOdqGUf4SbJkoOsNM.md similarity index 100% rename from src/data/roadmaps/computer-science/content/102-data-structures/106-graph/102-spanning-tree.md rename to src/data/roadmaps/computer-science/content/spanning-tree@L4xtWOdqGUf4SbJkoOsNM.md diff --git a/src/data/roadmaps/computer-science/content/117-databases/100-sql-vs-nosql-databases.md b/src/data/roadmaps/computer-science/content/sql-vs-nosql-databases@nprZscHdC_RdRIcGeGyVk.md similarity index 100% rename from src/data/roadmaps/computer-science/content/117-databases/100-sql-vs-nosql-databases.md rename to src/data/roadmaps/computer-science/content/sql-vs-nosql-databases@nprZscHdC_RdRIcGeGyVk.md diff --git a/src/data/roadmaps/computer-science/content/116-system-design/115-sse.md b/src/data/roadmaps/computer-science/content/sse@JckRqZA8C6IqQLPpTCgf4.md similarity index 100% rename from src/data/roadmaps/computer-science/content/116-system-design/115-sse.md rename to src/data/roadmaps/computer-science/content/sse@JckRqZA8C6IqQLPpTCgf4.md diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/102-stack.md b/src/data/roadmaps/computer-science/content/stack@hJB5gO9tosRlC4UmdSNzl.md similarity index 100% rename from src/data/roadmaps/computer-science/content/102-data-structures/102-stack.md rename to src/data/roadmaps/computer-science/content/stack@hJB5gO9tosRlC4UmdSNzl.md diff --git a/src/data/roadmaps/computer-science/content/110-common-uml-diagrams/104-statemachine-diagrams.md b/src/data/roadmaps/computer-science/content/statemachine-diagrams@X0CKM9LaJUrgI5gIdqFvU.md similarity index 100% rename from src/data/roadmaps/computer-science/content/110-common-uml-diagrams/104-statemachine-diagrams.md rename to src/data/roadmaps/computer-science/content/statemachine-diagrams@X0CKM9LaJUrgI5gIdqFvU.md diff --git a/src/data/roadmaps/computer-science/content/117-databases/116-stored-procedures.md b/src/data/roadmaps/computer-science/content/stored-procedures@FjhZGhzJjYyDn0PShKmpX.md similarity index 77% rename from src/data/roadmaps/computer-science/content/117-databases/116-stored-procedures.md rename to src/data/roadmaps/computer-science/content/stored-procedures@FjhZGhzJjYyDn0PShKmpX.md index 9ad3c0091..5196dd046 100644 --- a/src/data/roadmaps/computer-science/content/117-databases/116-stored-procedures.md +++ b/src/data/roadmaps/computer-science/content/stored-procedures@FjhZGhzJjYyDn0PShKmpX.md @@ -4,5 +4,4 @@ Stored Procedures are created to perform one or more DML operations on Database. Visit the following resources to learn more: -- [@article@What is Stored Procedures in SQL ?](https://www.geeksforgeeks.org/what-is-stored-procedures-in-sql/) - [@article@SQL Stored Procedures](https://www.programiz.com/sql/stored-procedures) diff --git a/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/index.md b/src/data/roadmaps/computer-science/content/string-search--manipulations@NUWk-7IXmMU-4TT-oS8fF.md similarity index 62% rename from src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/index.md rename to src/data/roadmaps/computer-science/content/string-search--manipulations@NUWk-7IXmMU-4TT-oS8fF.md index 3ec0b5436..820604858 100644 --- a/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/index.md +++ b/src/data/roadmaps/computer-science/content/string-search--manipulations@NUWk-7IXmMU-4TT-oS8fF.md @@ -5,5 +5,3 @@ String search and manipulation is a very important topic in computer science. It Visit the following resources to learn more: - [@article@String-searching algorithm](https://en.wikipedia.org/wiki/String-searching_algorithm) -- [@article@Pattern Searching](https://www.geeksforgeeks.org/algorithms-gq/pattern-searching/) -- [@article@Applications of String Matching Algorithms](https://www.geeksforgeeks.org/applications-of-string-matching-algorithms/) diff --git a/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/index.md b/src/data/roadmaps/computer-science/content/substring-search@E9hf1ux1KKGHvvAShm67w.md similarity index 69% rename from src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/index.md rename to src/data/roadmaps/computer-science/content/substring-search@E9hf1ux1KKGHvvAShm67w.md index 1bbed2843..326c521c0 100644 --- a/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/102-substring-search/index.md +++ b/src/data/roadmaps/computer-science/content/substring-search@E9hf1ux1KKGHvvAShm67w.md @@ -6,6 +6,4 @@ Visit the following resources to learn more: - [@course@Introduction to Substring Search](https://www.coursera.org/lecture/algorithms-part2/introduction-to-substring-search-n3ZpG) - [@article@What is the fastest substring search algorithm?](https://stackoverflow.com/questions/3183582/what-is-the-fastest-substring-search-algorithm) -- [@article@Check if a string is substring of another](https://www.geeksforgeeks.org/check-string-substring-another/) -- [@article@Anagram Substring Search (Or Search for all permutations)](https://www.geeksforgeeks.org/anagram-substring-search-search-permutations/) - [@article@Substring Search - Exercises](https://algs4.cs.princeton.edu/53substring/) diff --git a/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/100-suffix-arrays.md b/src/data/roadmaps/computer-science/content/suffix-arrays@Ld1TUNS8713coMNvwhNIJ.md similarity index 86% rename from src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/100-suffix-arrays.md rename to src/data/roadmaps/computer-science/content/suffix-arrays@Ld1TUNS8713coMNvwhNIJ.md index 30efdea10..2f1a526dd 100644 --- a/src/data/roadmaps/computer-science/content/105-string-search-and-manipulations/100-suffix-arrays.md +++ b/src/data/roadmaps/computer-science/content/suffix-arrays@Ld1TUNS8713coMNvwhNIJ.md @@ -4,7 +4,6 @@ Suffix arrays are a data structure that allows us to quickly find all the suffix Visit the following resources to learn more: -- [@article@Suffix Array | Set 1 (Introduction)](https://www.geeksforgeeks.org/suffix-array-set-1-introduction/) - [@video@Suffix array introduction](https://www.youtube.com/watch?v=zqKlL3ZpTqs) - [@video@Advanced Data Structures: Suffix Arrays](https://www.youtube.com/watch?v=IzMxbboPcqQ) - [@video@Suffix arrays: building](https://www.youtube.com/watch?v=ZWlbhBjjwyA) diff --git a/src/data/roadmaps/computer-science/content/116-system-design/index.md b/src/data/roadmaps/computer-science/content/system-design@w-fvEiSJysywR3AOAB0ve.md similarity index 100% rename from src/data/roadmaps/computer-science/content/116-system-design/index.md rename to src/data/roadmaps/computer-science/content/system-design@w-fvEiSJysywR3AOAB0ve.md diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/107-recursion/100-tail-recursion.md b/src/data/roadmaps/computer-science/content/tail-recursion@0_qNhprnXU3i8koW3XTdD.md similarity index 100% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/107-recursion/100-tail-recursion.md rename to src/data/roadmaps/computer-science/content/tail-recursion@0_qNhprnXU3i8koW3XTdD.md diff --git a/src/data/roadmaps/computer-science/content/118-networking/105-osi-model.md b/src/data/roadmaps/computer-science/content/tcpip-model@Fed5y1D95WPpqoVg7kmob.md similarity index 76% rename from src/data/roadmaps/computer-science/content/118-networking/105-osi-model.md rename to src/data/roadmaps/computer-science/content/tcpip-model@Fed5y1D95WPpqoVg7kmob.md index 07faaac46..9e7a2c51c 100644 --- a/src/data/roadmaps/computer-science/content/118-networking/105-osi-model.md +++ b/src/data/roadmaps/computer-science/content/tcpip-model@Fed5y1D95WPpqoVg7kmob.md @@ -5,6 +5,4 @@ The OSI and TCP/IP model is used to help the developer to design their system fo Visit the following resources to learn more: - [@article@Cloudflare - What is the OSI model](https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi/) -- [@article@Geeksforgeeks - Layers of OSI model](https://www.geeksforgeeks.org/layers-of-osi-model/) -- [@article@Geeksforgeeks - TCP/IP model](https://www.geeksforgeeks.org/tcp-ip-model/) - [@video@TCP/IP and the OSI Model Explained!](https://www.youtube.com/watch?v=e5DEVa9eSN0) diff --git a/src/data/roadmaps/computer-science/content/104-common-algorithms/105-back-tracking-algorithms/103-knights-tour-problem.md b/src/data/roadmaps/computer-science/content/the-knights-tour-problem@NcKW_3vJWL_rVlDBB_Qjs.md similarity index 80% rename from src/data/roadmaps/computer-science/content/104-common-algorithms/105-back-tracking-algorithms/103-knights-tour-problem.md rename to src/data/roadmaps/computer-science/content/the-knights-tour-problem@NcKW_3vJWL_rVlDBB_Qjs.md index 211306500..a0c7c5f5c 100644 --- a/src/data/roadmaps/computer-science/content/104-common-algorithms/105-back-tracking-algorithms/103-knights-tour-problem.md +++ b/src/data/roadmaps/computer-science/content/the-knights-tour-problem@NcKW_3vJWL_rVlDBB_Qjs.md @@ -4,7 +4,6 @@ Knight's Tour Problem is a problem where we have to find a path for a knight to Visit the following resources to learn more: -- [@article@The Knight’s tour problem | Backtracking-1](https://www.geeksforgeeks.org/the-knights-tour-problem-backtracking-1/) - [@article@Knights Tour](https://bradfieldcs.com/algos/graphs/knights-tour/) - [@article@Knights Tour Proble](https://www.codesdope.com/course/algorithms-knights-tour-problem/) - [@article@Backtracking: The Knight’s Tour Problem](https://www.codingninjas.com/codestudio/library/backtracking-the-knights-tour-problem) diff --git a/src/data/roadmaps/computer-science/content/118-networking/101-tls-https.md b/src/data/roadmaps/computer-science/content/tls--https@3pu2bGhoCLFIs6kNanwtz.md similarity index 100% rename from src/data/roadmaps/computer-science/content/118-networking/101-tls-https.md rename to src/data/roadmaps/computer-science/content/tls--https@3pu2bGhoCLFIs6kNanwtz.md diff --git a/src/data/roadmaps/computer-science/content/117-databases/115-transactions.md b/src/data/roadmaps/computer-science/content/transactions@KhvYJtSCUBOpEZXjHpQde.md similarity index 100% rename from src/data/roadmaps/computer-science/content/117-databases/115-transactions.md rename to src/data/roadmaps/computer-science/content/transactions@KhvYJtSCUBOpEZXjHpQde.md diff --git a/src/data/roadmaps/computer-science/content/113-complexity-classes/104-np-complete/100-travelling-salesman-problem.md b/src/data/roadmaps/computer-science/content/travelling-salesman-problem@ZG-hWjVoS3p9XfrtBL0sD.md similarity index 81% rename from src/data/roadmaps/computer-science/content/113-complexity-classes/104-np-complete/100-travelling-salesman-problem.md rename to src/data/roadmaps/computer-science/content/travelling-salesman-problem@ZG-hWjVoS3p9XfrtBL0sD.md index ced58860f..b285e580c 100644 --- a/src/data/roadmaps/computer-science/content/113-complexity-classes/104-np-complete/100-travelling-salesman-problem.md +++ b/src/data/roadmaps/computer-science/content/travelling-salesman-problem@ZG-hWjVoS3p9XfrtBL0sD.md @@ -4,7 +4,6 @@ The Travelling Salesman Problem (TSP) is a classic problem in computer science. Visit the following resources to learn more: -- [@article@Travelling Salesman Problem | Set 1 (Naive and Dynamic Programming)](https://www.geeksforgeeks.org/travelling-salesman-problem-set-1/) - [@video@What is the Traveling Salesman Problem?](https://www.youtube.com/watch?v=1pmBjIZ20pE) - [@video@4.7 Traveling Salesperson Problem - Dynamic Programming](https://www.youtube.com/watch?v=XaXsJJh-Q5Y) - [@video@Traveling Salesman Problem | Dynamic Programming | Graph Theory](https://www.youtube.com/watch?v=cY4HiiFHO1o) diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/105-tree/index.md b/src/data/roadmaps/computer-science/content/tree@_eWqiWUmOj0zUo_Ix3j1O.md similarity index 70% rename from src/data/roadmaps/computer-science/content/102-data-structures/105-tree/index.md rename to src/data/roadmaps/computer-science/content/tree@_eWqiWUmOj0zUo_Ix3j1O.md index 520c3ecc0..225cca4a5 100644 --- a/src/data/roadmaps/computer-science/content/102-data-structures/105-tree/index.md +++ b/src/data/roadmaps/computer-science/content/tree@_eWqiWUmOj0zUo_Ix3j1O.md @@ -4,5 +4,4 @@ A tree is non-linear and a hierarchical data structure consisting of a collectio Visit the following resources to learn more: -- [@article@Tree Data Structure - Geeks for Geeks](https://www.geeksforgeeks.org/introduction-to-tree-data-structure-and-algorithm-tutorials/) - [@video@Tree | Illustrated Data Structures](https://www.youtube.com/watch?v=S2W3SXGPVyU) diff --git a/src/data/roadmaps/computer-science/content/114-tries.md b/src/data/roadmaps/computer-science/content/tries@4qUVacMEz3XFiL_dMre6P.md similarity index 100% rename from src/data/roadmaps/computer-science/content/114-tries.md rename to src/data/roadmaps/computer-science/content/tries@4qUVacMEz3XFiL_dMre6P.md diff --git a/src/data/roadmaps/computer-science/content/111-design-patterns/104-type-object-pattern.md b/src/data/roadmaps/computer-science/content/type-object-pattern@_2Jddpz_cdwyeIgrg5qt_.md similarity index 100% rename from src/data/roadmaps/computer-science/content/111-design-patterns/104-type-object-pattern.md rename to src/data/roadmaps/computer-science/content/type-object-pattern@_2Jddpz_cdwyeIgrg5qt_.md diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/105-tree/105-unbalanced-tree.md b/src/data/roadmaps/computer-science/content/unbalanced-tree@w4sxmZR1BjX6wlrZmuOlf.md similarity index 100% rename from src/data/roadmaps/computer-science/content/102-data-structures/105-tree/105-unbalanced-tree.md rename to src/data/roadmaps/computer-science/content/unbalanced-tree@w4sxmZR1BjX6wlrZmuOlf.md diff --git a/src/data/roadmaps/computer-science/content/102-data-structures/106-graph/101-undirected-graph.md b/src/data/roadmaps/computer-science/content/undirected-graph@QGx8it2N_85PiPVjpTGK_.md similarity index 100% rename from src/data/roadmaps/computer-science/content/102-data-structures/106-graph/101-undirected-graph.md rename to src/data/roadmaps/computer-science/content/undirected-graph@QGx8it2N_85PiPVjpTGK_.md diff --git a/src/data/roadmaps/computer-science/content/109-character-encodings/100-unicode.md b/src/data/roadmaps/computer-science/content/unicode@04hpfxI2x958tQI-0clsp.md similarity index 100% rename from src/data/roadmaps/computer-science/content/109-character-encodings/100-unicode.md rename to src/data/roadmaps/computer-science/content/unicode@04hpfxI2x958tQI-0clsp.md diff --git a/src/data/roadmaps/computer-science/content/110-common-uml-diagrams/102-usecase-diagrams.md b/src/data/roadmaps/computer-science/content/usecase-diagrams@dVvYbrcaxHLpvtX6HbS7g.md similarity index 100% rename from src/data/roadmaps/computer-science/content/110-common-uml-diagrams/102-usecase-diagrams.md rename to src/data/roadmaps/computer-science/content/usecase-diagrams@dVvYbrcaxHLpvtX6HbS7g.md diff --git a/src/data/roadmaps/computer-science/content/117-databases/114-views.md b/src/data/roadmaps/computer-science/content/views@lOj_ReWI1kQ3WajJZYOWU.md similarity index 88% rename from src/data/roadmaps/computer-science/content/117-databases/114-views.md rename to src/data/roadmaps/computer-science/content/views@lOj_ReWI1kQ3WajJZYOWU.md index 24e9a990c..5870d5e26 100644 --- a/src/data/roadmaps/computer-science/content/117-databases/114-views.md +++ b/src/data/roadmaps/computer-science/content/views@lOj_ReWI1kQ3WajJZYOWU.md @@ -4,6 +4,5 @@ Views in SQL are kind of virtual tables. A view also has rows and columns as the Visit the following resources to learn more: -- [@article@SQL | Views](https://www.geeksforgeeks.org/sql-views/) - [@article@Database Views](https://www.ibm.com/docs/en/eamfoc/7.6.0?topic=structure-views) - [@article@SQL Views - Wikipedia](https://en.wikipedia.org/wiki/View_(SQL)) diff --git a/src/data/roadmaps/computer-science/content/116-system-design/114-web-sockets.md b/src/data/roadmaps/computer-science/content/web-sockets@bVjI14VismTHNCyA0mEBP.md similarity index 70% rename from src/data/roadmaps/computer-science/content/116-system-design/114-web-sockets.md rename to src/data/roadmaps/computer-science/content/web-sockets@bVjI14VismTHNCyA0mEBP.md index 58a0d67e1..f8a70b844 100644 --- a/src/data/roadmaps/computer-science/content/116-system-design/114-web-sockets.md +++ b/src/data/roadmaps/computer-science/content/web-sockets@bVjI14VismTHNCyA0mEBP.md @@ -4,4 +4,3 @@ Web sockets are a bidirectional communication protocol between a client and a se Visit the following resources to learn more: -- [@article@What is web socket and how it is different from the HTTP?](https://www.geeksforgeeks.org/what-is-web-socket-and-how-it-is-different-from-the-http/) diff --git a/src/data/roadmaps/computer-science/migration-mapping.json b/src/data/roadmaps/computer-science/migration-mapping.json new file mode 100644 index 000000000..35f61c4ca --- /dev/null +++ b/src/data/roadmaps/computer-science/migration-mapping.json @@ -0,0 +1,186 @@ +{ + "pick-a-language": "tU4Umtnfu01t9gLlnlK6b", + "pick-a-language:python": "RlKZzs44biQPgxD0tK1qx", + "pick-a-language:go": "mWW88VnkqWgDz02qw5zU-", + "pick-a-language:c-sharp": "jHKCLfLml8oZyj4829gx0", + "pick-a-language:rust": "1bDjg-KBDKRmE6f1MWY8l", + "pick-a-language:c-plus-plus": "1kQJs-3Aw8Bi7d_Xh67zS", + "pick-a-language:c": "n4IsklfYJXFIyF1rGWuEa", + "pick-a-language:java": "1lQSUFrrIGq19nUnM92-I", + "data-structures": "NM7q5REW1sJgMhxJhPpLT", + "data-structures:array": "TwW6SO2IXqkxJXVjLzdwU", + "data-structures:linked-list": "gr8BK6vq4AVwp_aUozZmf", + "data-structures:stack": "hJB5gO9tosRlC4UmdSNzl", + "data-structures:queue": "JI990pDX2jjNe6IH_Y_t0", + "data-structures:hash-table": "G2dN2FO0SN_I-5AhO_EUk", + "data-structures:tree": "_eWqiWUmOj0zUo_Ix3j1O", + "data-structures:tree:binary-tree": "G9dnegZ6zNvxrCZ3O_b_z", + "data-structures:tree:binary-search-tree": "et7l85gnxjvzD2tDyHT_T", + "data-structures:tree:full-binary-tree": "Q8ZJNeTbc22Q08Mra-McY", + "data-structures:tree:complete-binary-tree": "Jx1WWCjm8jkfAGtHv15n1", + "data-structures:tree:balanced-tree": "ZaWGLvZyu4sIPn-zwVISN", + "data-structures:tree:unbalanced-tree": "w4sxmZR1BjX6wlrZmuOlf", + "data-structures:graph": "vQm046o6ozcvLoqg9L6eL", + "data-structures:graph:directed-graph": "6Jy8SXHuYA08h9iLjKFWR", + "data-structures:graph:undirected-graph": "QGx8it2N_85PiPVjpTGK_", + "data-structures:graph:spanning-tree": "L4xtWOdqGUf4SbJkoOsNM", + "data-structures:graph:graph-representation": "rTnKJcPniUtqvfOyC88N0", + "data-structures:heap": "pw3ZCC3HKU7D5SQwte4vE", + "asymptotic-notation": "UpBrpmrUwYUB9eesNxCq5", + "asymptotic-notation:big-o-notation": "c-NrTtJuNihbHzyPEOKTW", + "asymptotic-notation:big-theta-notation": "ThLpVZQIJ4diY5m0dik8m", + "asymptotic-notation:big-omega-notation": "X33735aeAVSlJ6yv9GS-h", + "asymptotic-notation:common-runtimes:constant": "3F_QBv_sU39ehOxpurF88", + "asymptotic-notation:common-runtimes:logarithmic": "nnlMNkQn1HU4U9yPbV9kQ", + "asymptotic-notation:common-runtimes:linear": "jymhjv8GiFALQpox6aZeu", + "asymptotic-notation:common-runtimes:polynomial": "sVFvpsAO1_ZH9aliEj9aF", + "asymptotic-notation:common-runtimes:exponential": "5mMLr6tWbiSZuox1lx0_B", + "asymptotic-notation:common-runtimes:factorial": "m0umGQNdvg95UiNpQZsQN", + "common-algorithms": "7a6-AnBI-3tAU1dkOvPkx", + "common-algorithms:sorting-algorithms:bubble-sort": "4wGBYFZpcdTt97WTbSazx", + "common-algorithms:sorting-algorithms:selection-sort": "rOsHFXQm5jNz0RyZQ5ZGs", + "common-algorithms:sorting-algorithms:insertion-sort": "ujDCW6zZE8dV_fpNf-oIl", + "common-algorithms:sorting-algorithms:heap-sort": "CovrRsBY-sYW_xSegcN6N", + "common-algorithms:sorting-algorithms:quick-sort": "be0Q8GW9ZX1JbPrBvbMji", + "common-algorithms:sorting-algorithms:merge-sort": "Bh-whDbcCjl3m6mRm9w02", + "common-algorithms:tree-algorithms:pre-order-traversal": "psTN5N66xoFHFopgd5faW", + "common-algorithms:tree-algorithms:in-order-traversal": "KTrgf14Q6rg2f0v4dqq2s", + "common-algorithms:tree-algorithms:post-order-traversal": "4_oGXwjzSY5cX9n7L4iAA", + "common-algorithms:tree-algorithms:breadth-first-search": "Ke_ch4fnuKIiGAXUM_LPP", + "common-algorithms:tree-algorithms:depth-first-search": "chzP5_t2gMi6MstxEzCi5", + "common-algorithms:graph-algorithms:breadth-first-search": "vcV6TEM_PqXxtThdfMKGw", + "common-algorithms:graph-algorithms:depth-first-search": "Yf5gOIe7oiL19MjEVcpdw", + "common-algorithms:graph-algorithms:bellman-fords-algorithm": "eY4nK2lPYsrR-a_8y2sao", + "common-algorithms:graph-algorithms:dijkstras-algorithm": "oJstm-8c-4seWbIWcNgDv", + "common-algorithms:graph-algorithms:a-star-algorithm": "Yrk2PLUa-_FAPlhCkMl3e", + "common-algorithms:greedy-algorithms:dijkstras-algorithm": "l3X9UrEYTWs5kBXI1NNCf", + "common-algorithms:greedy-algorithms:huffman-coding": "QrcijPiVT3bgqfkF-6ssi", + "common-algorithms:greedy-algorithms:kruskas-algorithm": "Wqhg7E-lOz1oNcRXjUej8", + "common-algorithms:greedy-algorithms:ford-fulkerson-algorithm": "Hqw2eGtgfbVggqXBnIOdI", + "common-algorithms:greedy-algorithms:prims-algorithm": "znpFIKwMJlepKJ8dH3kvC", + "common-algorithms:back-tracking-algorithms:finding-hamiltonian-paths": "aBjBHpq_OajgQjxdCobXD", + "common-algorithms:back-tracking-algorithms:solving-n-queen-problem": "HlAmTY1udqDT2mTfBU9P-", + "common-algorithms:back-tracking-algorithms:maze-solving-problem": "nODFT-i2YsxUVsgwWkIWn", + "common-algorithms:back-tracking-algorithms:knights-tour-problem": "NcKW_3vJWL_rVlDBB_Qjs", + "common-algorithms:robin-karp-algorithm": "l5--4opvZoc_seVn__5R3", + "common-algorithms:recursion:tail-recursion": "0_qNhprnXU3i8koW3XTdD", + "common-algorithms:recursion:non-tail-recursion": "iLEOuQgUgU5Jc38iXDpp5", + "common-algorithms:search-algorithms:binary-search": "8kTg4O9MrTHRUrp6U-ctA", + "common-algorithms:search-algorithms:linear-search": "XwyqBK9rgP1MMcJrdIzm5", + "common-algorithms:cache-algorithms:lru-cache": "cEsboPT8nLvo0Zt0_oBq6", + "common-algorithms:cache-algorithms:lfu-cache": "n11ujPI3of-52l2KW2CDQ", + "common-algorithms:cache-algorithms:mfu-cache": "hna0HLu0l4NTNNpyGqlW5", + "string-search-and-manipulations": "NUWk-7IXmMU-4TT-oS8fF", + "string-search-and-manipulations:search-pattern-in-text": "L4M5yFRKKR2axKXGcIA7d", + "string-search-and-manipulations:suffix-arrays": "Ld1TUNS8713coMNvwhNIJ", + "string-search-and-manipulations:substring-search:brute-force-search": "g3b0kt1fCAjjYyS2WelWi", + "string-search-and-manipulations:substring-search": "E9hf1ux1KKGHvvAShm67w", + "string-search-and-manipulations:substring-search:knuth-morris-pratt": "8abFKMfaV9H8F38I0DcMT", + "string-search-and-manipulations:substring-search:boyer-moore": "p6qub32jcaGloHXUDUrlG", + "string-search-and-manipulations:substring-search:rabin-karp": "Km5LvcJpyntrW2iA8h5e3", + "floating-point-numbers": "-bawIWfrYuAxy8cP-AGFS", + "endianess": "vjMqqFsTxSjaiYxmliwLi", + "endianess:big-endian": "U8AgY6I-62mN5Ohg9MsG6", + "endianess:little-endian": "rD_5n5bjiNMVC0cPhEVyG", + "character-encodings": "DtG9EJonWi4_2oQ4fWOKY", + "character-encodings:unicode": "04hpfxI2x958tQI-0clsp", + "character-encodings:ascii": "hmwsNp60alS43kJg4A_Og", + "common-uml-diagrams": "DMuMsEowpevTCALtziwTB", + "common-uml-diagrams:class-diagrams": "FZ8znJSz8PvQlnEyRLXmQ", + "common-uml-diagrams:usecase-diagrams": "dVvYbrcaxHLpvtX6HbS7g", + "common-uml-diagrams:activity-diagrams": "ptfRNiU0mC0Q5SLA_FWZu", + "common-uml-diagrams:statemachine-diagrams": "X0CKM9LaJUrgI5gIdqFvU", + "common-uml-diagrams:sequence-diagrams": "gaUT5K2xS-WQMrIA0Bkb_", + "design-patterns": "-De1hU2ONGwhQmUpsyrCO", + "design-patterns:gof-design-patterns": "iPN9mSyFwYZER5HSkj6oL", + "design-patterns:architectural-patterns": "BGhJNtszbYJtKyhqr2jax", + "design-patterns:dependency-injection": "J7DKRklMtJ94Y-18Jo50r", + "design-patterns:null-object-pattern": "PpFQ0zmObZLvmBvqhTEMz", + "design-patterns:type-object-pattern": "_2Jddpz_cdwyeIgrg5qt_", + "basic-math-skills": "cdNi0EYrQ5nsgNxFVnXL8", + "basic-math-skills:probability": "HZ3_xyphbjhBPwwQo_rHH", + "basic-math-skills:combinatorics": "lWnAY0DgrUOmT6yqnxeBN", + "complexity-classes": "YLCmZvoLkhOk9wlgYW2Ms", + "complexity-classes:p": "3aM17dPKNi8tRJsW8lesI", + "complexity-classes:np": "ewXUHpOnjm8YrLhce1dAQ", + "complexity-classes:np-hard": "mJJ8DGUpBuHEJ7I6UTy1T", + "complexity-classes:p-equals-np": "0btHNkzWL1w_-pUgU_k2y", + "complexity-classes:np-complete": "Lwkz7qozXRlVNA20zJbSw", + "complexity-classes:np-complete:travelling-salesman-problem": "ZG-hWjVoS3p9XfrtBL0sD", + "complexity-classes:np-complete:knapsack-problem": "yHeCRPhfAOWiggZeUHPU9", + "complexity-classes:np-complete:longest-path-problem": "4QVVYjDODMWsjnrE-4UBs", + "tries": "4qUVacMEz3XFiL_dMre6P", + "balanced-search-trees": "7DF3UhefOSqqTuccH8c8X", + "balanced-search-trees:avl-trees": "OUistS7H7hQQxVV-lOg39", + "balanced-search-trees:red-black-trees": "eOL0_SzxBn7_xhNcBDi2D", + "balanced-search-trees:the-2-3-search-trees": "3jiV9R82qxpqIGfpEq_wK", + "balanced-search-trees:the-2-3-4-trees": "IaPd_zuLbiOCwoSHQLoIG", + "balanced-search-trees:n-ary-trees": "UOYeM-hqIKCrB9hGez4Q_", + "balanced-search-trees:b-tree": "s0Pi6CemUUsmZSEu2j2gH", + "system-design": "w-fvEiSJysywR3AOAB0ve", + "system-design:horizontal-vs-vertical-scaling": "-34WGppX6QC5fkCvfCghp", + "system-design:load-balancing": "xDiS0HmrEoPjkQg9x2O3o", + "system-design:clustering": "wAsZ-M5N9ERufQnBaXbAE", + "system-design:caching": "4u5w9QCptLWuY9O7_UU8V", + "system-design:cdn": "r8V9bZpc98SrLvXc070bZ", + "system-design:proxy": "qLLJ_ehC8tSRfXsorYMQz", + "system-design:cap-theorem": "GZI8EsEqiMJX3fSbO_E-7", + "system-design:queues": "LCPEzpyAuHY3ggN3nYrNN", + "system-design:architectural-styles": "X1wv7xV69IEzepg8bF8oZ", + "system-design:rest": "Kvz3Sn7L8CxP5ZXO1hlcU", + "system-design:graphql": "DeE_dZecLmKCjePovTfFS", + "system-design:grpc": "M4vdwAbjLPrLjWUsG_P1I", + "system-design:cloud-design-patterns": "YMO9oD_sbzyDZPNU2xZwe", + "system-design:long-polling": "XeJi6TwpI5Uaszj00Uv_2", + "system-design:short-polling": "gGmNJ8dK28iqrlQHPz6md", + "system-design:web-sockets": "bVjI14VismTHNCyA0mEBP", + "system-design:sse": "JckRqZA8C6IqQLPpTCgf4", + "databases": "zvlTQ0A-My4QDrslp_lru", + "databases:sql-vs-nosql-databases": "nprZscHdC_RdRIcGeGyVk", + "databases:normalization-denormalization": "Rw7QjLC8hLtXSwmU_9kHC", + "databases:entity-relationship-model": "XnxxEmr2TyW2kOpB4gtR5", + "databases:ddl": "ii1vF74u3yrFNlw_21b3B", + "databases:dml": "tcQSH-eAvJUZuePTDjAIb", + "databases:dql": "05lkb3B86Won7Rkf-8DeD", + "databases:dcl": "4bUmfuP2qgcli8I2Vm9zh", + "databases:locking": "_sm63rZNKoibVndeNgOpW", + "databases:acid-model": "W5B-v-BFcCRmuN0L1m6PI", + "databases:base-model": "q3nRhTYS5wg9tYnQe2sCF", + "databases:cap-theorem": "uqfeiQ9K--QkGNwks4kjk", + "databases:pacelc-theorem": "g6HeyLptaAYx9QBKuHQyM", + "databases:indexes": "BEbsUA39kZ5itqCwD585f", + "databases:views": "lOj_ReWI1kQ3WajJZYOWU", + "databases:transactions": "KhvYJtSCUBOpEZXjHpQde", + "databases:stored-procedures": "FjhZGhzJjYyDn0PShKmpX", + "databases:database-federation": "3r21avMlo0xFB9i7PHccX", + "databases:replication": "WUEmEtlszbISSIWDKpvg6", + "databases:sharding": "3K65efPag2076dy-MeTg4", + "networking": "zG5t3HqbZnh9CGRqp1Sb-", + "networking:osi-model": "pZ5x_zDYGzW9VxYycyXtN", + "networking:tcp-ip-model": "Fed5y1D95WPpqoVg7kmob", + "networking:dns": "fYjoXB4rnkM5gg46sqVz5", + "networking:http": "2tUwl-br-SRuwADSzmQag", + "networking:tls-https": "3pu2bGhoCLFIs6kNanwtz", + "networking:sockets": "u-c-UFegRb7xqsmvj9gVb", + "security": "JnJbJtsqKbVETY2vdLqCO", + "security:public-key-cryptography": "bDZ34BPm3lX06ERSE10cY", + "security:hashing-encryption-encoding": "7r7o8pYhFHVAJIv0wNT6X", + "security:hashing-algorithms": "EX_e4B6G07zTb4JjJ7482", + "security:owasp-top-10": "3rPSp135TdSCyvXzEzn4p", + "how-computers-work": "-emdKpD5uRNuvem5rbFXJ", + "how-computers-work:how-cpu-executes-programs": "1eglba39q426Nh0E0qcdj", + "how-computers-work:how-computers-calculate": "GDLKJkKgB-i7n0YcV2NDa", + "how-computers-work:registers-and-ram": "U3379F4AO1KSmGtVmPr27", + "how-computers-work:instructions-and-programs": "AxiGqbteK7ZSXEUt_zckH", + "how-computers-work:cpu-cache": "DjTQjMbika4_yTzrBpcmB", + "processes-and-threads": "ETEUA7jaEGyOEX8tAVNWs", + "processes-and-threads:process-forking": "RbdT5MOE4L-E7PPWKRITX", + "processes-and-threads:memory-management": "jVsZFTzyrYEDyR8LiBQL0", + "processes-and-threads:lock-mutex-semaphore": "O6-vG3FuoYet4D0hbiyrv", + "processes-and-threads:concurrency-in-multiple-cores": "xUo5Ox_HTgGyeQMDIkVyK", + "processes-and-threads:scheduling-algorithms": "Ge2nagN86ofa2y-yYR1lv", + "processes-and-threads:cpu-interrupts": "cpQvB0qMDL3-NWret7oeA", + "processes-and-threads:processes-vs-threads": "IEX6v_MYpE5Ylk_28K2ZU", + "kd-trees": "C1eNsPjiQo8INbvL2Lt7L", + "skip-lists": "K96ggeWqd5OwoNnkL04pc" +} \ No newline at end of file diff --git a/src/data/roadmaps/cyber-security/content/comptia-security@AxeDcKK3cUtEojtHQPBw7.md b/src/data/roadmaps/cyber-security/content/comptia-security@AxeDcKK3cUtEojtHQPBw7.md index b24a7b259..1eb9d5ca6 100644 --- a/src/data/roadmaps/cyber-security/content/comptia-security@AxeDcKK3cUtEojtHQPBw7.md +++ b/src/data/roadmaps/cyber-security/content/comptia-security@AxeDcKK3cUtEojtHQPBw7.md @@ -17,17 +17,19 @@ Earning the Security+ certification can open the door to various entry-level cyb ## Exam Details -To earn the CompTIA Security+ certification, candidates must pass the SY0-601 exam. The exam consists of 90 questions, which are a mix of multiple-choice and performance-based questions. Candidates are given 90 minutes to complete the exam, and a score of 750 out of 900 is required to pass. The exam is available in English, Japanese, and Simplified Chinese. +To earn the CompTIA Security+ certification, candidates must pass the SY0-701 exam. The exam consists of 90 questions, which are a mix of multiple-choice and performance-based questions. Candidates are given 90 minutes to complete the exam, and a score of 750 out of 900 is required to pass. ## Preparation Resources Preparation for the CompTIA Security+ exam involves a combination of self-study, instructor-led courses, and hands-on experience in the cybersecurity field. Recommended resources include: -- [@official@Official CompTIA Security+ Study Guide](https://www.comptia.org/training/books/security-study-guide) -- [@official@CompTIA Security+ Certification Exam Objectives](https://www.comptia.org/training/resources/exam-objectives) -- [@article@Professor Messer's Free Security+ Video Course](https://www.professormesser.com/security-plus/sy0-601/sy0-601-video/sy0-601-comptia-security-exam/) -- Practice exams and study materials from reputable providers such as [ExamCompass](https://www.examcompass.com/comptia/security-plus-certification/free-security-plus-practice-tests), [ITProTV](https://www.itpro.tv/courses/comptia/security-601/), or [Dion Training](https://www.diontraining.com/comptia-security/) +- [@official@Official CompTIA Security+ Study Guide](https://www.comptia.org/training/books/security-sy0-701-study-guide) +- [@official@CompTIA Security+ Certification Exam Details](https://www.comptia.org/certifications/security#examdetails) +- [@video@Professor Messer's Free Security+ Video Course](https://youtube.com/playlist?list=PLG49S3nxzAnl4QDVqK-hOnoqcSKEIDDuv&si=nwydzQ13lug4ymbl) +- [@course@Dion Training](https://www.udemy.com/course/securityplus/) +- [@course@Total Seminars](https://www.udemy.com/course/total-comptia-security-plus/) +- [@podcast@CompTIA Security+ 701 Audio Course Podcast](https://open.spotify.com/show/1Ch1IPQc9V9FULKSBc6UfO?si=994f9ee5a0a24ee6) While there are no formal prerequisites to take the Security+ exam, CompTIA recommends candidates have two years of experience in IT administration, focusing on security, and a CompTIA Network+ certification. -Overall, the CompTIA Security+ certification is an excellent choice for those looking to begin their journey in cybersecurity. It provides candidates with a strong foundational knowledge, while also serving as a stepping stone for more advanced certifications in the field. \ No newline at end of file +Overall, the CompTIA Security+ certification is an excellent choice for those looking to begin their journey in cybersecurity. It provides candidates with a strong foundational knowledge, while also serving as a stepping stone for more advanced certifications in the field. diff --git a/src/data/roadmaps/cyber-security/content/dns@ORIdKG8H97VkBUYpiDtXf.md b/src/data/roadmaps/cyber-security/content/dns@ORIdKG8H97VkBUYpiDtXf.md index 0afedeef7..3c4b7cebe 100644 --- a/src/data/roadmaps/cyber-security/content/dns@ORIdKG8H97VkBUYpiDtXf.md +++ b/src/data/roadmaps/cyber-security/content/dns@ORIdKG8H97VkBUYpiDtXf.md @@ -23,5 +23,5 @@ Some common DNS record types you might encounter include: As an essential part of the internet, the security and integrity of the DNS infrastructure are crucial. However, it's vulnerable to various types of cyber attacks, such as DNS cache poisoning, Distributed Denial of Service (DDoS) attacks, and DNS hijacking. Proper DNS security measures, such as DNSSEC (DNS Security Extensions) and monitoring unusual DNS traffic patterns, can help mitigate risks associated with these attacks. - [@article@DNS in detail (TryHackMe)](https://tryhackme.com/room/dnsindetail) -- [@video@DNS in 100 Seconds (YouTube)](https://www.youtube.com/watch?v=uvr9lhugayu) -- [@feed@Explore top posts about DNS](https://app.daily.dev/tags/dns?ref=roadmapsh) \ No newline at end of file +- [@video@DNS Explained in 100 Seconds (YouTube)](https://www.youtube.com/watch?v=UVR9lhUGAyU) +- [@feed@Explore top posts about DNS](https://app.daily.dev/tags/dns?ref=roadmapsh) diff --git a/src/data/roadmaps/cyber-security/content/dns@r1IKvhpwg2umazLGlQZL1.md b/src/data/roadmaps/cyber-security/content/dns@r1IKvhpwg2umazLGlQZL1.md index 0afedeef7..3c4b7cebe 100644 --- a/src/data/roadmaps/cyber-security/content/dns@r1IKvhpwg2umazLGlQZL1.md +++ b/src/data/roadmaps/cyber-security/content/dns@r1IKvhpwg2umazLGlQZL1.md @@ -23,5 +23,5 @@ Some common DNS record types you might encounter include: As an essential part of the internet, the security and integrity of the DNS infrastructure are crucial. However, it's vulnerable to various types of cyber attacks, such as DNS cache poisoning, Distributed Denial of Service (DDoS) attacks, and DNS hijacking. Proper DNS security measures, such as DNSSEC (DNS Security Extensions) and monitoring unusual DNS traffic patterns, can help mitigate risks associated with these attacks. - [@article@DNS in detail (TryHackMe)](https://tryhackme.com/room/dnsindetail) -- [@video@DNS in 100 Seconds (YouTube)](https://www.youtube.com/watch?v=uvr9lhugayu) -- [@feed@Explore top posts about DNS](https://app.daily.dev/tags/dns?ref=roadmapsh) \ No newline at end of file +- [@video@DNS Explained in 100 Seconds (YouTube)](https://www.youtube.com/watch?v=UVR9lhUGAyU) +- [@feed@Explore top posts about DNS](https://app.daily.dev/tags/dns?ref=roadmapsh) diff --git a/src/data/roadmaps/cyber-security/content/gtfobins@Jd9t8e9r29dHRsN40dDOk.md b/src/data/roadmaps/cyber-security/content/gtfobins@Jd9t8e9r29dHRsN40dDOk.md new file mode 100644 index 000000000..d439785e7 --- /dev/null +++ b/src/data/roadmaps/cyber-security/content/gtfobins@Jd9t8e9r29dHRsN40dDOk.md @@ -0,0 +1,8 @@ +# GTFOBINS + +GTFOBins (GTFOBINS) is a curated list of Unix binaries that can be exploited by attackers to bypass local security restrictions on a misconfigured system. It provides a detailed index of commands and scripts, demonstrating how certain binaries, when used improperly, can enable privilege escalation, file manipulation, and other unauthorized activities, thus serving as a resource for both security professionals to understand potential vulnerabilities and for attackers to identify and exploit weaknesses. + +Learn more from the following resources: + +- [@opensource@GTFOBins/GTFOBins.github.io](https://gtfobins.github.io/) +- [@video@Mastering Privilege Escalation: A Comprehensive Guide on GTFOBins](https://www.youtube.com/watch?v=gx6CTtWohLQ) \ No newline at end of file diff --git a/src/data/roadmaps/cyber-security/content/javascript@2SThr6mHpX6rpW-gmsqxG.md b/src/data/roadmaps/cyber-security/content/javascript@2SThr6mHpX6rpW-gmsqxG.md index 70c1f547f..70d0a787f 100644 --- a/src/data/roadmaps/cyber-security/content/javascript@2SThr6mHpX6rpW-gmsqxG.md +++ b/src/data/roadmaps/cyber-security/content/javascript@2SThr6mHpX6rpW-gmsqxG.md @@ -40,7 +40,6 @@ Here are some resources to sharpen your JavaScript programming skills: - [@article@Mozilla Developer Network (MDN) JavaScript Guide](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide) - [@article@W3Schools JavaScript Tutorial](https://www.w3schools.com/js/) -- [@article@freeCodeCamp's JavaScript Curriculum](https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/) - [@article@Eloquent JavaScript: A Modern Introduction to Programming](https://eloquentjavascript.net/) (book) - [@feed@Explore top posts about JavaScript](https://app.daily.dev/tags/javascript?ref=roadmapsh) diff --git a/src/data/roadmaps/cyber-security/content/proxmax@jqX1A5hFF3Qznqup4lfiF.md b/src/data/roadmaps/cyber-security/content/proxmox@jqX1A5hFF3Qznqup4lfiF.md similarity index 100% rename from src/data/roadmaps/cyber-security/content/proxmax@jqX1A5hFF3Qznqup4lfiF.md rename to src/data/roadmaps/cyber-security/content/proxmox@jqX1A5hFF3Qznqup4lfiF.md diff --git a/src/data/roadmaps/cyber-security/content/understand-cia-triad@uz6ELaLEu9U4fHVfnQiOa.md b/src/data/roadmaps/cyber-security/content/understand-cia-triad@uz6ELaLEu9U4fHVfnQiOa.md index c2f05a0df..024d730a5 100644 --- a/src/data/roadmaps/cyber-security/content/understand-cia-triad@uz6ELaLEu9U4fHVfnQiOa.md +++ b/src/data/roadmaps/cyber-security/content/understand-cia-triad@uz6ELaLEu9U4fHVfnQiOa.md @@ -34,4 +34,4 @@ Availability ensures that systems and information are accessible and functional In summary, the CIA Triad is an essential aspect of cybersecurity, providing a clear framework to evaluate and implement security measures. By ensuring confidentiality, integrity, and availability, you create a robust and secure environment for your information and systems. -- [@article@What is the CIA Triad (Varonis)?](https://www.varonis.com/blog/cia-triad) \ No newline at end of file +- [@video@The CIA Triad - Professor Messer](https://www.youtube.com/watch?v=SBcDGb9l6yo) diff --git a/src/data/roadmaps/cyber-security/content/wadcoms@Rnpx7VkhrBkSQTni6UuTR.md b/src/data/roadmaps/cyber-security/content/wadcoms@Rnpx7VkhrBkSQTni6UuTR.md new file mode 100644 index 000000000..a82296440 --- /dev/null +++ b/src/data/roadmaps/cyber-security/content/wadcoms@Rnpx7VkhrBkSQTni6UuTR.md @@ -0,0 +1,8 @@ +# WADCOMS + +WADcoms (Web Application Dangerous Commands) is a comprehensive database of dangerous web application commands and patterns that can be exploited to compromise web security. It offers a catalog of potentially harmful commands and their contexts, helping security professionals identify and mitigate risks associated with web applications by understanding how these commands can be misused for attacks like SQL injection, cross-site scripting (XSS), and remote code execution (RCE). + +Learn more from the following resources: + +- [@opensource@WADComs/WADComs.github.io](https://wadcoms.github.io/) +- [@article@WADComs: Windows/Active Directory Interactive Cheat Sheet](https://john-woodman.com/research/wadcoms/) \ No newline at end of file diff --git a/src/data/roadmaps/cyber-security/cyber-security.json b/src/data/roadmaps/cyber-security/cyber-security.json index 610233c92..4fd87a27a 100644 --- a/src/data/roadmaps/cyber-security/cyber-security.json +++ b/src/data/roadmaps/cyber-security/cyber-security.json @@ -4203,7 +4203,7 @@ }, "selected": false, "data": { - "label": "proxmax", + "label": "proxmox", "style": { "fontSize": 17, "justifyContent": "flex-start", @@ -6130,8 +6130,8 @@ } }, "zIndex": 999, - "width": 345, - "height": 36, + "width": 315, + "height": 60, "style": {}, "positionAbsolute": { "x": -397.4653099623346, @@ -7461,7 +7461,7 @@ "id": "10qbxX8DCrfyH7tgYexxQ", "type": "subtopic", "position": { - "x": -388.85457362646355, + "x": -385.24003999212795, "y": 2743.5549352589032 }, "selected": false, @@ -7474,14 +7474,14 @@ } }, "zIndex": 999, - "width": 317, + "width": 100, "height": 49, "style": { - "width": 317, + "width": 100, "height": 49 }, "positionAbsolute": { - "x": -388.85457362646355, + "x": -385.24003999212795, "y": 2743.5549352589032 }, "dragging": false, @@ -8730,8 +8730,8 @@ } }, "zIndex": 999, - "width": 352, - "height": 36, + "width": 315, + "height": 60, "style": {}, "positionAbsolute": { "x": -23.8699925629752, @@ -11293,8 +11293,8 @@ } }, "zIndex": 999, - "width": 424, - "height": 49, + "width": 315, + "height": 69, "style": {}, "positionAbsolute": { "x": -372.36545692599566, @@ -11586,6 +11586,66 @@ }, "selectable": true, "focusable": true + }, + { + "id": "Jd9t8e9r29dHRsN40dDOk", + "type": "subtopic", + "position": { + "x": -281.24003999212795, + "y": 2743.5549352589032 + }, + "selected": false, + "data": { + "label": "GTFOBINS", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "positionAbsolute": { + "x": -281.24003999212795, + "y": 2743.5549352589032 + }, + "dragging": false, + "style": { + "width": 100, + "height": 49 + }, + "resizing": false + }, + { + "id": "Rnpx7VkhrBkSQTni6UuTR", + "type": "subtopic", + "position": { + "x": -177.24003999212795, + "y": 2743.5549352589032 + }, + "selected": true, + "data": { + "label": "WADCOMS", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "positionAbsolute": { + "x": -177.24003999212795, + "y": 2743.5549352589032 + }, + "dragging": false, + "style": { + "width": 100, + "height": 49 + }, + "resizing": false } ], "edges": [ @@ -11933,4 +11993,4 @@ "focusable": true } ] -} \ No newline at end of file +} diff --git a/src/data/roadmaps/data-analyst/content/analaysis--reporting-with-excel@sgXIjVTbwdwdYoaxN3XBM.md b/src/data/roadmaps/data-analyst/content/analaysis--reporting-with-excel@sgXIjVTbwdwdYoaxN3XBM.md index c52be4531..1054ca00b 100644 --- a/src/data/roadmaps/data-analyst/content/analaysis--reporting-with-excel@sgXIjVTbwdwdYoaxN3XBM.md +++ b/src/data/roadmaps/data-analyst/content/analaysis--reporting-with-excel@sgXIjVTbwdwdYoaxN3XBM.md @@ -1,3 +1,5 @@ # Excel -Excel is a powerful tool utilized by data analysts worldwide to store, manipulate, and analyze data. It offers a vast array of features such as pivot tables, graphs and a powerful suite of formulas and functions to help sift through large sets of data. A data analyst uses Excel to perform a wide range of tasks, from simple data entry and cleaning, to more complex statistical analysis and predictive modeling. Proficiency in Excel is often a key requirement for a data analyst, as its versatility and ubiquity make it an indispensable tool in the field of data analysis. \ No newline at end of file +Excel is a powerful tool utilized by data analysts worldwide to store, manipulate, and analyze data. It offers a vast array of features such as pivot tables, graphs and a powerful suite of formulas and functions to help sift through large sets of data. A data analyst uses Excel to perform a wide range of tasks, from simple data entry and cleaning, to more complex statistical analysis and predictive modeling. Proficiency in Excel is often a key requirement for a data analyst, as its versatility and ubiquity make it an indispensable tool in the field of data analysis. + +- [@article@W3Schools - Excel](https://www.w3schools.com/excel/index.php) diff --git a/src/data/roadmaps/data-analyst/content/data-transformation@t_BRtEharsrOZxoyX0OzV.md b/src/data/roadmaps/data-analyst/content/data-transformation@t_BRtEharsrOZxoyX0OzV.md index e02c33c20..58432ca35 100644 --- a/src/data/roadmaps/data-analyst/content/data-transformation@t_BRtEharsrOZxoyX0OzV.md +++ b/src/data/roadmaps/data-analyst/content/data-transformation@t_BRtEharsrOZxoyX0OzV.md @@ -2,7 +2,4 @@ Data Transformation, also known as Data Wrangling, is an essential part of a Data Analyst's role. This process involves the conversion of data from a raw format into another format to make it more appropriate and valuable for a variety of downstream purposes such as analytics. Data Analysts transform data to make the data more suitable for analysis, ensure accuracy, and to improve data quality. The right transformation techniques can give the data a structure, multiply its value, and enhance the accuracy of the analytics performed by serving meaningful results. -- [@article@What is Data Transformation - Geeks for Geeks](https://www.geeksforgeeks.org/what-is-data-transformation/) -- [@article@Example with Python](https://www.geeksforgeeks.org/time-series-data-transformation-using-python/) -- [@article@Example with R](https://www.geeksforgeeks.org/data-cleaning-transformation-with-dplyr-in-r/) - [@feed@Explore top posts about Data Analysis](https://app.daily.dev/tags/data-analysis?ref=roadmapsh) diff --git a/src/data/roadmaps/data-analyst/content/learn-a-programming-lang@i2uEcaO4bJhcZ5ayRs2CQ.md b/src/data/roadmaps/data-analyst/content/learn-a-programming-lang@i2uEcaO4bJhcZ5ayRs2CQ.md index e0c310eb1..6a64b944e 100644 --- a/src/data/roadmaps/data-analyst/content/learn-a-programming-lang@i2uEcaO4bJhcZ5ayRs2CQ.md +++ b/src/data/roadmaps/data-analyst/content/learn-a-programming-lang@i2uEcaO4bJhcZ5ayRs2CQ.md @@ -1 +1,5 @@ -# Learn a Programming Lang. \ No newline at end of file +# Learn a Programming Language + +We have two main programming languages when it comes to data analysis: Python and R. Both have extensive libraries to help with decision-making processes in various situations, assisting in manipulating, modeling, and visualizing data. Python is a versatile language, used not only for data analysis but also for web development, automation, artificial intelligence, and more. R, on the other hand, was specifically created for statistical analysis and data visualization, making it an excellent choice for statisticians and researchers. It is known for its advanced visualization capabilities, allowing the creation of highly customizable and sophisticated graphs and plots. + +With potential doubts about which language to choose to advance in a data career, it is ideal to consider your goals and/or the current market needs and choose which language to learn. If you are more interested in a career that combines data analysis with software development, automation, or artificial intelligence, Python may be the best choice. If your focus is purely on statistics and data visualization, R might be more suitable. diff --git a/src/data/roadmaps/data-analyst/content/trim@D5Q6o6ydr1j51kB0ASFPE.md b/src/data/roadmaps/data-analyst/content/trim@D5Q6o6ydr1j51kB0ASFPE.md index 8edbc7280..c8a16825c 100644 --- a/src/data/roadmaps/data-analyst/content/trim@D5Q6o6ydr1j51kB0ASFPE.md +++ b/src/data/roadmaps/data-analyst/content/trim@D5Q6o6ydr1j51kB0ASFPE.md @@ -1,3 +1,3 @@ # Trim -Trim is considered a basic yet vital function within the scope of data analysis. It plays an integral role in preparing and cleansing the dataset, which is key to analytical accuracy. Trim allows data analysts to streamline dataset by removing extra spaces, unwanted characters, outliers or specific ranges of values, hence, enhancing the data quality. Furthermore, Trim functions can help in reducing the errors, enhancing the efficiency of data modelling and ensuring reliable data insight generation. Understanding Trim function is thus an essential part of a data analyst's toolbox. \ No newline at end of file +Trim is considered a basic yet vital function within the scope of data analysis. It plays an integral role in preparing and cleansing the dataset, which is key to analytical accuracy. Trim allows data analysts to streamline dataset by removing extra spaces, enhancing the data quality. Furthermore, Trim functions can help in reducing the errors, enhancing the efficiency of data modelling and ensuring reliable data insight generation. Understanding Trim function is thus an essential part of a data analyst's toolbox. diff --git a/src/data/roadmaps/data-analyst/data-analyst.json b/src/data/roadmaps/data-analyst/data-analyst.json index b86422974..96f29c3af 100644 --- a/src/data/roadmaps/data-analyst/data-analyst.json +++ b/src/data/roadmaps/data-analyst/data-analyst.json @@ -1319,7 +1319,7 @@ "id": "dke_pySrqYZZ7K3rprnIT", "type": "subtopic", "data": { - "label": "REPLACE / SUBSTITUE", + "label": "REPLACE / SUBSTITUTE", "style": { "fontSize": 17, "justifyContent": "flex-start", @@ -6444,4 +6444,4 @@ "selected": false } ] -} \ No newline at end of file +} diff --git a/src/data/roadmaps/datastructures-and-algorithms/content/100-language/105-python.md b/src/data/roadmaps/datastructures-and-algorithms/content/100-language/105-python.md index cd5daf295..2885ee0ec 100644 --- a/src/data/roadmaps/datastructures-and-algorithms/content/100-language/105-python.md +++ b/src/data/roadmaps/datastructures-and-algorithms/content/100-language/105-python.md @@ -8,7 +8,6 @@ Visit the following resources to learn more: - [@official@Python Website](https://www.python.org/) - [@official@Python Getting Started](https://www.python.org/about/gettingstarted/) - [@article@Automate the Boring Stuff](https://automatetheboringstuff.com/) -- [@article@FreeCodeCamp.org - How to Learn Python ? ](https://www.freecodecamp.org/news/how-to-learn-python/) - [@article@Python principles - Python basics](https://pythonprinciples.com/) - [@article@W3Schools - Python Tutorial ](https://www.w3schools.com/python/) - [@article@Python Crash Course](https://ehmatthes.github.io/pcc/) diff --git a/src/data/roadmaps/datastructures-and-algorithms/content/103-basic-data-structures/101-linked-lists.md b/src/data/roadmaps/datastructures-and-algorithms/content/103-basic-data-structures/101-linked-lists.md index 1a6d0c52f..649c9f6f6 100644 --- a/src/data/roadmaps/datastructures-and-algorithms/content/103-basic-data-structures/101-linked-lists.md +++ b/src/data/roadmaps/datastructures-and-algorithms/content/103-basic-data-structures/101-linked-lists.md @@ -4,6 +4,5 @@ Linked Lists are a type of data structure used for storing collections of data. Learn more from the following links: -- [@article@Linked List Explained: from Basics to Advanced](https://www.freecodecamp.org/news/how-linked-lists-work/) - [@video@Introduction To Linked List](https://youtu.be/Nq7ok-OyEpg?si=xttaGoYKcoJ09Ln2) - [@video@Python Linked List](https://www.youtube.com/watch?v=qp8u-frRAnU&list=PLeo1K3hjS3uu_n_a__MI_KktGTLYopZ12&index=4&ab_channel=codebasics) diff --git a/src/data/roadmaps/datastructures-and-algorithms/content/103-basic-data-structures/103-queues.md b/src/data/roadmaps/datastructures-and-algorithms/content/103-basic-data-structures/103-queues.md index c7cba55b7..b4da8e99c 100644 --- a/src/data/roadmaps/datastructures-and-algorithms/content/103-basic-data-structures/103-queues.md +++ b/src/data/roadmaps/datastructures-and-algorithms/content/103-basic-data-structures/103-queues.md @@ -4,5 +4,5 @@ Queues are a type of data structure in which elements are held in a sequence and Learn more from the following links: -- [@video@Queue](https://www.youtube.com/watch?v=GYptUgnIM_I) +- [@video@Queue](https://www.youtube.com/watch?v=M6GnoUDpqEE) - [@video@Python Queue](https://www.youtube.com/watch?v=rUUrmGKYwHw) diff --git a/src/data/roadmaps/devops/content/bash@syBIAL1mHbJLnTBoSxXI7.md b/src/data/roadmaps/devops/content/bash@syBIAL1mHbJLnTBoSxXI7.md index 68fce2c78..c440361fa 100644 --- a/src/data/roadmaps/devops/content/bash@syBIAL1mHbJLnTBoSxXI7.md +++ b/src/data/roadmaps/devops/content/bash@syBIAL1mHbJLnTBoSxXI7.md @@ -1,5 +1,4 @@ # Bash scripting -- [@article@Bash Scripting Tutorial](https://www.freecodecamp.org/news/bash-scripting-tutorial-linux-shell-script-and-command-line-for-beginners/) - [@article@Interactive Shell Scripting Tutorial](https://www.learnshell.org/en/Welcome) - [@feed@Explore top posts about Bash](https://app.daily.dev/tags/bash?ref=roadmapsh) \ No newline at end of file diff --git a/src/data/roadmaps/devops/content/networking-tools@OaqKLZe-XnngcDhDzCtRt.md b/src/data/roadmaps/devops/content/networking-tools@OaqKLZe-XnngcDhDzCtRt.md index 5c9aa935a..1a5fa7987 100644 --- a/src/data/roadmaps/devops/content/networking-tools@OaqKLZe-XnngcDhDzCtRt.md +++ b/src/data/roadmaps/devops/content/networking-tools@OaqKLZe-XnngcDhDzCtRt.md @@ -15,56 +15,53 @@ Networking tools are used to troubleshoot network issues. They are also used to `traceroute` command is a command in Linux that prints the route a network packet takes from its source (e.g. your computer) to the destination host (e.g., roadmap.sh). It is quite valuable in investigating slow network connections as it can help us spot the slow leg of the network packet journey through the internet. -- [@article@How to Run Traceroute in Linux](https://linuxhint.com/run_traceroute_linux/) +- [How to Run Traceroute in Linux](https://linuxhint.com/run_traceroute_linux/) `ping` (**P**acket **In**ternet **G**roper) command is used to check the network connectivity between host and server/host. This command takes as input the IP address or the URL and sends a data packet to the specified address with the message “PING” and get a response from the server/host this time is recorded which is called latency. -- [@article@What is ping command?](https://linuxize.com/post/linux-ping-command/) +- [What is ping command?](https://linuxize.com/post/linux-ping-command/) `mtr` combines the functionality of the traceroute and ping programs in a single network diagnostic tool. -- [@article@Javatpoint: Linux mtr Command](https://www.javatpoint.com/linux-mtr) -- [@article@mtr Linux command](https://www.tutorialspoint.com/unix_commands/mtr.htm) -- [@article@How to traceroute use mtr command in Linux](https://www.devopsroles.com/how-to-traceroute-use-mtr-command-in-linux/) +- [Javatpoint: Linux mtr Command](https://www.javatpoint.com/linux-mtr) +- [mtr Linux command](https://www.tutorialspoint.com/unix_commands/mtr.htm) +- [How to traceroute use mtr command in Linux](https://www.devopsroles.com/how-to-traceroute-use-mtr-command-in-linux/) NMAP stands for Network Mapper and is an open-source tool used to explore and audit the network's security, such as checking firewalls and scanning ports. -- [@article@NMAP Official Manual Book](https://nmap.org/book/man.html) -- [@article@What is Nmap and How to Use it](https://www.freecodecamp.org/news/what-is-nmap-and-how-to-use-it-a-tutorial-for-the-greatest-scanning-tool-of-all-time/) +- [NMAP Official Manual Book](https://nmap.org/book/man.html) Netstat is a command line utility to display all the network connections on a system. It displays all the tcp, udp and unix socket connections. Apart from connected sockets it also displays listening sockets that are waiting for incoming connections. -- [@article@netstat command in Linux with Examples](https://www.tutorialspoint.com/unix_commands/netstat.htm) -- [@article@Netstat Tutorial](http://www.c-jump.com/CIS24/Slides/Networking/html_utils/netstat.html) -- [@video@Netstat Commands - Network Administration Tutorial](https://www.youtube.com/watch?v=bxFwpm4IobU) -- [@video@Linux Command Line Tutorial For Beginners - netstat command](https://www.youtube.com/watch?v=zGNcvBaN5wE) +- [netstat command in Linux with Examples](https://www.tutorialspoint.com/unix_commands/netstat.htm) +- [Netstat Tutorial](http://www.c-jump.com/CIS24/Slides/Networking/html_utils/netstat.html) +- [Netstat Commands - Network Administration Tutorial](https://www.youtube.com/watch?v=bxFwpm4IobU) +- [Linux Command Line Tutorial For Beginners - netstat command](https://www.youtube.com/watch?v=zGNcvBaN5wE) UFW, or _uncomplicated firewall_, is command-line based utility for managing firewall rules in Arch Linux, Debian and Ubuntu. It's aim is to make firewall configuration as simple as possible. It is a frontend for the `iptables` firewalling tool. -- [@article@ufw Documentation](https://manpages.ubuntu.com/manpages/trusty/man8/ufw.8.html) -- [@article@Basic Introduction to UFW](https://www.linux.com/training-tutorials/introduction-uncomplicated-firewall-ufw/) -- [@article@UFW Essentials](https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands) +- [ufw Documentation](https://manpages.ubuntu.com/manpages/trusty/man8/ufw.8.html) +- [Basic Introduction to UFW](https://www.linux.com/training-tutorials/introduction-uncomplicated-firewall-ufw/) +- [UFW Essentials](https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands) IPtables is a command-line firewall utility that uses policy chains to allow or block traffic that will be enforced by the linux kernel’s netfilter framework. Iptables packet filtering mechanism is organized into three different kinds of structures: tables, chains and targets. -- [@article@Iptables tutorial](https://www.hostinger.in/tutorials/iptables-tutorial) -- [@article@Beginners to Advanced Guide Iptables](https://erravindrapawadia.medium.com/iptables-tutorial-beginners-to-advanced-guide-to-linux-firewall-839e10501759) +- [Iptables tutorial](https://www.hostinger.in/tutorials/iptables-tutorial) +- [Beginners to Advanced Guide Iptables](https://erravindrapawadia.medium.com/iptables-tutorial-beginners-to-advanced-guide-to-linux-firewall-839e10501759) `tcpdump` is a command line tool used for analysing network traffic passing through your system. It can be used to capture and filter packets and display them in a human-readable format. The captured information can be analysed at a later date as well. -- [@article@tcpdump Documentation](https://www.tcpdump.org/manpages/tcpdump.1.html) -- [@article@Basic Introduction to Tcpdump](https://opensource.com/article/18/10/introduction-tcpdump) -- [@article@50 ways to isolate traffic with Tcpdump](https://danielmiessler.com/study/tcpdump/) -- [@video@Interpreting Tcpdump output and data](https://www.youtube.com/watch?v=7bsQP9sKHrs) +- [tcpdump Documentation](https://www.tcpdump.org/manpages/tcpdump.1.html) +- [Basic Introduction to Tcpdump](https://opensource.com/article/18/10/introduction-tcpdump) +- [50 ways to isolate traffic with Tcpdump](https://danielmiessler.com/study/tcpdump/) +- [Interpreting Tcpdump output and data](https://www.youtube.com/watch?v=7bsQP9sKHrs) `dig` command stands for **D**omain **I**nformation **G**roper. It is used for retrieving information about DNS name servers. It is mostly used by network administrators for verifying and troubleshooting DNS problems and to perform DNS lookups. It replaces older tools such as `nslookup` and the `host`. -- [@article@More on dig](https://linuxize.com/post/how-to-use-dig-command-to-query-dns-in-linux/) -- [@article@What is DNS?](https://www.cloudflare.com/en-gb/learning/dns/what-is-dns/) +- [More on dig](https://linuxize.com/post/how-to-use-dig-command-to-query-dns-in-linux/) +- [What is DNS?](https://www.cloudflare.com/en-gb/learning/dns/what-is-dns/) `SCP` is an acronym for Secure Copy Protocol.It is a command line utility that allows the user to securely copy files and directories between two locations usually between unix or linux systems.The protocol ensures the transmission of files is encrypted to prevent anyone with suspicious intentions from getting sensitive information.`SCP` uses encryption over an `SSH` (Secure Shell) connection, this ensures that the data being transferred is protected from suspicious attacks. -- [@article@SCP Linux Command](https://www.freecodecamp.org/news/scp-linux-command-example-how-to-ssh-file-transfer-from-remote-to-local/) -- [@article@10 SCP command examples](https://www.tecmint.com/scp-commands-examples/) -- [@article@SCP command explained](https://phoenixnap.com/kb/linux-scp-command) -- [@feed@Explore top posts about Networking](https://app.daily.dev/tags/networking?ref=roadmapsh) +- [10 SCP command examples](https://www.tecmint.com/scp-commands-examples/) +- [SCP command explained](https://phoenixnap.com/kb/linux-scp-command) diff --git a/src/data/roadmaps/devops/content/text-manipulation@cUifrP7v55psTb20IZndf.md b/src/data/roadmaps/devops/content/text-manipulation@cUifrP7v55psTb20IZndf.md index 1528bc54a..9bdbe5527 100644 --- a/src/data/roadmaps/devops/content/text-manipulation@cUifrP7v55psTb20IZndf.md +++ b/src/data/roadmaps/devops/content/text-manipulation@cUifrP7v55psTb20IZndf.md @@ -33,7 +33,6 @@ The `grep` command (**g**lobal search for **r**egular **e**xpression and **p**ri `sort` command is used to sort the contents of a file in a particular order. By default, it sorts a file assuming the contents are in ASCII. But it also can also be used to sort numerically by using appropriate options. - [@article@Options](https://en.wikipedia.org/wiki/Sort_(Unix)) -- [@video@Linux Tutorials|sort command GeeksforGeeks](https://www.youtube.com/watch?v=fEx5rnbDKO4) The cut utility cuts out selected portions of each line (as specified by list) from each file and writes them to the standard output. @@ -49,7 +48,6 @@ The uniq utility reads the specified input_file comparing adjacent lines, and wr - [@article@Cat Command with examples](https://www.tecmint.com/13-basic-cat-command-examples-in-linux/) - [@article@Options](https://en.wikipedia.org/wiki/Cat_(Unix)) -- [@video@Linux Tutorials|cat command|GeeksforGeeks](https://www.youtube.com/watch?v=exj5WMUJ11g) `echo` is a built-in command in Linux used to display lines of text/string that are passed as an argument. It is mostly used in shell scripts and batch files to output status text or `ENV` variables to the screen or a file. @@ -68,7 +66,6 @@ The tr utility copies the standard input to the standard output with substitutio The nl utility reads lines from the named file or the standard input if the file argument is omitted, applies a configurable line numbering filter operation and writes the result to the standard output. - [@article@nl Documentation](https://man7.org/linux/man-pages/man1/nl.1.html) -- [@article@nl Cheat Sheet](https://www.geeksforgeeks.org/nl-command-in-linux-with-examples/) The wc utility displays the number of lines, words, and bytes contained in each input file, or standard input (if no file is specified) to the standard output. diff --git a/src/data/roadmaps/devrel/content/advocacy@7MCmY1bABGPfmzjErADvg.md b/src/data/roadmaps/devrel/content/advocacy@7MCmY1bABGPfmzjErADvg.md index ee01f12cd..0e14a5067 100644 --- a/src/data/roadmaps/devrel/content/advocacy@7MCmY1bABGPfmzjErADvg.md +++ b/src/data/roadmaps/devrel/content/advocacy@7MCmY1bABGPfmzjErADvg.md @@ -5,5 +5,4 @@ Developer Advocacy is the practice of representing and supporting the needs and Learn more from the following resources: - [@article@What is developer advocacy?](https://appsembler.com/glossary/developer-advocacy/) -- [@article@What the heck is a developer advocate?](https://www.freecodecamp.org/news/what-the-heck-is-a-developer-advocate-87ab4faccfc4/) - [@video@Developer Relations: New Career Path for Developers](https://www.youtube.com/watch?v=iA2SQ4OL4GU) diff --git a/src/data/roadmaps/devrel/content/writing-skills@0ntOE6PSdMl_EXB9gdgIv.md b/src/data/roadmaps/devrel/content/writing-skills@0ntOE6PSdMl_EXB9gdgIv.md index d893d531c..44c6caed6 100644 --- a/src/data/roadmaps/devrel/content/writing-skills@0ntOE6PSdMl_EXB9gdgIv.md +++ b/src/data/roadmaps/devrel/content/writing-skills@0ntOE6PSdMl_EXB9gdgIv.md @@ -1 +1,9 @@ -# Writing Skills \ No newline at end of file +# Writing Skills + +Good writing skills are crucial for software developers because they enhance communication, documentation, and collaboration. Clear and concise writing ensures that complex technical concepts are easily understood by team members, stakeholders, and end-users. Effective documentation, including comments, user manuals, and technical guides, helps maintain code quality and facilitates future maintenance and updates. Writing also plays a key role in crafting clear commit messages, bug reports, and project proposals, which are essential for smooth project management and collaboration. In an increasingly global and remote work environment, the ability to articulate ideas and solutions in writing becomes even more vital, ensuring that everyone is on the same page and can contribute effectively to the project's success. + +Learn more from the following resources: + +- [@article@Putting Ideas into Words](https://www.paulgraham.com/words.html) +- [@article@Patterns in confusing explanations](https://jvns.ca/blog/confusing-explanations/) +- [@article@Signposting: How to reduce cognitive load for your reader](https://newsletter.weskao.com/p/sign-posting-how-to-reduce-cognitive) diff --git a/src/data/roadmaps/docker/content/102-installation-setup/101-docker-engine.md b/src/data/roadmaps/docker/content/102-installation-setup/101-docker-engine.md index 6e0eafed0..c418969ee 100644 --- a/src/data/roadmaps/docker/content/102-installation-setup/101-docker-engine.md +++ b/src/data/roadmaps/docker/content/102-installation-setup/101-docker-engine.md @@ -7,7 +7,7 @@ Docker Engine includes: - Docker Command Line Interface (CLI) - Docker daemon (dockerd), exposing the Docker Application Programming Interface (API) -Docker Engine can build container images, run containers from them, and generally do most things that Docker Desktop but is Linux only and doesn't provide all of the developer experience polish that Docker Desktop provides. +Docker Engine can build container images, run containers from them, and generally do most things that Docker Desktop can, but it is Linux only and doesn't provide all of the developer experience polish that Docker Desktop provides. For more information about docker engine see: diff --git a/src/data/roadmaps/flutter/content/100-dart-basics/index.md b/src/data/roadmaps/flutter/content/100-dart-basics/index.md index 797199f30..08b77f8fd 100644 --- a/src/data/roadmaps/flutter/content/100-dart-basics/index.md +++ b/src/data/roadmaps/flutter/content/100-dart-basics/index.md @@ -6,7 +6,6 @@ Visit the following resources to learn more: - [@official@Dart Overview](https://dart.dev/overview) - [@article@What is Dart Programming?](https://www.javatpoint.com/flutter-dart-programming) -- [@article@Dart Tutorial](https://www.geeksforgeeks.org/dart-tutorial/) - [@article@About Dart](https://flutterbyexample.com/lesson/about-dart) - [@video@What is Dart?](https://www.youtube.com/watch?v=sOSd6G1qXoY) - [@video@Dart in 100 Seconds](https://www.youtube.com/watch?v=NrO0CJCbYLA) diff --git a/src/data/roadmaps/flutter/content/101-setup-development-environment/101-ides/101-android-studio.md b/src/data/roadmaps/flutter/content/101-setup-development-environment/101-ides/101-android-studio.md index 455946494..fe468c4c4 100644 --- a/src/data/roadmaps/flutter/content/101-setup-development-environment/101-ides/101-android-studio.md +++ b/src/data/roadmaps/flutter/content/101-setup-development-environment/101-ides/101-android-studio.md @@ -12,7 +12,6 @@ By providing a rich set of tools and features for Flutter development, Android S Learn more from the following links: -- [@article@Android Studio Setup for Flutter Development](https://www.geeksforgeeks.org/android-studio-setup-for-flutter-development/) - [@article@Android Studio for Flutter](https://docs.flutter.dev/development/tools/android-studio) - [@article@Get started with Android Studio](https://dart.dev/tools/jetbrains-plugin) - [@feed@Explore top posts about Android](https://app.daily.dev/tags/android?ref=roadmapsh) diff --git a/src/data/roadmaps/flutter/content/102-widgets/102-styled-widgets/100-material-widgets.md b/src/data/roadmaps/flutter/content/102-widgets/102-styled-widgets/100-material-widgets.md index 10b242db9..63cbd78ff 100644 --- a/src/data/roadmaps/flutter/content/102-widgets/102-styled-widgets/100-material-widgets.md +++ b/src/data/roadmaps/flutter/content/102-widgets/102-styled-widgets/100-material-widgets.md @@ -16,6 +16,5 @@ These widgets are commonly used in Flutter apps to provide a familiar look and f Visit the following resources to learn more: - [@article@Material Components widgets](https://docs.flutter.dev/development/ui/widgets/material) -- [@article@Flutter – Material Design](https://www.geeksforgeeks.org/flutter-material-design/) - [@article@Widget catalog in Flutter](https://docs.flutter.dev/development/ui/widgets) - [@article@Material Designs Guidlines](https://m2.material.io/design/guidelines-overview) diff --git a/src/data/roadmaps/flutter/content/105-repo-hosting-services/100-github.md b/src/data/roadmaps/flutter/content/105-repo-hosting-services/100-github.md index a62c30a4a..28bd12052 100644 --- a/src/data/roadmaps/flutter/content/105-repo-hosting-services/100-github.md +++ b/src/data/roadmaps/flutter/content/105-repo-hosting-services/100-github.md @@ -16,5 +16,4 @@ Learn more from the following resources: - [@video@Git and GitHub for Beginners - Crash Course](https://www.youtube.com/watch?v=RGOj5yH7evk) - [@article@Get Started with Github](https://docs.github.com/en) -- [@article@GitHub Tutorial – for Beginners](https://www.freecodecamp.org/news/git-and-github-for-beginners/) - [@feed@Explore top posts about GitHub](https://app.daily.dev/tags/github?ref=roadmapsh) diff --git a/src/data/roadmaps/flutter/content/110-advanced-dart/101-lists.md b/src/data/roadmaps/flutter/content/110-advanced-dart/101-lists.md index 4e7b863df..5960cd7bc 100644 --- a/src/data/roadmaps/flutter/content/110-advanced-dart/101-lists.md +++ b/src/data/roadmaps/flutter/content/110-advanced-dart/101-lists.md @@ -13,4 +13,3 @@ These widgets allow you to display items in a scrolling list, a grid, or a combi Learn more from the following: - [@article@List Class](https://api.flutter.dev/flutter/dart-core/List-class.html) -- [@article@Dart Programming – List](https://www.geeksforgeeks.org/dart-programming-list/) diff --git a/src/data/roadmaps/frontend/content/css-preprocessors@UTW1pP59dUehuf0zeHXqL.md b/src/data/roadmaps/frontend/content/css-preprocessors@UTW1pP59dUehuf0zeHXqL.md index 076a12f13..b47d9e78f 100644 --- a/src/data/roadmaps/frontend/content/css-preprocessors@UTW1pP59dUehuf0zeHXqL.md +++ b/src/data/roadmaps/frontend/content/css-preprocessors@UTW1pP59dUehuf0zeHXqL.md @@ -4,6 +4,4 @@ CSS Preprocessors are scripting languages that extend the default capabilities o Visit the following resources to learn more: -- [@article@CSS Preprocessors Explained](https://www.freecodecamp.org/news/css-preprocessors/) -- [@article@Why Use Preprocessors?](https://sherocommerce.com/what-is-a-css-preprocessors-why-use-them/) - [@feed@Explore top posts about CSS](https://app.daily.dev/tags/css?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/css@ZhJhf1M2OphYbEmduFq-9.md b/src/data/roadmaps/frontend/content/css@ZhJhf1M2OphYbEmduFq-9.md index 3b98f99db..d21932f9a 100644 --- a/src/data/roadmaps/frontend/content/css@ZhJhf1M2OphYbEmduFq-9.md +++ b/src/data/roadmaps/frontend/content/css@ZhJhf1M2OphYbEmduFq-9.md @@ -13,7 +13,6 @@ Visit the following resources to learn more: - [@article@W3Schools — Learn CSS](https://www.w3schools.com/css/) - [@article@cssreference.io: All CSS properties at a glance](https://cssreference.io/) - [@article@Web.dev by Google — Learn CSS](https://web.dev/learn/css/) -- [@article@freeCodeCamp — Responsive Web Design](https://www.freecodecamp.org/learn/responsive-web-design/) - [@article@Learn to Code HTML & CSS](https://learn.shayhowe.com/html-css/building-your-first-web-page/) - [@article@Joshw Comeaus CSS Hack Blog Posts](https://www.joshwcomeau.com/) - [@article@100 Days CSS Challenge](https://100dayscss.com) diff --git a/src/data/roadmaps/frontend/content/learn-dom-manipulation@0MAogsAID9R04R5TTO2Qa.md b/src/data/roadmaps/frontend/content/learn-dom-manipulation@0MAogsAID9R04R5TTO2Qa.md index 9bee3d583..b0075b973 100644 --- a/src/data/roadmaps/frontend/content/learn-dom-manipulation@0MAogsAID9R04R5TTO2Qa.md +++ b/src/data/roadmaps/frontend/content/learn-dom-manipulation@0MAogsAID9R04R5TTO2Qa.md @@ -5,8 +5,6 @@ The Document Object Model (DOM) is a programming interface built for HTML and XM Visit the following resources to learn more: - [@article@DOM Tree](https://javascript.info/dom-nodes) -- [@article@GeeksForGeeks - DOM (Document Object Model)](https://www.geeksforgeeks.org/dom-document-object-model/) -- [@article@What is the DOM?](https://www.freecodecamp.org/news/what-is-the-dom-document-object-model-meaning-in-javascript/) - [@article@Eloquent JavaScript, 3rd Edition: The Document Object Model](https://eloquentjavascript.net/14_dom.html) - [@article@JavaScript HTML DOM](https://www.w3schools.com/js/js_htmldom.asp) - [@article@JavaScript DOM](https://www.javascripttutorial.net/javascript-dom/) diff --git a/src/data/roadmaps/frontend/content/learn-the-basics@YFjzPKWDwzrgk2HUX952L.md b/src/data/roadmaps/frontend/content/learn-the-basics@YFjzPKWDwzrgk2HUX952L.md index 110910038..2f8e88060 100644 --- a/src/data/roadmaps/frontend/content/learn-the-basics@YFjzPKWDwzrgk2HUX952L.md +++ b/src/data/roadmaps/frontend/content/learn-the-basics@YFjzPKWDwzrgk2HUX952L.md @@ -6,7 +6,6 @@ Visit the following resources to learn more: - [@article@W3Schools — Learn CSS](https://www.w3schools.com/css/) - [@article@web.dev — Learn CSS](https://web.dev/learn/css/) -- [@article@freeCodeCamp — Responsive Web Design](https://www.freecodecamp.org/learn/responsive-web-design/) - [@article@Learn to Code HTML & CSS](https://learn.shayhowe.com/html-css/building-your-first-web-page/) - [@video@CSS Crash Course For Absolute Beginners](https://www.youtube.com/watch?v=yfoY53QXEnI) - [@video@HTML and CSS Tutorial](https://www.youtube.com/watch?v=D-h8L5hgW-w) diff --git a/src/data/roadmaps/frontend/content/making-layouts@dXeYVMXv-3MRQ1ovOUuJW.md b/src/data/roadmaps/frontend/content/making-layouts@dXeYVMXv-3MRQ1ovOUuJW.md index 25698edf2..915bb99fd 100644 --- a/src/data/roadmaps/frontend/content/making-layouts@dXeYVMXv-3MRQ1ovOUuJW.md +++ b/src/data/roadmaps/frontend/content/making-layouts@dXeYVMXv-3MRQ1ovOUuJW.md @@ -9,7 +9,6 @@ Visit the following resources to learn more: - [@article@All about Floats](https://css-tricks.com/all-about-floats/) - [@article@Positioning Types: How Do They Differ?](https://css-tricks.com/absolute-relative-fixed-positioining-how-do-they-differ/) - [@article@The Box Model](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/The_box_model) -- [@article@The CSS Display Property](https://www.freecodecamp.org/news/the-css-display-property-display-none-display-table-inline-block-and-more/) - [@article@A Complete Guide to Flexbox](https://css-tricks.com/snippets/css/a-guide-to-flexbox) - [@article@A Complete Guide to Grid](https://css-tricks.com/snippets/css/complete-guide-grid) - [@article@Learn CSS Grid - Course](https://cssgrid.io/) diff --git a/src/data/roadmaps/frontend/content/module-bundlers@hkSc_1x09m7-7BO7WzlDT.md b/src/data/roadmaps/frontend/content/module-bundlers@hkSc_1x09m7-7BO7WzlDT.md index 29381d8b1..004595aa2 100644 --- a/src/data/roadmaps/frontend/content/module-bundlers@hkSc_1x09m7-7BO7WzlDT.md +++ b/src/data/roadmaps/frontend/content/module-bundlers@hkSc_1x09m7-7BO7WzlDT.md @@ -6,5 +6,4 @@ It usually starts with an entry file, and from there it bundles up all of the co Visit the following resources to learn more: -- [@article@Let’s learn how module bundlers work](https://www.freecodecamp.org/news/lets-learn-how-module-bundlers-work-and-then-write-one-ourselves-b2e3fe6c88ae/) - [@video@Module Bundlers Explained](https://www.youtube.com/watch?v=5IG4UmULyoA) diff --git a/src/data/roadmaps/frontend/content/nextjs@V70884VcuXkfrfHyLGtUg.md b/src/data/roadmaps/frontend/content/nextjs@V70884VcuXkfrfHyLGtUg.md index b60484697..6ec4d8630 100644 --- a/src/data/roadmaps/frontend/content/nextjs@V70884VcuXkfrfHyLGtUg.md +++ b/src/data/roadmaps/frontend/content/nextjs@V70884VcuXkfrfHyLGtUg.md @@ -8,7 +8,6 @@ Visit the following resources to learn more: - [@official@Official Website](https://nextjs.org/) - [@official@Official Docs for Getting Started](https://nextjs.org/docs/getting-started) -- [@article@The Next.js Handbook — FreeCodeCamp](https://www.freecodecamp.org/news/the-next-js-handbook/) - [@article@Mastering Next.js](https://masteringnextjs.com/) - [@video@Next.js for Beginners - Full Course at freeCodeCamp YouTube Channel](https://youtu.be/1WmNXEVia8I) - [@feed@Explore top posts about JavaScript](https://app.daily.dev/tags/javascript?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/nextjs@zNFYAJaSq0YZXL5Rpx1NX.md b/src/data/roadmaps/frontend/content/nextjs@zNFYAJaSq0YZXL5Rpx1NX.md index 9f2234bb7..ff0d36d48 100644 --- a/src/data/roadmaps/frontend/content/nextjs@zNFYAJaSq0YZXL5Rpx1NX.md +++ b/src/data/roadmaps/frontend/content/nextjs@zNFYAJaSq0YZXL5Rpx1NX.md @@ -7,7 +7,6 @@ Visit the following resources to learn more: - [@official@Official Website](https://nextjs.org/) - [@official@Official Docs for Getting Started](https://nextjs.org/docs/getting-started) - [@article@Mastering Next.js](https://masteringnextjs.com/) -- [@article@The Next.js Handbook — freeCodeCamp](https://www.freecodecamp.org/news/the-next-js-handbook/) - [@video@Next.js for Beginners - freeCodeCamp](https://www.youtube.com/watch?v=KjY94sAKLlw) - [@video@Introduction to Next.js and React by Lee Robinson](https://www.youtube.com/watch?v=h2BcitZPMn4) - [@feed@Explore top posts about JavaScript](https://app.daily.dev/tags/javascript?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/pwas@PoM77O2OtxPELxfrW1wtl.md b/src/data/roadmaps/frontend/content/pwas@PoM77O2OtxPELxfrW1wtl.md index bbec15eb1..3cfbacc10 100644 --- a/src/data/roadmaps/frontend/content/pwas@PoM77O2OtxPELxfrW1wtl.md +++ b/src/data/roadmaps/frontend/content/pwas@PoM77O2OtxPELxfrW1wtl.md @@ -4,7 +4,6 @@ Progressive Web Apps (PWAs) are websites that are progressively enhanced to func Visit the following resources to learn more: -- [@article@Progressive Web Apps for Beginners](https://www.freecodecamp.org/news/what-are-progressive-web-apps/) - [@article@Learn PWA](https://web.dev/learn/pwa/) - [@article@MDN Web Docs: Progressive Web Apps ](https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/) - [@video@Build a Progressive Web App](https://www.youtube.com/watch?v=sFsRylCQblw) diff --git a/src/data/roadmaps/frontend/content/writing-semantic-html@z8-556o-PaHXjlytrawaF.md b/src/data/roadmaps/frontend/content/writing-semantic-html@z8-556o-PaHXjlytrawaF.md index 7024d433f..7a9eb2156 100644 --- a/src/data/roadmaps/frontend/content/writing-semantic-html@z8-556o-PaHXjlytrawaF.md +++ b/src/data/roadmaps/frontend/content/writing-semantic-html@z8-556o-PaHXjlytrawaF.md @@ -7,7 +7,6 @@ Visit the following resources to learn more: - [@article@Guide to Writing Semantic HTML](https://cs.fyi/guide/writing-semantic-html) - [@article@W3Schools: Semantic HTML](https://www.w3schools.com/html/html5_semantic_elements.asp) - [@article@How To Write Semantic HTML](https://hackernoon.com/how-to-write-semantic-html-dkq3ulo) -- [@article@HTML Best Practices – How to Build a Better HTML-Based Website](https://www.freecodecamp.org/news/html-best-practices/) - [@article@Semantic HTML: What It Is and How It Improves Your Site](https://blog.hubspot.com/website/semantic-html) - [@article@Semantic Markup](https://html.com/semantic-markup) - [@article@Semantic HTML - web.dev](https://web.dev/learn/html/semantic-html/) diff --git a/src/data/roadmaps/full-stack/content/css@dAJHWmGeiYdzZ1ZjrWz1S.md b/src/data/roadmaps/full-stack/content/css@dAJHWmGeiYdzZ1ZjrWz1S.md index 46a049b21..84a141bdd 100644 --- a/src/data/roadmaps/full-stack/content/css@dAJHWmGeiYdzZ1ZjrWz1S.md +++ b/src/data/roadmaps/full-stack/content/css@dAJHWmGeiYdzZ1ZjrWz1S.md @@ -5,7 +5,6 @@ CSS or Cascading Style Sheets is the language used to style the frontend of any Visit the following resources to learn more: - [@article@W3Schools — Learn CSS](https://www.w3schools.com/css/) -- [@article@freeCodeCamp — Responsive Web Design](https://www.freecodecamp.org/learn/2022/responsive-web-design) - [@article@Learn to Code HTML & CSS](https://learn.shayhowe.com/html-css/building-your-first-web-page/) - [@article@What The Flexbox!](https://flexbox.io/) - [@video@CSS Crash Course For Absolute Beginners](https://www.youtube.com/watch?v=yfoY53QXEnI) diff --git a/src/data/roadmaps/game-developer/game-developer.json b/src/data/roadmaps/game-developer/game-developer.json index 6cc9913e3..76eab2256 100644 --- a/src/data/roadmaps/game-developer/game-developer.json +++ b/src/data/roadmaps/game-developer/game-developer.json @@ -566,59 +566,31 @@ "id": "SIvQYH0q1H29NgbtLq3L8", "type": "button", "position": { - "x": 323.241338239984, - "y": -56.48985085377855 + "x": 267.11202169501337, + "y": -55.32399710033968 }, "selected": false, "data": { "label": "Server Side", "href": "https://roadmap.sh/server-side-game-developer", - "color": "#ffffff", - "backgroundColor": "#4036d6", + "color": "#000000", + "backgroundColor": "#DEDEDE", "style": { "fontSize": 17 }, - "borderColor": "#4036D6" + "borderColor": "#DEDEDE" }, "zIndex": 999, - "width": 212, + "width": 170, "height": 49, "style": { - "width": 212, + "width": 170, "height": 49 }, "resizing": false, "positionAbsolute": { - "x": 323.241338239984, - "y": -56.48985085377855 - }, - "dragging": false, - "selectable": true, - "focusable": true - }, - { - "id": "j46wg2LkFjjWj3hi3Q2mJ", - "type": "label", - "position": { - "x": 324.741338239984, - "y": -1.3239971003396818 - }, - "selected": false, - "data": { - "label": "Click to visit the roadmap", - "href": "", - "color": "#000000", - "style": { - "fontSize": 17 - } - }, - "zIndex": 999, - "width": 209, - "height": 36, - "style": {}, - "positionAbsolute": { - "x": 324.741338239984, - "y": -1.3239971003396818 + "x": 267.11202169501337, + "y": -55.32399710033968 }, "dragging": false, "selectable": true, @@ -5483,6 +5455,37 @@ "focusable": true, "resizing": false, "selectable": true + }, + { + "id": "3in61wmgTAqq7nSJm00p-", + "type": "horizontal", + "position": { + "x": 441.84147172248663, + "y": -40.82399710033968 + }, + "selected": false, + "data": { + "label": "horizontal node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 92, + "height": 20, + "positionAbsolute": { + "x": 441.84147172248663, + "y": -40.82399710033968 + }, + "dragging": false, + "style": { + "width": 92, + "height": 20 + }, + "resizing": false } ], "edges": [ diff --git a/src/data/roadmaps/golang/content/100-go-basics/112-arrays.md b/src/data/roadmaps/golang/content/100-go-basics/112-arrays.md index dc4ffc90e..5fd739e2d 100644 --- a/src/data/roadmaps/golang/content/100-go-basics/112-arrays.md +++ b/src/data/roadmaps/golang/content/100-go-basics/112-arrays.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [@official@Go Arrays](https://go.dev/tour/moretypes/6) - [@official@Effective Go: Arrays](https://go.dev/doc/effective_go#arrays) -- [@video@Learn Go Programming - Arrays (by freeCodeCamp on YouTube)](https://youtu.be/YS4e4q9oBaU?t=6473) +- [@video@Learn Go Programming - Arrays](https://youtu.be/YS4e4q9oBaU?t=6473) diff --git a/src/data/roadmaps/golang/content/100-go-basics/113-slices.md b/src/data/roadmaps/golang/content/100-go-basics/113-slices.md index 307e57540..f0b34475e 100644 --- a/src/data/roadmaps/golang/content/100-go-basics/113-slices.md +++ b/src/data/roadmaps/golang/content/100-go-basics/113-slices.md @@ -7,4 +7,4 @@ Visit the following resources to learn more: - [@official@Go Slices](https://go.dev/tour/moretypes/7) - [@official@Effective Go: Slices](https://go.dev/doc/effective_go#slices) - [@article@Slices in Go](https://www.w3schools.com/go/go_slices.php) -- [@video@Learn Go Programming - Slices (by freeCodeCamp on YouTube)](https://youtu.be/YS4e4q9oBaU?t=6473) +- [@video@Learn Go Programming - Slices](https://youtu.be/YS4e4q9oBaU?t=6473) diff --git a/src/data/roadmaps/golang/content/101-go-advanced/110-scheduler.md b/src/data/roadmaps/golang/content/101-go-advanced/110-scheduler.md index c1aee8662..fbfbedede 100644 --- a/src/data/roadmaps/golang/content/101-go-advanced/110-scheduler.md +++ b/src/data/roadmaps/golang/content/101-go-advanced/110-scheduler.md @@ -1,6 +1,6 @@ # Go Scheduler -Go Scheduler allows us to understand more deeply about how Golang works internally. In terms of logical prcoessors, +Go Scheduler allows us to understand more deeply about how Golang works internally. In terms of logical processors, cores, threads, pool cache, context switching etc. The Go scheduler is part of the Go runtime, and the Go runtime is built into your application @@ -9,4 +9,4 @@ Visit the following resources to learn more: - [@article@OS Scheduler](https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part1.html) - [@article@Go Scheduler](https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part2.html) - [@article@Illustrated Tales of Go Runtime Scheduler](https://medium.com/@ankur_anand/illustrated-tales-of-go-runtime-scheduler-74809ef6d19b) -- [@video@Go scheduler: Implementing language with lightweight concurrency](https://www.youtube.com/watch?v=-K11rY57K7k&ab_channel=Hydra) \ No newline at end of file +- [@video@Go scheduler: Implementing language with lightweight concurrency](https://www.youtube.com/watch?v=-K11rY57K7k&ab_channel=Hydra) diff --git a/src/data/roadmaps/golang/content/107-go-api-clients/101-graphql/index.md b/src/data/roadmaps/golang/content/107-go-api-clients/101-graphql/index.md index 52badd543..5b5a04fac 100644 --- a/src/data/roadmaps/golang/content/107-go-api-clients/101-graphql/index.md +++ b/src/data/roadmaps/golang/content/107-go-api-clients/101-graphql/index.md @@ -12,6 +12,6 @@ Visit the following resources to learn more: - [@article@Red Hat: What is GraphQL?](https://www.redhat.com/en/topics/api/what-is-graphql) - [@article@Digital Ocean: An Introduction to GraphQL](https://www.digitalocean.com/community/tutorials/an-introduction-to-graphql) - [@article@How to GraphQL: The Fullstack Tutorial for GraphQL](https://www.howtographql.com/) -- [@video@GraphQL Full Course - Novice to Expert (by freeCodeCamp.org on YouTube)](https://www.youtube.com/watch?v=ed8SzALpx1Q) +- [@video@GraphQL Full Course - Novice to Expert](https://www.youtube.com/watch?v=ed8SzALpx1Q) - [@video@Beginner GraphQL Series (by Ben Awad on YouTube)](https://www.youtube.com/playlist?list=PLN3n1USn4xln0j_NN9k4j5hS1thsGibKi) - [@feed@Explore top posts about GraphQL](https://app.daily.dev/tags/graphql?ref=roadmapsh) diff --git a/src/data/roadmaps/ios/content/accessibility-inspector@h34LaYQ3JYN2AZPMDqpmO.md b/src/data/roadmaps/ios/content/accessibility-inspector@h34LaYQ3JYN2AZPMDqpmO.md index a0bbf32ea..ff040a631 100644 --- a/src/data/roadmaps/ios/content/accessibility-inspector@h34LaYQ3JYN2AZPMDqpmO.md +++ b/src/data/roadmaps/ios/content/accessibility-inspector@h34LaYQ3JYN2AZPMDqpmO.md @@ -1 +1,9 @@ -# Accessibility Inspector \ No newline at end of file +# Accessibility Inspector + +The Accessibility Inspector is a powerful tool in Xcode that helps developers ensure their iOS applications are accessible to users with disabilities. It provides a comprehensive view of an app's accessibility features, allowing developers to inspect and test various accessibility attributes of UI elements. The inspector displays information such as accessibility labels, hints, and traits for each element on the screen. It enables real-time simulation of different accessibility settings, such as VoiceOver, to test how the app behaves under various accessibility conditions. Developers can use the Accessibility Inspector to identify and fix issues related to screen reader compatibility, color contrast, and touch target sizes. This tool is crucial for creating inclusive apps that comply with accessibility guidelines and standards, ensuring that apps are usable by people with visual, auditory, motor, or cognitive impairments. Regular use of the Accessibility Inspector throughout the development process helps in building more universally accessible and user-friendly iOS applications. + +Learn more from the following resources: + +- [@official@Accessibility Inspector](https://developer.apple.com/documentation/accessibility/accessibility-inspector) +- [@official@Inspecting the accessibility of the screens in your app](https://developer.apple.com/documentation/accessibility/inspecting-the-accessibility-of-screens) +- [@video@Perform accessibility audits for your app](https://developer.apple.com/videos/play/wwdc2023/10035/) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/alamofire@nJeBisdKtN43ntkXnPCVF.md b/src/data/roadmaps/ios/content/alamofire@nJeBisdKtN43ntkXnPCVF.md index 7b7daf337..cb9fd4bac 100644 --- a/src/data/roadmaps/ios/content/alamofire@nJeBisdKtN43ntkXnPCVF.md +++ b/src/data/roadmaps/ios/content/alamofire@nJeBisdKtN43ntkXnPCVF.md @@ -1 +1,9 @@ -# Alamofire \ No newline at end of file +# Alamofire + +Alamofire is a popular third-party networking library for iOS, built on top of Apple's URLSession. It offers a more elegant and simplified interface for common networking tasks, making it easier to write concise and readable networking code. Alamofire provides a chainable request/response API, automated JSON parsing, authentication handling, and convenient methods for common HTTP operations. It supports features like request/response interceptors, network reachability monitoring, and robust error handling. The library is particularly useful for working with RESTful APIs, offering easy integration with JSON and Swift's Codable protocol. Alamofire's modular architecture allows for easy extension and customization, making it adaptable to various project needs. While it adds an external dependency to projects, many developers find that Alamofire's convenience and feature set outweigh this consideration, especially in complex networking scenarios where it can significantly reduce boilerplate code and simplify network request management. + +Learn more from the following resources: + +- [@opensource@Alamofire/Alamofire](https://github.com/Alamofire/Alamofire) +- [@article@Alamofire Tutorial with Swift (Quickstart)](https://codewithchris.com/alamofire/) +- [@article@How to Use Alamofire in Swift: A Guide](https://www.waldo.com/blog/how-to-use-alamofire) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/app-store-distribution@iZAXQKLe2LaIIifVFtFOL.md b/src/data/roadmaps/ios/content/app-store-distribution@iZAXQKLe2LaIIifVFtFOL.md index 7e2b19611..7d3944cea 100644 --- a/src/data/roadmaps/ios/content/app-store-distribution@iZAXQKLe2LaIIifVFtFOL.md +++ b/src/data/roadmaps/ios/content/app-store-distribution@iZAXQKLe2LaIIifVFtFOL.md @@ -1 +1,18 @@ -# App Store Distribution \ No newline at end of file +# App Store Distribution + +App Store distribution is the process of preparing and submitting an iOS application for release on Apple's App Store. This involves several key steps: + +1. App Store Connect Setup: Registering your app in App Store Connect, including adding app metadata, screenshots, and descriptions. +2. Certificates and Provisioning Profiles: Creating the necessary certificates and provisioning profiles in the Apple Developer portal to sign your app for distribution. +3. Build and Archive: Using Xcode to build and archive your app, ensuring it meets Apple’s guidelines and standards. +4. Submission: Submitting the app for review through App Store Connect, where Apple’s review team evaluates it for compliance with their guidelines. +5. Release and Updates: Once approved, the app is published to the App Store. Developers can manage updates, monitor app performance, and respond to user feedback through App Store Connect. + +This process ensures that apps are of high quality, secure, and provide a good user experience before reaching the end users. + +Learn more from the following resources: + +- [@official@Distribute on App Store](https://developer.apple.com/distribute/) +- [@official@Distributing Custom Apps](https://developer.apple.com/custom-apps/) +- [@video@Submit App to App Store (Upload iOS App)](https://www.youtube.com/watch?v=bz_KJdXylh0) +- [@article@Creating the iOS Provisioning Profiles](https://support.staffbase.com/hc/en-us/articles/115003598691-Creating-the-iOS-Provisioning-Profiles) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/app-store-optimization-aso@jZpH-T2hW-XBdprVqemGi.md b/src/data/roadmaps/ios/content/app-store-optimization-aso@jZpH-T2hW-XBdprVqemGi.md index 2337bacbd..2fb6e30b9 100644 --- a/src/data/roadmaps/ios/content/app-store-optimization-aso@jZpH-T2hW-XBdprVqemGi.md +++ b/src/data/roadmaps/ios/content/app-store-optimization-aso@jZpH-T2hW-XBdprVqemGi.md @@ -1 +1,9 @@ -# App Store Optimization (ASO) \ No newline at end of file +# App Store Optimization (ASO) + +App Store Optimization (ASO) is the process of improving the visibility and ranking of a mobile app within app stores like Apple's App Store and Google Play. The goal of ASO is to increase app downloads and user engagement. Key strategies include optimizing the app title and description with relevant keywords, creating compelling and clear app icons, and using high-quality screenshots and videos to showcase the app's features. Additionally, gathering positive user reviews and ratings, regularly updating the app to fix bugs and add new features, and encouraging user engagement can significantly enhance an app’s ranking. ASO also involves monitoring and analyzing performance metrics to continually refine and improve the app’s visibility and attractiveness to potential users. Effective ASO leads to higher organic downloads and better overall app performance. + +Learn more from the following resources: + +- [@video@5 Essential ASO Strategies to Boost Your App Store Ranking in 2024](https://www.youtube.com/watch?v=bqM9x-oRZOA) +- [@video@Advanced App Store Optimization Strategies for 2024](https://www.youtube.com/watch?v=d8TOuMnMv74) +- [@article@What is App Store Optimization (ASO)?](https://appradar.com/academy/what-is-app-store-optimization-aso) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/async--await@ysaBCl_TtWqelirptQp7P.md b/src/data/roadmaps/ios/content/async--await@ysaBCl_TtWqelirptQp7P.md index 0979fdd0c..482bdf083 100644 --- a/src/data/roadmaps/ios/content/async--await@ysaBCl_TtWqelirptQp7P.md +++ b/src/data/roadmaps/ios/content/async--await@ysaBCl_TtWqelirptQp7P.md @@ -1 +1,9 @@ -# Async / Await \ No newline at end of file +# Async / Await + +Async/await in Swift is a modern approach to handling asynchronous operations, introduced to simplify complex asynchronous code and mitigate the challenges of callback-based programming. This feature allows developers to write asynchronous code that looks and behaves like synchronous code, improving readability and maintainability. The 'async' keyword marks functions that can be suspended and resumed, while 'await' is used to call these functions and wait for their completion without blocking the entire thread. This pattern integrates seamlessly with Swift's error handling mechanism, allowing for more natural try-catch blocks in asynchronous contexts. Async/await works with Swift's structured concurrency system, including tasks and actors, to manage complex asynchronous operations more easily. + +Learn more from the following resources: + +- [@article@Async await in Swift explained with code examples](https://www.avanderlee.com/swift/async-await/) +- [@article@Swift async await](https://www.hackingwithswift.com/swift/5.5/async-await) +- [@video@Meet async/await in Swift](https://developer.apple.com/videos/play/wwdc2021/10132/) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/azure-devops@r3fNx1Hk_TGlQSDtRnXqF.md b/src/data/roadmaps/ios/content/azure-devops@r3fNx1Hk_TGlQSDtRnXqF.md new file mode 100644 index 000000000..228b3025c --- /dev/null +++ b/src/data/roadmaps/ios/content/azure-devops@r3fNx1Hk_TGlQSDtRnXqF.md @@ -0,0 +1,7 @@ +# Azure DevOps + +Azure DevOps is a suite of development tools and services offered by Microsoft to support the entire software development lifecycle. It includes Azure Repos for source code management with Git repositories, Azure Pipelines for continuous integration and continuous deployment (CI/CD), Azure Boards for agile project management and tracking, Azure Artifacts for managing and sharing packages, and Azure Test Plans for manual and exploratory testing. Azure DevOps integrates seamlessly with a variety of third-party tools and services, offering flexibility and extensibility. It provides robust security features, comprehensive reporting, and scalable infrastructure, making it suitable for teams of all sizes. By using Azure DevOps, development teams can collaborate more effectively, automate their workflows, and deliver high-quality software more quickly and efficiently. + +- [@official@Azure DevOps Website](https://azure.microsoft.com/en-gb/products/devops) +- [@article@Build, test, and deploy Xcode apps](https://learn.microsoft.com/en-us/azure/devops/pipelines/ecosystems/xcode?view=azure-devops) +- [@video@Azure DevOps Tutorial for Beginners](https://www.youtube.com/watch?v=4BibQ69MD8c) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/azure@r3fNx1Hk_TGlQSDtRnXqF.md b/src/data/roadmaps/ios/content/azure@r3fNx1Hk_TGlQSDtRnXqF.md deleted file mode 100644 index e4fd699af..000000000 --- a/src/data/roadmaps/ios/content/azure@r3fNx1Hk_TGlQSDtRnXqF.md +++ /dev/null @@ -1 +0,0 @@ -# Azure \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/basics--creating-animations@w0i5Dxp40XS2HnF5nXeZI.md b/src/data/roadmaps/ios/content/basics--creating-animations@w0i5Dxp40XS2HnF5nXeZI.md index d8dbd8fce..cb9864fea 100644 --- a/src/data/roadmaps/ios/content/basics--creating-animations@w0i5Dxp40XS2HnF5nXeZI.md +++ b/src/data/roadmaps/ios/content/basics--creating-animations@w0i5Dxp40XS2HnF5nXeZI.md @@ -6,6 +6,6 @@ Learn more from the following resources: - [@official@CALayer Documentation](https://developer.apple.com/documentation/quartzcore/calayer) - [@official@CABasicAnimation Documentation] -- [@official@]CAKeyframeAnimation Documentation](https://developer.apple.com/documentation/quartzcore/cakeyframeanimation) +- [@official@CAKeyframeAnimation Documentation](https://developer.apple.com/documentation/quartzcore/cakeyframeanimation) (https://developer.apple.com/documentation/quartzcore/cabasicanimation) - [@article@What is CALayer?](https://www.hackingwithswift.com/example-code/calayer/what-is-calayer) diff --git a/src/data/roadmaps/ios/content/breakpoints@X0QavvwPVJU6sulafPVUK.md b/src/data/roadmaps/ios/content/breakpoints@X0QavvwPVJU6sulafPVUK.md index bb4203757..13c17b7b8 100644 --- a/src/data/roadmaps/ios/content/breakpoints@X0QavvwPVJU6sulafPVUK.md +++ b/src/data/roadmaps/ios/content/breakpoints@X0QavvwPVJU6sulafPVUK.md @@ -1 +1,20 @@ -# Breakpoints \ No newline at end of file +# Breakpoints + +Xcode debugger breakpoints are powerful tools for pausing program execution at specific points, allowing developers to inspect the application state and diagnose issues. Key features include: + +1. Line breakpoints: Set on specific code lines to pause execution. +2. Symbolic breakpoints: Trigger on function or method names. +3. Exception breakpoints: Pause when exceptions occur. +4. Conditional breakpoints: Only activate when certain conditions are met. +5. Action breakpoints: Perform custom actions when hit, like logging or running scripts. +6. Breakpoint navigator: Centralized management of all breakpoints. +7. Enable/disable options: Easily toggle breakpoints without removing them. +8. Breakpoint groups: Organize and manage sets of related breakpoints. + +Breakpoints can be set by clicking in the gutter of the source editor or through the Breakpoint Navigator. + +Learn more from the following resources: + +- [@official@Setting breakpoints to pause your running app](https://developer.apple.com/documentation/xcode/setting-breakpoints-to-pause-your-running-app) +- [@article@How to add and use a breakpoint in XCode](https://www.delasign.com/blog/xcode-add-use-breakpoint/) +- [@video@Debugging Apps with Xcode 15: Debugging with Breakpoints](https://www.youtube.com/watch?v=wYldJF-8fWA) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/building-interfaces@YvuYJceeNNfLBpq2-3iiL.md b/src/data/roadmaps/ios/content/building-interfaces@YvuYJceeNNfLBpq2-3iiL.md index e35b47d1b..012f780fa 100644 --- a/src/data/roadmaps/ios/content/building-interfaces@YvuYJceeNNfLBpq2-3iiL.md +++ b/src/data/roadmaps/ios/content/building-interfaces@YvuYJceeNNfLBpq2-3iiL.md @@ -1 +1,9 @@ -# Building Interfaces \ No newline at end of file +# Building Interfaces + +SwiftUI is Apple's modern framework for building user interfaces across all Apple platforms using Swift. It employs a declarative syntax where UI is described using Swift code, defining what should appear rather than how to create it. Xcode provides real-time previews of the UI as you code, enhancing the development experience. SwiftUI uses property wrappers like `@State` for managing UI state, and offers a flexible layout system with VStack, HStack, and ZStack. Complex UIs are built by composing smaller, reusable views, and data flow between views is managed using `@Binding` and `@ObservedObject`. The framework provides chainable modifiers for customizing view appearance and behavior, easy-to-implement declarative animations, and built-in support for common gestures. SwiftUI simplifies UI development by reducing boilerplate code and offering a more intuitive way to create responsive, adaptive interfaces that can target iOS, macOS, watchOS, and tvOS from a single codebase. + +Learn more from the following resources: + +- [@official@ZStack](https://developer.apple.com/documentation/swiftui/zstack) +- [@official@VStack](https://developer.apple.com/documentation/swiftui/vstack) +- [@official@HStack](https://developer.apple.com/documentation/swiftui/hstack) diff --git a/src/data/roadmaps/ios/content/callback-hell@WhOpzFvv21QQV3aS6XbXr.md b/src/data/roadmaps/ios/content/callback-hell@WhOpzFvv21QQV3aS6XbXr.md index 9172c84d2..42cafafee 100644 --- a/src/data/roadmaps/ios/content/callback-hell@WhOpzFvv21QQV3aS6XbXr.md +++ b/src/data/roadmaps/ios/content/callback-hell@WhOpzFvv21QQV3aS6XbXr.md @@ -1 +1,9 @@ -# Callback Hell \ No newline at end of file +# Callback Hell + +Callback hell, also known as the pyramid of doom, is a common issue in asynchronous programming where multiple nested callbacks create code that is difficult to read, understand, and maintain. This problem typically arises when dealing with multiple asynchronous operations that depend on each other's results. As callbacks are nested within callbacks, the code structure becomes deeply indented, resembling a pyramid shape. This nesting not only hampers code readability but also makes error handling and flow control more complex. To mitigate callback hell, developers often employ techniques such as modularizing code, using named functions instead of anonymous closures, or adopting more advanced asynchronous patterns. Modern Swift development addresses this issue through the use of promises, futures, completion handlers, and most recently, the async/await pattern, which provides a more linear and readable approach to handling asynchronous operations. + +Learn more from the following resources: + +- [@article@Avoiding callback hell in Swift](https://swiftrocks.com/avoiding-callback-hell-in-swift) +- [@article@Say Goodbye to Callback Hell: A Beginner’s Guide to Async/Await in Swift](https://medium.com/@asumahbanda3/say-goodbye-to-callback-hell-a-beginners-guide-to-async-await-in-swift-4c3230183218) +- [@video@What is JavaScript Callback Hell?](https://www.youtube.com/watch?v=NOlOw03qBfw) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/callbacks@qJEd7KU52xL_GRG3IQqhM.md b/src/data/roadmaps/ios/content/callbacks@qJEd7KU52xL_GRG3IQqhM.md index 7b3d81c5f..2c93e0a36 100644 --- a/src/data/roadmaps/ios/content/callbacks@qJEd7KU52xL_GRG3IQqhM.md +++ b/src/data/roadmaps/ios/content/callbacks@qJEd7KU52xL_GRG3IQqhM.md @@ -1 +1,9 @@ -# Callbacks \ No newline at end of file +# Callbacks + +Callbacks in Swift provide a mechanism for asynchronous communication between different parts of an application. They allow a function to pass control back to the caller once a task is completed, making them particularly useful for handling time-consuming operations or events that occur at unpredictable times. In Swift, callbacks are often implemented using closures, which are self-contained blocks of functionality that can be passed around and executed later. This approach is commonly used in network operations, user interface events, and any scenario where the result of an operation isn't immediately available. + +While simple to implement for basic use cases, callbacks can lead to complex nested structures (often referred to as "callback hell") in more intricate scenarios. To mitigate this, Swift offers more advanced patterns like completion handlers, promises, and async/await syntax, which provide cleaner ways to handle asynchronous operations while maintaining the core concept of passing control back to the caller upon completion. + +Learn more from the following resources: + +- [@article@Use callback in swift (UIKit)](https://medium.com/@ravenst/use-callback-in-swift-uikit-7d5a85d37c9e) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/capturing-values--memory-mgmt@S-D-PnHA7COd2Dp6U2XO4.md b/src/data/roadmaps/ios/content/capturing-values--memory-mgmt@S-D-PnHA7COd2Dp6U2XO4.md index f3202e0fd..0a8c4faa4 100644 --- a/src/data/roadmaps/ios/content/capturing-values--memory-mgmt@S-D-PnHA7COd2Dp6U2XO4.md +++ b/src/data/roadmaps/ios/content/capturing-values--memory-mgmt@S-D-PnHA7COd2Dp6U2XO4.md @@ -1 +1,8 @@ -# Capturing Values & Memory Mgmt. \ No newline at end of file +# Capturing Values & Memory Mgmt. + +Capturing values in closures is a powerful feature in Swift that allows closures to access and retain variables from their surrounding context. When a closure captures a value, it creates a strong reference to that value, potentially extending its lifetime beyond its original scope. This behavior is crucial for maintaining state in asynchronous operations but can lead to memory management challenges if not handled carefully. Swift provides capture lists to explicitly define how values should be captured, allowing developers to specify weak or unowned references to avoid retain cycles. Proper management of captured values is essential for preventing memory leaks, especially in scenarios involving self-referential closures or delegate patterns. Understanding the implications of value capture and employing appropriate memory management techniques ensures efficient and leak-free use of closures in Swift applications, particularly in complex asynchronous and event-driven programming scenarios. + +Learn more from the following resources: + +- [@article@Capture lists in Swift](https://www.hackingwithswift.com/articles/179/capture-lists-in-swift-whats-the-difference-between-weak-strong-and-unowned-references) +- [@article@Swift’s closure capturing mechanics](https://www.swiftbysundell.com/articles/swifts-closure-capturing-mechanics/) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/carthage@tIHjjNTXJWcNgkO6TB9ea.md b/src/data/roadmaps/ios/content/carthage@tIHjjNTXJWcNgkO6TB9ea.md index 4a629bf18..cb3e7093b 100644 --- a/src/data/roadmaps/ios/content/carthage@tIHjjNTXJWcNgkO6TB9ea.md +++ b/src/data/roadmaps/ios/content/carthage@tIHjjNTXJWcNgkO6TB9ea.md @@ -1 +1,8 @@ -# Carthage \ No newline at end of file +# Carthage + +Carthage is a decentralized dependency manager for iOS and macOS development, offering a lightweight alternative to CocoaPods. It focuses on building frameworks rather than integrating directly into projects, giving developers more control over their project structure. Carthage fetches and builds dependencies as specified in a Cartfile, creating standalone frameworks that can be easily integrated into Xcode projects. This approach keeps the project's structure intact and allows for easier version control. Carthage supports both Swift and Objective-C libraries and works well with dynamic frameworks. It's particularly favored for its simplicity and non-invasive nature, as it doesn't modify project files or create workspaces. While Carthage requires manual framework linking, which can be more time-consuming initially, it offers faster build times and more flexibility in managing dependencies. This tool is often preferred by developers who desire more control over their dependency integration process and project structure. + +Learn more from the following resources: + +- [@opensource@carthage/carthage](https://github.com/Carthage/Carthage) +- [@course@Carthage - Getting Started](https://www.kodeco.com/7649117-carthage-tutorial-getting-started) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/ci--cd@U4xE1enkZxUME0j0gutae.md b/src/data/roadmaps/ios/content/ci--cd@U4xE1enkZxUME0j0gutae.md index 914f302e1..3121c9471 100644 --- a/src/data/roadmaps/ios/content/ci--cd@U4xE1enkZxUME0j0gutae.md +++ b/src/data/roadmaps/ios/content/ci--cd@U4xE1enkZxUME0j0gutae.md @@ -1 +1,9 @@ -# CI / CD \ No newline at end of file +# CI / CD + +Continuous Integration (CI) and Continuous Deployment (CD) are practices aimed at improving software development efficiency and quality by automating the integration and delivery processes. + +Continuous Integration (CI) involves automatically integrating code changes from multiple contributors into a shared repository several times a day. Each integration is verified by an automated build, allowing teams to detect and address issues early. CI tools like Jenkins, GitHub Actions, and Travis CI run automated tests and ensure that new code commits do not break the existing functionality. + +Continuous Deployment (CD) extends CI by automating the release of validated changes to production. Every change that passes the automated tests is automatically deployed to the production environment, ensuring that the software is always in a release-ready state. This practice reduces the time between development and release, allowing for faster delivery of features and updates. + +Together, CI/CD practices help teams achieve rapid, reliable, and repeatable software delivery, fostering a culture of continuous improvement and agility. \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/circle-ci@tWxuFh0xDugdplnHt_G0e.md b/src/data/roadmaps/ios/content/circle-ci@tWxuFh0xDugdplnHt_G0e.md deleted file mode 100644 index 18b4e1cac..000000000 --- a/src/data/roadmaps/ios/content/circle-ci@tWxuFh0xDugdplnHt_G0e.md +++ /dev/null @@ -1 +0,0 @@ -# Circle CI \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/circleci@tWxuFh0xDugdplnHt_G0e.md b/src/data/roadmaps/ios/content/circleci@tWxuFh0xDugdplnHt_G0e.md new file mode 100644 index 000000000..c87e303cd --- /dev/null +++ b/src/data/roadmaps/ios/content/circleci@tWxuFh0xDugdplnHt_G0e.md @@ -0,0 +1,9 @@ +# CircleCI + +CircleCI is a cloud-based continuous integration and continuous deployment (CI/CD) platform that automates the software development process, allowing teams to build, test, and deploy code efficiently. It offers both cloud and on-premises solutions, providing flexibility for different project requirements and security needs. CircleCI supports the definition and management of complex workflows with multiple jobs and dependencies, enabling parallel execution to optimize build times. It integrates seamlessly with Docker, allowing developers to use containers to ensure consistent environments across builds. Configuration is managed through YAML files, which define build processes and make them easily maintainable and version-controlled. The platform also offers extensive integrations with various version control systems, deployment services, and notification tools. CircleCI automatically scales to handle multiple concurrent builds, making it suitable for growing teams and larger projects. Its robust feature set and ease of use make it an excellent choice for streamlining CI/CD processes and improving software delivery performance. + +Learn more from the following resources: + +- [@official@CircleCI Website](https://circleci.com) +- [@article@Deploy iOS applications](https://circleci.com/docs/deploy-ios-applications/) +- [@video@Automate building and testing your iPhone application with CircleCI Cloud - iOS Conf SG 2023](https://www.youtube.com/watch?v=MyQ-e7Ae8y8) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/closures@M9UlalPL47GoqhcyGsAPV.md b/src/data/roadmaps/ios/content/closures@M9UlalPL47GoqhcyGsAPV.md index 2bd3198cd..47fe5cbff 100644 --- a/src/data/roadmaps/ios/content/closures@M9UlalPL47GoqhcyGsAPV.md +++ b/src/data/roadmaps/ios/content/closures@M9UlalPL47GoqhcyGsAPV.md @@ -1 +1,3 @@ -# Closures \ No newline at end of file +# Closures + +Callback closures in Swift are a powerful and flexible way to handle asynchronous operations and event-driven programming. These closures are functions passed as arguments to other functions, which can be executed once a specific task or operation is completed. They allow for non-blocking execution of code, enabling the program to continue running while waiting for long-running tasks to finish. Callback closures are particularly useful in scenarios like network requests, file I/O operations, or user interface events. Swift's syntax for closures makes them concise and easy to use, with features like trailing closure syntax and capture lists for managing memory. While callback closures offer great flexibility, they can lead to nested code structures in complex scenarios, which has led to the development of more advanced patterns like promises and async/await to manage asynchronous code more elegantly. \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/code-quality-tools@DVe8S6TjKcQ8LT5G-aMVa.md b/src/data/roadmaps/ios/content/code-quality-tools@DVe8S6TjKcQ8LT5G-aMVa.md index c5782802a..78f7e890a 100644 --- a/src/data/roadmaps/ios/content/code-quality-tools@DVe8S6TjKcQ8LT5G-aMVa.md +++ b/src/data/roadmaps/ios/content/code-quality-tools@DVe8S6TjKcQ8LT5G-aMVa.md @@ -1 +1,3 @@ -# Code Quality Tools \ No newline at end of file +# Code Quality Tools + +Code quality tools in iOS development are essential for maintaining high standards of code cleanliness, efficiency, and maintainability. These tools automate the process of identifying potential issues, enforcing coding standards, and improving overall code quality. Popular options include SwiftLint, which checks Swift code for style and conventions; SonarQube, which provides comprehensive code analysis for bugs, vulnerabilities, and code smells; and Codebeat, offering automated code reviews. Static analysis tools like Clang Static Analyzer help detect bugs and security issues. Continuous integration platforms often integrate these tools, running checks automatically with each commit. Code coverage tools measure the extent of test coverage, while performance profilers like Instruments help optimize app efficiency. By incorporating these tools into the development workflow, teams can catch issues early, maintain consistent coding standards, and produce more robust, maintainable iOS applications. Regular use of code quality tools contributes significantly to reducing technical debt and improving long-term project health. \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/concurrency-and-multithreading@fbloF-u4XwdHLmBS9flZm.md b/src/data/roadmaps/ios/content/concurrency-and-multithreading@fbloF-u4XwdHLmBS9flZm.md index 7af54699b..a4021f3de 100644 --- a/src/data/roadmaps/ios/content/concurrency-and-multithreading@fbloF-u4XwdHLmBS9flZm.md +++ b/src/data/roadmaps/ios/content/concurrency-and-multithreading@fbloF-u4XwdHLmBS9flZm.md @@ -1 +1,3 @@ -# Concurrency and Multithreading \ No newline at end of file +# Concurrency and Multithreading + +Concurrency and multithreading in iOS development enable applications to perform multiple operations simultaneously, improving responsiveness and performance. iOS provides several mechanisms for managing concurrent tasks, including Grand Central Dispatch (GCD) and Operation queues. GCD offers a low-level API for dispatching tasks to concurrent queues, while Operation queues provide a higher-level, object-oriented approach. Swift's modern concurrency features, including async/await and actors, offer a more intuitive way to write asynchronous code, reducing complexity and potential threading issues. These tools allow developers to offload time-consuming tasks from the main thread, ensuring a smooth user interface. Proper use of concurrency involves careful management of shared resources to avoid race conditions and deadlocks. Understanding thread safety, queue priorities, and synchronization techniques is crucial for developing efficient and responsive iOS applications that can effectively utilize modern multi-core devices. \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/concurrency@-aLGB3cDXZHIhVU3t-Ve4.md b/src/data/roadmaps/ios/content/concurrency@-aLGB3cDXZHIhVU3t-Ve4.md index 5dae6e984..2f62947ed 100644 --- a/src/data/roadmaps/ios/content/concurrency@-aLGB3cDXZHIhVU3t-Ve4.md +++ b/src/data/roadmaps/ios/content/concurrency@-aLGB3cDXZHIhVU3t-Ve4.md @@ -1,4 +1,5 @@ # Concurrency + Swift's concurrency model centers on async/await syntax, allowing asynchronous code to be written in a clear, sequential manner. It employs actors to manage shared mutable state safely, and the Task API for handling concurrent work. Structured concurrency ensures proper task lifecycle management. The language also offers async sequences and streams for working with asynchronous data, and the Sendable protocol to guarantee thread-safe data sharing. This comprehensive approach enables developers to write efficient, safe concurrent code while minimizing common issues like race conditions and deadlocks. Learn more from the following resources: diff --git a/src/data/roadmaps/ios/content/data-persistence@6gfqFy3H6SLt06oJ1kt5A.md b/src/data/roadmaps/ios/content/data-persistence@6gfqFy3H6SLt06oJ1kt5A.md index b613fbe2e..7af7efda5 100644 --- a/src/data/roadmaps/ios/content/data-persistence@6gfqFy3H6SLt06oJ1kt5A.md +++ b/src/data/roadmaps/ios/content/data-persistence@6gfqFy3H6SLt06oJ1kt5A.md @@ -1 +1,7 @@ -# Data Persistence \ No newline at end of file +# Data Persistence + +Data persistence in iOS applications involves storing and retrieving data beyond the app's current runtime, ensuring information remains available across app launches and device restarts. Swift and iOS offer several mechanisms for data persistence, each suited to different needs and data complexities. Core Data provides a robust framework for managing and persisting large, structured datasets, offering features like data modeling, querying, and synchronization. For simpler data storage, UserDefaults is ideal for storing small amounts of key-value data. File system storage allows direct saving and loading of data to and from files in the app's sandbox. Keychain Services offer secure storage for sensitive information like passwords and tokens. SQLite databases can be used for more complex relational data storage needs. Additionally, CloudKit enables data synchronization across devices via iCloud. Choosing the appropriate persistence method depends on factors such as data structure, size, security requirements, and the need for synchronization across devices or with remote servers. + +Learn more from the following resources: + +- [@official@Apple Dev Training - Persisting Data](https://developer.apple.com/tutorials/app-dev-training/persisting-data) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/debug-navigator@VuWUsg05WmOoP_RJ5AXJO.md b/src/data/roadmaps/ios/content/debug-navigator@VuWUsg05WmOoP_RJ5AXJO.md index 28fc25dbe..3252f5e6c 100644 --- a/src/data/roadmaps/ios/content/debug-navigator@VuWUsg05WmOoP_RJ5AXJO.md +++ b/src/data/roadmaps/ios/content/debug-navigator@VuWUsg05WmOoP_RJ5AXJO.md @@ -1 +1,20 @@ -# Debug Navigator \ No newline at end of file +# Debug Navigator + +The Xcode Debug Navigator is a powerful tool in the Navigator pane that provides detailed information about the running application during debugging sessions. Key features include: + +1. Process hierarchy: Displays all running processes and threads. +2. CPU and memory usage: Shows real-time performance metrics. +3. Disk activity: Monitors file system operations. +4. Network activity: Tracks network requests and responses. +5. Energy impact: Measures the app's energy consumption. +6. GPU usage: Monitors graphics processing utilization. +7. iCloud activity: Tracks iCloud-related operations. +8. Thread states: Visualizes the state of each thread (running, blocked, etc.). +9. Stacktrace view: Allows navigation through the call stack of selected threads. + +The Debug Navigator helps developers identify performance bottlenecks, memory leaks, and other runtime issues. It's particularly useful for optimizing app performance and troubleshooting complex multi-threaded scenarios. + +Learn more from the following resources: + +- [@official@Debugging](https://developer.apple.com/documentation/xcode/debugging) +- [@article@Exploring Xcode's Debugging Tools](https://cocoacasts.com/debugging-applications-with-xcode-exploring-xcode-debugging-tools) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/debugging-techniques@OZZ3UnWN2gFflbM_WaJ8H.md b/src/data/roadmaps/ios/content/debugging-techniques@OZZ3UnWN2gFflbM_WaJ8H.md index bc6ae0127..ef6830d88 100644 --- a/src/data/roadmaps/ios/content/debugging-techniques@OZZ3UnWN2gFflbM_WaJ8H.md +++ b/src/data/roadmaps/ios/content/debugging-techniques@OZZ3UnWN2gFflbM_WaJ8H.md @@ -1 +1,3 @@ -# Debugging Techniques \ No newline at end of file +# Debugging Techniques + +Debugging techniques in iOS development include using Xcode’s integrated debugger, which allows developers to set breakpoints, inspect variables, and step through code to identify issues. Utilizing the LLDB (Low-Level Debugger) commands in the console helps examine program state and perform complex operations. Instruments, another powerful tool within Xcode, is used for profiling and identifying performance bottlenecks, memory leaks, and energy usage. Logging with NSLog or print statements can also provide insight into runtime behavior. Additionally, employing unit tests and running the application on real devices can help uncover device-specific issues and ensure code reliability. \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/delegate-pattern@BtPYKd7RedHOLRATDKkpg.md b/src/data/roadmaps/ios/content/delegate-pattern@BtPYKd7RedHOLRATDKkpg.md index 30d34cc52..921150317 100644 --- a/src/data/roadmaps/ios/content/delegate-pattern@BtPYKd7RedHOLRATDKkpg.md +++ b/src/data/roadmaps/ios/content/delegate-pattern@BtPYKd7RedHOLRATDKkpg.md @@ -1 +1,9 @@ -# Delegate Pattern \ No newline at end of file +# Delegate Pattern + +The delegate pattern is a widely used design pattern in iOS development that facilitates communication between objects in a flexible and decoupled manner. It allows one object to delegate certain responsibilities or decisions to another object, typically through a protocol. This pattern is particularly useful for handling events or customizing behavior without creating tight dependencies between classes. In implementation, a delegate protocol defines methods that the delegating object can call, while the delegate object conforms to this protocol and provides specific implementations. This approach promotes loose coupling, enhances reusability, and allows for easy customization of component behavior. The delegate pattern is extensively used in UIKit for handling user interactions, data source management, and event callbacks, making it a fundamental concept in iOS app architecture and design. + +Learn more from the following resources: + +- [@article@Mastering Swift Delegates](https://www.dhiwise.com/post/mastering-swift-delegates-a-comprehensive-guide) +- [@article@A Step-by-Step Guide to the Delegate Pattern in Swift](https://medium.com/@afonso.script.sol/a-step-by-step-guide-to-the-delegate-pattern-in-swift-91a28de1baf8) +- [@video@Swift Delegate Protocol Pattern Tutorial 2023](https://www.youtube.com/watch?v=qiOKO8ta1n4) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/dependency-manager@Tv8-WUcKiZMLHuunQwise.md b/src/data/roadmaps/ios/content/dependency-manager@Tv8-WUcKiZMLHuunQwise.md index 65fff8fc4..6fed1294a 100644 --- a/src/data/roadmaps/ios/content/dependency-manager@Tv8-WUcKiZMLHuunQwise.md +++ b/src/data/roadmaps/ios/content/dependency-manager@Tv8-WUcKiZMLHuunQwise.md @@ -1 +1,3 @@ -# Dependency Manager \ No newline at end of file +# Dependency Manager + +Dependency managers in iOS development are tools that automate the process of adding, updating, and managing third-party libraries and frameworks in Swift and Objective-C projects. These tools simplify the integration of external code, ensuring version compatibility and reducing manual setup errors. The most popular dependency managers for iOS are CocoaPods, Carthage, and Swift Package Manager (SPM). CocoaPods, the oldest and most widely used, integrates directly with Xcode projects and offers a vast library of pods. Carthage provides a more decentralized approach, building frameworks separately from the main project. Swift Package Manager, integrated into Xcode, is Apple's official solution, offering seamless integration with Swift projects. Each manager has its strengths, with developers choosing based on project needs, team preferences, and specific library support. Effective use of dependency managers streamlines development workflows, promotes code reuse, and helps maintain up-to-date, efficient codebases in iOS applications. \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/dynamic-library@Lrb4HZYrZU7SJlbedZp7U.md b/src/data/roadmaps/ios/content/dynamic-library@Lrb4HZYrZU7SJlbedZp7U.md index e8bd56028..aca3c10b7 100644 --- a/src/data/roadmaps/ios/content/dynamic-library@Lrb4HZYrZU7SJlbedZp7U.md +++ b/src/data/roadmaps/ios/content/dynamic-library@Lrb4HZYrZU7SJlbedZp7U.md @@ -1 +1,8 @@ -# Dynamic Library \ No newline at end of file +# Dynamic Library + +Dynamic libraries in iOS development are code modules that are loaded into an app's memory at runtime rather than being compiled into the app's executable. They are typically distributed as .dylib files or packaged within frameworks. Unlike static libraries, dynamic libraries remain separate from the app's main binary, allowing for more efficient memory usage and smaller app sizes. Multiple apps can share a single copy of a dynamic library in memory, reducing overall system resource consumption. This approach facilitates easier updates to the library without requiring a full app recompilation. In iOS, dynamic libraries are primarily used within frameworks, as Apple restricts the use of standalone dynamic libraries in App Store submissions. Dynamic frameworks offer benefits like code modularity, easier sharing of code between apps, and potential performance improvements through reduced launch times. However, they introduce a slight runtime overhead for library loading. The use of dynamic libraries in iOS is subject to Apple's guidelines and is generally recommended for larger, frequently updated codebases or when sharing code across multiple apps. + +Learn more from the following resources: + +- [@official@Overview of Dynamic Libraries](https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/OverviewOfDynamicLibraries.html) +- [@article@Static Library vs Dynamic Library in iOS](https://pratheeshbennet.medium.com/static-library-vs-dynamic-library-in-ios-55478ed53a03) diff --git a/src/data/roadmaps/ios/content/editors@-4q7MFXaTmpR_39PTeWD8.md b/src/data/roadmaps/ios/content/editors@-4q7MFXaTmpR_39PTeWD8.md index f09b07e89..943fa84b9 100644 --- a/src/data/roadmaps/ios/content/editors@-4q7MFXaTmpR_39PTeWD8.md +++ b/src/data/roadmaps/ios/content/editors@-4q7MFXaTmpR_39PTeWD8.md @@ -1 +1,18 @@ -# Editors \ No newline at end of file +# Editors + +Xcode editors are the central workspace for code creation and modification. The main types include: + +1. Source Editor: For writing and editing code, featuring syntax highlighting, code completion, and inline documentation. +2. Interface Builder: A visual editor for designing user interfaces, supporting both Storyboards and XIB files. +3. Assistant Editor: Allows viewing related files side-by-side, useful for simultaneously editing header and implementation files. +4. Version Editor: For comparing and merging different versions of a file. +5. Property List Editor: A specialized editor for working with .plist files. +6. Core Data Model Editor: For designing and managing Core Data models. + +The Editor area supports multiple tabs and split views, enabling developers to work on multiple files simultaneously. + +Learn more from the following resources: + +- [@official@Creating a source editor extension](https://developer.apple.com/documentation/xcodekit/creating-a-source-editor-extension) +- [@official@Source Editor](https://developer.apple.com/documentation/xcode/source-editor) +- [@official@Creating a Core Data Model](https://developer.apple.com/documentation/coredata/creating_a_core_data_model) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/fastlane@_W3vb0b14FrWB2fH7DHC7.md b/src/data/roadmaps/ios/content/fastlane@_W3vb0b14FrWB2fH7DHC7.md index 5686faa3a..d1f17978c 100644 --- a/src/data/roadmaps/ios/content/fastlane@_W3vb0b14FrWB2fH7DHC7.md +++ b/src/data/roadmaps/ios/content/fastlane@_W3vb0b14FrWB2fH7DHC7.md @@ -1 +1,17 @@ -# FastLane \ No newline at end of file +# FastLane + +Fastlane is an open-source platform designed to simplify and automate the deployment process of iOS (and Android) applications. It provides a suite of tools to streamline various tasks such as building, testing, and releasing apps. Key features of Fastlane include: + +1. Automated Build and Distribution: Automate the creation and distribution of beta builds through services like TestFlight or Google Play. +2. Continuous Integration: Integrate with CI/CD systems to ensure continuous testing and deployment. +3. Code Signing Management: Simplify and automate the management of certificates and provisioning profiles. +4. App Metadata Management: Automatically update app metadata, screenshots, and other related information on App Store Connect. +5. Error Reporting: Receive detailed logs and error reports to debug issues quickly. + +Fastlane uses a configuration file (Fastfile) where developers can define lanes for different workflows, making the deployment process more efficient and less error-prone. This tool is highly valuable for teams looking to maintain consistency and save time in their release processes. + +Learn more from the following resources: + +- [@official@FastLane Website](https://fastlane.tools) +- [@opensource@fastlane/fastlane](https://github.com/fastlane/fastlane) +- [@video@How to Submit an app to the AppStore using Fastlane](https://www.youtube.com/watch?v=zuoQS-ZFXW0&t=197s) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/file-system@_bkRbqVXKNCnRvEFCM6mN.md b/src/data/roadmaps/ios/content/file-system@_bkRbqVXKNCnRvEFCM6mN.md index b47f3f608..3083e60b1 100644 --- a/src/data/roadmaps/ios/content/file-system@_bkRbqVXKNCnRvEFCM6mN.md +++ b/src/data/roadmaps/ios/content/file-system@_bkRbqVXKNCnRvEFCM6mN.md @@ -1 +1,9 @@ -# File System \ No newline at end of file +# File System + +The iOS file system provides a structured way for apps to store and access data directly on the device. Each app operates within its own sandbox, a dedicated directory structure that isolates the app's data for security and privacy. Within this sandbox, apps can create, read, write, and organize files and directories. The system offers several key directories, including Documents for user-generated content, Library for app-specific data, and tmp for temporary files. File management in iOS is primarily handled through the FileManager class, which provides a comprehensive API for file and directory operations. When working with files, developers must consider factors such as data persistence across app updates, iCloud backup settings, and efficient management of storage space. The file system is particularly useful for storing larger datasets, binary files, or data that doesn't fit well into structured storage systems like Core Data or User Defaults. + +Learn more from the following resources: + +- [@official@File System Basics](https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html) +- [@official@About File System](https://developer.apple.com/documentation/foundation/file_system/about_apple_file_system/) +- [@official@FileManager](https://developer.apple.com/documentation/foundation/filemanager) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/frameworks--library@pZVPsgvCpP3zUgBM4i0CF.md b/src/data/roadmaps/ios/content/frameworks--library@pZVPsgvCpP3zUgBM4i0CF.md index d0ee856e7..1daf14de9 100644 --- a/src/data/roadmaps/ios/content/frameworks--library@pZVPsgvCpP3zUgBM4i0CF.md +++ b/src/data/roadmaps/ios/content/frameworks--library@pZVPsgvCpP3zUgBM4i0CF.md @@ -1 +1,3 @@ -# Frameworks & Library \ No newline at end of file +# Frameworks & Library + +Frameworks and libraries in iOS development are collections of reusable code that provide specific functionality, enhancing development efficiency and maintaining code consistency. Frameworks are more structured than libraries, offering a hierarchical directory that bundles code, resources, and documentation. They can include dynamic or static libraries, header files, and additional resources like images or localization files. iOS provides numerous built-in frameworks like UIKit, Foundation, and CoreData, which form the backbone of app development. Third-party frameworks expand functionality further, often distributed via dependency managers. Libraries, typically in the form of static or dynamic libraries, contain compiled code that can be linked into an app. They're generally simpler than frameworks but less self-contained. The choice between using a framework or a library often depends on the complexity of the functionality needed and how it integrates with the existing project structure. Effective use of frameworks and libraries can significantly reduce development time and improve code quality in iOS applications. \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/frameworks@PdzCQXZIivw3zCYPtokJV.md b/src/data/roadmaps/ios/content/frameworks@PdzCQXZIivw3zCYPtokJV.md index c3e3997cf..3044b9379 100644 --- a/src/data/roadmaps/ios/content/frameworks@PdzCQXZIivw3zCYPtokJV.md +++ b/src/data/roadmaps/ios/content/frameworks@PdzCQXZIivw3zCYPtokJV.md @@ -1 +1,3 @@ -# Frameworks \ No newline at end of file +# Frameworks + +Frameworks in iOS development are modular, reusable packages of code and resources that provide specific functionality to applications. They offer a hierarchical structure containing compiled code, header files, resources like images and localization files, and often documentation. iOS provides numerous built-in frameworks such as UIKit for user interface elements, Foundation for fundamental data types and collections, and Core Data for data management. These frameworks form the backbone of iOS app development, offering standardized and optimized implementations of common functionalities. Third-party frameworks extend this ecosystem, providing additional features and tools. Frameworks can be static or dynamic, with dynamic frameworks offering more flexibility in terms of memory usage and updates. The use of frameworks promotes code reuse, maintains consistency across projects, and often improves development efficiency. Effective utilization of both system and third-party frameworks is crucial for building robust, feature-rich iOS applications while minimizing development time and effort. \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/functional-programming@Pj-hqRZUmwx1WhmTbLoFD.md b/src/data/roadmaps/ios/content/functional-programming@Pj-hqRZUmwx1WhmTbLoFD.md index 27497d0d1..39bd8d966 100644 --- a/src/data/roadmaps/ios/content/functional-programming@Pj-hqRZUmwx1WhmTbLoFD.md +++ b/src/data/roadmaps/ios/content/functional-programming@Pj-hqRZUmwx1WhmTbLoFD.md @@ -4,7 +4,6 @@ Functional programming is a style of programming where code is written using pur Learn more from the following resources: -- [@article@The Principles of Functional Programming](https://www.freecodecamp.org/news/the-principles-of-functional-programming/) - [@video@Functional programming - A general introduction](https://www.youtube.com/watch?v=8z_bUIl_uPo) - [@video@Intro to Swift for Functional Programmers](https://www.youtube.com/watch?v=rYC-TnKoi40) - [@feed@Explore top posts about Functional Programming](https://app.daily.dev/tags/functional-programming?ref=roadmapsh) diff --git a/src/data/roadmaps/ios/content/gamekit@H5F9P5xeQiHhWhS6jEzp5.md b/src/data/roadmaps/ios/content/gamekit@H5F9P5xeQiHhWhS6jEzp5.md index 7e5adeb6d..1f6aaba9d 100644 --- a/src/data/roadmaps/ios/content/gamekit@H5F9P5xeQiHhWhS6jEzp5.md +++ b/src/data/roadmaps/ios/content/gamekit@H5F9P5xeQiHhWhS6jEzp5.md @@ -1 +1,8 @@ -# GameKit \ No newline at end of file +# GameKit + +GameKit is a framework provided by Apple for iOS, macOS, and tvOS that facilitates the implementation of social gaming features. It offers a set of tools and APIs for integrating multiplayer functionality, leaderboards, achievements, and player authentication in games. GameKit simplifies the process of adding real-time multiplayer capabilities, allowing developers to create peer-to-peer connections or use Apple's Game Center servers for matchmaking. The framework provides APIs for managing leaderboards, enabling players to compare scores globally or among friends. It also supports a system for creating and tracking in-game achievements, enhancing player engagement. GameKit handles player authentication through Game Center, offering a unified gaming identity across Apple platforms. While primarily designed for games, some of GameKit's features, like peer-to-peer connectivity, can be useful in non-gaming apps as well. By leveraging GameKit, developers can create more interactive and socially engaging gaming experiences on Apple platforms without having to implement complex networking and social features from scratch. + +Learn more from the following resources: + +- [@official@GameKit](https://developer.apple.com/documentation/gamekit) +- [@article@How to integrate GameKit](https://medium.com/swlh/how-to-integrate-gamekit-ios-794061428197) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/gcd@aROcI1RucAyu-gHn-tVnj.md b/src/data/roadmaps/ios/content/gcd@aROcI1RucAyu-gHn-tVnj.md index 192880ca0..d2a726731 100644 --- a/src/data/roadmaps/ios/content/gcd@aROcI1RucAyu-gHn-tVnj.md +++ b/src/data/roadmaps/ios/content/gcd@aROcI1RucAyu-gHn-tVnj.md @@ -1 +1,9 @@ -# GCD \ No newline at end of file +# GCD + +Grand Central Dispatch (GCD) is a powerful concurrency framework in iOS that simplifies the execution of parallel code. It abstracts the complexities of thread management, allowing developers to focus on the tasks to be performed rather than the underlying threading details. GCD uses a queue-based model where tasks are submitted to dispatch queues and executed by a managed pool of threads. It offers both serial and concurrent queues, enabling fine-grained control over task execution order and parallelism. The framework provides global queues with different quality of service levels, allowing prioritization of tasks based on their importance. GCD's dispatch groups facilitate the coordination of multiple asynchronous operations, while dispatch semaphores help manage access to shared resources. By leveraging GCD, iOS developers can efficiently distribute work across multiple cores, improve app responsiveness, and avoid common pitfalls associated with manual thread management, making it an essential tool for building high-performance, concurrent applications. + +Learn more from the following resources: + +- [@official@Dispatch@](https://developer.apple.com/documentation/DISPATCH) +- [@article@Grand Central Dispatch (GCD) in iOS: The Developer's Guide](https://hackernoon.com/grand-central-dispatch-gcd-in-ios-the-developers-guide) +- [@article@Grand Central Dispatch in iOS](https://medium.com/@knoo/gcd-grand-central-dispatch-in-ios-b2dd665cabd5) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/git@QifWR7WSJJTcTK2IfczxG.md b/src/data/roadmaps/ios/content/git@QifWR7WSJJTcTK2IfczxG.md index 5ed3cd233..fa20556ea 100644 --- a/src/data/roadmaps/ios/content/git@QifWR7WSJJTcTK2IfczxG.md +++ b/src/data/roadmaps/ios/content/git@QifWR7WSJJTcTK2IfczxG.md @@ -6,5 +6,4 @@ Learn more from the following resources: - [@official@Git Documentation](https://www.git-scm.com/) - [@video@Git in 100 Seconds](https://www.youtube.com/watch?v=hwP7WQkmECE) -- [@article@An introduction to Git](https://www.freecodecamp.org/news/what-is-git-and-how-to-use-it-c341b049ae61/) - [@feed@Explore top posts about Git](https://app.daily.dev/tags/git?ref=roadmapsh) diff --git a/src/data/roadmaps/ios/content/github-actions@LltERZaHsI-R_3O_3twpk.md b/src/data/roadmaps/ios/content/github-actions@LltERZaHsI-R_3O_3twpk.md index da2fb90d1..0575ffacb 100644 --- a/src/data/roadmaps/ios/content/github-actions@LltERZaHsI-R_3O_3twpk.md +++ b/src/data/roadmaps/ios/content/github-actions@LltERZaHsI-R_3O_3twpk.md @@ -1 +1,9 @@ -# GitHub Actions \ No newline at end of file +# GitHub Actions + +GitHub Actions is a CI/CD tool integrated directly into GitHub, allowing developers to automate workflows, such as building, testing, and deploying code directly from their repositories. It uses YAML files to define workflows, which can be triggered by various events like pushes, pull requests, or on a schedule. GitHub Actions supports a wide range of actions and integrations, making it highly customizable for different project needs. It provides a marketplace with reusable workflows and actions contributed by the community. With its seamless integration with GitHub, developers can take advantage of features like matrix builds, secrets management, and environment-specific configurations to streamline and enhance their development and deployment processes. + +Learn more from the following resources: + +- [@official@GitHub Actions Documentation](https://docs.github.com/en/actions) +- [@video@How to build an iOS app with GitHub Actions](https://www.youtube.com/watch?v=Sd7YhlxZrJw) +- [@article@How to build an iOS app with GitHub Actions](https://www.andrewhoog.com/post/how-to-build-an-ios-app-with-github-actions-2023/) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/gitlab@VylaBSDAVFzveVfytI1Fz.md b/src/data/roadmaps/ios/content/gitlab@VylaBSDAVFzveVfytI1Fz.md index 87c30782c..64b220189 100644 --- a/src/data/roadmaps/ios/content/gitlab@VylaBSDAVFzveVfytI1Fz.md +++ b/src/data/roadmaps/ios/content/gitlab@VylaBSDAVFzveVfytI1Fz.md @@ -1 +1,9 @@ -# GitLab \ No newline at end of file +# GitLab + +GitLab is a comprehensive DevOps platform that provides source code management, CI/CD, and project management tools in a single application. It enables teams to manage their entire software development lifecycle, from planning and coding to testing, deployment, and monitoring. GitLab's built-in CI/CD capabilities allow developers to automate the build, test, and deployment processes using pipelines defined in YAML files. It integrates with various version control systems and supports Docker, Kubernetes, and other deployment environments. GitLab's features include issue tracking, code review, and merge request workflows, which enhance collaboration and code quality. The platform also offers robust security features, such as vulnerability management and dependency scanning, to ensure the safety and integrity of the codebase. GitLab can be hosted on-premises or used as a cloud-based service, providing flexibility and scalability for different project needs. Its all-in-one nature simplifies the development process, making it a popular choice for teams seeking to streamline their workflows and improve productivity. + +Learn more from the following resources: + +- [@official@Gitlab Website](https://about.gitlab.com/) +- [@article@Tutorial: iOS CI/CD with GitLab](https://about.gitlab.com/blog/2023/06/07/ios-cicd-with-gitlab/) +- [@video@Mobile DevOps - Apple App Store Integration Demo](https://www.youtube.com/watch?v=CwzAWVgJeK8) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/graphql@9o7d3aN0YFfNNUeVoJrhs.md b/src/data/roadmaps/ios/content/graphql@9o7d3aN0YFfNNUeVoJrhs.md index 9aceb43e1..17feda2e4 100644 --- a/src/data/roadmaps/ios/content/graphql@9o7d3aN0YFfNNUeVoJrhs.md +++ b/src/data/roadmaps/ios/content/graphql@9o7d3aN0YFfNNUeVoJrhs.md @@ -1 +1,8 @@ -# GraphQL \ No newline at end of file +# GraphQL + +GraphQL is a query language and runtime for APIs, offering an alternative to traditional REST APIs in iOS development. It allows clients to request specific data structures, reducing over-fetching and under-fetching of data common in REST. In iOS apps, GraphQL enables more efficient network usage by allowing precise data requests tailored to UI needs. Developers typically use libraries like Apollo iOS to integrate GraphQL, which handles query execution, caching, and data normalization. GraphQL's strong typing system aligns well with Swift, facilitating type-safe API interactions. It supports real-time data with subscriptions, useful for live updates in iOS apps. While GraphQL offers flexibility and performance benefits, it requires a mindset shift from REST, including different approaches to error handling and caching. Implementing GraphQL in iOS involves crafting queries, managing the schema, and often requires coordination with backend teams to design effective GraphQL APIs that cater to mobile app needs. + +Learn more from the following resources: + +- [@official@GraphQL Website](https://graphql.org/) +- [@official@GraphQL Roadmap](https://roadmap.sh/graphql] \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/groups@42sfiLKrVCcnMMjR7TFn1.md b/src/data/roadmaps/ios/content/groups@42sfiLKrVCcnMMjR7TFn1.md index 7f8f87c86..3eba0d01e 100644 --- a/src/data/roadmaps/ios/content/groups@42sfiLKrVCcnMMjR7TFn1.md +++ b/src/data/roadmaps/ios/content/groups@42sfiLKrVCcnMMjR7TFn1.md @@ -1 +1,17 @@ -# Groups \ No newline at end of file +# Groups + +Xcode groups are organizational tools used to structure and manage files within a project. They provide a logical hierarchy for arranging source code, resources, and other project files without affecting the actual file system structure. Key aspects of Xcode groups include: + +1. Visual organization: Groups appear as folders in the Project Navigator, helping developers categorize and locate files easily. +2. Flexible structure: Files can be organized into groups based on functionality, feature, or any other logical division. +3. No impact on build: Grouping doesn't affect how Xcode compiles or packages the application. +4. Color coding: Groups can be color-coded for quick visual identification. +5. Nested groups: Support for subgroups allows for more detailed organization. +6. References vs. folders: Groups can be created as simple references or as folder references that mirror the file system. +7. Drag-and-drop management: Easy reorganization of files and groups within the Project Navigator. + +Using groups effectively helps maintain clean, organized projects, especially as they grow in size and complexity. + +Learn more from the following resources: + +- [@official@Managing files and folders in your Xcode project](https://developer.apple.com/documentation/xcode/managing-files-and-folders-in-your-xcode-project) diff --git a/src/data/roadmaps/ios/content/http--https@GjY5qCU1rjB0D58qHQtAR.md b/src/data/roadmaps/ios/content/http--https@GjY5qCU1rjB0D58qHQtAR.md index 5290801e2..b9e340b4f 100644 --- a/src/data/roadmaps/ios/content/http--https@GjY5qCU1rjB0D58qHQtAR.md +++ b/src/data/roadmaps/ios/content/http--https@GjY5qCU1rjB0D58qHQtAR.md @@ -1 +1,8 @@ -# HTTP / HTTPs \ No newline at end of file +# HTTP / HTTPs + +HTTP (Hypertext Transfer Protocol) and HTTPS (HTTP Secure) are fundamental protocols for data communication on the internet, extensively used in iOS app networking. HTTP facilitates request-response interactions between clients and servers, defining how messages are formatted and transmitted. HTTPS extends HTTP by encrypting the data exchange using SSL/TLS protocols, ensuring secure communication. In iOS development, URLSession handles both HTTP and HTTPS requests seamlessly, automatically managing the encryption for HTTPS connections. Developers typically use HTTPS for all network communications to protect user data and maintain privacy. iOS enforces App Transport Security (ATS) by default, requiring secure connections for network requests. When working with web APIs, iOS apps use these protocols to fetch data, submit forms, upload files, and perform various other network operations. Understanding HTTP methods (GET, POST, PUT, DELETE, etc.), status codes, and headers is crucial for effective API integration and troubleshooting in iOS app development. + +Learn more from the following resources: + +- [@official@URLSession](https://developer.apple.com/documentation/foundation/urlsession) +- [@article@Mastering URLSession in Swift](https://elamir.medium.com/mastering-urlsession-in-swift-a-comprehensive-guide-d3a3aa740f6e) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/ibactions@FspN4yiBF9aEN7_SlXUe1.md b/src/data/roadmaps/ios/content/ibactions@FspN4yiBF9aEN7_SlXUe1.md index eaa7468cc..7e13183ad 100644 --- a/src/data/roadmaps/ios/content/ibactions@FspN4yiBF9aEN7_SlXUe1.md +++ b/src/data/roadmaps/ios/content/ibactions@FspN4yiBF9aEN7_SlXUe1.md @@ -1 +1,19 @@ -# IBActions \ No newline at end of file +# IBActions + +Xcode IBActions are methods that connect user interface elements to code, allowing the app to respond to user interactions. Key features include: + +1. Definition: Declared as methods in view controller classes. +2. Connection: Made by ctrl-dragging from UI elements to code in Interface Builder. +3. Purpose: Handle user interactions like button taps, slider changes, etc. +4. Method signature: Can include a sender parameter of the interacting UI element's type. +5. Multiple connections: One IBAction can be connected to multiple UI elements. +6. Event types: Can be set to respond to specific events (e.g., touch up inside, value changed). +7. Naming convention: Often prefixed with 'ib' for clarity. +8. Refactoring support: Xcode updates connections when renaming. + +IBActions provide a clean way to separate UI logic from business logic, enhancing code organization. They allow developers to centralize the handling of user interactions, making it easier to manage and modify app behavior in response to user input. + +Learn more from the following resources: + +- [@video@IBOutlet & IBAction](https://www.youtube.com/watch?v=ztPpThdBHT0) +- [@article@From outlets to actions: creating an IBAction](https://www.hackingwithswift.com/read/2/5/from-outlets-to-actions-creating-an-ibaction) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/implementing-delegates@z3AUN9u7EEqeKOqvLxf7D.md b/src/data/roadmaps/ios/content/implementing-delegates@z3AUN9u7EEqeKOqvLxf7D.md index 4e97521c4..55a9bb76c 100644 --- a/src/data/roadmaps/ios/content/implementing-delegates@z3AUN9u7EEqeKOqvLxf7D.md +++ b/src/data/roadmaps/ios/content/implementing-delegates@z3AUN9u7EEqeKOqvLxf7D.md @@ -1 +1,9 @@ -# Implementing Delegates \ No newline at end of file +# Implementing Delegates + +Implementing delegates in Swift involves creating a protocol that defines the methods the delegate should implement, and then using this protocol to establish a communication channel between objects. The process typically begins with defining a protocol that outlines the required and optional methods. Next, a weak delegate property is declared in the delegating class to avoid retain cycles. The delegating class then calls the delegate methods at appropriate times, often in response to specific events or state changes. On the delegate side, the class conforms to the protocol and implements the required methods, providing custom behavior as needed. This implementation allows for flexible and reusable code, as the delegating object doesn't need to know the specific type of its delegate, only that it conforms to the protocol. + +Learn more from the following resources: + +- [@article@Delegates in Swift](https://medium.com/@muhammad.cse11/delegates-in-swift-ios-application-6dfb37897f9b) +- [@article@What is a delegate in Swift](https://www.hackingwithswift.com/example-code/language/what-is-a-delegate-in-ios) +- [@video@Delegate protocol - Swift example](https://www.youtube.com/watch?v=Z9eSUE-lzig) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/interface-builder@iMzYd8KUFnk6zqr4KecgX.md b/src/data/roadmaps/ios/content/interface-builder@iMzYd8KUFnk6zqr4KecgX.md index 82c58a063..87c84cb0b 100644 --- a/src/data/roadmaps/ios/content/interface-builder@iMzYd8KUFnk6zqr4KecgX.md +++ b/src/data/roadmaps/ios/content/interface-builder@iMzYd8KUFnk6zqr4KecgX.md @@ -1 +1,21 @@ -# Interface Builder \ No newline at end of file +# Interface Builder + +Xcode Interface Builder is a visual design tool for creating user interfaces in iOS, macOS, watchOS, and tvOS applications. Key features include: + +1. Drag-and-drop UI design: Easily add and arrange UI elements on the canvas. +2. Storyboards: Create and manage multiple screens and their connections. +3. Auto Layout: Set up adaptive layouts using constraints. +4. Size classes: Design interfaces for different device sizes and orientations. +5. Custom controls: Integrate custom UI components alongside system-provided ones. +6. IBOutlets and IBActions: Connect UI elements to code. +7. Preview: Visualize designs on different devices and orientations. +8. Accessibility inspector: Ensure UI elements are accessible. +9. Localization: Manage multiple language versions of the interface. + +Interface Builder integrates seamlessly with Xcode's coding environment, allowing developers to switch between visual design and code implementation. It supports both .xib files for individual view controllers and .storyboard files for more complex, multi-screen interfaces. + +Learn more from the following resources: + +- [@course@iOS Storyboards: Getting Started](https://www.kodeco.com/5055364-ios-storyboards-getting-started) +- [@article@A bit about Interface Builder](https://medium.com/swlh/a-bit-about-interface-builder-ceffaf484580) +- [@video@Swift Interface Builder Xcode](https://www.youtube.com/watch?v=Wf1MfPdBdNE) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/interface-overview@FwwqAchMC6qdnXbqg45he.md b/src/data/roadmaps/ios/content/interface-overview@FwwqAchMC6qdnXbqg45he.md index ccbde58a2..b597eadd8 100644 --- a/src/data/roadmaps/ios/content/interface-overview@FwwqAchMC6qdnXbqg45he.md +++ b/src/data/roadmaps/ios/content/interface-overview@FwwqAchMC6qdnXbqg45he.md @@ -1 +1,13 @@ -# Interface overview \ No newline at end of file +# Interface overview + +Xcode's interface is designed for efficient iOS, macOS, watchOS, and tvOS development. The main window is divided into several key areas: + +1. Toolbar: Contains run buttons, scheme selector, and status display. +2. Navigator Area (left): Includes file navigator, search, issue navigator, and test navigator. +3. Editor Area (center): The main coding space, supporting multiple editors and Interface Builder. +4. Utility Area (right): Shows file inspectors, Quick Help, and Interface Builder libraries. +5. Debug Area (bottom): Displays console output and variables during debugging. +6. Assistant Editor: Allows viewing related files side-by-side. +7. Version Editor: For managing and comparing different versions of code. + +The interface is highly customizable, allowing developers to adjust layouts and show/hide areas as needed for their workflow. This integrated environment provides tools for coding, UI design, testing, and debugging all in one application. diff --git a/src/data/roadmaps/ios/content/jenkins@TrblGyy81Oep2CBxoZkaf.md b/src/data/roadmaps/ios/content/jenkins@TrblGyy81Oep2CBxoZkaf.md index 2b36b080c..d4aaf6c82 100644 --- a/src/data/roadmaps/ios/content/jenkins@TrblGyy81Oep2CBxoZkaf.md +++ b/src/data/roadmaps/ios/content/jenkins@TrblGyy81Oep2CBxoZkaf.md @@ -1 +1,9 @@ -# Jenkins \ No newline at end of file +# Jenkins + +Jenkins is an open-source automation server widely used for continuous integration (CI) and continuous deployment (CD). It automates the process of building, testing, and deploying software, enhancing productivity and consistency in development workflows. Jenkins supports an extensive range of plugins, enabling seamless integration with various version control systems, build tools, and deployment environments. One of its key features is the Pipeline as Code functionality, which allows developers to define complex build and deployment pipelines using a domain-specific language (DSL) in Groovy. This enables version control and easier maintenance of pipelines. Jenkins is highly extensible, with over 1,500 plugins available for integration with tools such as Git, Maven, Docker, and Kubernetes. It also supports distributed builds, allowing the load to be spread across multiple machines for improved performance. Automated testing is another crucial aspect, as Jenkins can run unit, integration, and UI tests as part of the CI process, helping to catch issues early. Jenkins' flexibility and extensive plugin ecosystem make it a popular choice for automating complex CI/CD workflows. + +Learn more from the following resources: + +- [@official@Jenkins Website](https://www.jenkins.io/) +- [@article@What is Jenkins?](https://www.spiceworks.com/tech/devops/articles/what-is-jenkins/) +- [@article@How to use Jenkins to build your iOS app](https://sabapathy7.medium.com/how-to-use-jenkins-to-build-your-ios-app-55a8d147e3b2) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/json--xml@WYV4YG_sLvC4S5ptFFdrF.md b/src/data/roadmaps/ios/content/json--xml@WYV4YG_sLvC4S5ptFFdrF.md index e9fe9763b..f9f3e6fef 100644 --- a/src/data/roadmaps/ios/content/json--xml@WYV4YG_sLvC4S5ptFFdrF.md +++ b/src/data/roadmaps/ios/content/json--xml@WYV4YG_sLvC4S5ptFFdrF.md @@ -1 +1,3 @@ -# JSON / XML \ No newline at end of file +# JSON / XML + +JSON (JavaScript Object Notation) and XML (eXtensible Markup Language) are widely used data interchange formats in iOS development, each with its own strengths and use cases. JSON has become increasingly popular due to its lightweight nature and ease of use, particularly in web services and APIs. Swift provides built-in support for JSON encoding and decoding through the Codable protocol, simplifying the process of converting between JSON data and Swift objects. XML, while less common in modern APIs, is still used in certain scenarios, especially for complex, hierarchical data structures. iOS provides the XMLParser class for parsing XML data, though it requires more manual handling compared to JSON. Both formats support data serialization and deserialization, allowing for easy storage and transmission of structured data. When working with external APIs or services, the choice between JSON and XML is often dictated by the service provider, but for internal data storage or custom APIs, JSON is generally preferred for its simplicity and performance in mobile environments. \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/keychain@8v_eP0j85TnB33XyYAzrT.md b/src/data/roadmaps/ios/content/keychain@8v_eP0j85TnB33XyYAzrT.md index 3c8c826d2..ea0cea7a6 100644 --- a/src/data/roadmaps/ios/content/keychain@8v_eP0j85TnB33XyYAzrT.md +++ b/src/data/roadmaps/ios/content/keychain@8v_eP0j85TnB33XyYAzrT.md @@ -1 +1,8 @@ -# Keychain \ No newline at end of file +# Keychain + +The Keychain in iOS provides a secure, encrypted storage system for sensitive data such as passwords, authentication tokens, and other confidential information. It offers a higher level of security compared to other local storage options, as the data is encrypted and protected by the device's security features. The Keychain Services API allows apps to store, retrieve, and manage small chunks of data in a way that's significantly more secure than alternatives like User Defaults. Data stored in the Keychain persists across app reinstalls and can be shared between apps from the same developer. While powerful, working with the Keychain API can be complex, leading many developers to use wrapper libraries that simplify its usage. It's crucial to manage Keychain items carefully, considering aspects like accessibility settings and access groups, to ensure data remains secure while still being available when needed by the app. + +Learn more from the following resources: + +- [@official@Keychain Services](https://developer.apple.com/documentation/security/keychain_services) +- [@article@Local storage in iOS: Keychain](https://medium.com/@omar.saibaa/local-storage-in-ios-keychain-668240e2670d) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/latest-ios-sdk@SBlLNfyWzzhdFNtNtkLet.md b/src/data/roadmaps/ios/content/latest-ios-sdk@SBlLNfyWzzhdFNtNtkLet.md index 9e2e96570..2b214974f 100644 --- a/src/data/roadmaps/ios/content/latest-ios-sdk@SBlLNfyWzzhdFNtNtkLet.md +++ b/src/data/roadmaps/ios/content/latest-ios-sdk@SBlLNfyWzzhdFNtNtkLet.md @@ -1 +1,5 @@ -# Latest iOS SDK \ No newline at end of file +# Latest iOS SDK + +The latest iOS SDK can be found in the following resources: + +- [@official@Apple Developer Website](https://developer.apple.com/develop/) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/latest-swift-version@e7qVpQeu2iQL0c9MOMCVe.md b/src/data/roadmaps/ios/content/latest-swift-version@e7qVpQeu2iQL0c9MOMCVe.md index 5fe92e5c0..3d66e9dd2 100644 --- a/src/data/roadmaps/ios/content/latest-swift-version@e7qVpQeu2iQL0c9MOMCVe.md +++ b/src/data/roadmaps/ios/content/latest-swift-version@e7qVpQeu2iQL0c9MOMCVe.md @@ -1 +1,6 @@ -# Latest Swift Version \ No newline at end of file +# Latest Swift Version + +The latest Swift version can be found in the following resources: + +- [@official@Official Swift Website](https://www.swift.org/download/) +- [@official@Swiftversion.net](https://swiftversion.net/) diff --git a/src/data/roadmaps/ios/content/mapkit@XOXsjaQ-YyuAMpVCqH8KG.md b/src/data/roadmaps/ios/content/mapkit@XOXsjaQ-YyuAMpVCqH8KG.md index 0d1815b7b..747ee47ee 100644 --- a/src/data/roadmaps/ios/content/mapkit@XOXsjaQ-YyuAMpVCqH8KG.md +++ b/src/data/roadmaps/ios/content/mapkit@XOXsjaQ-YyuAMpVCqH8KG.md @@ -1 +1,9 @@ -# MapKit \ No newline at end of file +# MapKit + +MapKit is a powerful framework provided by Apple for integrating interactive maps and location-based services into iOS, macOS, and tvOS applications. It offers a rich set of tools for displaying maps, adding annotations and overlays, handling user interactions, and performing geocoding and reverse geocoding. The framework provides customizable map views that support various map types, including standard, satellite, and hybrid views. Developers can easily add pins, custom annotations, and polylines to highlight specific locations or routes. MapKit integrates seamlessly with Core Location for handling real-time user positioning and region monitoring. It also supports features like 3D map views, flyover mode, and turn-by-turn navigation. The framework handles map rendering and data management efficiently, optimizing performance even when dealing with large numbers of map elements. By leveraging MapKit, developers can create sophisticated location-aware applications, from simple map displays to complex navigation and geospatial analysis tools, enhancing user experience with visual and interactive geographical data. + +Learn more from the following resources: + +- [@official@MapKit](https://developer.apple.com/documentation/mapkit/) +- [@video@Meet MapKit for SwiftUI](https://developer.apple.com/videos/play/wwdc2023/10043/) +- [@article@Implement MapKit APIs](https://medium.com/simform-engineering/mapkit-swiftui-in-ios-17-1fec82c3bf00) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/navigation@02VAK4GMkN6nDHf1zqwPA.md b/src/data/roadmaps/ios/content/navigation@02VAK4GMkN6nDHf1zqwPA.md index 69c0d5e8f..fc9cd6919 100644 --- a/src/data/roadmaps/ios/content/navigation@02VAK4GMkN6nDHf1zqwPA.md +++ b/src/data/roadmaps/ios/content/navigation@02VAK4GMkN6nDHf1zqwPA.md @@ -1 +1,8 @@ -# Navigation \ No newline at end of file +# Navigation + +SwiftUI navigation offers a declarative approach to managing app structure and flow, primarily utilizing NavigationView for creating hierarchies and NavigationLink for inter-view navigation. The framework supports both push-based navigation for hierarchical content and modal presentations for overlays, with programmatic navigation achieved through state management for dynamic, logic-driven navigation. SwiftUI automatically handles navigation bars, back buttons, and view transitions, while supporting customization of navigation bar appearances and titles. For tab-based interfaces, TabView facilitates the creation of multi-tab applications. This navigation system integrates seamlessly with SwiftUI's state management, ensuring consistent UI updates as navigation states change, thereby simplifying the implementation of complex navigation patterns while maintaining an intuitive user experience across Apple platforms. + +Learn more from the following resources: + +- [@article@The complete guide to NavigationView in SwiftUI](https://www.hackingwithswift.com/articles/216/complete-guide-to-navigationview-in-swiftui) +- [@opensource@pointfreeco/swiftui-navigation](https://github.com/pointfreeco/swiftui-navigation) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/navigators@odKZx4SUULF1y4gmiJZdu.md b/src/data/roadmaps/ios/content/navigators@odKZx4SUULF1y4gmiJZdu.md index 6b8e3fb7e..2a7ebd649 100644 --- a/src/data/roadmaps/ios/content/navigators@odKZx4SUULF1y4gmiJZdu.md +++ b/src/data/roadmaps/ios/content/navigators@odKZx4SUULF1y4gmiJZdu.md @@ -1 +1,13 @@ -# Navigators \ No newline at end of file +# Navigators + +Xcode navigators are a set of tools located in the Navigator Area on the left side of the Xcode window. They provide different views and organizational structures for managing various aspects of your project: + +1. Project Navigator: Displays project files and groups +2. Source Control Navigator: Shows version control information +3. Symbol Navigator: Lists symbols (classes, methods, variables) in your project +4. Find Navigator: Displays search results across the project +5. Issue Navigator: Lists warnings, errors, and analysis results +6. Test Navigator: Organizes and runs unit tests +7. Debug Navigator: Shows running processes and debug information +8. Breakpoint Navigator: Manages breakpoints throughout your code +9. Report Navigator: Displays build and run reports diff --git a/src/data/roadmaps/ios/content/networking@JoNoM-utp8MaL1H0oXDta.md b/src/data/roadmaps/ios/content/networking@JoNoM-utp8MaL1H0oXDta.md index e159d196c..da91f5c6d 100644 --- a/src/data/roadmaps/ios/content/networking@JoNoM-utp8MaL1H0oXDta.md +++ b/src/data/roadmaps/ios/content/networking@JoNoM-utp8MaL1H0oXDta.md @@ -1 +1,3 @@ -# Networking \ No newline at end of file +# Networking + +Networking in iOS development involves the exchange of data between an app and remote servers or services over the internet. At the core of iOS networking is URLSession, a powerful class within the Foundation framework that handles HTTP/HTTPS communications. URLSession supports a wide range of operations, from simple data fetching to complex, concurrent downloads and uploads. Developers use it to create data tasks for basic requests, download tasks for file transfers, and upload tasks for sending data to servers. URLSession manages connections, authentication, and caching automatically. iOS networking often revolves around interacting with RESTful APIs, typically using JSON for data interchange. Robust networking code requires careful error handling, efficient response parsing, and effective management of network reachability. Modern Swift features like the Combine framework and async/await syntax complement URLSession by providing more elegant ways to handle asynchronous network operations, enhancing code readability and maintainability in complex scenarios. \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/new-feature-announcements@0dbdUmWvTIJ0fkUuLp9gR.md b/src/data/roadmaps/ios/content/new-feature-announcements@0dbdUmWvTIJ0fkUuLp9gR.md index cdcd6a815..7b17d2334 100644 --- a/src/data/roadmaps/ios/content/new-feature-announcements@0dbdUmWvTIJ0fkUuLp9gR.md +++ b/src/data/roadmaps/ios/content/new-feature-announcements@0dbdUmWvTIJ0fkUuLp9gR.md @@ -1 +1,6 @@ -# New Feature Announcements \ No newline at end of file +# New Feature Announcements + +The latest feature announcements can be found in the following resources: + +- [@official@Apple Developer Whats New](https://developer.apple.com/whats-new/) +- [@official@Apple WDDC Community](https://developer.apple.com/wwdc24/community/) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/oop@FoqlB7xBIrV4yUp4ReBkw.md b/src/data/roadmaps/ios/content/oop@FoqlB7xBIrV4yUp4ReBkw.md index 8a3fc7775..2d89cecc2 100644 --- a/src/data/roadmaps/ios/content/oop@FoqlB7xBIrV4yUp4ReBkw.md +++ b/src/data/roadmaps/ios/content/oop@FoqlB7xBIrV4yUp4ReBkw.md @@ -4,5 +4,4 @@ Object-Oriented Programming **(OOP)** is a style where code is organized around Learn more from the following resources: -- [@video@Object-oriented Programming in 7 minutes](https://www.youtube.com/watch?v=pTB0EiLXUC8) -- [@article@What is Object-Oriented Programming?](https://www.freecodecamp.org/news/what-is-object-oriented-programming/) \ No newline at end of file +- [@video@Object-oriented Programming in 7 minutes](https://www.youtube.com/watch?v=pTB0EiLXUC8) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/operation-queues@mdAV4JlF08q-ZQpb5C3q6.md b/src/data/roadmaps/ios/content/operation-queues@mdAV4JlF08q-ZQpb5C3q6.md index d1d403faf..e7853a0f5 100644 --- a/src/data/roadmaps/ios/content/operation-queues@mdAV4JlF08q-ZQpb5C3q6.md +++ b/src/data/roadmaps/ios/content/operation-queues@mdAV4JlF08q-ZQpb5C3q6.md @@ -1 +1,9 @@ -# Operation Queues \ No newline at end of file +# Operation Queues + +Operation Queues in iOS provide a high-level, object-oriented approach to managing concurrent tasks. Built on top of Grand Central Dispatch, they offer more flexibility and control over task execution compared to raw GCD. Operation Queues work with Operation objects, which encapsulate work to be performed and can include dependencies, cancellation, and prioritization. These queues allow for easy management of task dependencies, ensuring that operations are executed in the correct order. They support both synchronous and asynchronous operations, making them suitable for a wide range of concurrency scenarios. Operation Queues provide built-in support for maximum concurrent operation limits, helping to prevent system overload. Developers can subclass NSOperation to create custom, complex operations with intricate logic and state management. This abstraction layer simplifies the implementation of advanced concurrency patterns, making Operation Queues particularly useful for managing complex, interdependent background tasks in iOS applications. + +Learn more from the following resources: + +- [@official@OperationQueue](https://developer.apple.com/documentation/foundation/operationqueue) +- [@article@Getting started with Operations and OperationQueues in Swift](https://www.avanderlee.com/swift/operations/) +- [@article@Working with Operation Queue in Swift: Managing Multithreading and Cancelling Operations](https://www.linkedin.com/pulse/working-operation-queue-swift-managing-multithreading-igor-rukaleev-2t1ye/) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/parsing@UTVh1RHRWb5eA-S7ayLp8.md b/src/data/roadmaps/ios/content/parsing@UTVh1RHRWb5eA-S7ayLp8.md index a1169ab9a..5941d40d8 100644 --- a/src/data/roadmaps/ios/content/parsing@UTVh1RHRWb5eA-S7ayLp8.md +++ b/src/data/roadmaps/ios/content/parsing@UTVh1RHRWb5eA-S7ayLp8.md @@ -1 +1,9 @@ -# Parsing \ No newline at end of file +# Parsing + +JSON and XML parsing in iOS involves converting structured data formats into native Swift objects for use within an application. For JSON parsing, Swift's Codable protocol provides a streamlined approach, allowing automatic encoding and decoding of JSON data to and from Swift structs or classes. This system leverages Swift's type inference to create a seamless conversion process, handling most common data structures with minimal code. For more complex JSON structures, custom coding keys and decoding strategies can be implemented. XML parsing, while less common, is typically handled using NSXMLParser or third-party libraries. These parsers often use a delegate-based approach, calling methods as it encounters different elements in the XML structure. Both JSON and XML parsing require careful error handling to manage malformed data or network issues. When dealing with large datasets, considerations for memory management and performance optimization become crucial, often leading to the use of streaming parsers for more efficient processing of extensive data structures. + +Learn more from the following resources: + +- [@article@JSON Parsing in Swift explained with code examples](https://www.avanderlee.com/swift/json-parsing-decoding/) +- [@article@Parsing XML using Swift](https://medium.com/cracking-swift/parsing-remote-xml-using-swift-bfa9701fff84) +- [@official@XMLParser](https://developer.apple.com/documentation/foundation/xmlparser) diff --git a/src/data/roadmaps/ios/content/profiling-instruments@Y24WWPej0C7-FiBeXpvl3.md b/src/data/roadmaps/ios/content/profiling-instruments@Y24WWPej0C7-FiBeXpvl3.md index bf60b2b25..bd7edef15 100644 --- a/src/data/roadmaps/ios/content/profiling-instruments@Y24WWPej0C7-FiBeXpvl3.md +++ b/src/data/roadmaps/ios/content/profiling-instruments@Y24WWPej0C7-FiBeXpvl3.md @@ -1 +1,9 @@ -# Profiling Instruments \ No newline at end of file +# Profiling Instruments + +Profiling Instruments is a suite of powerful performance analysis tools integrated into Xcode, designed to help iOS developers identify and address performance issues within their applications. Instruments can track various metrics such as CPU usage, memory allocation, disk activity, network usage, and energy consumption in real-time. It offers a visual timeline and detailed data graphs, making it easier to pinpoint bottlenecks, memory leaks, and inefficient code paths. Common instruments include Time Profiler, Allocations, Leaks, and Energy Log. By running these instruments on a simulator or real device, developers gain deep insights into their app's performance, allowing for targeted optimizations and improvements. + +Learn more from the following resources: + +- [@video@Getting Started with Instruments](https://developer.apple.com/videos/play/wwdc2019/411/) +- [@article@5 Simple Steps to Find Slow Code Using Xcode Time Profiler](https://swiftsenpai.com/xcode/using-time-profiler/) +- [@article@An overview of the time profiler in Instruments](https://augmentedcode.io/2021/05/24/an-overview-of-the-time-profiler-in-instruments/) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/project-files@YytdlQl41yrHSwlV-G3Pd.md b/src/data/roadmaps/ios/content/project-files@YytdlQl41yrHSwlV-G3Pd.md index a09a35fd3..e359649d2 100644 --- a/src/data/roadmaps/ios/content/project-files@YytdlQl41yrHSwlV-G3Pd.md +++ b/src/data/roadmaps/ios/content/project-files@YytdlQl41yrHSwlV-G3Pd.md @@ -1 +1,21 @@ -# Project Files \ No newline at end of file +# Project Files + +Xcode project files organize and manage the various components of an iOS, macOS, watchOS, or tvOS application. Key elements include: + +1. .xcodeproj file: The main project file containing project settings, build configurations, and file references. +2. Source files: .swift, .h, and .m files containing the application's code. +3. Resource files: Assets like images, sounds, and data files used by the app. +4. Interface files: .storyboard and .xib files for designing the user interface. +5. Info.plist: A property list file containing essential app configuration information. +6. Entitlements file: Specifies app capabilities and security settings. +7. Frameworks and libraries: References to system and third-party dependencies. +8. Build phases and build rules: Scripts and settings that define how the project is compiled. +9. Scheme files: .xcscheme files defining build, run, and test configurations. + +These files are typically managed through Xcode's Project Navigator, providing a structured environment for developing and organizing complex applications. + +Learn more from the following resources: + +- [@article@.XCODEPROJ File Extension](https://fileinfo.com/extension/xcodeproj) +- [@official@Entitlements](https://developer.apple.com/documentation/bundleresources/entitlements) +- [@official@Managing Your App’s Information Property List](https://developer.apple.com/documentation/bundleresources/information_property_list/managing_your_app_s_information_property_list) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/reactive-programming@28HMXXBJWd3n-ZPgeQRDa.md b/src/data/roadmaps/ios/content/reactive-programming@28HMXXBJWd3n-ZPgeQRDa.md index 2a041f3e5..b1930bcd9 100644 --- a/src/data/roadmaps/ios/content/reactive-programming@28HMXXBJWd3n-ZPgeQRDa.md +++ b/src/data/roadmaps/ios/content/reactive-programming@28HMXXBJWd3n-ZPgeQRDa.md @@ -5,5 +5,4 @@ Reactive Programming is a declarative programming paradigm focused on data strea Learn more from the following resources: - [@article@What is reactive programming?](https://www.baeldung.com/cs/reactive-programming#:~:text=Reactive%20programming%20is%20a%20declarative,or%20reactive%20systems%20in%20general.) -- [@article@What is Reactive Programming? Beginner's Guide to Writing Reactive Code](https://www.freecodecamp.org/news/reactive-programming-beginner-guide/) - [@video@What is reactive programming?](https://www.youtube.com/watch?v=X-DeG_uGFUU) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/rest@3Qw-qmy5iAE61mPbIY4Q2.md b/src/data/roadmaps/ios/content/rest@3Qw-qmy5iAE61mPbIY4Q2.md index e1a7c1cc4..9c7d6eb35 100644 --- a/src/data/roadmaps/ios/content/rest@3Qw-qmy5iAE61mPbIY4Q2.md +++ b/src/data/roadmaps/ios/content/rest@3Qw-qmy5iAE61mPbIY4Q2.md @@ -1 +1,8 @@ -# REST \ No newline at end of file +# REST + +REST (Representational State Transfer) is an architectural style for designing networked applications, widely adopted in iOS development for creating and consuming web services. RESTful APIs use standard HTTP methods to perform operations on resources, typically represented as URLs. In iOS, developers interact with REST APIs using URLSession or higher-level networking libraries. These APIs usually exchange data in JSON format, which integrates well with Swift's Codable protocol for easy serialization and deserialization. REST's stateless nature and use of standard HTTP methods (GET for retrieval, POST for creation, PUT for updates, DELETE for removal) make it intuitive and scalable. When implementing RESTful services in iOS apps, developers focus on endpoint design, proper use of HTTP status codes, and efficient data mapping between API responses and Swift objects. Understanding REST principles helps in creating more maintainable, scalable, and interoperable iOS applications that effectively communicate with backend services. + +Learn more from the following resources: + +- [@article@REST API Calls in Swift: iOS Networking Architecture](https://matteomanferdini.com/swift-rest-api/) +- [@article@Sending and recieving Codable data with URLSession and SwiftUI](https://www.hackingwithswift.com/books/ios-swiftui/sending-and-receiving-codable-data-with-urlsession-and-swiftui) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/serializing@8rYjSCgRiJMHTNxOU6vgG.md b/src/data/roadmaps/ios/content/serializing@8rYjSCgRiJMHTNxOU6vgG.md index 8b8755b7c..95ac1da6d 100644 --- a/src/data/roadmaps/ios/content/serializing@8rYjSCgRiJMHTNxOU6vgG.md +++ b/src/data/roadmaps/ios/content/serializing@8rYjSCgRiJMHTNxOU6vgG.md @@ -1 +1,9 @@ -# Serializing \ No newline at end of file +# Serializing + +Serialization in iOS development involves converting complex data structures or objects into a format that can be easily stored or transmitted, and later reconstructed. This process is crucial for data persistence, network communication, and inter-process data exchange. In Swift, the Codable protocol simplifies serialization, particularly for JSON and property lists. It automatically generates encoding and decoding methods for conforming types, streamlining the process of converting between Swift objects and serialized formats. For custom serialization needs, developers can implement the Encodable and Decodable protocols manually. Beyond JSON, iOS supports serialization to various formats including property lists, binary data, and custom formats. When serializing, it's important to consider data integrity, backwards compatibility for stored data, and performance implications, especially for large datasets. Proper serialization practices ensure efficient data storage and transfer while maintaining the structure and relationships of complex objects in iOS applications. + +Learn more from the following resources: + +- [@official@Encoding, Decoding and Serialization](https://developer.apple.com/documentation/swift/encoding-decoding-and-serialization) +- [@official@Codable](https://developer.apple.com/documentation/swift/codable) +- [@article@Codable Cheat Sheet](https://www.hackingwithswift.com/articles/119/codable-cheat-sheet) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/sqlite@3qjQbrCUchJn1bJTBWrQF.md b/src/data/roadmaps/ios/content/sqlite@3qjQbrCUchJn1bJTBWrQF.md index 64d1d7121..a665b292d 100644 --- a/src/data/roadmaps/ios/content/sqlite@3qjQbrCUchJn1bJTBWrQF.md +++ b/src/data/roadmaps/ios/content/sqlite@3qjQbrCUchJn1bJTBWrQF.md @@ -1 +1,9 @@ -# SQLite \ No newline at end of file +# SQLite + +SQLite in iOS offers a lightweight, serverless, and self-contained relational database engine that's embedded directly into applications. It provides a robust solution for storing and managing structured data without the overhead of a separate database server. SQLite is particularly useful for apps that need to handle complex queries or manage large datasets efficiently. iOS includes built-in support for SQLite, allowing developers to create, read, update, and delete data using SQL queries. While powerful, working directly with SQLite can be verbose and error-prone, leading many developers to use wrapper libraries or higher-level abstractions like Core Data, which uses SQLite as its default persistent store. SQLite excels in scenarios requiring local data storage with relational capabilities, offering a balance between performance and flexibility. However, it requires careful management of database schemas and queries, making it more complex to use than simpler storage options like User Defaults or property lists. + +Learn more from the following resources: + +- [@official@SQLite website](https://www.sqlite.org/) +- [@course@SQlite with Swift tutorial](https://www.kodeco.com/6620276-sqlite-with-swift-tutorial-getting-started) +- [@opensource@stephencelis/SQLite.swift](https://github.com/stephencelis/SQLite.swift) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/static-library@RuXuHQhMt2nywk43LgGeJ.md b/src/data/roadmaps/ios/content/static-library@RuXuHQhMt2nywk43LgGeJ.md index d6d84c420..1d8577ac2 100644 --- a/src/data/roadmaps/ios/content/static-library@RuXuHQhMt2nywk43LgGeJ.md +++ b/src/data/roadmaps/ios/content/static-library@RuXuHQhMt2nywk43LgGeJ.md @@ -1 +1,8 @@ -# Static Library \ No newline at end of file +# Static Library + +Static libraries in iOS development are collections of compiled code that are linked directly into an app's executable at build time. They contain object code that becomes part of the final application binary, increasing its size but potentially improving load time performance. Static libraries are typically distributed as .a files, often accompanied by header files that define their public interfaces. When using static libraries, the entire library code is included in the app, even if only a portion is used, which can lead to larger app sizes. However, this approach ensures that all necessary code is available within the app, eliminating runtime dependencies. Static libraries are particularly useful for distributing closed-source code or when aiming to minimize runtime overhead. They offer simplicity in distribution and version management but may require recompilation of the entire app when the library is updated. In iOS development, static libraries are gradually being replaced by more flexible options like dynamic frameworks and XCFrameworks, especially for larger or frequently updated libraries. + +Learn more from the following resources: + +- [@article@Static Library in iOS](https://swiftpublished.com/article/static-library-in-ios-part1) +- [@video@ How to Create an XCFramework - Frameworks and Static Libraries ](https://www.youtube.com/watch?v=40EmwraG4-k) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/stepping@hUHxlNa6iJJbDGdFNhynB.md b/src/data/roadmaps/ios/content/stepping@hUHxlNa6iJJbDGdFNhynB.md index c7c0c03c6..d47abedd0 100644 --- a/src/data/roadmaps/ios/content/stepping@hUHxlNa6iJJbDGdFNhynB.md +++ b/src/data/roadmaps/ios/content/stepping@hUHxlNa6iJJbDGdFNhynB.md @@ -1 +1,18 @@ -# Stepping \ No newline at end of file +# Stepping + +Xcode debugger stepping allows developers to execute code line by line, providing detailed control over program flow during debugging. Key stepping commands include: + +1. Step Over: Executes the current line and moves to the next, without entering functions. +2. Step Into: Enters into the function call on the current line. +3. Step Out: Completes the current function and returns to the calling line. +4. Continue: Resumes normal execution until the next breakpoint. +5. Step Into Instruction: Moves to the next machine instruction (for low-level debugging). +6. Step Over Instruction: Executes the current machine instruction without entering calls. + +These controls are accessible via the debug toolbar, keyboard shortcuts, or the Debug menu. + +Learn more from the following resources: + +- [@official@Stepping through code and inspecting variables to isolate bugs](https://developer.apple.com/documentation/xcode/stepping-through-code-and-inspecting-variables-to-isolate-bugs) +- [@video@Debugging Apps with Xcode 15: Stepping through Code With Breakpoints](https://www.youtube.com/watch?v=u2GoZl7iotg) +- [@article@Stepping through code](https://www.jetbrains.com/help/rider/Stepping_Through_the_Program.html) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/swiftformat@TMFvfwG45Z00PzrzZIVhT.md b/src/data/roadmaps/ios/content/swiftformat@TMFvfwG45Z00PzrzZIVhT.md index 170335b73..7539c88ff 100644 --- a/src/data/roadmaps/ios/content/swiftformat@TMFvfwG45Z00PzrzZIVhT.md +++ b/src/data/roadmaps/ios/content/swiftformat@TMFvfwG45Z00PzrzZIVhT.md @@ -1 +1,9 @@ -# SwiftFormat \ No newline at end of file +# SwiftFormat + +SwiftFormat is a powerful command-line tool and Xcode extension designed to automatically format Swift code according to a set of predefined or custom rules. It helps maintain consistent code style across projects and teams by automatically adjusting whitespace, braces, and other formatting details. SwiftFormat can be easily integrated into development workflows, either as a pre-commit hook, as part of a continuous integration process, or directly within Xcode. It supports a wide range of formatting rules, from basic indentation and line wrapping to more complex transformations like organizing import statements and standardizing access control modifiers. The tool is highly configurable, allowing developers to create custom rule sets that align with their team's coding standards. By automating the formatting process, SwiftFormat saves time, reduces code review discussions about style, and helps maintain a clean, readable codebase. Its ability to format entire projects quickly makes it particularly valuable for large-scale Swift applications and teams focused on code quality and consistency. + +Learn more from the following resources: + +- [@opensource@nicklockwood/SwiftFormat](https://github.com/nicklockwood/SwiftFormat) +- [@article@SwiftFormat Automation for iOS Apps](https://medium.com/@pranav.kasetti/swiftformat-automation-for-ios-apps-42c91000a9af) +- [@video@ How to Setup Swift Format on XCode 14 ](https://www.youtube.com/watch?v=S7e_rp_ZRKY) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/tailor@F5796wzm5Ar6sQt-1y8vH.md b/src/data/roadmaps/ios/content/tailor@F5796wzm5Ar6sQt-1y8vH.md index 1687600a7..a62914ee3 100644 --- a/src/data/roadmaps/ios/content/tailor@F5796wzm5Ar6sQt-1y8vH.md +++ b/src/data/roadmaps/ios/content/tailor@F5796wzm5Ar6sQt-1y8vH.md @@ -1 +1,9 @@ -# Tailor \ No newline at end of file +# Tailor + +Tailor is a cross-platform static analysis and lint tool specifically designed for Swift code. It aims to enforce Swift style and conventions, helping developers maintain consistent and clean codebases. Tailor analyzes Swift source files and reports on various style, performance, and maintainability issues. It can detect problems like unused variables, overly complex functions, and violations of naming conventions. The tool is highly configurable, allowing teams to customize rules to match their specific coding standards. Tailor can be integrated into continuous integration pipelines, providing automated code quality checks with each commit. While less popular than some other linting tools like SwiftLint, Tailor offers a straightforward, cross-platform solution for Swift code analysis. Its use can help teams catch potential issues early in the development process, promote best practices, and maintain a more uniform code style across projects. + +Learn more from the following resources: + +- [@opensource@sleekbyte/tailor](https://github.com/sleekbyte/tailor) +- [@official@Tailor Website](https://sleekbyte.github.io/tailor/) +- [@article@Tailor](https://docs.codeclimate.com/docs/tailor) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/test-plan--coverage@uczkyc30K_qqcarZCGTdF.md b/src/data/roadmaps/ios/content/test-plan--coverage@uczkyc30K_qqcarZCGTdF.md index d90bc3d7a..b1f942ddb 100644 --- a/src/data/roadmaps/ios/content/test-plan--coverage@uczkyc30K_qqcarZCGTdF.md +++ b/src/data/roadmaps/ios/content/test-plan--coverage@uczkyc30K_qqcarZCGTdF.md @@ -1 +1,8 @@ -# Test Plan & Coverage \ No newline at end of file +# Test Plan & Coverage + +A Test Plan in iOS development is a comprehensive document that outlines the strategy, scope, resources, and schedule for testing activities. It defines the objectives, test criteria, deliverables, and the roles and responsibilities of the team members involved. Test Plans ensure systematic testing and help in tracking progress, identifying risks, and managing test activities efficiently. + +Coverage refers to the measure of how much of the codebase is exercised by the tests. Xcode provides code coverage tools that highlight the portions of code executed during tests, offering insights into untested parts. Higher code coverage typically indicates more comprehensive testing, but it’s essential to focus on meaningful coverage that validates critical functionality rather than aiming for 100% coverage without ensuring test quality. Balancing extensive unit tests, integration tests, and UI tests helps achieve effective coverage and robust application quality. + +Learn more from the following resources: + diff --git a/src/data/roadmaps/ios/content/testflight@KCJgCjMJGxIcf13XSEclO.md b/src/data/roadmaps/ios/content/testflight@KCJgCjMJGxIcf13XSEclO.md index cf7ad91b6..fb0161054 100644 --- a/src/data/roadmaps/ios/content/testflight@KCJgCjMJGxIcf13XSEclO.md +++ b/src/data/roadmaps/ios/content/testflight@KCJgCjMJGxIcf13XSEclO.md @@ -1 +1,9 @@ -# TestFlight \ No newline at end of file +# TestFlight + +TestFlight is Apple's beta testing service for iOS applications, allowing developers to distribute their apps to internal and external testers before the official release on the App Store. Through TestFlight, developers can invite users via email or a public link to test the app and provide feedback. Testers can then download the app directly to their devices using the TestFlight app. Developers can distribute up to 100 internal testers (using iTunes Connect user roles) and up to 10,000 external testers per app. TestFlight provides valuable insights by collecting feedback and crash reports, helping identify issues and improve app quality. It supports testing of multiple builds simultaneously and manages app versioning and expiration, streamlining the beta testing process significantly. + +Learn more from the following resources: + +- [@official@Beta testing made simple with TestFlight](https://developer.apple.com/testflight/) +- [@video@Get started with TestFlight](https://developer.apple.com/videos/play/tech-talks/110343/) +- [@article@What is TestFlight and how to use it](https://vikramios.medium.com/what-is-testflight-how-to-use-it-44dba5d2f263) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/toolbar@AxQ5gCjk136kXsbBFTUNp.md b/src/data/roadmaps/ios/content/toolbar@AxQ5gCjk136kXsbBFTUNp.md index 66cb031b3..a418174ee 100644 --- a/src/data/roadmaps/ios/content/toolbar@AxQ5gCjk136kXsbBFTUNp.md +++ b/src/data/roadmaps/ios/content/toolbar@AxQ5gCjk136kXsbBFTUNp.md @@ -1 +1,13 @@ -# Toolbar \ No newline at end of file +# Toolbar + +The Xcode toolbar is a central control panel located at the top of the Xcode window, providing quick access to key development functions. It includes: + +1. Run and Stop buttons for building and executing the app +2. Scheme menu for selecting the active scheme and target device +3. Status display showing build progress and errors +4. Editor segmented control for switching between standard, assistant, and version editors +5. Workspace configuration buttons for showing/hiding different interface areas +6. Organizer button for accessing project and device management tools +7. Activity viewer for background tasks like indexing + +The toolbar's layout can be customized to suit individual developer preferences, allowing for the addition or removal of specific items. diff --git a/src/data/roadmaps/ios/content/understanding-and-using-closures@5V7nxQKmmHWSMSBCRxkaF.md b/src/data/roadmaps/ios/content/understanding-and-using-closures@5V7nxQKmmHWSMSBCRxkaF.md index d39cd8da4..38b25c14a 100644 --- a/src/data/roadmaps/ios/content/understanding-and-using-closures@5V7nxQKmmHWSMSBCRxkaF.md +++ b/src/data/roadmaps/ios/content/understanding-and-using-closures@5V7nxQKmmHWSMSBCRxkaF.md @@ -1 +1,9 @@ -# Understanding and using Closures \ No newline at end of file +# Understanding and using Closures + +Closures in Swift are self-contained blocks of functionality that can be passed around and used in your code. They capture and store references to variables and constants from the surrounding context in which they're defined. Closures can be thought of as anonymous functions, capable of being assigned to variables, passed as arguments to functions, or returned from functions. They are particularly useful for writing compact, inline code for event handlers, completion handlers, and higher-order functions like map, filter, and reduce. Swift's closure syntax is flexible, allowing for shorthand argument names, implicit returns, and trailing closure syntax, which can significantly reduce boilerplate code. Understanding closures is crucial for effective Swift programming, as they are extensively used in iOS SDK and SwiftUI for handling asynchronous operations, callbacks, and reactive programming patterns. + +Learn more from the following resources: + +- [@article@Swift Closures](https://www.programiz.com/swift-programming/closures) +- [@article@A guide to closures in Swift](https://medium.com/swiftable/a-guide-to-closures-in-swift-368e6aca6d71) +- [@article@Introduction to Swift Closures](https://codewithchris.com/introduction-to-swift-closures-in-2023/) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/unit--ui-testing@5589B1DKaCd-9l9DfKH3o.md b/src/data/roadmaps/ios/content/unit--ui-testing@5589B1DKaCd-9l9DfKH3o.md index 405b17b19..60295c64a 100644 --- a/src/data/roadmaps/ios/content/unit--ui-testing@5589B1DKaCd-9l9DfKH3o.md +++ b/src/data/roadmaps/ios/content/unit--ui-testing@5589B1DKaCd-9l9DfKH3o.md @@ -1 +1,3 @@ -# Unit & UI Testing \ No newline at end of file +# Unit & UI Testing + +Unit and UI testing are critical components of ensuring the reliability and quality of iOS applications. Unit testing involves writing tests for individual components or functions to verify that they produce the expected results under various conditions, typically using the XCTest framework. These tests are automated, fast, and help catch bugs early in the development cycle. UI testing, on the other hand, involves verifying the app's user interface and user interactions. This can be done using Xcode's UI testing framework, which allows developers to record and write automated tests that simulate user actions like taps, swipes, and text input. Together, unit and UI testing ensure that both the internal logic and the user experience of an app are robust and function correctly as changes are made to the codebase. \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/urlsession@WPJACNeI6jX9GGB1roeTp.md b/src/data/roadmaps/ios/content/urlsession@WPJACNeI6jX9GGB1roeTp.md index 77d616b34..bea2d7983 100644 --- a/src/data/roadmaps/ios/content/urlsession@WPJACNeI6jX9GGB1roeTp.md +++ b/src/data/roadmaps/ios/content/urlsession@WPJACNeI6jX9GGB1roeTp.md @@ -1 +1,9 @@ -# URLSession \ No newline at end of file +# URLSession + +URLSession is a powerful and flexible API in iOS for handling HTTP and HTTPS network requests. It serves as the foundation for networking tasks in iOS applications, providing a rich set of features for data transfer over the internet. URLSession supports various types of tasks including data tasks for simple requests and responses, download tasks for file transfers, and upload tasks for sending data to servers. It offers both synchronous and asynchronous programming models, with the latter being particularly useful for maintaining responsive UIs during network operations. URLSession handles connection management, authentication, and caching automatically, simplifying complex networking scenarios. It integrates well with Swift's modern concurrency features like async/await, making asynchronous code more readable and maintainable. Developers can configure session behaviors, set up background transfers, and implement robust error handling and retry mechanisms using URLSession, making it a versatile tool for a wide range of networking needs in iOS development. + +Learn more from the following resources: + +- [@official@Fetching website data into memory](https://developer.apple.com/documentation/foundation/url_loading_system/fetching_website_data_into_memory) +- [@video@Networking in iOS with URLSession](https://www.youtube.com/watch?v=zvfViYmETuc) +- [@article@URLSession in Swift](https://janviarora.medium.com/urlsession-in-swift-f0f7348e37d5) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/user-defaults@ImS1FqVicQImMw-y1ze7y.md b/src/data/roadmaps/ios/content/user-defaults@ImS1FqVicQImMw-y1ze7y.md index 9842cc069..ea89ebf6e 100644 --- a/src/data/roadmaps/ios/content/user-defaults@ImS1FqVicQImMw-y1ze7y.md +++ b/src/data/roadmaps/ios/content/user-defaults@ImS1FqVicQImMw-y1ze7y.md @@ -1 +1,9 @@ -# User Defaults \ No newline at end of file +# User Defaults + +User Defaults in iOS provides a convenient way to store small amounts of key-value data persistently across app launches. It's primarily used for saving user preferences, app settings, and other lightweight data. The `UserDefaults` class offers a standardized interface to interact with the defaults system, allowing easy storage and retrieval of basic data types like strings, numbers, dates, and even more complex objects that conform to the Codable protocol. Data stored in User Defaults is automatically persisted to disk, making it readily available in subsequent app launches. While User Defaults is easy to use and efficient for small datasets, it's not suitable for storing large amounts of data or sensitive information. It's important to use User Defaults judiciously, as overuse can impact app launch times and performance. For more complex data structures or larger datasets, other persistence mechanisms like Core Data or file-based storage are more appropriate. + +Learn more from the following resources: + +- [@official@UserDefaults](https://developer.apple.com/documentation/foundation/userdefaults) +- [@article@Reading and Writing basics: UserDefaults](https://www.hackingwithswift.com/read/12/2/reading-and-writing-basics-userdefaults) +- [@video@Reading and Writing basics: UserDefaults](https://www.youtube.com/watch?v=WHKLXI8baJk&t=1s) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/view-transitions@2tmR1yE5daz2HB4IV5qwI.md b/src/data/roadmaps/ios/content/view-transitions@2tmR1yE5daz2HB4IV5qwI.md index f5246ecaf..0aa2423cd 100644 --- a/src/data/roadmaps/ios/content/view-transitions@2tmR1yE5daz2HB4IV5qwI.md +++ b/src/data/roadmaps/ios/content/view-transitions@2tmR1yE5daz2HB4IV5qwI.md @@ -1 +1,8 @@ -# View Transitions \ No newline at end of file +# View Transitions + +SwiftUI view transitions provide a fluid and intuitive way to animate changes in the user interface, enhancing the overall user experience. These transitions can be applied to individual views or entire view hierarchies, allowing developers to create smooth animations for appearance, disappearance, and modification of UI elements. SwiftUI offers a range of built-in transition effects, such as fade, move, and scale, which can be easily customized and combined to create more complex animations. By leveraging the `.transition()` modifier, developers can specify how views enter and exit the screen, while the `animation()` modifier controls the timing and style of these transitions. + +Learn more from the following resources: + +- [@article@How to add and remove views with a transition](https://www.hackingwithswift.com/quick-start/swiftui/how-to-add-and-remove-views-with-a-transition) +- [@course@Animating views and transitions ](https://developer.apple.com/tutorials/swiftui/animating-views-and-transitions) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/views-and-modifiers@mgUCYztUpKINqIZikT4Bh.md b/src/data/roadmaps/ios/content/views-and-modifiers@mgUCYztUpKINqIZikT4Bh.md index e9fb51e0a..f62ffe43d 100644 --- a/src/data/roadmaps/ios/content/views-and-modifiers@mgUCYztUpKINqIZikT4Bh.md +++ b/src/data/roadmaps/ios/content/views-and-modifiers@mgUCYztUpKINqIZikT4Bh.md @@ -1 +1,8 @@ -# Views and Modifiers \ No newline at end of file +# Views and Modifiers + +SwiftUI views and modifiers form the core of UI development in the framework. Views are structs conforming to the View protocol, representing visual elements of the interface. They are lightweight, value types that describe the content and layout. Modifiers are methods called on views to adjust their appearance or behavior, such as changing colors, adding padding, or attaching gestures. These modifiers return new view instances, allowing for a chain of modifications. SwiftUI uses a declarative approach where views and modifiers are composed to create complex UI elements. The system efficiently manages view updates and redraws based on state changes. Custom views can be easily created by combining existing views and modifiers, promoting code reuse and maintainability. + +Learn more from the following resources: + +- [@official@](https://developer.apple.com/documentation/swiftui/viewmodifier) +- [@article@Views and modifiers: Introduction](https://www.hackingwithswift.com/books/ios-swiftui/views-and-modifiers-introduction) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/xcframework@MaHtZSIPxDzrnB33_9OdV.md b/src/data/roadmaps/ios/content/xcframework@MaHtZSIPxDzrnB33_9OdV.md index 7a0aaf28f..1c87e360e 100644 --- a/src/data/roadmaps/ios/content/xcframework@MaHtZSIPxDzrnB33_9OdV.md +++ b/src/data/roadmaps/ios/content/xcframework@MaHtZSIPxDzrnB33_9OdV.md @@ -1 +1,9 @@ -# XCFramework \ No newline at end of file +# XCFramework + +XCFramework is an advanced packaging format introduced by Apple for distributing binary frameworks in iOS, macOS, tvOS, and watchOS development. It addresses limitations of traditional .framework bundles by supporting multiple architectures and platforms within a single package. XCFrameworks can contain binary code for different platforms and architectures, including simulators and devices, making them ideal for distributing cross-platform libraries. They simplify the integration process, eliminating the need for manual management of different framework versions for various platforms. XCFrameworks support both static and dynamic libraries and can include resources like headers, assets, and documentation. This format is particularly beneficial for library developers, as it allows them to distribute a single package that works across different Apple platforms and architectures. For app developers, XCFrameworks offer smoother integration of third-party dependencies, reducing compatibility issues and simplifying the build process in Xcode projects. + +Learn more from the following resources: + +- [@official@Creating a multiplatform binary framework bundle](https://developer.apple.com/documentation/xcode/creating-a-multi-platform-binary-framework-bundle) +- [@official@Distributing binary frameworks as Swift packages](https://developer.apple.com/documentation/xcode/distributing-binary-frameworks-as-swift-packages) +- [@article@Creating an XCFramework](https://rhonabwy.com/2023/02/10/creating-an-xcframework/) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/xcode-debugger@WxshXCloVDkVkQV0JvI1w.md b/src/data/roadmaps/ios/content/xcode-debugger@WxshXCloVDkVkQV0JvI1w.md index 6dcd616bc..50e2fca02 100644 --- a/src/data/roadmaps/ios/content/xcode-debugger@WxshXCloVDkVkQV0JvI1w.md +++ b/src/data/roadmaps/ios/content/xcode-debugger@WxshXCloVDkVkQV0JvI1w.md @@ -1 +1,8 @@ -# Xcode Debugger \ No newline at end of file +# Xcode Debugger + +The Xcode Debugger is an essential tool for iOS developers, providing capabilities to diagnose and resolve issues within the code. It allows setting breakpoints to pause the execution at specific lines, enabling the inspection of variable states and program flow. Developers can step over, into, or out of functions to closely examine the logic. The LLDB (Low-Level Debugger) console supports powerful commands for deeper inspection and manipulation of the app’s state. The debugger also includes features like view debugging to analyze the UI hierarchy and memory graph debugging to detect memory leaks and retain cycles, making it a comprehensive tool for troubleshooting and optimizing iOS applications. + +Learn more from the following resources: + +- [@video@Debugging in Xcode](https://www.youtube.com/watch?v=ZAqnJQn7xp4) +- [@article@Xcode Debug Console Tour: Exploring All Options](https://www.avanderlee.com/xcode/xcode-debug-console/) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/xctest@xZmBJVq5FHNdm1BDuZbbS.md b/src/data/roadmaps/ios/content/xctest@xZmBJVq5FHNdm1BDuZbbS.md index 04c163291..d780e81c1 100644 --- a/src/data/roadmaps/ios/content/xctest@xZmBJVq5FHNdm1BDuZbbS.md +++ b/src/data/roadmaps/ios/content/xctest@xZmBJVq5FHNdm1BDuZbbS.md @@ -1 +1,7 @@ -# XCTest \ No newline at end of file +# XCTest + +XCTest is Apple's framework for writing and running unit tests, performance tests, and UI tests in iOS, macOS, watchOS, and tvOS applications. It allows developers to create test cases and test methods to verify the correctness of their code, ensuring that individual components function as expected. XCTest supports assertions to check for expected outcomes, and it can run tests in parallel to speed up the testing process. For UI testing, XCTest provides capabilities to record user interactions and generate corresponding test scripts, which can be replayed to simulate user behavior. Additionally, XCTest integrates seamlessly with Xcode's testing infrastructure, providing detailed reports and continuous integration support to maintain code quality and performance throughout the development lifecycle. + +Learn more from the following resources: + +- [@official@XCTest](https://developer.apple.com/documentation/xctest) \ No newline at end of file diff --git a/src/data/roadmaps/ios/content/xcuitest@ZQSUKPbXZl5yKra2ap8JR.md b/src/data/roadmaps/ios/content/xcuitest@ZQSUKPbXZl5yKra2ap8JR.md index 180457a2a..1c33dd3c8 100644 --- a/src/data/roadmaps/ios/content/xcuitest@ZQSUKPbXZl5yKra2ap8JR.md +++ b/src/data/roadmaps/ios/content/xcuitest@ZQSUKPbXZl5yKra2ap8JR.md @@ -1 +1,9 @@ -# XCUITest \ No newline at end of file +# XCUITest + +XCUITest is a robust framework within XCTest designed specifically for automated UI testing of iOS applications. It allows developers to create tests that simulate user interactions with the app's interface, ensuring that the UI behaves correctly under various conditions. Using XCUITest, developers can write tests in Swift or Objective-C to tap buttons, enter text, swipe, and perform other gestures. The framework provides a recording feature to capture user actions and generate corresponding test code, simplifying the creation of test scripts. XCUITest integrates seamlessly with Xcode, enabling easy setup, execution, and debugging of UI tests. It supports running tests on multiple devices and simulators, providing detailed logs and screenshots to help diagnose issues, thus ensuring a consistent and reliable user experience. + +Learn more from the following resources: + +- [@article@Getting Started with XCUITest](https://www.browserstack.com/guide/getting-started-xcuitest-framework) +- [@article@Learn the Fundamentals of XCUITest Framework](https://www.headspin.io/blog/a-step-by-step-guide-to-xcuitest-framework) +- [@article@Saucelabs - Getting Started with XCUITest](https://saucelabs.com/resources/blog/getting-started-with-xcuitest) \ No newline at end of file diff --git a/src/data/roadmaps/ios/ios.json b/src/data/roadmaps/ios/ios.json index cd458d5ea..aca91c9ba 100644 --- a/src/data/roadmaps/ios/ios.json +++ b/src/data/roadmaps/ios/ios.json @@ -5017,7 +5017,7 @@ "type": "subtopic", "position": { "x": -110.12009536003166, - "y": 3036.373778518592 + "y": 3066.941243390678 }, "selected": false, "data": { @@ -5039,7 +5039,7 @@ "resizing": false, "positionAbsolute": { "x": -110.12009536003166, - "y": 3036.373778518592 + "y": 3066.941243390678 }, "dragging": false, "selectable": true, @@ -5050,7 +5050,7 @@ "type": "subtopic", "position": { "x": -108.12009536003166, - "y": 3088.8972064310155 + "y": 3121.8972064310155 }, "selected": false, "data": { @@ -5072,40 +5072,7 @@ "resizing": false, "positionAbsolute": { "x": -108.12009536003166, - "y": 3088.8972064310155 - }, - "dragging": false, - "selectable": true, - "focusable": true - }, - { - "id": "3GtrUXvLgvXK3G8cXRb-P", - "type": "subtopic", - "position": { - "x": -108.12009536003166, - "y": 3142.7912124800087 - }, - "selected": false, - "data": { - "label": "async / await in Swift", - "style": { - "fontSize": 17, - "justifyContent": "flex-start", - "textAlign": "center" - }, - "oldId": "mdAV4JlF08q-ZQpb5C3q6" - }, - "zIndex": 999, - "width": 217, - "height": 49, - "style": { - "width": 217, - "height": 49 - }, - "resizing": false, - "positionAbsolute": { - "x": -108.12009536003166, - "y": 3142.7912124800087 + "y": 3121.8972064310155 }, "dragging": false, "selectable": true, @@ -6473,7 +6440,7 @@ }, "selected": false, "data": { - "label": "Circle CI", + "label": "CircleCI", "style": { "fontSize": 17, "justifyContent": "flex-start", @@ -6572,7 +6539,7 @@ }, "selected": false, "data": { - "label": "Azure", + "label": "Azure DevOps", "style": { "fontSize": 17, "justifyContent": "flex-start", @@ -8860,25 +8827,6 @@ "selectable": true, "focusable": true }, - { - "style": { - "strokeDasharray": "0.8 8", - "strokeLinecap": "round", - "strokeWidth": 3.5, - "stroke": "#2b78e4" - }, - "source": "fbloF-u4XwdHLmBS9flZm", - "sourceHandle": "w2", - "target": "3GtrUXvLgvXK3G8cXRb-P", - "targetHandle": "x1", - "data": { - "edgeStyle": "dashed" - }, - "id": "reactflow__edge-fbloF-u4XwdHLmBS9flZmw2-3GtrUXvLgvXK3G8cXRb-Px1", - "selected": false, - "selectable": true, - "focusable": true - }, { "style": { "strokeDasharray": "0", @@ -9540,6 +9488,23 @@ }, "selected": false, "id": "reactflow__edge-YzJVkZbOzgp5w9N0IQBN_y2-ysaBCl_TtWqelirptQp7Pz1" + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "mdAV4JlF08q-ZQpb5C3q6", + "sourceHandle": "x2", + "target": "fbloF-u4XwdHLmBS9flZm", + "targetHandle": "w2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-mdAV4JlF08q-ZQpb5C3q6x2-fbloF-u4XwdHLmBS9flZmw2", + "selected": false } ] } \ No newline at end of file diff --git a/src/data/roadmaps/java/content/100-java-fundamentals/index.md b/src/data/roadmaps/java/content/100-java-fundamentals/index.md index f8d878ed1..084afbc15 100644 --- a/src/data/roadmaps/java/content/100-java-fundamentals/index.md +++ b/src/data/roadmaps/java/content/100-java-fundamentals/index.md @@ -14,4 +14,5 @@ Visit the following resources to learn more: - [@article@Effective Java](https://www.amazon.com/Effective-Java-Joshua-Bloch/dp/0134685997) - [@article@Java: A Beginners Guide](https://www.amazon.co.uk/Java-Beginners-Guide-Herbert-Schildt/dp/1260463559) - [@article@Java: The Complete Reference](https://www.amazon.co.uk/gp/product/B09JL8BMK7/ref=dbs_a_def_rwt_bibl_vppi_i2) +- [@course@Introduction to Java by Hyperskill (JetBrains Academy)](https://hyperskill.org/tracks/8) - [@feed@Explore top posts about Java](https://app.daily.dev/tags/java?ref=roadmapsh) diff --git a/src/data/roadmaps/java/content/101-java-advanced-topics/100-generics.md b/src/data/roadmaps/java/content/101-java-advanced-topics/100-generics.md index 08c1511a1..6532f77bb 100644 --- a/src/data/roadmaps/java/content/101-java-advanced-topics/100-generics.md +++ b/src/data/roadmaps/java/content/101-java-advanced-topics/100-generics.md @@ -6,5 +6,4 @@ Visit the following resources to learn more: - [@article@Java - Generics](https://www.tutorialspoint.com/java/java_generics.htm) - [@article@Generics in Java](https://www.javatpoint.com/generics-in-java) -- [@video@Generics in Java](https://www.youtube.com/watch?v=XMvznsY02Mk) -- [@article@An introduction to generic types in Java](https://www.freecodecamp.org/news/understanding-java-generic-types-covariance-and-contravariance-88f4c19763d2/) \ No newline at end of file +- [@video@Generics in Java](https://www.youtube.com/watch?v=XMvznsY02Mk) \ No newline at end of file diff --git a/src/data/roadmaps/java/content/101-java-advanced-topics/106-how-jvm-works.md b/src/data/roadmaps/java/content/101-java-advanced-topics/106-how-jvm-works.md index bbd01a6db..5a698ebd6 100644 --- a/src/data/roadmaps/java/content/101-java-advanced-topics/106-how-jvm-works.md +++ b/src/data/roadmaps/java/content/101-java-advanced-topics/106-how-jvm-works.md @@ -4,7 +4,6 @@ The Java Virtual Machine (JVM) is a platform-dependent program that executes pla Visit the following resources to learn more: -- [@article@What is JVM & architecture?](https://www.freecodecamp.org/news/jvm-tutorial-java-virtual-machine-architecture-explained-for-beginners/) - [@article@Introducing the Java Virtual Machine](https://www.infoworld.com/article/3272244/what-is-the-jvm-introducing-the-java-virtual-machine.html) - [@video@How JVM works?](https://youtu.be/G1ubVOl9IBw) - [@article@JVM languages](https://www.whizlabs.com/blog/jvm-languages/) diff --git a/src/data/roadmaps/javascript/content/105-javascript-equality-comparisons/100-equality-algorithms/index.md b/src/data/roadmaps/javascript/content/105-javascript-equality-comparisons/100-equality-algorithms/index.md deleted file mode 100644 index abd5e48f8..000000000 --- a/src/data/roadmaps/javascript/content/105-javascript-equality-comparisons/100-equality-algorithms/index.md +++ /dev/null @@ -1,8 +0,0 @@ -# Equality algorithms - -Equality algorithms are used to perform equality comparisons of values or variables in JavaScript. Each equality algorithm works slightly differently, and the one you use depends on the type of comparison you want to make. - -Visit the following resources to learn more: - -- [@article@Which JavaScript equality algorithm should you use?](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness) -- [@feed@Explore top posts about Algorithms](https://app.daily.dev/tags/algorithms?ref=roadmapsh) diff --git a/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/102-break-continue/100-labeled-statements.md b/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/102-break-continue/100-labeled-statements.md deleted file mode 100644 index c4fe2f7c4..000000000 --- a/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/102-break-continue/100-labeled-statements.md +++ /dev/null @@ -1,11 +0,0 @@ -# Labeled Statements - -JavaScript label statements are used to prefix a label to an identifier. It can be used with `break` and `continue` statement to control the flow more precisely. - -A label is simply an identifier followed by a colon`(:)` that is applied to a block of code. - -Visit the following resources to learn more: - -- [@article@JavaScript MDN Docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label) -- [@article@Tutorialspoint – JavaScript Tutorial](https://www.tutorialspoint.com/What-are-label-statements-in-JavaScript) -- [@article@Labels for break/continue](https://javascript.info/while-for#labels-for-break-continue) \ No newline at end of file diff --git a/src/data/roadmaps/javascript/content/109-javascript-functions/100-defining-calling-functions.md b/src/data/roadmaps/javascript/content/109-javascript-functions/100-defining-calling-functions.md deleted file mode 100644 index 94f6aad12..000000000 --- a/src/data/roadmaps/javascript/content/109-javascript-functions/100-defining-calling-functions.md +++ /dev/null @@ -1,17 +0,0 @@ -# Defining and Calling Functions - -**Defining:** - -- JavaScript function _declarations_ are made by using the `function` keyword. -- Functions can also be defined by saving function _expressions_ to a variable. "Arrow" functions are commonly used in this way. - -**Calling:** - -- When a function is defined, it is not yet executed. -- To call and invoke a function's code, use the function's name followed by parentheses: `functionName()`. - -Visit the following resources to learn more: - -- [@article@Defining Functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#defining_functions) -- [@article@Calling Functions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#calling_functions) -- [@article@Function Definitions](https://www.w3schools.com/js/js_function_definition.asp) diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/107-call-method.md b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/107-call-method.md deleted file mode 100644 index a09fcf970..000000000 --- a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/107-call-method.md +++ /dev/null @@ -1,7 +0,0 @@ -# call() method - -The `call()` method calls the function with a reference to the aspire object to `this` keyword. `call()` method accepts an argument list and each arguments should be provided individually. - -Visit the following resources to learn more: - -- [@article@call() method](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call) diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/108-apply-method.md b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/108-apply-method.md deleted file mode 100644 index 38087393a..000000000 --- a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/108-apply-method.md +++ /dev/null @@ -1,7 +0,0 @@ -# apply() method - -`apply()` method is almost identical to `call()` method, except that `call()` method accepts an argument list, while `apply()` method accepts a single array of arguments. - -Visit the following resources to learn more: - -- [@article@apply() method](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply) diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/109-bind-method.md b/src/data/roadmaps/javascript/content/111-javascript-this-keyword/109-bind-method.md deleted file mode 100644 index 281c97b0b..000000000 --- a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/109-bind-method.md +++ /dev/null @@ -1,7 +0,0 @@ -# bind() method - -The `bind()` method return a new method that has its `this` keyword refers to the aspire object, with a given sequence of arguments which can be call later. - -Visit the following resources to learn more: - -- [@article@bind() method](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind) diff --git a/src/data/roadmaps/javascript/content/105-javascript-equality-comparisons/101-value-comparison-operators.md b/src/data/roadmaps/javascript/content/@RonBj1htt6jnBt3W7zoTA.md similarity index 100% rename from src/data/roadmaps/javascript/content/105-javascript-equality-comparisons/101-value-comparison-operators.md rename to src/data/roadmaps/javascript/content/@RonBj1htt6jnBt3W7zoTA.md diff --git a/src/data/roadmaps/javascript/content/@lJwcc6JoUIQoiQ6FkV2KW.md b/src/data/roadmaps/javascript/content/@lJwcc6JoUIQoiQ6FkV2KW.md new file mode 100644 index 000000000..7d66e13e9 --- /dev/null +++ b/src/data/roadmaps/javascript/content/@lJwcc6JoUIQoiQ6FkV2KW.md @@ -0,0 +1,14 @@ +# Strict Equality Operator (===) +In JavaScript, the strict equality operator `===` compares both the value and the type of two operands. This means that it will only return true if both the value and the type are identical. +```sh +"5" === "5" // true +``` +In this case, both the value and the type are the same, so the result is true. +```sh +"5" === 5 // false +``` +Here, although the values might appear similar, the types are different (string and number), so the result is false. The strict equality operator does not perform type coercion; both the value and the type must be identical. + +Learn more from the following resources: + +- [@article@Strict equality - MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Strict_equality) diff --git a/src/data/roadmaps/javascript/content/101-javascript-variables/index.md b/src/data/roadmaps/javascript/content/all-about-variables@kvActjpU4FUJdrmuFoFEe.md similarity index 100% rename from src/data/roadmaps/javascript/content/101-javascript-variables/index.md rename to src/data/roadmaps/javascript/content/all-about-variables@kvActjpU4FUJdrmuFoFEe.md diff --git a/src/data/roadmaps/javascript/content/apply@-BtF34cEzI6J8sZCDRlRE.md b/src/data/roadmaps/javascript/content/apply@-BtF34cEzI6J8sZCDRlRE.md new file mode 100644 index 000000000..97ed10b05 --- /dev/null +++ b/src/data/roadmaps/javascript/content/apply@-BtF34cEzI6J8sZCDRlRE.md @@ -0,0 +1 @@ +# apply \ No newline at end of file diff --git a/src/data/roadmaps/javascript/content/109-javascript-functions/104-arguments-object.md b/src/data/roadmaps/javascript/content/arguments-object@QLC7bW-qHskLH2HOA-Sko.md similarity index 100% rename from src/data/roadmaps/javascript/content/109-javascript-functions/104-arguments-object.md rename to src/data/roadmaps/javascript/content/arguments-object@QLC7bW-qHskLH2HOA-Sko.md diff --git a/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/102-arithmetic-operators.md b/src/data/roadmaps/javascript/content/arithmetic-operators@0PK1NwlgkNe2Vf-We4uLH.md similarity index 100% rename from src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/102-arithmetic-operators.md rename to src/data/roadmaps/javascript/content/arithmetic-operators@0PK1NwlgkNe2Vf-We4uLH.md diff --git a/src/data/roadmaps/javascript/content/104-javascript-data-structures/100-indexed-collections/100-arrays.md b/src/data/roadmaps/javascript/content/arrays@NZedBxG9B9TRVOf2QE2yL.md similarity index 100% rename from src/data/roadmaps/javascript/content/104-javascript-data-structures/100-indexed-collections/100-arrays.md rename to src/data/roadmaps/javascript/content/arrays@NZedBxG9B9TRVOf2QE2yL.md diff --git a/src/data/roadmaps/javascript/content/109-javascript-functions/102-arrow-functions.md b/src/data/roadmaps/javascript/content/arrow-functions@fr0NChxMXLpJizyMhXcXS.md similarity index 100% rename from src/data/roadmaps/javascript/content/109-javascript-functions/102-arrow-functions.md rename to src/data/roadmaps/javascript/content/arrow-functions@fr0NChxMXLpJizyMhXcXS.md diff --git a/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/100-assignment-operators.md b/src/data/roadmaps/javascript/content/assignment-operators@IvBtUzIGnkgGXrJjqmjf4.md similarity index 100% rename from src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/100-assignment-operators.md rename to src/data/roadmaps/javascript/content/assignment-operators@IvBtUzIGnkgGXrJjqmjf4.md diff --git a/src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/104-promises/100-async-await.md b/src/data/roadmaps/javascript/content/asyncawait@Dn872mgexmxoLtbkIgIgz.md similarity index 70% rename from src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/104-promises/100-async-await.md rename to src/data/roadmaps/javascript/content/asyncawait@Dn872mgexmxoLtbkIgIgz.md index ca37ec0af..7f9029bfa 100644 --- a/src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/104-promises/100-async-await.md +++ b/src/data/roadmaps/javascript/content/asyncawait@Dn872mgexmxoLtbkIgIgz.md @@ -8,4 +8,3 @@ Visit the following resources to learn more: - [@article@Async/await](https://javascript.info/async-await) - [@article@async function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function) - [@article@JavaScript Promises - Chaining](https://www.codeguage.com/courses/advanced-js/promises-chaining) -- [@article@JavaScript Async/Await Tutorial – Learn Callbacks, Promises, and Async/Await in JS by Making Ice Cream](https://www.freecodecamp.org/news/javascript-async-await-tutorial-learn-callbacks-promises-async-await-by-making-icecream/) diff --git a/src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/index.md b/src/data/roadmaps/javascript/content/asynchronous-javascript@sFOqx6_7poVIVuXhJVY0E.md similarity index 100% rename from src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/index.md rename to src/data/roadmaps/javascript/content/asynchronous-javascript@sFOqx6_7poVIVuXhJVY0E.md diff --git a/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/105-bigint-operators.md b/src/data/roadmaps/javascript/content/bigint-operators@udoz0DZi7f-vm30dSnYKu.md similarity index 100% rename from src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/105-bigint-operators.md rename to src/data/roadmaps/javascript/content/bigint-operators@udoz0DZi7f-vm30dSnYKu.md diff --git a/src/data/roadmaps/javascript/content/bigint@6lUF0neW1piiP1RsaVxEX.md b/src/data/roadmaps/javascript/content/bigint@6lUF0neW1piiP1RsaVxEX.md new file mode 100644 index 000000000..47285435c --- /dev/null +++ b/src/data/roadmaps/javascript/content/bigint@6lUF0neW1piiP1RsaVxEX.md @@ -0,0 +1 @@ +# bigint \ No newline at end of file diff --git a/src/data/roadmaps/javascript/content/bind@dbercnxXVTJXMpYSDNGb2.md b/src/data/roadmaps/javascript/content/bind@dbercnxXVTJXMpYSDNGb2.md new file mode 100644 index 000000000..bbb0a2bc3 --- /dev/null +++ b/src/data/roadmaps/javascript/content/bind@dbercnxXVTJXMpYSDNGb2.md @@ -0,0 +1 @@ +# bind \ No newline at end of file diff --git a/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/103-bitwise-operators.md b/src/data/roadmaps/javascript/content/bitwise-operators@ghjNJW67Wj5L5QK46xwL-.md similarity index 100% rename from src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/103-bitwise-operators.md rename to src/data/roadmaps/javascript/content/bitwise-operators@ghjNJW67Wj5L5QK46xwL-.md diff --git a/src/data/roadmaps/javascript/content/101-javascript-variables/103-scopes/100-block.md b/src/data/roadmaps/javascript/content/block@uqEzHYx13Y2EpvTTRzykn.md similarity index 100% rename from src/data/roadmaps/javascript/content/101-javascript-variables/103-scopes/100-block.md rename to src/data/roadmaps/javascript/content/block@uqEzHYx13Y2EpvTTRzykn.md diff --git a/src/data/roadmaps/javascript/content/boolean@b1HvkoWA2t4kt8mS6FySm.md b/src/data/roadmaps/javascript/content/boolean@b1HvkoWA2t4kt8mS6FySm.md new file mode 100644 index 000000000..5f2baf186 --- /dev/null +++ b/src/data/roadmaps/javascript/content/boolean@b1HvkoWA2t4kt8mS6FySm.md @@ -0,0 +1 @@ +# boolean \ No newline at end of file diff --git a/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/102-break-continue/index.md b/src/data/roadmaps/javascript/content/break--continue@4oHFzn7R7xLxfuLpsJjr-.md similarity index 100% rename from src/data/roadmaps/javascript/content/106-javascript-loops-iterations/102-break-continue/index.md rename to src/data/roadmaps/javascript/content/break--continue@4oHFzn7R7xLxfuLpsJjr-.md diff --git a/src/data/roadmaps/javascript/content/109-javascript-functions/106-built-in-functions.md b/src/data/roadmaps/javascript/content/built-in-functions@s8wUJivWmetysJ8bt9FBC.md similarity index 100% rename from src/data/roadmaps/javascript/content/109-javascript-functions/106-built-in-functions.md rename to src/data/roadmaps/javascript/content/built-in-functions@s8wUJivWmetysJ8bt9FBC.md diff --git a/src/data/roadmaps/javascript/content/102-javascript-datatypes/101-object/102-builtin-objects.md b/src/data/roadmaps/javascript/content/built-in-objects@D95ndkkwmT5X_HqboEn6E.md similarity index 100% rename from src/data/roadmaps/javascript/content/102-javascript-datatypes/101-object/102-builtin-objects.md rename to src/data/roadmaps/javascript/content/built-in-objects@D95ndkkwmT5X_HqboEn6E.md diff --git a/src/data/roadmaps/javascript/content/call@gsyY3Oa3Jf0W5K_lyqBYO.md b/src/data/roadmaps/javascript/content/call@gsyY3Oa3Jf0W5K_lyqBYO.md new file mode 100644 index 000000000..7c927a077 --- /dev/null +++ b/src/data/roadmaps/javascript/content/call@gsyY3Oa3Jf0W5K_lyqBYO.md @@ -0,0 +1 @@ +# call \ No newline at end of file diff --git a/src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/103-callbacks/100-callback-hell.md b/src/data/roadmaps/javascript/content/callback-hell@PJSdqvh5OBwPCNpn3q_S5.md similarity index 100% rename from src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/103-callbacks/100-callback-hell.md rename to src/data/roadmaps/javascript/content/callback-hell@PJSdqvh5OBwPCNpn3q_S5.md diff --git a/src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/103-callbacks/index.md b/src/data/roadmaps/javascript/content/callbacks@D8oGY7pdviRByaz6c9sU6.md similarity index 100% rename from src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/103-callbacks/index.md rename to src/data/roadmaps/javascript/content/callbacks@D8oGY7pdviRByaz6c9sU6.md diff --git a/src/data/roadmaps/javascript/content/113-javascript-classes.md b/src/data/roadmaps/javascript/content/classes@F_Lrj0F7UXriqJ0mhwxCy.md similarity index 100% rename from src/data/roadmaps/javascript/content/113-javascript-classes.md rename to src/data/roadmaps/javascript/content/classes@F_Lrj0F7UXriqJ0mhwxCy.md diff --git a/src/data/roadmaps/javascript/content/109-javascript-functions/105-scope-and-function-stack/102-closures.md b/src/data/roadmaps/javascript/content/closures@itS6B12I8I1KNCPvc0KCQ.md similarity index 100% rename from src/data/roadmaps/javascript/content/109-javascript-functions/105-scope-and-function-stack/102-closures.md rename to src/data/roadmaps/javascript/content/closures@itS6B12I8I1KNCPvc0KCQ.md diff --git a/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/108-comma-operators.md b/src/data/roadmaps/javascript/content/comma-operators@6_8EwyZY2jBkZr7xnfRY3.md similarity index 100% rename from src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/108-comma-operators.md rename to src/data/roadmaps/javascript/content/comma-operators@6_8EwyZY2jBkZr7xnfRY3.md diff --git a/src/data/roadmaps/javascript/content/115-javascript-modules/100-commonjs.md b/src/data/roadmaps/javascript/content/commonjs@4EXeGkOpfAViB9Uo4zL6O.md similarity index 84% rename from src/data/roadmaps/javascript/content/115-javascript-modules/100-commonjs.md rename to src/data/roadmaps/javascript/content/commonjs@4EXeGkOpfAViB9Uo4zL6O.md index 30271548a..6ccf5501a 100644 --- a/src/data/roadmaps/javascript/content/115-javascript-modules/100-commonjs.md +++ b/src/data/roadmaps/javascript/content/commonjs@4EXeGkOpfAViB9Uo4zL6O.md @@ -4,7 +4,6 @@ CommonJS modules are the original way to package JavaScript code for Node.js. No Visit the following resources to learn more: -- [@article@Modules in Javascript: CJS Section](https://www.freecodecamp.org/news/modules-in-javascript/#commonjsmodules) - [@article@How the CJS Module System Works](https://blog.risingstack.com/node-js-at-scale-module-system-commonjs-require/) - [@video@How to Import and Export Modules in CJS](https://www.youtube.com/watch?v=XTND4rjATXA) - [@feed@Explore top posts about Node.js](https://app.daily.dev/tags/nodejs?ref=roadmapsh) diff --git a/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/101-omparison-operators.md b/src/data/roadmaps/javascript/content/comparison-operators@-v4_V4UuoZSgUk2sqOCim.md similarity index 100% rename from src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/101-omparison-operators.md rename to src/data/roadmaps/javascript/content/comparison-operators@-v4_V4UuoZSgUk2sqOCim.md diff --git a/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/107-conditional-operators.md b/src/data/roadmaps/javascript/content/conditional-operators@640mk-m5mB90Mme-7jcXV.md similarity index 100% rename from src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/107-conditional-operators.md rename to src/data/roadmaps/javascript/content/conditional-operators@640mk-m5mB90Mme-7jcXV.md diff --git a/src/data/roadmaps/javascript/content/107-javascript-control-flow/101-conditional-statements/index.md b/src/data/roadmaps/javascript/content/conditional-statements@ttCsd2_H2SuRivCjGv1OX.md similarity index 100% rename from src/data/roadmaps/javascript/content/107-javascript-control-flow/101-conditional-statements/index.md rename to src/data/roadmaps/javascript/content/conditional-statements@ttCsd2_H2SuRivCjGv1OX.md diff --git a/src/data/roadmaps/javascript/content/101-javascript-variables/100-variable-declarations/102-const.md b/src/data/roadmaps/javascript/content/const@q85z6x1Lc-yLWepwtIT2_.md similarity index 81% rename from src/data/roadmaps/javascript/content/101-javascript-variables/100-variable-declarations/102-const.md rename to src/data/roadmaps/javascript/content/const@q85z6x1Lc-yLWepwtIT2_.md index 3e0a1e9fd..8ee4c42aa 100644 --- a/src/data/roadmaps/javascript/content/101-javascript-variables/100-variable-declarations/102-const.md +++ b/src/data/roadmaps/javascript/content/const@q85z6x1Lc-yLWepwtIT2_.md @@ -7,4 +7,3 @@ Visit the following resources to learn more: - [@article@JavaScript Constants - CodeGuage](https://www.codeguage.com/courses/js/constants) - [@article@const keyword - MDN Docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const) - [@article@JavaScript Variables](https://javascript.info/variables) -- [@article@How to declare variables in different ways in JavaScript?](https://www.geeksforgeeks.org/how-to-declare-variables-in-different-ways-in-javascript/) diff --git a/src/data/roadmaps/javascript/content/107-javascript-control-flow/index.md b/src/data/roadmaps/javascript/content/control-flow@3tckJ2Sci7z-sNx9jx9eF.md similarity index 100% rename from src/data/roadmaps/javascript/content/107-javascript-control-flow/index.md rename to src/data/roadmaps/javascript/content/control-flow@3tckJ2Sci7z-sNx9jx9eF.md diff --git a/src/data/roadmaps/javascript/content/104-javascript-data-structures/index.md b/src/data/roadmaps/javascript/content/data-structures@ADarwihuI2nBq1C3U7-Zr.md similarity index 89% rename from src/data/roadmaps/javascript/content/104-javascript-data-structures/index.md rename to src/data/roadmaps/javascript/content/data-structures@ADarwihuI2nBq1C3U7-Zr.md index f8829cd3a..f65f22ca7 100644 --- a/src/data/roadmaps/javascript/content/104-javascript-data-structures/index.md +++ b/src/data/roadmaps/javascript/content/data-structures@ADarwihuI2nBq1C3U7-Zr.md @@ -4,7 +4,6 @@ A Data structure is a format to organize, manage and store data in a way that al Visit the following resources to learn more: -- [@article@Data structures](https://www.freecodecamp.org/news/data-structures-in-javascript-with-examples/#what-is-a-data-structure) - [@video@Introduction to the Stack Data Structure](https://youtu.be/4F-BnR2XwqU) - [@video@Introduction to the Queue Data Structure](https://youtu.be/GRA_3Ppl2ZI) - [@video@Intro to Recursion: Anatomy of a Recursive Solution](https://youtu.be/yBWlPte6FhA) diff --git a/src/data/roadmaps/javascript/content/102-javascript-datatypes/index.md b/src/data/roadmaps/javascript/content/data-types@-jbPPuEXacBR0d0CWPHgd.md similarity index 100% rename from src/data/roadmaps/javascript/content/102-javascript-datatypes/index.md rename to src/data/roadmaps/javascript/content/data-types@-jbPPuEXacBR0d0CWPHgd.md diff --git a/src/data/roadmaps/javascript/content/117-javascript-chrome-dev-tools/100-debugging-issues.md b/src/data/roadmaps/javascript/content/debugging-issues@dhEtcgv7G9fNV-AUNJdWk.md similarity index 100% rename from src/data/roadmaps/javascript/content/117-javascript-chrome-dev-tools/100-debugging-issues.md rename to src/data/roadmaps/javascript/content/debugging-issues@dhEtcgv7G9fNV-AUNJdWk.md diff --git a/src/data/roadmaps/javascript/content/117-javascript-chrome-dev-tools/101-debugging-memory-leaks.md b/src/data/roadmaps/javascript/content/debugging-memory-leaks@BA_ArmZMnVMaL_zl3W3Pt.md similarity index 100% rename from src/data/roadmaps/javascript/content/117-javascript-chrome-dev-tools/101-debugging-memory-leaks.md rename to src/data/roadmaps/javascript/content/debugging-memory-leaks@BA_ArmZMnVMaL_zl3W3Pt.md diff --git a/src/data/roadmaps/javascript/content/117-javascript-chrome-dev-tools/102-debugging-performance.md b/src/data/roadmaps/javascript/content/debugging-performance@ECxISKUAU7js_JsfSHzud.md similarity index 100% rename from src/data/roadmaps/javascript/content/117-javascript-chrome-dev-tools/102-debugging-performance.md rename to src/data/roadmaps/javascript/content/debugging-performance@ECxISKUAU7js_JsfSHzud.md diff --git a/src/data/roadmaps/javascript/content/109-javascript-functions/101-function-parameters/100-default-params.md b/src/data/roadmaps/javascript/content/default-params@8X8mRl-puL0Lp43dO5mha.md similarity index 100% rename from src/data/roadmaps/javascript/content/109-javascript-functions/101-function-parameters/100-default-params.md rename to src/data/roadmaps/javascript/content/default-params@8X8mRl-puL0Lp43dO5mha.md diff --git a/src/data/roadmaps/javascript/content/dom-apis@bhuGtcyqPFKu-900aESYz.md b/src/data/roadmaps/javascript/content/dom-apis@bhuGtcyqPFKu-900aESYz.md new file mode 100644 index 000000000..6e3e2f1f1 --- /dev/null +++ b/src/data/roadmaps/javascript/content/dom-apis@bhuGtcyqPFKu-900aESYz.md @@ -0,0 +1 @@ +# DOM APIs \ No newline at end of file diff --git a/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/104-do-while-statement.md b/src/data/roadmaps/javascript/content/dowhile@57lO_3uxJaWsFXS-0J1AK.md similarity index 100% rename from src/data/roadmaps/javascript/content/106-javascript-loops-iterations/104-do-while-statement.md rename to src/data/roadmaps/javascript/content/dowhile@57lO_3uxJaWsFXS-0J1AK.md diff --git a/src/data/roadmaps/javascript/content/105-javascript-equality-comparisons/index.md b/src/data/roadmaps/javascript/content/equality-comparisons@23Xa6q5VvRVlzc6Dx8vST.md similarity index 100% rename from src/data/roadmaps/javascript/content/105-javascript-equality-comparisons/index.md rename to src/data/roadmaps/javascript/content/equality-comparisons@23Xa6q5VvRVlzc6Dx8vST.md diff --git a/src/data/roadmaps/javascript/content/107-javascript-control-flow/100-exception-handling/102-utilizing-error-objects.md b/src/data/roadmaps/javascript/content/error-objects@-z-4VTaC3tOThqChgyoMs.md similarity index 100% rename from src/data/roadmaps/javascript/content/107-javascript-control-flow/100-exception-handling/102-utilizing-error-objects.md rename to src/data/roadmaps/javascript/content/error-objects@-z-4VTaC3tOThqChgyoMs.md diff --git a/src/data/roadmaps/javascript/content/115-javascript-modules/101-esm.md b/src/data/roadmaps/javascript/content/esm@jLNmYeo20Mbu4WRvVgvwU.md similarity index 87% rename from src/data/roadmaps/javascript/content/115-javascript-modules/101-esm.md rename to src/data/roadmaps/javascript/content/esm@jLNmYeo20Mbu4WRvVgvwU.md index 0f6f8489f..563d221d2 100644 --- a/src/data/roadmaps/javascript/content/115-javascript-modules/101-esm.md +++ b/src/data/roadmaps/javascript/content/esm@jLNmYeo20Mbu4WRvVgvwU.md @@ -4,7 +4,6 @@ ESModules is a standard that was introduced with ES6 (2015). The idea was to sta Visit the following resources to learn more: -- [@article@Introduction to Modules in Javascript](https://www.freecodecamp.org/news/modules-in-javascript/) - [@article@Full ESM module overview from MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules) - [@article@Full ESM module overview from js.info](https://javascript.info/modules) - [@article@Node.js documentation for ESModules](https://nodejs.org/api/esm.html) diff --git a/src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/100-event-loop.md b/src/data/roadmaps/javascript/content/event-loop@_bs5NNHVdHLWGBmpYwHMi.md similarity index 100% rename from src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/100-event-loop.md rename to src/data/roadmaps/javascript/content/event-loop@_bs5NNHVdHLWGBmpYwHMi.md diff --git a/src/data/roadmaps/javascript/content/107-javascript-control-flow/100-exception-handling/index.md b/src/data/roadmaps/javascript/content/exceptional-handling@34TKGxV9YziOWMh9rT_KE.md similarity index 100% rename from src/data/roadmaps/javascript/content/107-javascript-control-flow/100-exception-handling/index.md rename to src/data/roadmaps/javascript/content/exceptional-handling@34TKGxV9YziOWMh9rT_KE.md diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/106-explicit-binding.md b/src/data/roadmaps/javascript/content/explicit-binding@p2NhSwPYMtRiPRHjPaqmX.md similarity index 100% rename from src/data/roadmaps/javascript/content/111-javascript-this-keyword/106-explicit-binding.md rename to src/data/roadmaps/javascript/content/explicit-binding@p2NhSwPYMtRiPRHjPaqmX.md diff --git a/src/data/roadmaps/javascript/content/103-javascript-type-casting/101-explicit-type-casting.md b/src/data/roadmaps/javascript/content/explicit-type-casting@1xhjrRN-Rfekei2JwwU7Y.md similarity index 100% rename from src/data/roadmaps/javascript/content/103-javascript-type-casting/101-explicit-type-casting.md rename to src/data/roadmaps/javascript/content/explicit-type-casting@1xhjrRN-Rfekei2JwwU7Y.md diff --git a/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/index.md b/src/data/roadmaps/javascript/content/expressions--operators@_6vZa43gWjxO2OcD1iCCQ.md similarity index 100% rename from src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/index.md rename to src/data/roadmaps/javascript/content/expressions--operators@_6vZa43gWjxO2OcD1iCCQ.md diff --git a/src/data/roadmaps/javascript/content/118-working-with-apis/101-fetch.md b/src/data/roadmaps/javascript/content/fetch@kL5rfWxXe4J44ENru1uJS.md similarity index 100% rename from src/data/roadmaps/javascript/content/118-working-with-apis/101-fetch.md rename to src/data/roadmaps/javascript/content/fetch@kL5rfWxXe4J44ENru1uJS.md diff --git a/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/103-for-statement.md b/src/data/roadmaps/javascript/content/for@2M211rcaPSWbZ-sPoSEVR.md similarity index 100% rename from src/data/roadmaps/javascript/content/106-javascript-loops-iterations/103-for-statement.md rename to src/data/roadmaps/javascript/content/for@2M211rcaPSWbZ-sPoSEVR.md diff --git a/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/100-for-in-statement.md b/src/data/roadmaps/javascript/content/forin-loop@cq3vvFZoNnAAZJ6oEBUwb.md similarity index 100% rename from src/data/roadmaps/javascript/content/106-javascript-loops-iterations/100-for-in-statement.md rename to src/data/roadmaps/javascript/content/forin-loop@cq3vvFZoNnAAZJ6oEBUwb.md diff --git a/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/101-for-of-statement.md b/src/data/roadmaps/javascript/content/forof-loop@FBz6h_AmTJBXoBN-a38a5.md similarity index 100% rename from src/data/roadmaps/javascript/content/106-javascript-loops-iterations/101-for-of-statement.md rename to src/data/roadmaps/javascript/content/forof-loop@FBz6h_AmTJBXoBN-a38a5.md diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/100-function-borrowing.md b/src/data/roadmaps/javascript/content/function-borrowing@EAN6DCiCfSq04R4vKgZ0q.md similarity index 100% rename from src/data/roadmaps/javascript/content/111-javascript-this-keyword/100-function-borrowing.md rename to src/data/roadmaps/javascript/content/function-borrowing@EAN6DCiCfSq04R4vKgZ0q.md diff --git a/src/data/roadmaps/javascript/content/109-javascript-functions/101-function-parameters/index.md b/src/data/roadmaps/javascript/content/function-parameters@R1D4fsZliHv7wIo8Tj-kp.md similarity index 100% rename from src/data/roadmaps/javascript/content/109-javascript-functions/101-function-parameters/index.md rename to src/data/roadmaps/javascript/content/function-parameters@R1D4fsZliHv7wIo8Tj-kp.md diff --git a/src/data/roadmaps/javascript/content/101-javascript-variables/103-scopes/101-function.md b/src/data/roadmaps/javascript/content/function@YMT7O6lrMSMtNo0EnmsnQ.md similarity index 74% rename from src/data/roadmaps/javascript/content/101-javascript-variables/103-scopes/101-function.md rename to src/data/roadmaps/javascript/content/function@YMT7O6lrMSMtNo0EnmsnQ.md index aa4485879..ed45cd2fe 100644 --- a/src/data/roadmaps/javascript/content/101-javascript-variables/103-scopes/101-function.md +++ b/src/data/roadmaps/javascript/content/function@YMT7O6lrMSMtNo0EnmsnQ.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [@article@JavaScript Scope](https://www.w3schools.com/js/js_scope.asp) - [@article@Function Scope & Block Scope in JS](https://medium.com/nerd-for-tech/function-scope-block-scope-in-js-d29c8e7cd216) -- [@article@All about Functions and Scopes in JavaScript](https://www.geeksforgeeks.org/all-about-functions-and-scopes-in-javascript/) diff --git a/src/data/roadmaps/javascript/content/109-javascript-functions/index.md b/src/data/roadmaps/javascript/content/functions@k8bJH9qydZm8I9rhH7rXw.md similarity index 100% rename from src/data/roadmaps/javascript/content/109-javascript-functions/index.md rename to src/data/roadmaps/javascript/content/functions@k8bJH9qydZm8I9rhH7rXw.md diff --git a/src/data/roadmaps/javascript/content/116-javascript-memory-management/101-garbage-collection.md b/src/data/roadmaps/javascript/content/gabage-collection@KKyX8N4lTgN0w-Khm6Ztq.md similarity index 100% rename from src/data/roadmaps/javascript/content/116-javascript-memory-management/101-garbage-collection.md rename to src/data/roadmaps/javascript/content/gabage-collection@KKyX8N4lTgN0w-Khm6Ztq.md diff --git a/src/data/roadmaps/javascript/content/101-javascript-variables/103-scopes/102-global.md b/src/data/roadmaps/javascript/content/global@oC4o6GLEES_nUgCJu9Q6I.md similarity index 100% rename from src/data/roadmaps/javascript/content/101-javascript-variables/103-scopes/102-global.md rename to src/data/roadmaps/javascript/content/global@oC4o6GLEES_nUgCJu9Q6I.md diff --git a/src/data/roadmaps/javascript/content/100-javascript-introduction/101-history-of-javascript.md b/src/data/roadmaps/javascript/content/history-of-javascript@l-GKzcsBNA0r6Jax8hwnP.md similarity index 100% rename from src/data/roadmaps/javascript/content/100-javascript-introduction/101-history-of-javascript.md rename to src/data/roadmaps/javascript/content/history-of-javascript@l-GKzcsBNA0r6Jax8hwnP.md diff --git a/src/data/roadmaps/javascript/content/101-javascript-variables/101-hoisting.md b/src/data/roadmaps/javascript/content/hoisting@Lb5jLF91WO5V5CWpifciW.md similarity index 87% rename from src/data/roadmaps/javascript/content/101-javascript-variables/101-hoisting.md rename to src/data/roadmaps/javascript/content/hoisting@Lb5jLF91WO5V5CWpifciW.md index 865a4fca8..3e6966b19 100644 --- a/src/data/roadmaps/javascript/content/101-javascript-variables/101-hoisting.md +++ b/src/data/roadmaps/javascript/content/hoisting@Lb5jLF91WO5V5CWpifciW.md @@ -5,6 +5,5 @@ JavaScript Hoisting refers to the process whereby the interpreter appears to mov Visit the following resources to learn more: - [@article@What is Hoisting - MDN Docs](https://developer.mozilla.org/en-US/docs/Glossary/Hoisting) -- [@article@JavaScript Hoisting](https://www.geeksforgeeks.org/javascript-hoisting/) - [@article@Understanding hoisting ](https://www.digitalocean.com/community/tutorials/understanding-hoisting-in-javascript) - [@video@Learn JavaScript Hoisting In 5 Minutes](https://www.youtube.com/watch?v=EvfRXyKa_GI) diff --git a/src/data/roadmaps/javascript/content/100-javascript-introduction/103-how-to-run-javascript.md b/src/data/roadmaps/javascript/content/how-to-run-javascript@uXsWIUUxtc4H_iRx3uZv0.md similarity index 100% rename from src/data/roadmaps/javascript/content/100-javascript-introduction/103-how-to-run-javascript.md rename to src/data/roadmaps/javascript/content/how-to-run-javascript@uXsWIUUxtc4H_iRx3uZv0.md diff --git a/src/data/roadmaps/javascript/content/107-javascript-control-flow/101-conditional-statements/100-if-else.md b/src/data/roadmaps/javascript/content/ifelse@ndbDXAx6bL4lZmpXv16Y_.md similarity index 100% rename from src/data/roadmaps/javascript/content/107-javascript-control-flow/101-conditional-statements/100-if-else.md rename to src/data/roadmaps/javascript/content/ifelse@ndbDXAx6bL4lZmpXv16Y_.md diff --git a/src/data/roadmaps/javascript/content/109-javascript-functions/103-iifes.md b/src/data/roadmaps/javascript/content/iifes@YZlCoPvZuX5MmpLOTj5d4.md similarity index 100% rename from src/data/roadmaps/javascript/content/109-javascript-functions/103-iifes.md rename to src/data/roadmaps/javascript/content/iifes@YZlCoPvZuX5MmpLOTj5d4.md diff --git a/src/data/roadmaps/javascript/content/103-javascript-type-casting/102-implicit-type-casting.md b/src/data/roadmaps/javascript/content/implicit-type-casting@pP42K_eH4RCdUdUS8BJlP.md similarity index 85% rename from src/data/roadmaps/javascript/content/103-javascript-type-casting/102-implicit-type-casting.md rename to src/data/roadmaps/javascript/content/implicit-type-casting@pP42K_eH4RCdUdUS8BJlP.md index c704afea6..489727fdd 100644 --- a/src/data/roadmaps/javascript/content/103-javascript-type-casting/102-implicit-type-casting.md +++ b/src/data/roadmaps/javascript/content/implicit-type-casting@pP42K_eH4RCdUdUS8BJlP.md @@ -4,7 +4,6 @@ Implicit type conversion happens when the compiler or runtime automatically conv Visit the following resources to learn more: -- [@article@GeeksForGeeks - JavaScript Tutorials](https://www.geeksforgeeks.org/javascript-type-conversion/) - [@article@W3Schools - JavaScript Tutorials](https://www.w3schools.com/js/js_type_conversion.asp) - [@article@TutorialsPoint - JavaScript Tutorials](https://www.tutorialspoint.com/explain-typecasting-in-javascript) - [@article@What you need to know about Javascripts Implicit Coercion](https://dev.to/promisetochi/what-you-need-to-know-about-javascripts-implicit-coercion-e23) diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/102-this-in-a-function.md b/src/data/roadmaps/javascript/content/in-a-function@azsXq6Y5iCvQDgTWZpWQ3.md similarity index 100% rename from src/data/roadmaps/javascript/content/111-javascript-this-keyword/102-this-in-a-function.md rename to src/data/roadmaps/javascript/content/in-a-function@azsXq6Y5iCvQDgTWZpWQ3.md diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/101-this-in-a-method.md b/src/data/roadmaps/javascript/content/in-a-method@3E5MuxPvEJU-dwgTrbQAR.md similarity index 100% rename from src/data/roadmaps/javascript/content/111-javascript-this-keyword/101-this-in-a-method.md rename to src/data/roadmaps/javascript/content/in-a-method@3E5MuxPvEJU-dwgTrbQAR.md diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/105-this-in-arrow-functions.md b/src/data/roadmaps/javascript/content/in-arrow-functions@P0190rTm2wLQmCzWOKour.md similarity index 100% rename from src/data/roadmaps/javascript/content/111-javascript-this-keyword/105-this-in-arrow-functions.md rename to src/data/roadmaps/javascript/content/in-arrow-functions@P0190rTm2wLQmCzWOKour.md diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/104-this-in-event-handlers.md b/src/data/roadmaps/javascript/content/in-event-handlers@JVbEBtVrTTFnTF3_yUIAC.md similarity index 100% rename from src/data/roadmaps/javascript/content/111-javascript-this-keyword/104-this-in-event-handlers.md rename to src/data/roadmaps/javascript/content/in-event-handlers@JVbEBtVrTTFnTF3_yUIAC.md diff --git a/src/data/roadmaps/javascript/content/104-javascript-data-structures/100-indexed-collections/index.md b/src/data/roadmaps/javascript/content/indexed-collections@lBOGoHZrmnIRatvryDwTm.md similarity index 86% rename from src/data/roadmaps/javascript/content/104-javascript-data-structures/100-indexed-collections/index.md rename to src/data/roadmaps/javascript/content/indexed-collections@lBOGoHZrmnIRatvryDwTm.md index 66ba6eb19..6f0fbec2a 100644 --- a/src/data/roadmaps/javascript/content/104-javascript-data-structures/100-indexed-collections/index.md +++ b/src/data/roadmaps/javascript/content/indexed-collections@lBOGoHZrmnIRatvryDwTm.md @@ -4,7 +4,6 @@ Indexed Collections are collections that have numeric indices i.e. the collectio Visit the following resources to learn more: -- [@article@Indexed Collections](https://www.geeksforgeeks.org/javascript-indexed-collections/) - [@article@What is Indexed collections?](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Indexed_collections) - [@article@Indexed collections in JavaScript](https://www.tutorialspoint.com/indexed-collections-in-javascript) - [@video@Javascript Arrays](https://youtu.be/XYq9QpgAx8g) diff --git a/src/data/roadmaps/javascript/content/100-javascript-introduction/index.md b/src/data/roadmaps/javascript/content/introduction-to-javascript@6khAD6mzZ9S96JJuC5_j6.md similarity index 100% rename from src/data/roadmaps/javascript/content/100-javascript-introduction/index.md rename to src/data/roadmaps/javascript/content/introduction-to-javascript@6khAD6mzZ9S96JJuC5_j6.md diff --git a/src/data/roadmaps/javascript/content/105-javascript-equality-comparisons/100-equality-algorithms/100-is-loosely-equal.md b/src/data/roadmaps/javascript/content/islooselyequal@PLallt_T33W6bUEn0Hc3W.md similarity index 100% rename from src/data/roadmaps/javascript/content/105-javascript-equality-comparisons/100-equality-algorithms/100-is-loosely-equal.md rename to src/data/roadmaps/javascript/content/islooselyequal@PLallt_T33W6bUEn0Hc3W.md diff --git a/src/data/roadmaps/javascript/content/105-javascript-equality-comparisons/100-equality-algorithms/101-is-strictly-equal.md b/src/data/roadmaps/javascript/content/isstrictlyequal@pcILon_Jjm2_XS10iUJ0E.md similarity index 100% rename from src/data/roadmaps/javascript/content/105-javascript-equality-comparisons/100-equality-algorithms/101-is-strictly-equal.md rename to src/data/roadmaps/javascript/content/isstrictlyequal@pcILon_Jjm2_XS10iUJ0E.md diff --git a/src/data/roadmaps/javascript/content/114-javascript-iterators-and-generators.md b/src/data/roadmaps/javascript/content/iterators-and-generators@TZ8XGdykSJjKBjX6Nivwo.md similarity index 100% rename from src/data/roadmaps/javascript/content/114-javascript-iterators-and-generators.md rename to src/data/roadmaps/javascript/content/iterators-and-generators@TZ8XGdykSJjKBjX6Nivwo.md diff --git a/src/data/roadmaps/javascript/content/100-javascript-introduction/102-javascript-versions.md b/src/data/roadmaps/javascript/content/javascript-versions@SFPsWnVpZBAw3_re7op4h.md similarity index 83% rename from src/data/roadmaps/javascript/content/100-javascript-introduction/102-javascript-versions.md rename to src/data/roadmaps/javascript/content/javascript-versions@SFPsWnVpZBAw3_re7op4h.md index 18bf1ddab..60aab4981 100644 --- a/src/data/roadmaps/javascript/content/100-javascript-introduction/102-javascript-versions.md +++ b/src/data/roadmaps/javascript/content/javascript-versions@SFPsWnVpZBAw3_re7op4h.md @@ -6,6 +6,5 @@ Visit the following resources to learn more: - [@article@JavaScript Versions: How JavaScript has changed over the years](https://www.educative.io/blog/javascript-versions-history) - [@roadmap.sh@Brief History of JavaScript](https://roadmap.sh/guides/history-of-javascript) -- [@article@What’s the difference between JavaScript and ECMAScript?](https://www.freecodecamp.org/news/whats-the-difference-between-javascript-and-ecmascript-cba48c73a2b5/) - [@article@JavaScript Version](https://www.w3schools.com/js/js_versions.asp) - [@feed@Explore top posts about JavaScript](https://app.daily.dev/tags/javascript?ref=roadmapsh) diff --git a/src/data/roadmaps/javascript/content/104-javascript-data-structures/102-structured-data/100-json.md b/src/data/roadmaps/javascript/content/json@bFNvtHp97OzKnPJgr7WaH.md similarity index 100% rename from src/data/roadmaps/javascript/content/104-javascript-data-structures/102-structured-data/100-json.md rename to src/data/roadmaps/javascript/content/json@bFNvtHp97OzKnPJgr7WaH.md diff --git a/src/data/roadmaps/javascript/content/104-javascript-data-structures/101-keyed-collections/index.md b/src/data/roadmaps/javascript/content/keyed-collections@rhJrrqkRqy2Qw_he4SPGz.md similarity index 81% rename from src/data/roadmaps/javascript/content/104-javascript-data-structures/101-keyed-collections/index.md rename to src/data/roadmaps/javascript/content/keyed-collections@rhJrrqkRqy2Qw_he4SPGz.md index 864167e04..c9a17a76e 100644 --- a/src/data/roadmaps/javascript/content/104-javascript-data-structures/101-keyed-collections/index.md +++ b/src/data/roadmaps/javascript/content/keyed-collections@rhJrrqkRqy2Qw_he4SPGz.md @@ -6,5 +6,4 @@ Visit the following resources to learn more: - [@article@Keyed collections](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Keyed_collections) - [@article@ES6 keyed collections- Maps and sets](https://blog.logrocket.com/es6-keyed-collections-maps-and-sets/) -- [@article@How to use Keyed collections](https://www.freecodecamp.org/news/how-to-use-javascript-collections-map-and-set/) - [@video@Creating keyed collection](https://youtu.be/4UqSqF4foy4) diff --git a/src/data/roadmaps/javascript/content/101-javascript-variables/100-variable-declarations/101-let.md b/src/data/roadmaps/javascript/content/let@kDRa9G3pMp0Cb0mqYUawM.md similarity index 68% rename from src/data/roadmaps/javascript/content/101-javascript-variables/100-variable-declarations/101-let.md rename to src/data/roadmaps/javascript/content/let@kDRa9G3pMp0Cb0mqYUawM.md index f4fd97c06..0f613c2a4 100644 --- a/src/data/roadmaps/javascript/content/101-javascript-variables/100-variable-declarations/101-let.md +++ b/src/data/roadmaps/javascript/content/let@kDRa9G3pMp0Cb0mqYUawM.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [@article@let keyword - MDN Docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let) - [@article@JavaScript Variables](https://javascript.info/variables) -- [@article@How to declare variables in different ways in JavaScript?](https://www.geeksforgeeks.org/how-to-declare-variables-in-different-ways-in-javascript/) diff --git a/src/data/roadmaps/javascript/content/109-javascript-functions/105-scope-and-function-stack/101-lexical-scoping.md b/src/data/roadmaps/javascript/content/lexical-scoping@q7b5iMJ1Lfka5A-K-YcaN.md similarity index 81% rename from src/data/roadmaps/javascript/content/109-javascript-functions/105-scope-and-function-stack/101-lexical-scoping.md rename to src/data/roadmaps/javascript/content/lexical-scoping@q7b5iMJ1Lfka5A-K-YcaN.md index e42cc7121..4e435ccca 100644 --- a/src/data/roadmaps/javascript/content/109-javascript-functions/105-scope-and-function-stack/101-lexical-scoping.md +++ b/src/data/roadmaps/javascript/content/lexical-scoping@q7b5iMJ1Lfka5A-K-YcaN.md @@ -6,4 +6,3 @@ Visit the following resources to learn more: - [@article@What is a lexical environment? - JavaScript - CodeGuage](https://www.codeguage.com/courses/js/functions-closures#What_is_a_lexical_environment) - [@article@Lexical scoping - JavaScript - MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures#lexical_scoping) -- [@article@Lexical Scope in JavaScript – What Exactly Is Scope in JS?](https://www.freecodecamp.org/news/javascript-lexical-scope-tutorial/) diff --git a/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/104-logical-operators.md b/src/data/roadmaps/javascript/content/logical-operators@bo4SvzU4BrPl3c99zW7Y5.md similarity index 100% rename from src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/104-logical-operators.md rename to src/data/roadmaps/javascript/content/logical-operators@bo4SvzU4BrPl3c99zW7Y5.md diff --git a/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/index.md b/src/data/roadmaps/javascript/content/loops-and-iterations@YD-2l_amfqqqCdtc_Zdzo.md similarity index 100% rename from src/data/roadmaps/javascript/content/106-javascript-loops-iterations/index.md rename to src/data/roadmaps/javascript/content/loops-and-iterations@YD-2l_amfqqqCdtc_Zdzo.md diff --git a/src/data/roadmaps/javascript/content/104-javascript-data-structures/101-keyed-collections/100-map.md b/src/data/roadmaps/javascript/content/map@Xc0jL4rafpI-ixIaAxo9O.md similarity index 100% rename from src/data/roadmaps/javascript/content/104-javascript-data-structures/101-keyed-collections/100-map.md rename to src/data/roadmaps/javascript/content/map@Xc0jL4rafpI-ixIaAxo9O.md diff --git a/src/data/roadmaps/javascript/content/116-javascript-memory-management/100-memory-lifecycle.md b/src/data/roadmaps/javascript/content/memory-lifecycle@ZR2WfH1cerA-V_kaPwRvm.md similarity index 100% rename from src/data/roadmaps/javascript/content/116-javascript-memory-management/100-memory-lifecycle.md rename to src/data/roadmaps/javascript/content/memory-lifecycle@ZR2WfH1cerA-V_kaPwRvm.md diff --git a/src/data/roadmaps/javascript/content/116-javascript-memory-management/index.md b/src/data/roadmaps/javascript/content/memory-management@MatU4SthAAhByJ40XdZQn.md similarity index 100% rename from src/data/roadmaps/javascript/content/116-javascript-memory-management/index.md rename to src/data/roadmaps/javascript/content/memory-management@MatU4SthAAhByJ40XdZQn.md diff --git a/src/data/roadmaps/javascript/content/115-javascript-modules/index.md b/src/data/roadmaps/javascript/content/modules-in-javascript@hLnJlwnECFbVMeFpH0M5Q.md similarity index 100% rename from src/data/roadmaps/javascript/content/115-javascript-modules/index.md rename to src/data/roadmaps/javascript/content/modules-in-javascript@hLnJlwnECFbVMeFpH0M5Q.md diff --git a/src/data/roadmaps/javascript/content/null@CxyNyFMuTLS3owtRMgClD.md b/src/data/roadmaps/javascript/content/null@CxyNyFMuTLS3owtRMgClD.md new file mode 100644 index 000000000..b0925b362 --- /dev/null +++ b/src/data/roadmaps/javascript/content/null@CxyNyFMuTLS3owtRMgClD.md @@ -0,0 +1 @@ +# null \ No newline at end of file diff --git a/src/data/roadmaps/javascript/content/number@GZ_SXsWmP7AsXRTc4WUMw.md b/src/data/roadmaps/javascript/content/number@GZ_SXsWmP7AsXRTc4WUMw.md new file mode 100644 index 000000000..d96ff76b4 --- /dev/null +++ b/src/data/roadmaps/javascript/content/number@GZ_SXsWmP7AsXRTc4WUMw.md @@ -0,0 +1 @@ +# number \ No newline at end of file diff --git a/src/data/roadmaps/javascript/content/102-javascript-datatypes/101-object/100-prototype.md b/src/data/roadmaps/javascript/content/object-prototype@0I6dJE0ygXPGjeRAe8AtT.md similarity index 88% rename from src/data/roadmaps/javascript/content/102-javascript-datatypes/101-object/100-prototype.md rename to src/data/roadmaps/javascript/content/object-prototype@0I6dJE0ygXPGjeRAe8AtT.md index 0e60cdec9..9595e8500 100644 --- a/src/data/roadmaps/javascript/content/102-javascript-datatypes/101-object/100-prototype.md +++ b/src/data/roadmaps/javascript/content/object-prototype@0I6dJE0ygXPGjeRAe8AtT.md @@ -7,3 +7,4 @@ Visit the following resources to learn more: - [@article@Prototypes in JavaScript - A Comprehensive Guide](https://www.codeguage.com/courses/js/objects-prototypes) - [@article@Prototypes, Inheritance](https://javascript.info/prototypes) - [@article@Object prototypes - MDN](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Object_prototypes) +- [@video@Prototype in Javascript - Object Prototype](https://www.youtube.com/watch?v=583MGxjypgU) diff --git a/src/data/roadmaps/javascript/content/102-javascript-datatypes/101-object/index.md b/src/data/roadmaps/javascript/content/object@xe8HZ8Mt1fK8yJMcDPYHJ.md similarity index 89% rename from src/data/roadmaps/javascript/content/102-javascript-datatypes/101-object/index.md rename to src/data/roadmaps/javascript/content/object@xe8HZ8Mt1fK8yJMcDPYHJ.md index b519ae168..cdd484a9b 100644 --- a/src/data/roadmaps/javascript/content/102-javascript-datatypes/101-object/index.md +++ b/src/data/roadmaps/javascript/content/object@xe8HZ8Mt1fK8yJMcDPYHJ.md @@ -7,4 +7,3 @@ Visit the following resources to learn more: - [@article@Objects](https://javascript.info/object) - [@article@Working with Objects](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects) - [@article@JavaScript Object Definition](https://www.w3schools.com/js/js_object_definition.asp) -- [@article@Objects in JavaScript ](https://www.geeksforgeeks.org/objects-in-javascript/) diff --git a/src/data/roadmaps/javascript/content/objectis@ATma3bLKdmWY_WTsPIKxh.md b/src/data/roadmaps/javascript/content/objectis@ATma3bLKdmWY_WTsPIKxh.md new file mode 100644 index 000000000..987005242 --- /dev/null +++ b/src/data/roadmaps/javascript/content/objectis@ATma3bLKdmWY_WTsPIKxh.md @@ -0,0 +1 @@ +# Object.is \ No newline at end of file diff --git a/src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/104-promises/index.md b/src/data/roadmaps/javascript/content/promises@yXSF5gGST7l2X-4z1g0d_.md similarity index 100% rename from src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/104-promises/index.md rename to src/data/roadmaps/javascript/content/promises@yXSF5gGST7l2X-4z1g0d_.md diff --git a/src/data/roadmaps/javascript/content/102-javascript-datatypes/101-object/101-prototypal-inheritance.md b/src/data/roadmaps/javascript/content/prototypal-inheritance@Xge6eru1hRGobnOEHLZqv.md similarity index 81% rename from src/data/roadmaps/javascript/content/102-javascript-datatypes/101-object/101-prototypal-inheritance.md rename to src/data/roadmaps/javascript/content/prototypal-inheritance@Xge6eru1hRGobnOEHLZqv.md index c5670227d..5a32c6646 100644 --- a/src/data/roadmaps/javascript/content/102-javascript-datatypes/101-object/101-prototypal-inheritance.md +++ b/src/data/roadmaps/javascript/content/prototypal-inheritance@Xge6eru1hRGobnOEHLZqv.md @@ -5,5 +5,4 @@ The Prototypal Inheritance is a feature in javascript used to add methods and pr Visit the following resources to learn more: - [@article@JavaScript MDN Docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain) -- [@article@GeeksForGeeks – JavaScript Tutorial](https://www.geeksforgeeks.org/prototypal-inheritance-using-__proto__-in-javascript/) - [@article@Prototype Inheritance](https://javascript.info/prototype-inheritance) diff --git a/src/data/roadmaps/javascript/content/109-javascript-functions/105-scope-and-function-stack/100-recursion.md b/src/data/roadmaps/javascript/content/recursion@YJGhhFuWmFvhRKOg6nwON.md similarity index 100% rename from src/data/roadmaps/javascript/content/109-javascript-functions/105-scope-and-function-stack/100-recursion.md rename to src/data/roadmaps/javascript/content/recursion@YJGhhFuWmFvhRKOg6nwON.md diff --git a/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/110-relational-operators.md b/src/data/roadmaps/javascript/content/relational-operators@BbrrliATuH9beTypRaFey.md similarity index 100% rename from src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/110-relational-operators.md rename to src/data/roadmaps/javascript/content/relational-operators@BbrrliATuH9beTypRaFey.md diff --git a/src/data/roadmaps/javascript/content/109-javascript-functions/101-function-parameters/101-rest-params.md b/src/data/roadmaps/javascript/content/rest@-_6q0bIjQrvAaCWrVkASO.md similarity index 100% rename from src/data/roadmaps/javascript/content/109-javascript-functions/101-function-parameters/101-rest-params.md rename to src/data/roadmaps/javascript/content/rest@-_6q0bIjQrvAaCWrVkASO.md diff --git a/src/data/roadmaps/javascript/content/105-javascript-equality-comparisons/100-equality-algorithms/103-same-value.md b/src/data/roadmaps/javascript/content/samevalue@nfMrC0eoXZl72H4o3VFEP.md similarity index 100% rename from src/data/roadmaps/javascript/content/105-javascript-equality-comparisons/100-equality-algorithms/103-same-value.md rename to src/data/roadmaps/javascript/content/samevalue@nfMrC0eoXZl72H4o3VFEP.md diff --git a/src/data/roadmaps/javascript/content/105-javascript-equality-comparisons/100-equality-algorithms/102-same-value-zero.md b/src/data/roadmaps/javascript/content/samevaluezero@fL3B2hkTgMb0oEwMiWJtK.md similarity index 100% rename from src/data/roadmaps/javascript/content/105-javascript-equality-comparisons/100-equality-algorithms/102-same-value-zero.md rename to src/data/roadmaps/javascript/content/samevaluezero@fL3B2hkTgMb0oEwMiWJtK.md diff --git a/src/data/roadmaps/javascript/content/109-javascript-functions/105-scope-and-function-stack/index.md b/src/data/roadmaps/javascript/content/scope--function-stack@ISNzEYtrWe2v0R7Xfl5k-.md similarity index 100% rename from src/data/roadmaps/javascript/content/109-javascript-functions/105-scope-and-function-stack/index.md rename to src/data/roadmaps/javascript/content/scope--function-stack@ISNzEYtrWe2v0R7Xfl5k-.md diff --git a/src/data/roadmaps/javascript/content/104-javascript-data-structures/101-keyed-collections/102-set.md b/src/data/roadmaps/javascript/content/set@sciU68E13mcfL577y6Vim.md similarity index 100% rename from src/data/roadmaps/javascript/content/104-javascript-data-structures/101-keyed-collections/102-set.md rename to src/data/roadmaps/javascript/content/set@sciU68E13mcfL577y6Vim.md diff --git a/src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/102-set-interval.md b/src/data/roadmaps/javascript/content/setinterval@jaC3XXudd7OBKwwCpoPFf.md similarity index 81% rename from src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/102-set-interval.md rename to src/data/roadmaps/javascript/content/setinterval@jaC3XXudd7OBKwwCpoPFf.md index 0d07d1d9c..f8700d07b 100644 --- a/src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/102-set-interval.md +++ b/src/data/roadmaps/javascript/content/setinterval@jaC3XXudd7OBKwwCpoPFf.md @@ -7,4 +7,3 @@ The `setInterval()` method helps us to repeatedly execute a function after a fix Visit the following resources to learn more: - [@article@Scheduling: setTimeout and setInterval](https://javascript.info/settimeout-setinterval) -- [@article@What is the use of setInterval() method in JavaScript?](https://www.geeksforgeeks.org/what-is-setinterval-in-javascript/) diff --git a/src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/101-set-timeout.md b/src/data/roadmaps/javascript/content/settimeout@wXypuqEmFLIubx-QQvDIr.md similarity index 100% rename from src/data/roadmaps/javascript/content/112-javascript-asynchronous-javascript/101-set-timeout.md rename to src/data/roadmaps/javascript/content/settimeout@wXypuqEmFLIubx-QQvDIr.md diff --git a/src/data/roadmaps/javascript/content/110-javascript-strict-mode.md b/src/data/roadmaps/javascript/content/strict-mode@Xw8lb0xCWKmNs4KZfhBUy.md similarity index 100% rename from src/data/roadmaps/javascript/content/110-javascript-strict-mode.md rename to src/data/roadmaps/javascript/content/strict-mode@Xw8lb0xCWKmNs4KZfhBUy.md diff --git a/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/106-string-operators.md b/src/data/roadmaps/javascript/content/string-operators@c38b6t5f17Zg2O2yg3eFP.md similarity index 100% rename from src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/106-string-operators.md rename to src/data/roadmaps/javascript/content/string-operators@c38b6t5f17Zg2O2yg3eFP.md diff --git a/src/data/roadmaps/javascript/content/102-javascript-datatypes/100-primitive-types.md b/src/data/roadmaps/javascript/content/string@1RcwBHU3jzx0YxxUGZic4.md similarity index 100% rename from src/data/roadmaps/javascript/content/102-javascript-datatypes/100-primitive-types.md rename to src/data/roadmaps/javascript/content/string@1RcwBHU3jzx0YxxUGZic4.md diff --git a/src/data/roadmaps/javascript/content/104-javascript-data-structures/102-structured-data/index.md b/src/data/roadmaps/javascript/content/structured-data@JwLGAuSOTyZ5BHSqeBDU6.md similarity index 100% rename from src/data/roadmaps/javascript/content/104-javascript-data-structures/102-structured-data/index.md rename to src/data/roadmaps/javascript/content/structured-data@JwLGAuSOTyZ5BHSqeBDU6.md diff --git a/src/data/roadmaps/javascript/content/subtopic-node@_JUZE26_bShEpWNjLXzga.md b/src/data/roadmaps/javascript/content/subtopic-node@_JUZE26_bShEpWNjLXzga.md new file mode 100644 index 000000000..515e69bc0 --- /dev/null +++ b/src/data/roadmaps/javascript/content/subtopic-node@_JUZE26_bShEpWNjLXzga.md @@ -0,0 +1 @@ +# subtopic node \ No newline at end of file diff --git a/src/data/roadmaps/javascript/content/107-javascript-control-flow/101-conditional-statements/101-switch.md b/src/data/roadmaps/javascript/content/switch@H_QlcUlavKKfcNK8CYAvb.md similarity index 100% rename from src/data/roadmaps/javascript/content/107-javascript-control-flow/101-conditional-statements/101-switch.md rename to src/data/roadmaps/javascript/content/switch@H_QlcUlavKKfcNK8CYAvb.md diff --git a/src/data/roadmaps/javascript/content/symbol@R6ICrk6vjoBxx5nRGo4Jg.md b/src/data/roadmaps/javascript/content/symbol@R6ICrk6vjoBxx5nRGo4Jg.md new file mode 100644 index 000000000..ef3233b3d --- /dev/null +++ b/src/data/roadmaps/javascript/content/symbol@R6ICrk6vjoBxx5nRGo4Jg.md @@ -0,0 +1 @@ +# Symbol \ No newline at end of file diff --git a/src/data/roadmaps/javascript/content/107-javascript-control-flow/100-exception-handling/100-throw-statement.md b/src/data/roadmaps/javascript/content/throw-statement@ReGIniyLYl5hGExchrJd2.md similarity index 100% rename from src/data/roadmaps/javascript/content/107-javascript-control-flow/100-exception-handling/100-throw-statement.md rename to src/data/roadmaps/javascript/content/throw-statement@ReGIniyLYl5hGExchrJd2.md diff --git a/src/data/roadmaps/javascript/content/107-javascript-control-flow/100-exception-handling/101-try-catch-finally.md b/src/data/roadmaps/javascript/content/trycatchfinally@rbjEZe5vxCJ8reI1oZ-jf.md similarity index 100% rename from src/data/roadmaps/javascript/content/107-javascript-control-flow/100-exception-handling/101-try-catch-finally.md rename to src/data/roadmaps/javascript/content/trycatchfinally@rbjEZe5vxCJ8reI1oZ-jf.md diff --git a/src/data/roadmaps/javascript/content/103-javascript-type-casting/index.md b/src/data/roadmaps/javascript/content/type-casting@XPmBieVCXvL3WbWkYRoKr.md similarity index 89% rename from src/data/roadmaps/javascript/content/103-javascript-type-casting/index.md rename to src/data/roadmaps/javascript/content/type-casting@XPmBieVCXvL3WbWkYRoKr.md index 959d76a37..6c6aeef0d 100644 --- a/src/data/roadmaps/javascript/content/103-javascript-type-casting/index.md +++ b/src/data/roadmaps/javascript/content/type-casting@XPmBieVCXvL3WbWkYRoKr.md @@ -7,5 +7,4 @@ Visit the following resources to learn more: - [@article@Type Conversions](https://javascript.info/type-conversions) - [@article@JavaScript Type Conversion](https://www.w3schools.com/js/js_type_conversion.asp) - [@article@Type Casting in JavaScript](https://www.tutorialspoint.com/type-casting-in-javascript) -- [@article@JavaScript Type Cast](https://www.geeksforgeeks.org/javascript-type-conversion) - [@feed@Explore top posts about JavaScript](https://app.daily.dev/tags/javascript?ref=roadmapsh) diff --git a/src/data/roadmaps/javascript/content/103-javascript-type-casting/100-type-conversion-coercion.md b/src/data/roadmaps/javascript/content/type-conversion-vs-coercion@_Bo2YZqZ_gY35SLPML4T6.md similarity index 100% rename from src/data/roadmaps/javascript/content/103-javascript-type-casting/100-type-conversion-coercion.md rename to src/data/roadmaps/javascript/content/type-conversion-vs-coercion@_Bo2YZqZ_gY35SLPML4T6.md diff --git a/src/data/roadmaps/javascript/content/104-javascript-data-structures/100-indexed-collections/101-typed-arrays.md b/src/data/roadmaps/javascript/content/typed-arrays@8X1mdQ3NDBVOZZWBbAFRE.md similarity index 100% rename from src/data/roadmaps/javascript/content/104-javascript-data-structures/100-indexed-collections/101-typed-arrays.md rename to src/data/roadmaps/javascript/content/typed-arrays@8X1mdQ3NDBVOZZWBbAFRE.md diff --git a/src/data/roadmaps/javascript/content/102-javascript-datatypes/102-typeof-operator.md b/src/data/roadmaps/javascript/content/typeof-operator@RRACLQ6-aopkxImIp3Toc.md similarity index 100% rename from src/data/roadmaps/javascript/content/102-javascript-datatypes/102-typeof-operator.md rename to src/data/roadmaps/javascript/content/typeof-operator@RRACLQ6-aopkxImIp3Toc.md diff --git a/src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/109-unary-operators.md b/src/data/roadmaps/javascript/content/unary-opeartors@k9rSR-YQ8B_iRcXNm2btP.md similarity index 100% rename from src/data/roadmaps/javascript/content/108-javascript-expressions-and-operators/109-unary-operators.md rename to src/data/roadmaps/javascript/content/unary-opeartors@k9rSR-YQ8B_iRcXNm2btP.md diff --git a/src/data/roadmaps/javascript/content/undefined@ZLs0NKM0lrnOy5ATDhlk0.md b/src/data/roadmaps/javascript/content/undefined@ZLs0NKM0lrnOy5ATDhlk0.md new file mode 100644 index 000000000..212c3fa7d --- /dev/null +++ b/src/data/roadmaps/javascript/content/undefined@ZLs0NKM0lrnOy5ATDhlk0.md @@ -0,0 +1 @@ +# undefined \ No newline at end of file diff --git a/src/data/roadmaps/javascript/content/117-javascript-chrome-dev-tools/index.md b/src/data/roadmaps/javascript/content/using-browser-devtools@rc5WzBBOm2cus-rQl8EOE.md similarity index 86% rename from src/data/roadmaps/javascript/content/117-javascript-chrome-dev-tools/index.md rename to src/data/roadmaps/javascript/content/using-browser-devtools@rc5WzBBOm2cus-rQl8EOE.md index 46f1ecc17..0b6589e58 100644 --- a/src/data/roadmaps/javascript/content/117-javascript-chrome-dev-tools/index.md +++ b/src/data/roadmaps/javascript/content/using-browser-devtools@rc5WzBBOm2cus-rQl8EOE.md @@ -9,5 +9,4 @@ NOTE: This isn't a chrome-specific feature, and most browsers (Chromium based or Visit the following resources to learn more: - [@article@Official Docs](https://developer.chrome.com/docs/devtools/overview/) -- [@article@Mastering Chrome Dev Tools](https://www.freecodecamp.org/news/mastering-chrome-developer-tools-next-level-front-end-development-techniques-3ac0b6fe8a3/) - [@feed@Explore top posts about JavaScript](https://app.daily.dev/tags/javascript?ref=roadmapsh) diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/103-using-this-alone.md b/src/data/roadmaps/javascript/content/using-it-alone@qps2Mdm-lwa4Wr0IxKm0C.md similarity index 100% rename from src/data/roadmaps/javascript/content/111-javascript-this-keyword/103-using-this-alone.md rename to src/data/roadmaps/javascript/content/using-it-alone@qps2Mdm-lwa4Wr0IxKm0C.md diff --git a/src/data/roadmaps/javascript/content/111-javascript-this-keyword/index.md b/src/data/roadmaps/javascript/content/using-this-keyword@fm2CuL1IZp3hnrLrPUX7U.md similarity index 100% rename from src/data/roadmaps/javascript/content/111-javascript-this-keyword/index.md rename to src/data/roadmaps/javascript/content/using-this-keyword@fm2CuL1IZp3hnrLrPUX7U.md diff --git a/src/data/roadmaps/javascript/content/101-javascript-variables/100-variable-declarations/100-var.md b/src/data/roadmaps/javascript/content/var@JSjeM8qnBg4onXq9mn5gB.md similarity index 78% rename from src/data/roadmaps/javascript/content/101-javascript-variables/100-variable-declarations/100-var.md rename to src/data/roadmaps/javascript/content/var@JSjeM8qnBg4onXq9mn5gB.md index 7eccbe03f..1265b8304 100644 --- a/src/data/roadmaps/javascript/content/101-javascript-variables/100-variable-declarations/100-var.md +++ b/src/data/roadmaps/javascript/content/var@JSjeM8qnBg4onXq9mn5gB.md @@ -8,4 +8,3 @@ Visit the following resources to learn more: - [@article@JavaScript Variables](https://javascript.info/variables) - [@article@JavaScript Variables - W3Schools](https://www.w3schools.com/js/js_variables.asp) - [@video@Declaring Variables without Var, Let, Const - What Would Happen?](https://www.youtube.com/watch?v=6UAKBYpUC-Y) -- [@article@How to declare variables in different ways in JavaScript?](https://www.geeksforgeeks.org/how-to-declare-variables-in-different-ways-in-javascript/) diff --git a/src/data/roadmaps/javascript/content/101-javascript-variables/100-variable-declarations/index.md b/src/data/roadmaps/javascript/content/variable-declarations@BqbAWt--Guqex-rrb4ZUv.md similarity index 100% rename from src/data/roadmaps/javascript/content/101-javascript-variables/100-variable-declarations/index.md rename to src/data/roadmaps/javascript/content/variable-declarations@BqbAWt--Guqex-rrb4ZUv.md diff --git a/src/data/roadmaps/javascript/content/101-javascript-variables/102-naming-rules.md b/src/data/roadmaps/javascript/content/variable-naming-rules@HfieG3v3wnmpZDfNwEJvZ.md similarity index 100% rename from src/data/roadmaps/javascript/content/101-javascript-variables/102-naming-rules.md rename to src/data/roadmaps/javascript/content/variable-naming-rules@HfieG3v3wnmpZDfNwEJvZ.md diff --git a/src/data/roadmaps/javascript/content/101-javascript-variables/103-scopes/index.md b/src/data/roadmaps/javascript/content/variable-scopes@7iMJuaB7yKlSIbT4dBe5L.md similarity index 100% rename from src/data/roadmaps/javascript/content/101-javascript-variables/103-scopes/index.md rename to src/data/roadmaps/javascript/content/variable-scopes@7iMJuaB7yKlSIbT4dBe5L.md diff --git a/src/data/roadmaps/javascript/content/104-javascript-data-structures/101-keyed-collections/101-weak-map.md b/src/data/roadmaps/javascript/content/weak-map@6icsjC4aisDgPWasVuCOt.md similarity index 100% rename from src/data/roadmaps/javascript/content/104-javascript-data-structures/101-keyed-collections/101-weak-map.md rename to src/data/roadmaps/javascript/content/weak-map@6icsjC4aisDgPWasVuCOt.md diff --git a/src/data/roadmaps/javascript/content/104-javascript-data-structures/101-keyed-collections/103-weak-set.md b/src/data/roadmaps/javascript/content/weak-set@DSFzj61N9ojz29mjExhVa.md similarity index 100% rename from src/data/roadmaps/javascript/content/104-javascript-data-structures/101-keyed-collections/103-weak-set.md rename to src/data/roadmaps/javascript/content/weak-set@DSFzj61N9ojz29mjExhVa.md diff --git a/src/data/roadmaps/javascript/content/100-javascript-introduction/100-what-is-javascript.md b/src/data/roadmaps/javascript/content/what-is-javascript@UBB-8hUcwo4Mfd0cmEcdA.md similarity index 100% rename from src/data/roadmaps/javascript/content/100-javascript-introduction/100-what-is-javascript.md rename to src/data/roadmaps/javascript/content/what-is-javascript@UBB-8hUcwo4Mfd0cmEcdA.md diff --git a/src/data/roadmaps/javascript/content/106-javascript-loops-iterations/105-while-statement.md b/src/data/roadmaps/javascript/content/while@9-MpHmzK_IiCi6IcvAlGM.md similarity index 100% rename from src/data/roadmaps/javascript/content/106-javascript-loops-iterations/105-while-statement.md rename to src/data/roadmaps/javascript/content/while@9-MpHmzK_IiCi6IcvAlGM.md diff --git a/src/data/roadmaps/javascript/content/118-working-with-apis/index.md b/src/data/roadmaps/javascript/content/working-with-apis@q6vciQb_Jk-Up16Pk5NeE.md similarity index 100% rename from src/data/roadmaps/javascript/content/118-working-with-apis/index.md rename to src/data/roadmaps/javascript/content/working-with-apis@q6vciQb_Jk-Up16Pk5NeE.md diff --git a/src/data/roadmaps/javascript/content/118-working-with-apis/100-xml-http-request.md b/src/data/roadmaps/javascript/content/xmlhttprequest@LiuhBE7dIlkoWkthSoCsa.md similarity index 100% rename from src/data/roadmaps/javascript/content/118-working-with-apis/100-xml-http-request.md rename to src/data/roadmaps/javascript/content/xmlhttprequest@LiuhBE7dIlkoWkthSoCsa.md diff --git a/src/data/roadmaps/javascript/javascript.json b/src/data/roadmaps/javascript/javascript.json index f35989013..f3f7209f0 100644 --- a/src/data/roadmaps/javascript/javascript.json +++ b/src/data/roadmaps/javascript/javascript.json @@ -1,16310 +1,7500 @@ { - "mockup": { - "controls": { - "control": [ - { - "ID": "6467", - "typeID": "Arrow", - "zOrder": "0", - "w": "1", - "h": "142", - "measuredW": "150", - "measuredH": "100", - "x": "956", - "y": "2043", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 1, - "y": 142 - }, - "p1": { - "x": 0.43463170073274193, - "y": 0.008098727342846125 - }, - "p2": { - "x": 1, - "y": 0 - } - } - }, - { - "ID": "6468", - "typeID": "Arrow", - "zOrder": "1", - "w": "137", - "h": "66", - "measuredW": "150", - "measuredH": "100", - "x": "367", - "y": "2444", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 137, - "y": 0 - }, - "p1": { - "x": 0.4707150975159109, - "y": -0.06528731437784985 - }, - "p2": { - "x": -0.036745982530419496, - "y": 65.96108274350672 - } - } - }, - { - "ID": "6469", - "typeID": "Arrow", - "zOrder": "2", - "w": "130", - "h": "28", - "measuredW": "150", - "measuredH": "100", - "x": "365", - "y": "2426", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 129.88523924557296, - "y": -0.10193612067541835 - }, - "p1": { - "x": 0.4346317007327419, - "y": 0.008098727342846149 - }, - "p2": { - "x": -0.4733552249705326, - "y": 27.9190701673856 - } - } - }, - { - "ID": "6470", - "typeID": "Arrow", - "zOrder": "3", - "w": "1", - "h": "139", - "measuredW": "150", - "measuredH": "100", - "x": "610", - "y": "3003", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.4438624012549725, - "y": -0.00008403832147459167 - }, - "p2": { - "x": 0, - "y": 139 - }, - "stroke": "dotted" - } - }, - { - "ID": "6471", - "typeID": "Arrow", - "zOrder": "4", - "w": "1", - "h": "161", - "measuredW": "150", - "measuredH": "100", - "x": "612", - "y": "2815", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.4438624012549725, - "y": -0.00008403832147459167 - }, - "p2": { - "x": 0, - "y": 161 - } - } - }, - { - "ID": "6472", - "typeID": "Arrow", - "zOrder": "5", - "w": "133", - "h": "47", - "measuredW": "150", - "measuredH": "100", - "x": "715", - "y": "2749", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 133, - "y": 0 - }, - "p1": { - "x": 0.4403419352249467, - "y": 0.09764417867319503 - }, - "p2": { - "x": 0, - "y": 47 - } - } - }, - { - "ID": "6473", - "typeID": "Arrow", - "zOrder": "6", - "w": "124", - "h": "48", - "measuredW": "150", - "measuredH": "100", - "x": "712", - "y": "2810", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 124, - "y": 48 - }, - "p1": { - "x": 0.35350772889417365, - "y": -0.09381688466111773 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6474", - "typeID": "Arrow", - "zOrder": "7", - "w": "160", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "704", - "y": "2804", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 160, - "y": 0 - }, - "p1": { - "x": 0.43463170073274177, - "y": 0.008098727342846121 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6475", - "typeID": "Arrow", - "zOrder": "8", - "w": "112", - "h": "29", - "measuredW": "150", - "measuredH": "100", - "x": "730", - "y": "2657", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 112, - "y": 29 - }, - "p1": { - "x": 0.5888824808127413, - "y": -0.08637593718113669 - }, - "p2": { - "x": 0, - "y": 2 - } - } - }, - { - "ID": "6476", - "typeID": "Arrow", - "zOrder": "9", - "w": "102", - "h": "21", - "measuredW": "150", - "measuredH": "100", - "x": "734", - "y": "2624", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 102, - "y": 0 - }, - "p1": { - "x": 0.5619316722322116, - "y": 0.09139481119958906 - }, - "p2": { - "x": 0, - "y": 18 - } - } - }, - { - "ID": "6477", - "typeID": "Arrow", - "zOrder": "10", - "w": "145", - "h": "28", - "measuredW": "150", - "measuredH": "100", - "x": "386", - "y": "2603", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 145, - "y": 1 - }, - "p1": { - "x": 0.5888824808127412, - "y": -0.08637593718113665 - }, - "p2": { - "x": 0, - "y": 28 - } - } - }, - { - "ID": "6478", - "typeID": "Arrow", - "zOrder": "11", - "w": "143", - "h": "26", - "measuredW": "150", - "measuredH": "100", - "x": "390", - "y": "2564", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 143, - "y": 23 - }, - "p1": { - "x": 0.5619316722322119, - "y": 0.09139481119958909 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6479", - "typeID": "Arrow", - "zOrder": "12", - "w": "1", - "h": "258", - "measuredW": "150", - "measuredH": "100", - "x": "612", - "y": "2536", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.44386240125497245, - "y": -0.00008403832147459167 - }, - "p2": { - "x": 0, - "y": 258 - } - } - }, - { - "ID": "6480", - "typeID": "Arrow", - "zOrder": "13", - "w": "336", - "h": "5", - "measuredW": "150", - "measuredH": "100", - "x": "679", - "y": "2545", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 336, - "y": 5 - }, - "p1": { - "x": 0.5514394580863673, - "y": -0.0002116850127011012 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6481", - "typeID": "Arrow", - "zOrder": "14", - "w": "328", - "h": "82", - "measuredW": "150", - "measuredH": "100", - "x": "679", - "y": "2449", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 327.5731801579867, - "y": 81.67226130424751 - }, - "p1": { - "x": 0.6383835273395956, - "y": 0.09307593687062075 - }, - "p2": { - "x": -0.15076295020207908, - "y": -0.46127437797440507 - } - } - }, - { - "ID": "6482", - "typeID": "Arrow", - "zOrder": "15", - "w": "78", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "931", - "y": "2345", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 78, - "y": 0 - }, - "p1": { - "x": 0.5615052363765463, - "y": -0.004319271049050346 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6483", - "typeID": "Arrow", - "zOrder": "16", - "w": "88", - "h": "4", - "measuredW": "150", - "measuredH": "100", - "x": "923", - "y": "2397", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 88, - "y": 4 - }, - "p1": { - "x": 0.5615052363765459, - "y": -0.004319271049050346 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6484", - "typeID": "Arrow", - "zOrder": "17", - "w": "112", - "h": "29", - "measuredW": "150", - "measuredH": "100", - "x": "726", - "y": "2375", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 112, - "y": 29 - }, - "p1": { - "x": 0.5888824808127413, - "y": -0.08637593718113669 - }, - "p2": { - "x": 0, - "y": 2 - } - } - }, - { - "ID": "6485", - "typeID": "Arrow", - "zOrder": "18", - "w": "102", - "h": "21", - "measuredW": "150", - "measuredH": "100", - "x": "730", - "y": "2342", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 102, - "y": 0 - }, - "p1": { - "x": 0.5619316722322116, - "y": 0.09139481119958906 - }, - "p2": { - "x": 0, - "y": 18 - } - } - }, - { - "ID": "6486", - "typeID": "Arrow", - "zOrder": "19", - "w": "145", - "h": "28", - "measuredW": "150", - "measuredH": "100", - "x": "349", - "y": "2378", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 145, - "y": 1 - }, - "p1": { - "x": 0.5888824808127412, - "y": -0.08637593718113665 - }, - "p2": { - "x": 0, - "y": 28 - } - } - }, - { - "ID": "6487", - "typeID": "Arrow", - "zOrder": "20", - "w": "143", - "h": "26", - "measuredW": "150", - "measuredH": "100", - "x": "353", - "y": "2339", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 143, - "y": 23 - }, - "p1": { - "x": 0.5619316722322119, - "y": 0.09139481119958909 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6488", - "typeID": "Arrow", - "zOrder": "21", - "w": "1", - "h": "90", - "measuredW": "150", - "measuredH": "100", - "x": "571", - "y": "2266", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 1, - "y": 90 - }, - "p1": { - "x": 0.4346317007327421, - "y": 0.008098727342846123 - }, - "p2": { - "x": 1, - "y": 0 - } - } - }, - { - "ID": "6489", - "typeID": "__group__", - "zOrder": "22", - "measuredW": "150", - "measuredH": "44", - "w": "150", - "h": "44", - "x": "499", - "y": "2259", - "properties": { - "controlName": "100-javascript-asynchronous-javascript:event-loop" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "139", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "88", - "measuredH": "25", - "x": "26", - "y": "9", - "properties": { - "size": "17", - "text": "Event Loop" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "126", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6490", - "typeID": "Arrow", - "zOrder": "23", - "w": "114", - "h": "335", - "measuredW": "150", - "measuredH": "100", - "x": "670", - "y": "2118", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 6.412627807357808, - "y": 334.70076554616526 - }, - "p1": { - "x": 0.6858595992123588, - "y": 0.18770524853403914 - }, - "p2": { - "x": 114, - "y": 0 - } - } - }, - { - "ID": "6491", - "typeID": "__group__", - "zOrder": "24", - "measuredW": "211", - "measuredH": "110", - "w": "211", - "h": "110", - "x": "811", - "y": "2163", - "properties": { - "controlName": "106-javascript-this-keyword:explicit-binding" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Arrow", - "zOrder": "0", - "w": "1", - "h": "70", - "measuredW": "150", - "measuredH": "100", - "x": "169", - "y": "22", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 1, - "y": 70 - }, - "p1": { - "x": 0.43463170073274204, - "y": 0.008098727342846123 - }, - "p2": { - "x": 1, - "y": 0 - } - } - }, - { - "ID": "1", - "typeID": "Arrow", - "zOrder": "1", - "w": "1", - "h": "70", - "measuredW": "150", - "measuredH": "100", - "x": "98", - "y": "22", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 1, - "y": 70 - }, - "p1": { - "x": 0.43463170073274204, - "y": 0.008098727342846123 - }, - "p2": { - "x": 1, - "y": 0 - } - } - }, - { - "ID": "2", - "typeID": "Arrow", - "zOrder": "2", - "w": "1", - "h": "70", - "measuredW": "150", - "measuredH": "100", - "x": "28", - "y": "22", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 1, - "y": 70 - }, - "p1": { - "x": 0.43463170073274204, - "y": 0.008098727342846123 - }, - "p2": { - "x": 1, - "y": 0 - } - } - }, - { - "ID": "3", - "typeID": "TextArea", - "zOrder": "3", - "w": "202", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "4", - "typeID": "Label", - "zOrder": "4", - "measuredW": "118", - "measuredH": "25", - "x": "49", - "y": "9", - "properties": { - "size": "17", - "text": "Explicit Binding" - } - }, - { - "ID": "5", - "typeID": "__group__", - "zOrder": "5", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "187", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - }, - { - "ID": "7", - "typeID": "TextArea", - "zOrder": "8", - "w": "70", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "63", - "y": "66", - "properties": { - "color": "16770457" - } - }, - { - "ID": "8", - "typeID": "Label", - "zOrder": "9", - "measuredW": "41", - "measuredH": "25", - "x": "77", - "y": "75", - "properties": { - "size": "17", - "text": "apply" - } - }, - { - "ID": "9", - "typeID": "TextArea", - "zOrder": "10", - "w": "62", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "141", - "y": "66", - "properties": { - "color": "16770457" - } - }, - { - "ID": "10", - "typeID": "Label", - "zOrder": "11", - "measuredW": "33", - "measuredH": "25", - "x": "155", - "y": "75", - "properties": { - "size": "17", - "text": "bind" - } - }, - { - "ID": "11", - "typeID": "TextArea", - "zOrder": "6", - "w": "52", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "66", - "properties": { - "color": "16770457" - } - }, - { - "ID": "12", - "typeID": "Label", - "zOrder": "7", - "measuredW": "27", - "measuredH": "25", - "x": "12", - "y": "75", - "properties": { - "size": "17", - "text": "call" - } - } - ] - } - } - }, - { - "ID": "6492", - "typeID": "Arrow", - "zOrder": "25", - "w": "86", - "h": "66", - "measuredW": "150", - "measuredH": "100", - "x": "1000", - "y": "2028", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 86, - "y": 0 - }, - "p1": { - "x": 0.4752475247524752, - "y": 0.08580858085808583 - }, - "p2": { - "x": 0, - "y": 66 - } - } - }, - { - "ID": "6493", - "typeID": "Arrow", - "zOrder": "26", - "w": "105", - "h": "23", - "measuredW": "150", - "measuredH": "100", - "x": "989", - "y": "2080", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 105, - "y": 0 - }, - "p1": { - "x": 0.4508650111804166, - "y": 0.04695774979404492 - }, - "p2": { - "x": 0, - "y": 23 - } - } - }, - { - "ID": "6494", - "typeID": "Arrow", - "zOrder": "27", - "w": "89", - "h": "20", - "measuredW": "150", - "measuredH": "100", - "x": "1001", - "y": "2116", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 89, - "y": 20 - }, - "p1": { - "x": 0.4897405460403595, - "y": -0.07088350008478889 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6495", - "typeID": "Arrow", - "zOrder": "28", - "w": "87", - "h": "65", - "measuredW": "150", - "measuredH": "100", - "x": "1000", - "y": "2119", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 87, - "y": 65 - }, - "p1": { - "x": 0.48974054604035955, - "y": -0.07088350008478889 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6496", - "typeID": "Arrow", - "zOrder": "29", - "w": "88", - "h": "107", - "measuredW": "150", - "measuredH": "100", - "x": "996", - "y": "2130", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 88, - "y": 107 - }, - "p1": { - "x": 0.6556559421119335, - "y": -0.099995911859695 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6497", - "typeID": "Arrow", - "zOrder": "30", - "w": "159", - "h": "133", - "measuredW": "150", - "measuredH": "100", - "x": "654", - "y": "1972", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 159, - "y": 132 - }, - "p1": { - "x": 0.5367276641550054, - "y": 0.2802368137782564 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6498", - "typeID": "Arrow", - "zOrder": "31", - "w": "27", - "h": "256", - "measuredW": "150", - "measuredH": "100", - "x": "648", - "y": "1711", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 256 - }, - "p1": { - "x": 0.5418218964066819, - "y": -0.10497536353803628 - }, - "p2": { - "x": 1, - "y": 0 - } - } - }, - { - "ID": "6499", - "typeID": "Arrow", - "zOrder": "32", - "w": "122", - "h": "239", - "measuredW": "150", - "measuredH": "100", - "x": "712", - "y": "1729", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 122, - "y": 239 - }, - "p1": { - "x": 0.38300118047357823, - "y": 0.16014165682938683 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6500", - "typeID": "Arrow", - "zOrder": "33", - "w": "108", - "h": "189", - "measuredW": "150", - "measuredH": "100", - "x": "720", - "y": "1727", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 108, - "y": 189 - }, - "p1": { - "x": 0.3636363636363637, - "y": 0.12500000000000003 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6501", - "typeID": "Arrow", - "zOrder": "34", - "w": "93", - "h": "133", - "measuredW": "150", - "measuredH": "100", - "x": "729", - "y": "1727", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 93, - "y": 133 - }, - "p1": { - "x": 0.36363636363636376, - "y": 0.125 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6502", - "typeID": "Arrow", - "zOrder": "35", - "w": "88", - "h": "88", - "measuredW": "150", - "measuredH": "100", - "x": "737", - "y": "1726", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 88, - "y": 88 - }, - "p1": { - "x": 0.36363636363636365, - "y": 0.125 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6503", - "typeID": "Arrow", - "zOrder": "36", - "w": "55", - "h": "47", - "measuredW": "150", - "measuredH": "100", - "x": "1031", - "y": "1861", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 55, - "y": 0 - }, - "p1": { - "x": 0.4752092723760463, - "y": 0.09594333547971662 - }, - "p2": { - "x": 0, - "y": 47 - } - } - }, - { - "ID": "6504", - "typeID": "Arrow", - "zOrder": "37", - "w": "62", - "h": "49", - "measuredW": "150", - "measuredH": "100", - "x": "1024", - "y": "1921", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 62, - "y": 49 - }, - "p1": { - "x": 0.4290879211175021, - "y": -0.13114215283483976 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6505", - "typeID": "Arrow", - "zOrder": "38", - "w": "59", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "1029", - "y": "1915", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 59, - "y": 0 - }, - "p1": { - "x": 0.5615052363765461, - "y": -0.004319271049050346 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6506", - "typeID": "Arrow", - "zOrder": "39", - "w": "89", - "h": "45", - "measuredW": "150", - "measuredH": "100", - "x": "735", - "y": "1715", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 89, - "y": 45 - }, - "p1": { - "x": 0.4211743414437965, - "y": 0.07812185803338026 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6507", - "typeID": "Arrow", - "zOrder": "40", - "w": "80", - "h": "55", - "measuredW": "150", - "measuredH": "100", - "x": "1013", - "y": "1721", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 80, - "y": 55 - }, - "p1": { - "x": 0.4657824933687003, - "y": -0.20477453580901858 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6508", - "typeID": "Arrow", - "zOrder": "41", - "w": "88", - "h": "4", - "measuredW": "150", - "measuredH": "100", - "x": "1032", - "y": "1713", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 88, - "y": 4 - }, - "p1": { - "x": 0.5615052363765459, - "y": -0.004319271049050346 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6509", - "typeID": "Arrow", - "zOrder": "42", - "w": "130", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "727", - "y": "1712", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 130, - "y": 1 - }, - "p1": { - "x": 0.5615052363765458, - "y": -0.004319271049050352 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6510", - "typeID": "Arrow", - "zOrder": "43", - "w": "1", - "h": "82", - "measuredW": "150", - "measuredH": "100", - "x": "713", - "y": "1633", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 1, - "y": 82 - }, - "p1": { - "x": 0.434631700732742, - "y": 0.008098727342846125 - }, - "p2": { - "x": 1, - "y": 0 - } - } - }, - { - "ID": "6511", - "typeID": "Arrow", - "zOrder": "44", - "w": "188", - "h": "2", - "measuredW": "150", - "measuredH": "100", - "x": "445", - "y": "1717", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 188, - "y": 2 - }, - "p1": { - "x": 0.5531914893617021, - "y": -0.010638297872340425 - }, - "p2": { - "x": 0, - "y": 2 - } - } - }, - { - "ID": "6512", - "typeID": "Arrow", - "zOrder": "45", - "w": "1", - "h": "68", - "measuredW": "150", - "measuredH": "100", - "x": "330", - "y": "1714", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 1, - "y": 68 - }, - "p1": { - "x": 0.4346317007327421, - "y": 0.008098727342846125 - }, - "p2": { - "x": 1, - "y": 0 - } - } - }, - { - "ID": "6513", - "typeID": "Arrow", - "zOrder": "46", - "w": "161", - "h": "165", - "measuredW": "150", - "measuredH": "100", - "x": "438", - "y": "1542", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 161, - "y": 0 - }, - "p1": { - "x": 0.5119105859330899, - "y": 0.22071275354683323 - }, - "p2": { - "x": 0, - "y": 165 - } - } - }, - { - "ID": "6514", - "typeID": "Arrow", - "zOrder": "47", - "w": "76", - "h": "96", - "measuredW": "150", - "measuredH": "100", - "x": "964", - "y": "1545", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 76, - "y": 96 - }, - "p1": { - "x": 0.4573170731707317, - "y": 0.13414634146341473 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6515", - "typeID": "Arrow", - "zOrder": "48", - "w": "68", - "h": "44", - "measuredW": "150", - "measuredH": "100", - "x": "968", - "y": "1542", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 68, - "y": 44 - }, - "p1": { - "x": 0.4573170731707317, - "y": 0.13414634146341464 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6516", - "typeID": "Arrow", - "zOrder": "49", - "w": "76", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "966", - "y": "1532", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 76, - "y": 1 - }, - "p1": { - "x": 0.5677789797786468, - "y": 0.0019139552300907004 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6517", - "typeID": "Arrow", - "zOrder": "50", - "w": "130", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "678", - "y": "1531", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 130, - "y": 1 - }, - "p1": { - "x": 0.5615052363765458, - "y": -0.004319271049050352 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6518", - "typeID": "Arrow", - "zOrder": "51", - "w": "1", - "h": "68", - "measuredW": "150", - "measuredH": "100", - "x": "246", - "y": "1543", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 1, - "y": 68 - }, - "p1": { - "x": 0.4346317007327421, - "y": 0.008098727342846125 - }, - "p2": { - "x": 1, - "y": 0 - } - } - }, - { - "ID": "6519", - "typeID": "Arrow", - "zOrder": "52", - "w": "1", - "h": "68", - "measuredW": "150", - "measuredH": "100", - "x": "362", - "y": "1543", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 1, - "y": 68 - }, - "p1": { - "x": 0.4346317007327421, - "y": 0.008098727342846125 - }, - "p2": { - "x": 1, - "y": 0 - } - } - }, - { - "ID": "6520", - "typeID": "__group__", - "zOrder": "53", - "measuredW": "111", - "measuredH": "44", - "w": "111", - "h": "44", - "x": "312", - "y": "1582", - "properties": { - "controlName": "101-javascript-control-flow:conditional-statements:switch" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "101", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "50", - "measuredH": "25", - "x": "20", - "y": "9", - "properties": { - "size": "17", - "text": "Switch" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "87", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6521", - "typeID": "__group__", - "zOrder": "54", - "measuredW": "115", - "measuredH": "44", - "w": "115", - "h": "44", - "x": "184", - "y": "1581", - "properties": { - "controlName": "100-javascript-control-flow:conditional-statements:if-else" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "105", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "53", - "measuredH": "25", - "x": "37", - "y": "10", - "properties": { - "size": "17", - "text": "If...else" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6522", - "typeID": "Arrow", - "zOrder": "55", - "w": "130", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "378", - "y": "1531", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 130, - "y": 1 - }, - "p1": { - "x": 0.5615052363765458, - "y": -0.004319271049050352 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6523", - "typeID": "Arrow", - "zOrder": "56", - "w": "3", - "h": "69", - "measuredW": "150", - "measuredH": "100", - "x": "596", - "y": "1471", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.4438624012549723, - "y": -0.00008403832147459167 - }, - "p2": { - "x": 3, - "y": 69 - } - } - }, - { - "ID": "6524", - "typeID": "Arrow", - "zOrder": "57", - "w": "128", - "h": "4", - "measuredW": "150", - "measuredH": "100", - "x": "957", - "y": "1466", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 128, - "y": 0 - }, - "p1": { - "x": 0.4346317007327421, - "y": 0.008098727342846118 - }, - "p2": { - "x": 0, - "y": 4 - } - } - }, - { - "ID": "6525", - "typeID": "Arrow", - "zOrder": "58", - "w": "115", - "h": "102", - "measuredW": "150", - "measuredH": "100", - "x": "682", - "y": "1364", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 115, - "y": 0 - }, - "p1": { - "x": 0.5239324558804859, - "y": 0.10051208261035169 - }, - "p2": { - "x": 0, - "y": 102 - } - } - }, - { - "ID": "6526", - "typeID": "Arrow", - "zOrder": "59", - "w": "105", - "h": "53", - "measuredW": "150", - "measuredH": "100", - "x": "692", - "y": "1416", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 105, - "y": 0 - }, - "p1": { - "x": 0.5619316722322119, - "y": 0.09139481119958899 - }, - "p2": { - "x": 0, - "y": 53 - } - } - }, - { - "ID": "6527", - "typeID": "Arrow", - "zOrder": "60", - "w": "115", - "h": "6", - "measuredW": "150", - "measuredH": "100", - "x": "687", - "y": "1473", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 115, - "y": 0 - }, - "p1": { - "x": 0.43463170073274204, - "y": 0.008098727342846121 - }, - "p2": { - "x": 0, - "y": 6 - } - } - }, - { - "ID": "6528", - "typeID": "Arrow", - "zOrder": "61", - "w": "110", - "h": "85", - "measuredW": "150", - "measuredH": "100", - "x": "406", - "y": "1373", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 110, - "y": 85 - }, - "p1": { - "x": 0.4798458802608179, - "y": 0.06727919383521047 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6529", - "typeID": "Arrow", - "zOrder": "62", - "w": "116", - "h": "6", - "measuredW": "150", - "measuredH": "100", - "x": "392", - "y": "1470", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 116, - "y": 6 - }, - "p1": { - "x": 0.5615052363765459, - "y": -0.004319271049050351 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6530", - "typeID": "Arrow", - "zOrder": "63", - "w": "102", - "h": "46", - "measuredW": "150", - "measuredH": "100", - "x": "407", - "y": "1421", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 102, - "y": 46 - }, - "p1": { - "x": 0.5619316722322119, - "y": 0.09139481119958906 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6531", - "typeID": "Arrow", - "zOrder": "64", - "w": "120", - "h": "205", - "measuredW": "150", - "measuredH": "100", - "x": "596", - "y": "1254", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 120, - "y": 0 - }, - "p1": { - "x": 0.4654417745871477, - "y": -0.18317860785807433 - }, - "p2": { - "x": 0, - "y": 205 - } - } - }, - { - "ID": "6532", - "typeID": "Arrow", - "zOrder": "65", - "w": "97", - "h": "27", - "measuredW": "150", - "measuredH": "100", - "x": "1006", - "y": "1229", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 97, - "y": 0 - }, - "p1": { - "x": 0.5362343379613952, - "y": 0.07670165932949556 - }, - "p2": { - "x": 0, - "y": 27 - } - } - }, - { - "ID": "6533", - "typeID": "Arrow", - "zOrder": "66", - "w": "101", - "h": "23", - "measuredW": "150", - "measuredH": "100", - "x": "1000", - "y": "1264", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 101, - "y": 23 - }, - "p1": { - "x": 0.4715257712741169, - "y": -0.04268804175598845 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6534", - "typeID": "Arrow", - "zOrder": "67", - "w": "92", - "h": "72", - "measuredW": "150", - "measuredH": "100", - "x": "1004", - "y": "1268", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 92, - "y": 72 - }, - "p1": { - "x": 0.4427283527849604, - "y": -0.11349500314487382 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6535", - "typeID": "Arrow", - "zOrder": "68", - "w": "101", - "h": "75", - "measuredW": "150", - "measuredH": "100", - "x": "997", - "y": "1177", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 101, - "y": 0 - }, - "p1": { - "x": 0.5017060533299634, - "y": 0.1422974851510173 - }, - "p2": { - "x": 0, - "y": 75 - } - } - }, - { - "ID": "6536", - "typeID": "Arrow", - "zOrder": "69", - "w": "1", - "h": "68", - "measuredW": "150", - "measuredH": "100", - "x": "1087", - "y": "1036", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 1, - "y": 68 - }, - "p1": { - "x": 0.4346317007327421, - "y": 0.008098727342846125 - }, - "p2": { - "x": 1, - "y": 0 - } - } - }, - { - "ID": "6537", - "typeID": "Arrow", - "zOrder": "70", - "w": "118", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "742", - "y": "1259", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 118, - "y": 0 - }, - "p1": { - "x": 0.43463170073274193, - "y": 0.00809872734284612 - }, - "p2": { - "x": 0, - "y": 1 - } - } - }, - { - "ID": "6538", - "typeID": "Arrow", - "zOrder": "71", - "w": "134", - "h": "2", - "measuredW": "150", - "measuredH": "100", - "x": "459", - "y": "1259", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 134, - "y": 0 - }, - "p1": { - "x": 0.4346317007327418, - "y": 0.008098727342846095 - }, - "p2": { - "x": 0, - "y": 2 - } - } - }, - { - "ID": "6539", - "typeID": "Arrow", - "zOrder": "72", - "w": "197", - "h": "223", - "measuredW": "150", - "measuredH": "100", - "x": "687", - "y": "1031", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 197, - "y": 0 - }, - "p1": { - "x": 0.46304778335297475, - "y": 0.16187780194146445 - }, - "p2": { - "x": 0, - "y": 223 - } - } - }, - { - "ID": "6540", - "typeID": "Arrow", - "zOrder": "73", - "w": "110", - "h": "101", - "measuredW": "150", - "measuredH": "100", - "x": "775", - "y": "934", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.508228330568136, - "y": 0.248464194430743 - }, - "p2": { - "x": 110, - "y": 101 - } - } - }, - { - "ID": "6541", - "typeID": "Arrow", - "zOrder": "74", - "w": "1", - "h": "68", - "measuredW": "150", - "measuredH": "100", - "x": "1207", - "y": "1036", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 1, - "y": 68 - }, - "p1": { - "x": 0.4346317007327421, - "y": 0.008098727342846125 - }, - "p2": { - "x": 1, - "y": 0 - } - } - }, - { - "ID": "6542", - "typeID": "Arrow", - "zOrder": "75", - "w": "164", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "587", - "y": "922", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 164, - "y": 0 - }, - "p1": { - "x": 0.4346317007327419, - "y": 0.008098727342846102 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6543", - "typeID": "Arrow", - "zOrder": "76", - "w": "93", - "h": "61", - "measuredW": "150", - "measuredH": "100", - "x": "929", - "y": "863", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 93, - "y": 0 - }, - "p1": { - "x": 0.42797129354104674, - "y": 0.09504638543672332 - }, - "p2": { - "x": 0, - "y": 61 - } - } - }, - { - "ID": "6544", - "typeID": "Arrow", - "zOrder": "77", - "w": "98", - "h": "3", - "measuredW": "150", - "measuredH": "100", - "x": "937", - "y": "917", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 98, - "y": 0 - }, - "p1": { - "x": 0.4346317007327419, - "y": 0.008098727342846118 - }, - "p2": { - "x": 0, - "y": 3 - } - } - }, - { - "ID": "6545", - "typeID": "__group__", - "zOrder": "78", - "measuredW": "245", - "measuredH": "44", - "w": "245", - "h": "44", - "x": "1013", - "y": "895", - "properties": { - "controlName": "102-javascript-type-casting:implicit-type-casting" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "236", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "160", - "measuredH": "25", - "x": "38", - "y": "9", - "properties": { - "size": "17", - "text": "Implicit Type Casting" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "221", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6546", - "typeID": "Arrow", - "zOrder": "79", - "w": "114", - "h": "79", - "measuredW": "150", - "measuredH": "100", - "x": "602", - "y": "1036", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 114, - "y": 0 - }, - "p1": { - "x": 0.5334511618235691, - "y": -0.14160212091282423 - }, - "p2": { - "x": 0, - "y": 79 - } - } - }, - { - "ID": "6547", - "typeID": "Arrow", - "zOrder": "80", - "w": "1", - "h": "89", - "measuredW": "150", - "measuredH": "100", - "x": "483", - "y": "1107", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 1, - "y": 89 - }, - "p1": { - "x": 0.43463170073274204, - "y": 0.008098727342846125 - }, - "p2": { - "x": 1, - "y": 0 - } - } - }, - { - "ID": "6548", - "typeID": "Arrow", - "zOrder": "81", - "w": "110", - "h": "16", - "measuredW": "150", - "measuredH": "100", - "x": "334", - "y": "1027", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 110, - "y": 0 - }, - "p1": { - "x": 0.5801230171576562, - "y": -0.01165425704111363 - }, - "p2": { - "x": 0, - "y": 16 - } - } - }, - { - "ID": "6549", - "typeID": "Arrow", - "zOrder": "82", - "w": "95", - "h": "62", - "measuredW": "150", - "measuredH": "100", - "x": "345", - "y": "1034", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 95, - "y": 0 - }, - "p1": { - "x": 0.588716066886285, - "y": -0.07118135190359026 - }, - "p2": { - "x": 0, - "y": 62 - } - } - }, - { - "ID": "6550", - "typeID": "Arrow", - "zOrder": "83", - "w": "108", - "h": "112", - "measuredW": "150", - "measuredH": "100", - "x": "345", - "y": "1036", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 108, - "y": 0 - }, - "p1": { - "x": 0.588716066886285, - "y": -0.07118135190359025 - }, - "p2": { - "x": 0, - "y": 112 - } - } - }, - { - "ID": "6551", - "typeID": "Arrow", - "zOrder": "84", - "w": "105", - "h": "37", - "measuredW": "150", - "measuredH": "100", - "x": "342", - "y": "984", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 105, - "y": 37 - }, - "p1": { - "x": 0.6194444444444444, - "y": 0.08611111111111105 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6552", - "typeID": "Arrow", - "zOrder": "85", - "w": "169", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "541", - "y": "1025", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 169, - "y": 1 - }, - "p1": { - "x": 0.42352941176470593, - "y": -0.0058823529411764705 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6553", - "typeID": "Arrow", - "zOrder": "86", - "w": "132", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "895", - "y": "1031", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 132, - "y": 0 - }, - "p1": { - "x": 0.43463170073274177, - "y": 0.008098727342846121 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6554", - "typeID": "Arrow", - "zOrder": "87", - "w": "188", - "h": "143", - "measuredW": "150", - "measuredH": "100", - "x": "546", - "y": "772", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.45100789353512954, - "y": -0.16576423771935558 - }, - "p2": { - "x": 188, - "y": 143 - } - } - }, - { - "ID": "6555", - "typeID": "Arrow", - "zOrder": "88", - "w": "89", - "h": "43", - "measuredW": "150", - "measuredH": "100", - "x": "648", - "y": "778", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 89, - "y": 43 - }, - "p1": { - "x": 0.4914022517911975, - "y": -0.13336745138178097 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6556", - "typeID": "Arrow", - "zOrder": "89", - "w": "132", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "874", - "y": "766", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 132, - "y": 0 - }, - "p1": { - "x": 0.43463170073274177, - "y": 0.008098727342846121 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6557", - "typeID": "Arrow", - "zOrder": "90", - "w": "115", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "370", - "y": "767", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 115, - "y": 0 - }, - "p1": { - "x": 0.4346317007327418, - "y": 0.008098727342846121 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6558", - "typeID": "Arrow", - "zOrder": "91", - "w": "115", - "h": "2", - "measuredW": "150", - "measuredH": "100", - "x": "638", - "y": "766", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 115, - "y": 2 - }, - "p1": { - "x": 0.43463170073274177, - "y": 0.008098727342846121 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6559", - "typeID": "Arrow", - "zOrder": "92", - "w": "1", - "h": "76", - "measuredW": "150", - "measuredH": "100", - "x": "814", - "y": "682", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 76 - }, - "p1": { - "x": 0.4503554364293207, - "y": -0.0034378277590024473 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6560", - "typeID": "Arrow", - "zOrder": "93", - "w": "107", - "h": "90", - "measuredW": "150", - "measuredH": "100", - "x": "860", - "y": "530", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 107, - "y": 90 - }, - "p1": { - "x": 0.5032482479922247, - "y": -0.10941736150186711 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6561", - "typeID": "Arrow", - "zOrder": "94", - "w": "1", - "h": "68", - "measuredW": "150", - "measuredH": "100", - "x": "1210", - "y": "618", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 1, - "y": 68 - }, - "p1": { - "x": 0.4346317007327421, - "y": 0.008098727342846125 - }, - "p2": { - "x": 1, - "y": 0 - } - } - }, - { - "ID": "6562", - "typeID": "Arrow", - "zOrder": "95", - "w": "1", - "h": "68", - "measuredW": "150", - "measuredH": "100", - "x": "1109", - "y": "618", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 1, - "y": 68 - }, - "p1": { - "x": 0.4346317007327421, - "y": 0.008098727342846125 - }, - "p2": { - "x": 1, - "y": 0 - } - } - }, - { - "ID": "6563", - "typeID": "Arrow", - "zOrder": "96", - "w": "1", - "h": "68", - "measuredW": "150", - "measuredH": "100", - "x": "1002", - "y": "618", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 1, - "y": 68 - }, - "p1": { - "x": 0.4346317007327421, - "y": 0.008098727342846125 - }, - "p2": { - "x": 1, - "y": 0 - } - } - }, - { - "ID": "6564", - "typeID": "__group__", - "zOrder": "97", - "measuredW": "97", - "measuredH": "53", - "w": "97", - "h": "53", - "x": "959", - "y": "659", - "properties": { - "controlName": "100-javascript-variables:scopes:block" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "88", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "43", - "measuredH": "25", - "x": "22", - "y": "9", - "properties": { - "size": "17", - "text": "Block" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "73", - "y": "29", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6565", - "typeID": "__group__", - "zOrder": "98", - "measuredW": "108", - "measuredH": "53", - "w": "108", - "h": "53", - "x": "1061", - "y": "659", - "properties": { - "controlName": "101-javascript-variables:scopes:function" + "nodes": [ + { + "id": "RT5Y79D2bHy6PsH_R3ErB", + "type": "vertical", + "position": { + "x": 285.5025092677304, + "y": 1826.2304293708296 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75 + } + }, + "zIndex": 999, + "width": 20, + "height": 279, + "style": { + "width": 20, + "height": 279 + }, + "positionAbsolute": { + "x": 285.5025092677304, + "y": 1826.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "Vw9QlH1HRpkhY0MB_qYSl", + "type": "vertical", + "position": { + "x": 162.55738234743455, + "y": 1725.8694458007812 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75, + "strokeDasharray": "0.8 8", + "strokeLinecap": "round" + } + }, + "zIndex": 999, + "width": 20, + "height": 173, + "style": { + "width": 20, + "height": 173 + }, + "positionAbsolute": { + "x": 162.55738234743455, + "y": 1725.8694458007812 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "7_PNaE81zDfU_rrERJaut", + "type": "vertical", + "position": { + "x": -174.30802068213768, + "y": 1798.7725047650335 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "nIKq5h-D4CH0rTuyvIYrj" + }, + "zIndex": 999, + "width": 20, + "height": 80, + "style": { + "width": 20, + "height": 80 + }, + "positionAbsolute": { + "x": -174.30802068213768, + "y": 1798.7725047650335 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "nIKq5h-D4CH0rTuyvIYrj", + "type": "vertical", + "position": { + "x": -174.30802068213768, + "y": 1940.8694458007812 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 69, + "style": { + "width": 20, + "height": 69 + }, + "positionAbsolute": { + "x": -174.30802068213768, + "y": 1940.8694458007812 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "vbQvUkXTW5X7Msi5h5bfU", + "type": "vertical", + "position": { + "x": -110.62763977050781, + "y": 1940.8694458007812 + }, + "selected": false, + "data": { + "label": "vertical node", + "oldId": "nIKq5h-D4CH0rTuyvIYrj", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 69, + "style": { + "width": 20, + "height": 69 + }, + "positionAbsolute": { + "x": -110.62763977050781, + "y": 1940.8694458007812 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "k92omG8sirMkkG21L2lIG", + "type": "vertical", + "position": { + "x": -41.62763977050781, + "y": 1940.8694458007812 + }, + "selected": false, + "data": { + "label": "vertical node", + "oldId": "vbQvUkXTW5X7Msi5h5bfU", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 69, + "style": { + "width": 20, + "height": 69 + }, + "positionAbsolute": { + "x": -41.62763977050781, + "y": 1940.8694458007812 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "0njVxhIA2YIJ9qKyVxjf8", + "type": "vertical", + "position": { + "x": 86.55738234743455, + "y": 1303.8694458007812 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 82, + "style": { + "width": 20, + "height": 82 + }, + "positionAbsolute": { + "x": 86.55738234743455, + "y": 1303.8694458007812 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "WVB_JzBBd0IBLQeOmLA8l", + "type": "vertical", + "position": { + "x": 202.26672552017453, + "y": 1303.8694458007812 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "0njVxhIA2YIJ9qKyVxjf8" + }, + "zIndex": 999, + "width": 20, + "height": 82, + "style": { + "width": 20, + "height": 82 + }, + "positionAbsolute": { + "x": 202.26672552017453, + "y": 1303.8694458007812 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "-F3iMNrT9JSZDZLQGwebH", + "type": "vertical", + "position": { + "x": -174.30802068213768, + "y": 1206.7725047650335 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75 + } + }, + "zIndex": 999, + "width": 20, + "height": 601, + "style": { + "width": 20, + "height": 601 + }, + "positionAbsolute": { + "x": -174.30802068213768, + "y": 1206.7725047650335 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "H7egAB_mCOFfyVvVfE7Sq", + "type": "vertical", + "position": { + "x": 470.5448461352869, + "y": 1103.2304293708296 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 91, + "style": { + "width": 20, + "height": 91 + }, + "positionAbsolute": { + "x": 470.5448461352869, + "y": 1103.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "TN-WaRT4V6szTvQtqbw7U", + "type": "vertical", + "position": { + "x": 354.0025092677304, + "y": 1103.2304293708296 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "H7egAB_mCOFfyVvVfE7Sq" + }, + "zIndex": 999, + "width": 20, + "height": 91, + "style": { + "width": 20, + "height": 91 + }, + "positionAbsolute": { + "x": 354.0025092677304, + "y": 1103.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "UhkFfLGkLhOZy7f98T7fi", + "type": "vertical", + "position": { + "x": 173.17209364499, + "y": 1041.063720703125 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75 + } + }, + "zIndex": 999, + "width": 20, + "height": 161, + "style": { + "width": 20, + "height": 161 + }, + "positionAbsolute": { + "x": 173.17209364499, + "y": 1041.063720703125 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "efeOuXHkhR2UBWM2Uz1Ih", + "type": "vertical", + "position": { + "x": 315.93263762370384, + "y": 949.2304293708296 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 79, + "style": { + "width": 20, + "height": 79 + }, + "positionAbsolute": { + "x": 315.93263762370384, + "y": 949.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "DyhRrYJ78u0ZoxzC-4bF-", + "type": "vertical", + "position": { + "x": 173.17209364499, + "y": 950.1019998033482 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "efeOuXHkhR2UBWM2Uz1Ih" + }, + "zIndex": 999, + "width": 20, + "height": 79, + "style": { + "width": 20, + "height": 79 + }, + "positionAbsolute": { + "x": 173.17209364499, + "y": 950.1019998033482 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "JM16NHhFVOwwbwqCubmYw", + "type": "section", + "position": { + "x": -212.7816601458129, + "y": 885.2304293708296 + }, + "selected": false, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "zIndex": -999, + "width": 211, + "height": 274, + "style": { + "width": 211, + "height": 274 + }, + "resizing": false, + "dragging": false, + "positionAbsolute": { + "x": -212.7816601458129, + "y": 885.2304293708296 + }, + "selectable": true, + "focusable": true + }, + { + "id": "iZjl6qe9LGLFqXyopMUFX", + "type": "section", + "position": { + "x": -521.828125, + "y": 765.063720703125 + }, + "selected": false, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "zIndex": -999, + "width": 262, + "height": 108, + "style": { + "width": 262, + "height": 108 + }, + "dragging": false, + "resizing": false, + "positionAbsolute": { + "x": -521.828125, + "y": 765.063720703125 + }, + "selectable": true, + "focusable": true + }, + { + "id": "H3WkCOmbGQhvqjbdp5lkI", + "type": "vertical", + "position": { + "x": 265.5025092677304, + "y": 474.7304293708296 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 53, + "style": { + "width": 20, + "height": 53 + }, + "positionAbsolute": { + "x": 265.5025092677304, + "y": 474.7304293708296 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "NblxOcAnB1id7c9z6d6jL", + "type": "vertical", + "position": { + "x": 25.766725520174532, + "y": 345.2304293708296 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.5, + "strokeDasharray": "0.8 8", + "strokeLinecap": "round" + } + }, + "zIndex": 999, + "width": 20, + "height": 56, + "style": { + "width": 20, + "height": 56 + }, + "positionAbsolute": { + "x": 25.766725520174532, + "y": 345.2304293708296 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "SSqBPOJROQpX5poMFSJtJ", + "type": "section", + "position": { + "x": -521.2332744798255, + "y": 286.7304293708296 + }, + "selected": false, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "zIndex": -999, + "width": 224, + "height": 276, + "style": { + "width": 224, + "height": 276 + }, + "resizing": false, + "dragging": false, + "positionAbsolute": { + "x": -521.2332744798255, + "y": 286.7304293708296 + }, + "selectable": true, + "focusable": true + }, + { + "id": "HQhfzCPLg18t6pGMaL0hv", + "type": "vertical", + "position": { + "x": 272.0025092677304, + "y": 209.2304293708296 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "13pndno5JSKQQaRHPTWdC" + }, + "zIndex": 999, + "width": 20, + "height": 72, + "style": { + "width": 20, + "height": 72 + }, + "positionAbsolute": { + "x": 272.0025092677304, + "y": 209.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "o-91XV8kk0_35-alDkXtP", + "type": "vertical", + "position": { + "x": 356.0025092677304, + "y": 222.2304293708296 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "HQhfzCPLg18t6pGMaL0hv" + }, + "zIndex": 999, + "width": 20, + "height": 72, + "style": { + "width": 20, + "height": 72 + }, + "positionAbsolute": { + "x": 356.0025092677304, + "y": 222.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "_kaSKWCyvpshv9dtT4kKM", + "type": "vertical", + "position": { + "x": 438.0025092677304, + "y": 222.2304293708296 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "o-91XV8kk0_35-alDkXtP" + }, + "zIndex": 999, + "width": 20, + "height": 72, + "style": { + "width": 20, + "height": 72 + }, + "positionAbsolute": { + "x": 438.0025092677304, + "y": 222.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "WRMo2Zwtiar8b-40FntG6", + "type": "vertical", + "position": { + "x": 345.5025092677304, + "y": -10.269570629170403 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "13pndno5JSKQQaRHPTWdC" + }, + "zIndex": 999, + "width": 20, + "height": 72, + "style": { + "width": 20, + "height": 72 + }, + "positionAbsolute": { + "x": 345.5025092677304, + "y": -10.269570629170403 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "bV3JIUCFixDt8-D7HDfxc", + "type": "vertical", + "position": { + "x": 433.0025092677304, + "y": 0.23042937082959725 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "WRMo2Zwtiar8b-40FntG6" + }, + "zIndex": 999, + "width": 20, + "height": 72, + "style": { + "width": 20, + "height": 72 + }, + "positionAbsolute": { + "x": 433.0025092677304, + "y": 0.23042937082959725 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "13pndno5JSKQQaRHPTWdC", + "type": "vertical", + "position": { + "x": 272.0025092677304, + "y": -10.269570629170403 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 72, + "style": { + "width": 20, + "height": 72 + }, + "positionAbsolute": { + "x": 272.0025092677304, + "y": -10.269570629170403 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "width": 172, + "height": 68, + "id": "iogwMmOvub2ZF4zgg6WyF", + "type": "title", + "position": { + "x": -91.45968546864998, + "y": -155.26957062917046 + }, + "selected": false, + "data": { + "label": "JavaScript", + "style": { + "fontSize": 28, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "9nxw2PEl-_eQPW0FHNPq2" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -91.45968546864998, + "y": -155.26957062917046 + }, + "focusable": true, + "selectable": true + }, + { + "width": 20, + "height": 64, + "id": "LEijbLyxg4RyutKEM2Y5g", + "type": "vertical", + "position": { + "x": -15.45968546864998, + "y": -230.76957062917046 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#0A33FF" + }, + "oldId": "xD07fJ1NmNeAarVCEfubU" + }, + "zIndex": 999, + "positionAbsolute": { + "x": -15.45968546864998, + "y": -230.76957062917046 + }, + "dragging": false, + "focusable": true, + "style": { + "width": 20, + "height": 64 + }, + "resizing": true, + "selectable": true + }, + { + "id": "yHmHXymPNWwu8p1vvqD3o", + "type": "paragraph", + "position": { + "x": 179.8414717224867, + "y": -232.76957062917046 + }, + "selected": false, + "data": { + "label": "Find the detailed version of this roadmap along with other similar roadmaps", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "left", + "borderColor": "#000000", + "backgroundColor": "#FFFFFf" + } + }, + "zIndex": 999, + "width": 363, + "height": 143, + "positionAbsolute": { + "x": 179.8414717224867, + "y": -232.76957062917046 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 363, + "height": 143 + }, + "resizing": false + }, + { + "id": "R_Fs6rdl2XtQ9aLOubMqL", + "type": "button", + "position": { + "x": 193.04484613528683, + "y": -150.78400721142515 + }, + "selected": false, + "data": { + "label": "roadmap.sh", + "href": "https://roadmap.sh", + "color": "#ffffff", + "backgroundColor": "#4136D6", + "style": { + "fontSize": 17 + }, + "oldId": "2zqZkyVgigifcRS1H7F_b" + }, + "zIndex": 999, + "width": 339, + "height": 49, + "dragging": false, + "style": { + "width": 339, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": 193.04484613528683, + "y": -150.78400721142515 + }, + "selectable": true, + "focusable": true + }, + { + "id": "xwpc_KxehAruFM0pCQnie", + "type": "vertical", + "position": { + "x": -145.62877362673999, + "y": 2526.9010423312407 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#4136D4" + }, + "oldId": "Ju00mr0KLGN2BV6yEQGPt" + }, + "zIndex": 999, + "width": 20, + "height": 104, + "positionAbsolute": { + "x": -145.62877362673999, + "y": 2526.9010423312407 + }, + "dragging": false, + "style": { + "width": 20, + "height": 104 + }, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "width": 472, + "height": 118, + "id": "GV_zWF6rSWg5bqgiXhOEf", + "type": "paragraph", + "position": { + "x": -349.9596854686499, + "y": 2436.385077050813 + }, + "selected": false, + "data": { + "label": "Have a look at the following related roadmaps", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "borderColor": "#000000", + "backgroundColor": "#ffffff" + }, + "oldId": "sVXZrBCsiSzWBBYWTm-nQ" + }, + "zIndex": 999, + "positionAbsolute": { + "x": -349.9596854686499, + "y": 2436.385077050813 + }, + "dragging": false, + "style": { + "width": 472, + "height": 118 + }, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "width": 126, + "height": 49, + "id": "ZSrQoNGKiR484uALMWO9F", + "type": "button", + "position": { + "x": -124.2816601458129, + "y": 2495.0743589624644 + }, + "selected": false, + "data": { + "label": "TypeScript", + "href": "https://roadmap.sh/typescript", + "color": "#FFFFFf", + "backgroundColor": "#4136D4", + "style": { + "fontSize": 17 + }, + "borderColor": "#4136D4", + "oldId": "dlGf3ZdFXYx0Z6Viu2x-l" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -124.2816601458129, + "y": 2495.0743589624644 + }, + "style": {}, + "focusable": true, + "resizing": false, + "selectable": true + }, + { + "width": 115, + "height": 49, + "id": "P5IZjP0g1_fnvHy3YTR4q", + "type": "button", + "position": { + "x": -338.2816601458129, + "y": 2495.0743589624644 + }, + "selected": false, + "data": { + "label": "Frontend", + "href": "https://roadm.sh/frontend", + "color": "#FFFFFf", + "backgroundColor": "#4136D4", + "style": { + "fontSize": 17 + }, + "borderColor": "#4136D4", + "oldId": "dlGf3ZdFXYx0Z6Viu2x-l" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -338.2816601458129, + "y": 2495.0743589624644 + }, + "style": {}, + "focusable": true, + "resizing": false, + "selectable": true + }, + { + "id": "YD5y17K5nqmWaBwYcufZO", + "type": "legend", + "position": { + "x": -522.3080206821377, + "y": -232.76957062917046 + }, + "selected": false, + "data": { + "label": "", + "legends": [ + { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these" }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "98", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "67", - "measuredH": "25", - "x": "15", - "y": "9", - "properties": { - "size": "17", - "text": "Function" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "84", - "y": "29", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6566", - "typeID": "__group__", - "zOrder": "99", - "measuredW": "85", - "measuredH": "53", - "w": "85", - "h": "53", - "x": "1173", - "y": "659", - "properties": { - "controlName": "102-javascript-variables:scopes:global" + { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff" }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "76", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "50", - "measuredH": "25", - "x": "13", - "y": "9", - "properties": { - "size": "17", - "text": "Global" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "61", - "y": "29", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6567", - "typeID": "Arrow", - "zOrder": "100", - "w": "141", - "h": "104", - "measuredW": "150", - "measuredH": "100", - "x": "421", - "y": "462", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 141, - "y": 0 - }, - "p1": { - "x": 0.49499951135290093, - "y": -0.088510277877317 - }, - "p2": { - "x": 0, - "y": 104 - } - } - }, - { - "ID": "6568", - "typeID": "Arrow", - "zOrder": "101", - "w": "139", - "h": "237", - "measuredW": "150", - "measuredH": "100", - "x": "545", - "y": "518", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 139, - "y": 0 - }, - "p1": { - "x": 0.5160265819744322, - "y": -0.17006058341562358 - }, - "p2": { - "x": 2, - "y": 237 - } - } - }, - { - "ID": "6569", - "typeID": "Arrow", - "zOrder": "102", - "w": "114", - "h": "48", - "measuredW": "150", - "measuredH": "100", - "x": "862", - "y": "455", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 114, - "y": 0 - }, - "p1": { - "x": 0.48235294117647065, - "y": 0.10392156862745099 - }, - "p2": { - "x": 0, - "y": 48 - } - } - }, - { - "ID": "6570", - "typeID": "Arrow", - "zOrder": "103", - "w": "110", - "h": "49", - "measuredW": "150", - "measuredH": "100", - "x": "857", - "y": "521", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 110, - "y": 49 - }, - "p1": { - "x": 0.3159689412924697, - "y": -0.09329937143091893 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6571", - "typeID": "Arrow", - "zOrder": "104", - "w": "1", - "h": "68", - "measuredW": "150", - "measuredH": "100", - "x": "1201", - "y": "380", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 1, - "y": 68 - }, - "p1": { - "x": 0.4346317007327421, - "y": 0.008098727342846125 - }, - "p2": { - "x": 1, - "y": 0 - } - } - }, - { - "ID": "6572", - "typeID": "Arrow", - "zOrder": "105", - "w": "1", - "h": "68", - "measuredW": "150", - "measuredH": "100", - "x": "1097", - "y": "380", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 1, - "y": 68 - }, - "p1": { - "x": 0.4346317007327421, - "y": 0.008098727342846125 - }, - "p2": { - "x": 1, - "y": 0 - } - } - }, - { - "ID": "6573", - "typeID": "Arrow", - "zOrder": "106", - "w": "1", - "h": "52", - "measuredW": "150", - "measuredH": "100", - "x": "1001", - "y": "396", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 52 - }, - "p1": { - "x": 0.4346317007327421, - "y": 0.008098727342846125 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6574", - "typeID": "__group__", - "zOrder": "107", - "measuredW": "85", - "measuredH": "44", - "w": "85", - "h": "44", - "x": "959", - "y": "373", - "properties": { - "controlName": "100-javascript-variables:variable-declarations:var" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "85", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "24", - "measuredH": "25", - "x": "31", - "y": "9", - "properties": { - "size": "17", - "text": "var" - } - } - ] - } - } - }, - { - "ID": "6575", - "typeID": "__group__", - "zOrder": "108", - "measuredW": "82", - "measuredH": "44", - "w": "82", - "h": "44", - "x": "1057", - "y": "373", - "properties": { - "controlName": "101-javascript-variables:variable-declarations:let" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "82", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "19", - "measuredH": "25", - "x": "31", - "y": "9", - "properties": { - "size": "17", - "text": "let" - } - } - ] - } - } - }, - { - "ID": "6576", - "typeID": "__group__", - "zOrder": "109", - "measuredW": "93", - "measuredH": "44", - "w": "93", - "h": "44", - "x": "1155", - "y": "373", - "properties": { - "controlName": "102-javascript-variables:variable-declarations:const" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "93", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "42", - "measuredH": "25", - "x": "26", - "y": "9", - "properties": { - "size": "17", - "text": "const" - } - } - ] - } - } - }, - { - "ID": "6577", - "typeID": "Arrow", - "zOrder": "110", - "w": "131", - "h": "2", - "measuredW": "150", - "measuredH": "100", - "x": "852", - "y": "512", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 131, - "y": 0 - }, - "p1": { - "x": 0.43463170073274177, - "y": 0.008098727342846121 - }, - "p2": { - "x": 0, - "y": 1 - } - } - }, - { - "ID": "6578", - "typeID": "Arrow", - "zOrder": "111", - "w": "162", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "415", - "y": "457", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 162, - "y": 1 - }, - "p1": { - "x": 0.4382716049382716, - "y": -0.00617283950617284 - }, - "p2": { - "x": 0, - "y": 1 - } - } - }, - { - "ID": "6579", - "typeID": "Arrow", - "zOrder": "112", - "w": "158", - "h": "46", - "measuredW": "150", - "measuredH": "100", - "x": "415", - "y": "461", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 158, - "y": 0 - }, - "p1": { - "x": 0.45522128005575585, - "y": -0.05494250203275638 - }, - "p2": { - "x": 0, - "y": 46 - } - } - }, - { - "ID": "6580", - "typeID": "Arrow", - "zOrder": "113", - "w": "19", - "h": "76", - "measuredW": "150", - "measuredH": "100", - "x": "694", - "y": "220", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": 13, - "y": 0 - }, - "p1": { - "x": 0.5175865027166142, - "y": -0.2113239919931367 - }, - "p2": { - "x": 19, - "y": 76 - }, - "stroke": "dotted" - } - }, - { - "ID": "6581", - "typeID": "Label", - "zOrder": "114", - "measuredW": "133", - "measuredH": "36", - "x": "667", - "y": "307", - "properties": { - "size": "28", - "text": "JavaScript" - } - }, - { - "ID": "6582", - "typeID": "Arrow", - "zOrder": "115", - "w": "33", - "h": "91", - "measuredW": "150", - "measuredH": "100", - "x": "726", - "y": "350", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 28, - "y": 0 - }, - "p1": { - "x": 0.4488347077805664, - "y": 0.15539619935460752 - }, - "p2": { - "x": 0, - "y": 91 - } - } - }, - { - "ID": "6587", - "typeID": "Arrow", - "zOrder": "117", - "w": "154", - "h": "47", - "measuredW": "150", - "measuredH": "100", - "x": "409", - "y": "404", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 154, - "y": 47 - }, - "p1": { - "x": 0.4298167791706846, - "y": 0.05974927675988428 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "6588", - "typeID": "__group__", - "zOrder": "118", - "measuredW": "350", - "measuredH": "50", - "w": "350", - "h": "50", - "x": "534", - "y": "434", - "properties": { - "controlName": "100-javascript-introduction" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "340", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "196", - "measuredH": "25", - "x": "72", - "y": "12", - "properties": { - "size": "17", - "text": "Introduction to JavaScript" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "326", - "y": "12", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6589", - "typeID": "__group__", - "zOrder": "119", - "measuredW": "248", - "measuredH": "44", - "w": "248", - "h": "44", - "x": "185", - "y": "382", - "properties": { - "controlName": "100-javascript-introduction:what-is-javascript" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "149", - "measuredH": "25", - "x": "54", - "y": "10", - "properties": { - "size": "17", - "text": "What is JavaScript?" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6591", - "typeID": "__group__", - "zOrder": "121", - "measuredW": "248", - "measuredH": "44", - "w": "248", - "h": "44", - "x": "185", - "y": "432", - "properties": { - "controlName": "101-javascript-introduction:history-of-javascript" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "156", - "measuredH": "25", - "x": "51", - "y": "10", - "properties": { - "size": "17", - "text": "History of JavaScript" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6592", - "typeID": "__group__", - "zOrder": "122", - "measuredW": "248", - "measuredH": "44", - "w": "248", - "h": "44", - "x": "185", - "y": "483", - "properties": { - "controlName": "102-javascript-introduction:javascript-versions" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "150", - "measuredH": "25", - "x": "54", - "y": "10", - "properties": { - "size": "17", - "text": "JavaScript Versions" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6593", - "typeID": "__group__", - "zOrder": "123", - "measuredW": "351", - "measuredH": "50", - "w": "351", - "h": "50", - "x": "523", - "y": "490", - "properties": { - "controlName": "101-javascript-variables" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "340", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "11", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "142", - "measuredH": "25", - "x": "110", - "y": "12", - "properties": { - "size": "17", - "text": "All About Variables" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "11", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6594", - "typeID": "__group__", - "zOrder": "124", - "measuredW": "300", - "measuredH": "44", - "w": "300", - "h": "44", - "x": "958", - "y": "439", - "properties": { - "controlName": "100-javascript-variables:variable-declarations" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "291", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "164", - "measuredH": "25", - "x": "64", - "y": "9", - "properties": { - "size": "17", - "text": "Variable Declarations" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "276", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6595", - "typeID": "__group__", - "zOrder": "125", - "measuredW": "300", - "measuredH": "44", - "w": "300", - "h": "44", - "x": "958", - "y": "542", - "properties": { - "controlName": "102-javascript-variables:naming-rules" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "291", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "175", - "measuredH": "25", - "x": "58", - "y": "9", - "properties": { - "size": "17", - "text": "Variable Naming Rules" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "276", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6596", - "typeID": "__group__", - "zOrder": "126", - "measuredW": "299", - "measuredH": "44", - "w": "299", - "h": "44", - "x": "958", - "y": "490", - "properties": { - "controlName": "101-javascript-variables:hoisting" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "291", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "64", - "measuredH": "25", - "x": "114", - "y": "9", - "properties": { - "size": "17", - "text": "Hoisting" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "275", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6597", - "typeID": "__group__", - "zOrder": "127", - "measuredW": "226", - "measuredH": "50", - "w": "226", - "h": "50", - "x": "448", - "y": "743", - "properties": { - "controlName": "102-javascript-datatypes" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "218", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "8", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "86", - "measuredH": "25", - "x": "74", - "y": "12", - "properties": { - "size": "17", - "text": "Data Types" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "11", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6598", - "typeID": "__group__", - "zOrder": "128", - "measuredW": "248", - "measuredH": "44", - "w": "248", - "h": "44", - "x": "185", - "y": "534", - "properties": { - "controlName": "103-javascript-introduction:how-to-run-javascript" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "238", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "176", - "measuredH": "25", - "x": "41", - "y": "10", - "properties": { - "size": "17", - "text": "How to run JavaScript?" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6599", - "typeID": "__group__", - "zOrder": "129", - "measuredW": "300", - "measuredH": "44", - "w": "300", - "h": "44", - "x": "958", - "y": "595", - "properties": { - "controlName": "103-javascript-variables:scopes" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "291", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "124", - "measuredH": "25", - "x": "84", - "y": "9", - "properties": { - "size": "17", - "text": "Variable Scopes" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "276", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6600", - "typeID": "__group__", - "zOrder": "130", - "measuredW": "192", - "measuredH": "55", - "w": "192", - "h": "55", - "x": "731", - "y": "734", - "properties": { - "controlName": "101-javascript-datatypes:object" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "184", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "11", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "51", - "measuredH": "25", - "x": "66", - "y": "20", - "properties": { - "size": "17", - "text": "Object" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "168", - "y": "0", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6601", - "typeID": "__group__", - "zOrder": "131", - "measuredW": "231", - "measuredH": "44", - "w": "231", - "h": "44", - "x": "694", - "y": "659", - "properties": { - "controlName": "100-javascript-datatypes:object:prototype" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "220", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "11", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "129", - "measuredH": "25", - "x": "56", - "y": "9", - "properties": { - "size": "17", - "text": "Object Prototype" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6602", - "typeID": "__group__", - "zOrder": "132", - "measuredW": "231", - "measuredH": "44", - "w": "231", - "h": "44", - "x": "694", - "y": "609", - "properties": { - "controlName": "101-javascript-datatypes:object:prototypal-inheritance" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "220", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "11", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "170", - "measuredH": "25", - "x": "36", - "y": "9", - "properties": { - "size": "17", - "text": "Prototypal Inheritance" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6603", - "typeID": "__group__", - "zOrder": "133", - "measuredW": "179", - "measuredH": "44", - "w": "179", - "h": "44", - "x": "958", - "y": "745", - "properties": { - "controlName": "102-javascript-datatypes:object:builtin-objects" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "168", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "118", - "measuredH": "25", - "x": "25", - "y": "9", - "properties": { - "size": "17", - "text": "Built-in Objects" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "155", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6604", - "typeID": "__group__", - "zOrder": "134", - "measuredW": "218", - "measuredH": "262", - "w": "218", - "h": "262", - "x": "195", - "y": "616", - "properties": { - "controlName": "100-javascript-datatypes:primitive-types" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "218", - "h": "262", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "115", - "measuredH": "25", - "x": "50", - "y": "224", - "properties": { - "size": "17", - "text": "Primitive Types" - } - }, - { - "ID": "2", - "typeID": "TextArea", - "zOrder": "2", - "w": "74", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "16", - "y": "14", - "properties": { - "color": "16770457" - } - }, - { - "ID": "3", - "typeID": "Label", - "zOrder": "3", - "measuredW": "44", - "measuredH": "25", - "x": "31", - "y": "23", - "properties": { - "size": "17", - "text": "string" - } - }, - { - "ID": "4", - "typeID": "TextArea", - "zOrder": "4", - "w": "101", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "15", - "y": "67", - "properties": { - "color": "16770457" - } - }, - { - "ID": "5", - "typeID": "Label", - "zOrder": "5", - "measuredW": "59", - "measuredH": "25", - "x": "36", - "y": "76", - "properties": { - "size": "17", - "text": "number" - } - }, - { - "ID": "6", - "typeID": "TextArea", - "zOrder": "6", - "w": "78", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "124", - "y": "67", - "properties": { - "color": "16770457" - } - }, - { - "ID": "7", - "typeID": "Label", - "zOrder": "7", - "measuredW": "43", - "measuredH": "25", - "x": "141", - "y": "76", - "properties": { - "size": "17", - "text": "bigint" - } - }, - { - "ID": "8", - "typeID": "TextArea", - "zOrder": "8", - "w": "100", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "16", - "y": "118", - "properties": { - "color": "16770457" - } - }, - { - "ID": "9", - "typeID": "Label", - "zOrder": "9", - "measuredW": "62", - "measuredH": "25", - "x": "35", - "y": "127", - "properties": { - "size": "17", - "text": "boolean" - } - }, - { - "ID": "10", - "typeID": "TextArea", - "zOrder": "10", - "w": "75", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "124", - "y": "118", - "properties": { - "color": "16770457" - } - }, - { - "ID": "11", - "typeID": "Label", - "zOrder": "11", - "measuredW": "27", - "measuredH": "25", - "x": "148", - "y": "127", - "properties": { - "size": "17", - "text": "null" - } - }, - { - "ID": "12", - "typeID": "TextArea", - "zOrder": "12", - "w": "105", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "97", - "y": "14", - "properties": { - "color": "16770457" - } - }, - { - "ID": "13", - "typeID": "Label", - "zOrder": "13", - "measuredW": "77", - "measuredH": "25", - "x": "111", - "y": "23", - "properties": { - "size": "17", - "text": "undefined" - } - }, - { - "ID": "14", - "typeID": "TextArea", - "zOrder": "14", - "w": "186", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "16", - "y": "169", - "properties": { - "color": "16770457" - } - }, - { - "ID": "15", - "typeID": "Label", - "zOrder": "15", - "measuredW": "56", - "measuredH": "25", - "x": "81", - "y": "178", - "properties": { - "size": "17", - "text": "Symbol" - } - }, - { - "ID": "16", - "typeID": "__group__", - "zOrder": "16", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "2", - "y": "24", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - }, - { - "ID": "17", - "typeID": "__group__", - "zOrder": "17", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "2", - "y": "77", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - }, - { - "ID": "18", - "typeID": "__group__", - "zOrder": "18", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "2", - "y": "128", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - }, - { - "ID": "19", - "typeID": "__group__", - "zOrder": "19", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "192", - "y": "24", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - }, - { - "ID": "20", - "typeID": "__group__", - "zOrder": "20", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "189", - "y": "77", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - }, - { - "ID": "21", - "typeID": "__group__", - "zOrder": "21", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "189", - "y": "128", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - }, - { - "ID": "22", - "typeID": "__group__", - "zOrder": "22", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "3", - "y": "179", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6605", - "typeID": "__group__", - "zOrder": "135", - "measuredW": "192", - "measuredH": "44", - "w": "192", - "h": "44", - "x": "730", - "y": "797", - "properties": { - "controlName": "102-javascript-datatypes:typeof-operator" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "184", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "119", - "measuredH": "25", - "x": "32", - "y": "9", - "properties": { - "size": "17", - "text": "typeof operator" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "168", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6606", - "typeID": "__group__", - "zOrder": "136", - "measuredW": "269", - "measuredH": "50", - "w": "269", - "h": "50", - "x": "702", - "y": "1007", - "properties": { - "controlName": "104-javascript-data-structures" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "258", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "120", - "measuredH": "25", - "x": "69", - "y": "12", - "properties": { - "size": "17", - "text": "Data Structures" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "245", - "y": "13", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6607", - "typeID": "__group__", - "zOrder": "137", - "measuredW": "238", - "measuredH": "44", - "w": "238", - "h": "44", - "x": "1020", - "y": "1010", - "properties": { - "controlName": "100-javascript-data-structures:indexed-collections" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "229", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "152", - "measuredH": "25", - "x": "39", - "y": "9", - "properties": { - "size": "17", - "text": "Indexed Collections" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "214", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6608", - "typeID": "__group__", - "zOrder": "138", - "measuredW": "91", - "measuredH": "44", - "w": "91", - "h": "44", - "x": "1167", - "y": "1077", - "properties": { - "controlName": "100-javascript-data-structures:indexed-collections:arrays" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "82", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "49", - "measuredH": "25", - "x": "14", - "y": "9", - "properties": { - "size": "17", - "text": "Arrays" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "67", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6609", - "typeID": "__group__", - "zOrder": "139", - "measuredW": "140", - "measuredH": "44", - "w": "140", - "h": "44", - "x": "1011", - "y": "1076", - "properties": { - "controlName": "101-javascript-data-structures:indexed-collections:typed-arrays" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "128", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "12", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "99", - "measuredH": "25", - "x": "28", - "y": "9", - "properties": { - "size": "17", - "text": "Typed Arrays" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6610", - "typeID": "__group__", - "zOrder": "140", - "measuredW": "202", - "measuredH": "44", - "w": "202", - "h": "44", - "x": "429", - "y": "1004", - "properties": { - "controlName": "101-javascript-data-structures:keyed-collections" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "193", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "137", - "measuredH": "25", - "x": "28", - "y": "9", - "properties": { - "size": "17", - "text": "Keyed Collections" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "178", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6611", - "typeID": "__group__", - "zOrder": "141", - "measuredW": "171", - "measuredH": "44", - "w": "171", - "h": "44", - "x": "185", - "y": "969", - "properties": { - "controlName": "100-javascript-data-structures:keyed-collections:map" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "161", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "35", - "measuredH": "25", - "x": "66", - "y": "9", - "properties": { - "size": "17", - "text": "Map" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6612", - "typeID": "__group__", - "zOrder": "142", - "measuredW": "171", - "measuredH": "44", - "w": "171", - "h": "44", - "x": "185", - "y": "1019", - "properties": { - "controlName": "101-javascript-data-structures:keyed-collections:weak-map" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "161", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "82", - "measuredH": "25", - "x": "50", - "y": "9", - "properties": { - "size": "17", - "text": "Weak Map" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6613", - "typeID": "__group__", - "zOrder": "143", - "measuredW": "171", - "measuredH": "44", - "w": "171", - "h": "44", - "x": "185", - "y": "1069", - "properties": { - "controlName": "102-javascript-data-structures:keyed-collections:set" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "161", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "26", - "measuredH": "25", - "x": "78", - "y": "9", - "properties": { - "size": "17", - "text": "Set" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6614", - "typeID": "__group__", - "zOrder": "144", - "measuredW": "171", - "measuredH": "44", - "w": "171", - "h": "44", - "x": "185", - "y": "1119", - "properties": { - "controlName": "103-javascript-data-structures:keyed-collections:weak-set" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "161", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "73", - "measuredH": "25", - "x": "54", - "y": "9", - "properties": { - "size": "17", - "text": "Weak Set" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6615", - "typeID": "__group__", - "zOrder": "145", - "measuredW": "204", - "measuredH": "44", - "w": "204", - "h": "44", - "x": "418", - "y": "1084", - "properties": { - "controlName": "102-javascript-data-structures:structured-data" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "193", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "11", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "122", - "measuredH": "25", - "x": "47", - "y": "9", - "properties": { - "size": "17", - "text": "Structured Data" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6616", - "typeID": "__group__", - "zOrder": "146", - "measuredW": "116", - "measuredH": "44", - "w": "116", - "h": "44", - "x": "418", - "y": "1154", - "properties": { - "controlName": "100-javascript-data-structures:structured-data:json" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "105", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "11", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "46", - "measuredH": "25", - "x": "41", - "y": "9", - "properties": { - "size": "17", - "text": "JSON" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6617", - "typeID": "__group__", - "zOrder": "147", - "measuredW": "268", - "measuredH": "50", - "w": "268", - "h": "50", - "x": "702", - "y": "892", - "properties": { - "controlName": "103-javascript-type-casting" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "258", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "100", - "measuredH": "25", - "x": "79", - "y": "12", - "properties": { - "size": "17", - "text": "Type Casting" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "244", - "y": "13", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6618", - "typeID": "__group__", - "zOrder": "148", - "measuredW": "245", - "measuredH": "44", - "w": "245", - "h": "44", - "x": "1013", - "y": "843", - "properties": { - "controlName": "101-javascript-type-casting:explicit-type-casting" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "236", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "159", - "measuredH": "25", - "x": "38", - "y": "9", - "properties": { - "size": "17", - "text": "Explicit Type Casting" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "221", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6619", - "typeID": "__group__", - "zOrder": "149", - "measuredW": "318", - "measuredH": "44", - "w": "318", - "h": "44", - "x": "307", - "y": "901", - "properties": { - "controlName": "100-javascript-type-casting:type-conversion-coercion" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "308", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "224", - "measuredH": "25", - "x": "52", - "y": "9", - "properties": { - "size": "17", - "text": "Type Conversion vs Coercion" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6620", - "typeID": "__group__", - "zOrder": "150", - "measuredW": "238", - "measuredH": "50", - "w": "238", - "h": "50", - "x": "533", - "y": "1236", - "properties": { - "controlName": "105-javascript-equality-comparisons" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "228", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "166", - "measuredH": "25", - "x": "41", - "y": "12", - "properties": { - "size": "17", - "text": "Equality Comparisons" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "12", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6621", - "typeID": "__group__", - "zOrder": "151", - "measuredW": "289", - "measuredH": "120", - "w": "289", - "h": "120", - "x": "188", - "y": "1206", - "properties": { - "controlName": "101-javascript-equality-comparisons:value-comparison-operators" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "282", - "h": "111", - "measuredW": "200", - "measuredH": "140", - "x": "7", - "y": "9" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "222", - "measuredH": "25", - "x": "36", - "y": "79", - "properties": { - "size": "17", - "text": "Value Comparison Operators" - } - }, - { - "ID": "2", - "typeID": "TextArea", - "zOrder": "2", - "w": "60", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "22", - "y": "26", - "properties": { - "color": "16770457" - } - }, - { - "ID": "3", - "typeID": "Label", - "zOrder": "3", - "measuredW": "25", - "measuredH": "25", - "x": "39", - "y": "35", - "properties": { - "size": "17", - "text": "==" - } - }, - { - "ID": "4", - "typeID": "TextArea", - "zOrder": "4", - "w": "69", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "90", - "y": "26", - "properties": { - "color": "16770457" - } - }, - { - "ID": "5", - "typeID": "Label", - "zOrder": "5", - "measuredW": "37", - "measuredH": "25", - "x": "106", - "y": "35", - "properties": { - "size": "17", - "text": "===" - } - }, - { - "ID": "6", - "typeID": "TextArea", - "zOrder": "6", - "w": "107", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "166", - "y": "26", - "properties": { - "color": "16770457" - } - }, - { - "ID": "7", - "typeID": "Label", - "zOrder": "7", - "measuredW": "67", - "measuredH": "25", - "x": "186", - "y": "35", - "properties": { - "size": "17", - "text": "Object.is" - } - }, - { - "ID": "8", - "typeID": "__group__", - "zOrder": "8", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "0", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6622", - "typeID": "__group__", - "zOrder": "152", - "measuredW": "209", - "measuredH": "44", - "w": "209", - "h": "44", - "x": "821", - "y": "1239", - "properties": { - "controlName": "100-javascript-equality-comparisons:equality-algorithms" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "198", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "146", - "measuredH": "25", - "x": "27", - "y": "8", - "properties": { - "size": "17", - "text": "Equality Algorithms" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "185", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6623", - "typeID": "__group__", - "zOrder": "153", - "measuredW": "171", - "measuredH": "44", - "w": "171", - "h": "44", - "x": "1087", - "y": "1164", - "properties": { - "controlName": "100-javascript-equality-comparisons:equality-algorithms:is-loosely-equal" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "162", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "115", - "measuredH": "25", - "x": "23", - "y": "9", - "properties": { - "size": "17", - "text": "isLooselyEqual" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "147", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6624", - "typeID": "__group__", - "zOrder": "154", - "measuredW": "171", - "measuredH": "44", - "w": "171", - "h": "44", - "x": "1087", - "y": "1214", - "properties": { - "controlName": "101-javascript-equality-comparisons:equality-algorithms:is-strictly-equal" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "162", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "108", - "measuredH": "25", - "x": "27", - "y": "9", - "properties": { - "size": "17", - "text": "isStrictlyEqual" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "147", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6625", - "typeID": "__group__", - "zOrder": "155", - "measuredW": "171", - "measuredH": "44", - "w": "171", - "h": "44", - "x": "1087", - "y": "1263", - "properties": { - "controlName": "102-javascript-equality-comparisons:equality-algorithms:same-value-zero" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "162", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "123", - "measuredH": "25", - "x": "19", - "y": "9", - "properties": { - "size": "17", - "text": "SameValueZero" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "147", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6626", - "typeID": "__group__", - "zOrder": "156", - "measuredW": "171", - "measuredH": "44", - "w": "171", - "h": "44", - "x": "1087", - "y": "1313", - "properties": { - "controlName": "103-javascript-equality-comparisons:equality-algorithms:same-value" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "162", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "87", - "measuredH": "25", - "x": "37", - "y": "9", - "properties": { - "size": "17", - "text": "SameValue" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "147", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6627", - "typeID": "__group__", - "zOrder": "157", - "measuredW": "220", - "measuredH": "50", - "w": "220", - "h": "50", - "x": "482", - "y": "1445", - "properties": { - "controlName": "106-javascript-loops-iterations" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "207", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "13", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "158", - "measuredH": "25", - "x": "38", - "y": "12", - "properties": { - "size": "17", - "text": "Loops and Iterations" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "12", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6628", - "typeID": "__group__", - "zOrder": "158", - "measuredW": "228", - "measuredH": "44", - "w": "228", - "h": "44", - "x": "185", - "y": "1353", - "properties": { - "controlName": "103-javascript-loops-iterations:for-statement" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "218", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "103", - "measuredH": "25", - "x": "67", - "y": "9", - "properties": { - "size": "17", - "text": "for statement" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "8", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6629", - "typeID": "__group__", - "zOrder": "159", - "measuredW": "228", - "measuredH": "44", - "w": "228", - "h": "44", - "x": "185", - "y": "1402", - "properties": { - "controlName": "104-javascript-loops-iterations:do-while-statement" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "218", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "150", - "measuredH": "25", - "x": "44", - "y": "9", - "properties": { - "size": "17", - "text": "do...while statement" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6630", - "typeID": "__group__", - "zOrder": "160", - "measuredW": "228", - "measuredH": "44", - "w": "228", - "h": "44", - "x": "185", - "y": "1451", - "properties": { - "controlName": "105-javascript-loops-iterations:while-statement" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "218", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "121", - "measuredH": "25", - "x": "58", - "y": "9", - "properties": { - "size": "17", - "text": "while statement" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6631", - "typeID": "__group__", - "zOrder": "161", - "measuredW": "206", - "measuredH": "44", - "w": "206", - "h": "44", - "x": "784", - "y": "1448", - "properties": { - "controlName": "102-javascript-loops-iterations:break-continue" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "198", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "127", - "measuredH": "25", - "x": "35", - "y": "9", - "properties": { - "size": "17", - "text": "break / continue" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "182", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6632", - "typeID": "__group__", - "zOrder": "162", - "measuredW": "227", - "measuredH": "44", - "w": "227", - "h": "44", - "x": "1031", - "y": "1446", - "properties": { - "controlName": "100-javascript-loops-iterations:break-continue:labeled-statements" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "218", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "154", - "measuredH": "25", - "x": "32", - "y": "9", - "properties": { - "size": "17", - "text": "Labeled Statements" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "203", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6633", - "typeID": "__group__", - "zOrder": "163", - "measuredW": "206", - "measuredH": "44", - "w": "206", - "h": "44", - "x": "784", - "y": "1350", - "properties": { - "controlName": "100-javascript-loops-iterations:for-in-statement" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "198", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "125", - "measuredH": "25", - "x": "36", - "y": "9", - "properties": { - "size": "17", - "text": "for...in statement" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "182", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6634", - "typeID": "__group__", - "zOrder": "164", - "measuredW": "206", - "measuredH": "44", - "w": "206", - "h": "44", - "x": "784", - "y": "1399", - "properties": { - "controlName": "101-javascript-loops-iterations:for-of-statement" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "198", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "126", - "measuredH": "25", - "x": "36", - "y": "9", - "properties": { - "size": "17", - "text": "for...of statement" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "182", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6635", - "typeID": "__group__", - "zOrder": "165", - "measuredW": "220", - "measuredH": "50", - "w": "220", - "h": "50", - "x": "482", - "y": "1506", - "properties": { - "controlName": "107-javascript-control-flow" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "207", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "13", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "96", - "measuredH": "25", - "x": "69", - "y": "12", - "properties": { - "size": "17", - "text": "Control Flow" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "12", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6636", - "typeID": "__group__", - "zOrder": "166", - "measuredW": "229", - "measuredH": "44", - "w": "229", - "h": "44", - "x": "184", - "y": "1512", - "properties": { - "controlName": "101-javascript-control-flow:conditional-statements" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "218", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "11", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "179", - "measuredH": "25", - "x": "30", - "y": "9", - "properties": { - "size": "17", - "text": "Conditional Statements" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6637", - "typeID": "__group__", - "zOrder": "167", - "measuredW": "206", - "measuredH": "44", - "w": "206", - "h": "44", - "x": "784", - "y": "1511", - "properties": { - "controlName": "100-javascript-control-flow:exception-handling" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "198", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "149", - "measuredH": "25", - "x": "24", - "y": "9", - "properties": { - "size": "17", - "text": "Exception Handling" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "182", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6638", - "typeID": "__group__", - "zOrder": "168", - "measuredW": "227", - "measuredH": "44", - "w": "227", - "h": "44", - "x": "1031", - "y": "1513", - "properties": { - "controlName": "100-javascript-control-flow:exception-handling:throw-statement" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "218", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "124", - "measuredH": "25", - "x": "47", - "y": "9", - "properties": { - "size": "17", - "text": "throw statement" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "203", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6639", - "typeID": "__group__", - "zOrder": "169", - "measuredW": "227", - "measuredH": "44", - "w": "227", - "h": "44", - "x": "1031", - "y": "1565", - "properties": { - "controlName": "101-javascript-control-flow:exception-handling:try-catch-finally" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "218", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "137", - "measuredH": "25", - "x": "40", - "y": "9", - "properties": { - "size": "17", - "text": "try / catch / finally" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "203", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6640", - "typeID": "__group__", - "zOrder": "170", - "measuredW": "228", - "measuredH": "44", - "w": "228", - "h": "44", - "x": "1030", - "y": "1617", - "properties": { - "controlName": "102-javascript-control-flow:exception-handling:utilizing-error-objects" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "219", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "169", - "measuredH": "25", - "x": "25", - "y": "9", - "properties": { - "size": "17", - "text": "Utilizing Error Objects" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "204", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6641", - "typeID": "__group__", - "zOrder": "171", - "measuredW": "280", - "measuredH": "50", - "w": "280", - "h": "50", - "x": "185", - "y": "1688", - "properties": { - "controlName": "108-javascript-expressions-and-operators" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "270", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "210", - "measuredH": "25", - "x": "40", - "y": "12", - "properties": { - "size": "17", - "text": "Expressions and Operators" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "12", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6642", - "typeID": "__group__", - "zOrder": "172", - "measuredW": "280", - "measuredH": "44", - "w": "280", - "h": "44", - "x": "185", - "y": "1762", - "properties": { - "controlName": "100-javascript-expressions-and-operators:assignment-operators" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "270", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "172", - "measuredH": "25", - "x": "59", - "y": "9", - "properties": { - "size": "17", - "text": "Assignment Operators" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6643", - "typeID": "__group__", - "zOrder": "173", - "measuredW": "280", - "measuredH": "44", - "w": "280", - "h": "44", - "x": "185", - "y": "1812", - "properties": { - "controlName": "101-javascript-expressions-and-operators:omparison-operators" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "270", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "176", - "measuredH": "25", - "x": "57", - "y": "9", - "properties": { - "size": "17", - "text": "Comparison Operators" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6644", - "typeID": "__group__", - "zOrder": "174", - "measuredW": "280", - "measuredH": "44", - "w": "280", - "h": "44", - "x": "185", - "y": "1860", - "properties": { - "controlName": "102-javascript-expressions-and-operators:arithmetic-operators" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "270", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "160", - "measuredH": "25", - "x": "65", - "y": "9", - "properties": { - "size": "17", - "text": "Arithmetic Operators" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6645", - "typeID": "__group__", - "zOrder": "175", - "measuredW": "281", - "measuredH": "44", - "w": "281", - "h": "44", - "x": "184", - "y": "1910", - "properties": { - "controlName": "103-javascript-expressions-and-operators:bitwise-operators" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "270", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "11", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "137", - "measuredH": "25", - "x": "77", - "y": "9", - "properties": { - "size": "17", - "text": "Bitwise Operators" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6646", - "typeID": "__group__", - "zOrder": "176", - "measuredW": "280", - "measuredH": "44", - "w": "280", - "h": "44", - "x": "185", - "y": "1960", - "properties": { - "controlName": "104-javascript-expressions-and-operators:logical-operators" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "270", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "138", - "measuredH": "25", - "x": "76", - "y": "9", - "properties": { - "size": "17", - "text": "Logical Operators" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6647", - "typeID": "__group__", - "zOrder": "177", - "measuredW": "281", - "measuredH": "44", - "w": "281", - "h": "44", - "x": "184", - "y": "2009", - "properties": { - "controlName": "105-javascript-expressions-and-operators:bigint-operators" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "270", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "11", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "128", - "measuredH": "25", - "x": "82", - "y": "9", - "properties": { - "size": "17", - "text": "BigInt Operators" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6648", - "typeID": "__group__", - "zOrder": "178", - "measuredW": "280", - "measuredH": "44", - "w": "280", - "h": "44", - "x": "185", - "y": "2059", - "properties": { - "controlName": "106-javascript-expressions-and-operators:string-operators" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "270", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "128", - "measuredH": "25", - "x": "81", - "y": "9", - "properties": { - "size": "17", - "text": "String Operators" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6649", - "typeID": "__group__", - "zOrder": "179", - "measuredW": "280", - "measuredH": "44", - "w": "280", - "h": "44", - "x": "185", - "y": "2109", - "properties": { - "controlName": "107-javascript-expressions-and-operators:conditional-operators" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "270", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "170", - "measuredH": "25", - "x": "60", - "y": "9", - "properties": { - "size": "17", - "text": "Conditional Operators" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6650", - "typeID": "__group__", - "zOrder": "180", - "measuredW": "280", - "measuredH": "44", - "w": "280", - "h": "44", - "x": "185", - "y": "2158", - "properties": { - "controlName": "108-javascript-expressions-and-operators:comma-operators" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "270", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "142", - "measuredH": "25", - "x": "74", - "y": "9", - "properties": { - "size": "17", - "text": "Comma Operators" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6651", - "typeID": "__group__", - "zOrder": "181", - "measuredW": "281", - "measuredH": "44", - "w": "281", - "h": "44", - "x": "184", - "y": "2207", - "properties": { - "controlName": "109-javascript-expressions-and-operators:unary-operators" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "270", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "11", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "127", - "measuredH": "25", - "x": "82", - "y": "9", - "properties": { - "size": "17", - "text": "Unary Operators" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6652", - "typeID": "__group__", - "zOrder": "182", - "measuredW": "281", - "measuredH": "44", - "w": "281", - "h": "44", - "x": "184", - "y": "2256", - "properties": { - "controlName": "110-javascript-expressions-and-operators:relational-operators" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "270", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "11", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "160", - "measuredH": "25", - "x": "66", - "y": "9", - "properties": { - "size": "17", - "text": "Relational Operators" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6653", - "typeID": "__group__", - "zOrder": "183", - "measuredW": "197", - "measuredH": "50", - "w": "197", - "h": "50", - "x": "562", - "y": "1688", - "properties": { - "controlName": "109-javascript-functions" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "186", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "75", - "measuredH": "25", - "x": "55", - "y": "12", - "properties": { - "size": "17", - "text": "Functions" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "173", - "y": "13", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6654", - "typeID": "__group__", - "zOrder": "184", - "measuredW": "287", - "measuredH": "44", - "w": "287", - "h": "44", - "x": "622", - "y": "1608", - "properties": { - "controlName": "100-javascript-functions:defining-calling-functions" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "277", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "234", - "measuredH": "25", - "x": "22", - "y": "9", - "properties": { - "size": "17", - "text": "Defining and Calling Functions" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "263", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6655", - "typeID": "__group__", - "zOrder": "185", - "measuredW": "236", - "measuredH": "44", - "w": "236", - "h": "44", - "x": "813", - "y": "1691", - "properties": { - "controlName": "101-javascript-functions:function-parameters" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "226", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "160", - "measuredH": "25", - "x": "33", - "y": "9", - "properties": { - "size": "17", - "text": "Function Parameters" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "212", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6656", - "typeID": "__group__", - "zOrder": "186", - "measuredW": "171", - "measuredH": "44", - "w": "171", - "h": "44", - "x": "1087", - "y": "1691", - "properties": { - "controlName": "100-javascript-functions:function-parameters:default-params" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "162", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "118", - "measuredH": "25", - "x": "22", - "y": "9", - "properties": { - "size": "17", - "text": "Default Params" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "147", - "y": "11", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6657", - "typeID": "__group__", - "zOrder": "187", - "measuredW": "171", - "measuredH": "44", - "w": "171", - "h": "44", - "x": "1087", - "y": "1740", - "properties": { - "controlName": "101-javascript-functions:function-parameters:rest-params" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "162", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "98", - "measuredH": "25", - "x": "32", - "y": "9", - "properties": { - "size": "17", - "text": "Rest Params" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "147", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6658", - "typeID": "__group__", - "zOrder": "188", - "measuredW": "236", - "measuredH": "44", - "w": "236", - "h": "44", - "x": "813", - "y": "1741", - "properties": { - "controlName": "102-javascript-functions:arrow-functions" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "226", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "123", - "measuredH": "25", - "x": "51", - "y": "9", - "properties": { - "size": "17", - "text": "Arrow Functions" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "212", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6659", - "typeID": "__group__", - "zOrder": "189", - "measuredW": "236", - "measuredH": "44", - "w": "236", - "h": "44", - "x": "813", - "y": "1792", - "properties": { - "controlName": "103-javascript-functions:iifes" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "226", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "41", - "measuredH": "25", - "x": "92", - "y": "9", - "properties": { - "size": "17", - "text": "IIFEs" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "212", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6660", - "typeID": "__group__", - "zOrder": "190", - "measuredW": "235", - "measuredH": "44", - "w": "235", - "h": "44", - "x": "814", - "y": "1892", - "properties": { - "controlName": "105-javascript-functions:scope-and-function-stack" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "226", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "183", - "measuredH": "25", - "x": "21", - "y": "9", - "properties": { - "size": "17", - "text": "Scope & Function Stack" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "211", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6661", - "typeID": "__group__", - "zOrder": "191", - "measuredW": "178", - "measuredH": "44", - "w": "178", - "h": "44", - "x": "1080", - "y": "1844", - "properties": { - "controlName": "100-javascript-functions:scope-and-function-stack:recursion" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "170", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "79", - "measuredH": "25", - "x": "45", - "y": "9", - "properties": { - "size": "17", - "text": "Recursion" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "154", - "y": "8", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6662", - "typeID": "__group__", - "zOrder": "192", - "measuredW": "178", - "measuredH": "44", - "w": "178", - "h": "44", - "x": "1080", - "y": "1894", - "properties": { - "controlName": "101-javascript-functions:scope-and-function-stack:lexical-scoping" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "170", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "120", - "measuredH": "25", - "x": "25", - "y": "9", - "properties": { - "size": "17", - "text": "Lexical Scoping" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "154", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6663", - "typeID": "__group__", - "zOrder": "193", - "measuredW": "178", - "measuredH": "44", - "w": "178", - "h": "44", - "x": "1080", - "y": "1944", - "properties": { - "controlName": "102-javascript-functions:scope-and-function-stack:closures" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "170", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "68", - "measuredH": "25", - "x": "51", - "y": "9", - "properties": { - "size": "17", - "text": "Closures" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "154", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6664", - "typeID": "__group__", - "zOrder": "194", - "measuredW": "236", - "measuredH": "44", - "w": "236", - "h": "44", - "x": "813", - "y": "1841", - "properties": { - "controlName": "104-javascript-functions:arguments-object" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "226", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "w": "134", - "measuredW": "134", - "measuredH": "25", - "x": "46", - "y": "9", - "properties": { - "size": "17", - "text": "arguments object" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "212", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6665", - "typeID": "__group__", - "zOrder": "195", - "measuredW": "235", - "measuredH": "44", - "w": "235", - "h": "44", - "x": "814", - "y": "1944", - "properties": { - "controlName": "106-javascript-functions:built-in-functions" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "226", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "134", - "measuredH": "25", - "x": "46", - "y": "9", - "properties": { - "size": "17", - "text": "Built-in Functions" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "211", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6666", - "typeID": "__group__", - "zOrder": "196", - "measuredW": "181", - "measuredH": "44", - "w": "181", - "h": "44", - "x": "1077", - "y": "2010", - "properties": { - "controlName": "101-javascript-this-keyword:this-in-a-method" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "172", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "91", - "measuredH": "25", - "x": "40", - "y": "9", - "properties": { - "size": "17", - "text": "in a method" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "157", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6667", - "typeID": "__group__", - "zOrder": "197", - "measuredW": "181", - "measuredH": "44", - "w": "181", - "h": "44", - "x": "1077", - "y": "2060", - "properties": { - "controlName": "102-javascript-this-keyword:this-in-a-function" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "172", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "94", - "measuredH": "25", - "x": "39", - "y": "9", - "properties": { - "size": "17", - "text": "in a function" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "157", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6668", - "typeID": "__group__", - "zOrder": "198", - "measuredW": "188", - "measuredH": "50", - "w": "188", - "h": "50", - "x": "565", - "y": "1945", - "properties": { - "controlName": "110-javascript-strict-mode" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "180", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "89", - "measuredH": "25", - "x": "45", - "y": "13", - "properties": { - "size": "17", - "text": "Strict Mode" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "164", - "y": "12", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6669", - "typeID": "__group__", - "zOrder": "199", - "measuredW": "263", - "measuredH": "50", - "w": "263", - "h": "50", - "x": "759", - "y": "2085", - "properties": { - "controlName": "111-javascript-this-keyword" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "253", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "202", - "measuredH": "25", - "x": "26", - "y": "12", - "properties": { - "size": "17", - "text": "Using (this) keyword ____" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "239", - "y": "12", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6670", - "typeID": "__group__", - "zOrder": "200", - "measuredW": "181", - "measuredH": "44", - "w": "181", - "h": "44", - "x": "1077", - "y": "2109", - "properties": { - "controlName": "103-javascript-this-keyword:using-this-alone" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "172", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "103", - "measuredH": "25", - "x": "34", - "y": "9", - "properties": { - "size": "17", - "text": "using it alone" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "157", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6671", - "typeID": "__group__", - "zOrder": "201", - "measuredW": "182", - "measuredH": "44", - "w": "182", - "h": "44", - "x": "1076", - "y": "2158", - "properties": { - "controlName": "104-javascript-this-keyword:this-in-event-handlers" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "173", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "133", - "measuredH": "25", - "x": "16", - "y": "9", - "properties": { - "size": "17", - "text": "in event handlers" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "158", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6672", - "typeID": "__group__", - "zOrder": "202", - "measuredW": "183", - "measuredH": "44", - "w": "183", - "h": "44", - "x": "1075", - "y": "2207", - "properties": { - "controlName": "105-javascript-this-keyword:this-in-arrow-functions" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "176", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "136", - "measuredH": "25", - "x": "15", - "y": "9", - "properties": { - "size": "17", - "text": "in arrow functions" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "159", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6673", - "typeID": "__group__", - "zOrder": "203", - "measuredW": "199", - "measuredH": "44", - "w": "199", - "h": "44", - "x": "825", - "y": "2011", - "properties": { - "controlName": "100-javascript-this-keyword:function-borrowing" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "188", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "149", - "measuredH": "25", - "x": "19", - "y": "9", - "properties": { - "size": "17", - "text": "Function Borrowing" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "175", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6674", - "typeID": "__group__", - "zOrder": "204", - "measuredW": "282", - "measuredH": "50", - "w": "282", - "h": "50", - "x": "477", - "y": "2344", - "properties": { - "controlName": "112-javascript-asynchronous-javascript" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "274", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "191", - "measuredH": "25", - "x": "40", - "y": "12", - "properties": { - "size": "17", - "text": "Asynchronous JavaScript" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "258", - "y": "12", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6675", - "typeID": "__group__", - "zOrder": "205", - "measuredW": "180", - "measuredH": "44", - "w": "180", - "h": "44", - "x": "184", - "y": "2322", - "properties": { - "controlName": "101-javascript-asynchronous-javascript:set-timeout" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "169", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "11", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "86", - "measuredH": "25", - "x": "53", - "y": "9", - "properties": { - "size": "17", - "text": "setTimeout" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6676", - "typeID": "__group__", - "zOrder": "206", - "measuredW": "180", - "measuredH": "44", - "w": "180", - "h": "44", - "x": "184", - "y": "2372", - "properties": { - "controlName": "102-javascript-asynchronous-javascript:set-interval" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "169", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "11", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "82", - "measuredH": "25", - "x": "55", - "y": "9", - "properties": { - "size": "17", - "text": "setInterval" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6677", - "typeID": "__group__", - "zOrder": "207", - "measuredW": "133", - "measuredH": "44", - "w": "133", - "h": "44", - "x": "819", - "y": "2324", - "properties": { - "controlName": "103-javascript-asynchronous-javascript:callbacks" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "125", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "75", - "measuredH": "25", - "x": "26", - "y": "9", - "properties": { - "size": "17", - "text": "Callbacks" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "109", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6678", - "typeID": "__group__", - "zOrder": "208", - "measuredW": "133", - "measuredH": "44", - "w": "133", - "h": "44", - "x": "819", - "y": "2376", - "properties": { - "controlName": "104-javascript-asynchronous-javascript:promises" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "125", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "72", - "measuredH": "25", - "x": "26", - "y": "9", - "properties": { - "size": "17", - "text": "Promises" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "109", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6679", - "typeID": "__group__", - "zOrder": "209", - "measuredW": "168", - "measuredH": "44", - "w": "168", - "h": "44", - "x": "993", - "y": "2378", - "properties": { - "controlName": "100-javascript-asynchronous-javascript:promises:async-await" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "158", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "102", - "measuredH": "25", - "x": "28", - "y": "9", - "properties": { - "size": "17", - "text": "async / await" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "144", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6680", - "typeID": "__group__", - "zOrder": "210", - "measuredW": "168", - "measuredH": "44", - "w": "168", - "h": "44", - "x": "993", - "y": "2324", - "properties": { - "controlName": "100-javascript-asynchronous-javascript:callbacks:callback-hell" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "158", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "101", - "measuredH": "25", - "x": "28", - "y": "9", - "properties": { - "size": "17", - "text": "Callback Hell" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "144", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6681", - "typeID": "__group__", - "zOrder": "211", - "measuredW": "265", - "measuredH": "50", - "w": "265", - "h": "50", - "x": "993", - "y": "2516", - "properties": { - "controlName": "113-javascript-classes" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "255", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "61", - "measuredH": "25", - "x": "97", - "y": "12", - "properties": { - "size": "17", - "text": "Classes" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "241", - "y": "13", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6682", - "typeID": "__group__", - "zOrder": "212", - "measuredW": "283", - "measuredH": "50", - "w": "283", - "h": "50", - "x": "468", - "y": "2516", - "properties": { - "controlName": "114-javascript-iterators-and-generators" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "274", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "9", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "191", - "measuredH": "25", - "x": "50", - "y": "12", - "properties": { - "size": "17", - "text": "Iterators and Generators" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "13", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6683", - "typeID": "__group__", - "zOrder": "213", - "measuredW": "283", - "measuredH": "50", - "w": "283", - "h": "50", - "x": "477", - "y": "2571", - "properties": { - "controlName": "115-javascript-modules" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "274", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "168", - "measuredH": "25", - "x": "53", - "y": "12", - "properties": { - "size": "17", - "text": "Modules in JavaScript" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "259", - "y": "13", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6684", - "typeID": "__group__", - "zOrder": "214", - "measuredW": "225", - "measuredH": "44", - "w": "225", - "h": "44", - "x": "185", - "y": "2549", - "properties": { - "controlName": "100-javascript-modules:commonjs" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "213", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "12", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "89", - "measuredH": "25", - "x": "74", - "y": "9", - "properties": { - "size": "17", - "text": "CommonJS" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6685", - "typeID": "__group__", - "zOrder": "215", - "measuredW": "224", - "measuredH": "44", - "w": "224", - "h": "44", - "x": "186", - "y": "2599", - "properties": { - "controlName": "101-javascript-modules:esm" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "213", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "11", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "163", - "measuredH": "25", - "x": "36", - "y": "9", - "properties": { - "size": "17", - "text": "ECMAScript Modules" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6686", - "typeID": "__group__", - "zOrder": "216", - "measuredW": "283", - "measuredH": "50", - "w": "283", - "h": "50", - "x": "468", - "y": "2627", - "properties": { - "controlName": "116-javascript-memory-management" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "274", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "9", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "169", - "measuredH": "25", - "x": "61", - "y": "12", - "properties": { - "size": "17", - "text": "Memory Management" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "12", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6687", - "typeID": "__group__", - "zOrder": "217", - "measuredW": "251", - "measuredH": "44", - "w": "251", - "h": "44", - "x": "826", - "y": "2605", - "properties": { - "controlName": "100-javascript-memory-management:memory-lifecycle" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "241", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "134", - "measuredH": "25", - "x": "54", - "y": "9", - "properties": { - "size": "17", - "text": "Memory Lifecycle" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "227", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6688", - "typeID": "__group__", - "zOrder": "218", - "measuredW": "251", - "measuredH": "44", - "w": "251", - "h": "44", - "x": "826", - "y": "2655", - "properties": { - "controlName": "101-javascript-memory-management:garbage-collection" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "241", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "149", - "measuredH": "25", - "x": "46", - "y": "9", - "properties": { - "size": "17", - "text": "Garbage Collection" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "227", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6689", - "typeID": "__group__", - "zOrder": "219", - "measuredW": "282", - "measuredH": "50", - "w": "282", - "h": "50", - "x": "459", - "y": "2780", - "properties": { - "controlName": "117-javascript-chrome-dev-tools" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "274", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "8", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "189", - "measuredH": "25", - "x": "50", - "y": "12", - "properties": { - "size": "17", - "text": "Using Chrome Dev Tools" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "13", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6690", - "typeID": "__group__", - "zOrder": "220", - "measuredW": "249", - "measuredH": "44", - "w": "249", - "h": "44", - "x": "828", - "y": "2734", - "properties": { - "controlName": "100-javascript-chrome-dev-tools:debugging-issues" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "239", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "139", - "measuredH": "25", - "x": "50", - "y": "9", - "properties": { - "size": "17", - "text": "Debugging Issues" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "225", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6691", - "typeID": "__group__", - "zOrder": "221", - "measuredW": "249", - "measuredH": "44", - "w": "249", - "h": "44", - "x": "828", - "y": "2783", - "properties": { - "controlName": "101-javascript-chrome-dev-tools:debugging-memory-leaks" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "239", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "201", - "measuredH": "25", - "x": "19", - "y": "9", - "properties": { - "size": "17", - "text": "Debugging Memory Leaks" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "225", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6692", - "typeID": "__group__", - "zOrder": "222", - "measuredW": "249", - "measuredH": "44", - "w": "249", - "h": "44", - "x": "828", - "y": "2832", - "properties": { - "controlName": "102-javascript-chrome-dev-tools:debugging-performance" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "239", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "188", - "measuredH": "25", - "x": "26", - "y": "9", - "properties": { - "size": "17", - "text": "Debugging Performance" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "225", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6693", - "typeID": "TextArea", - "zOrder": "223", - "w": "552", - "h": "124", - "measuredW": "200", - "measuredH": "140", - "x": "336", - "y": "2934" - }, - { - "ID": "6694", - "typeID": "Label", - "zOrder": "224", - "measuredW": "495", - "measuredH": "25", - "x": "365", - "y": "2954", - "properties": { - "size": "17", - "text": "For ecosystem and more, check other tracks involving JavaScript" - } - }, - { - "ID": "6695", - "typeID": "__group__", - "zOrder": "225", - "measuredW": "229", - "measuredH": "44", - "w": "229", - "h": "44", - "x": "631", - "y": "2989", - "properties": { - "controlName": "ext_link:roadmap.sh/backend" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "229", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "147", - "measuredH": "25", - "x": "41", - "y": "9", - "properties": { - "size": "17", - "text": "Backend Roadmap" - } - } - ] - } - } - }, - { - "ID": "6696", - "typeID": "__group__", - "zOrder": "226", - "measuredW": "252", - "measuredH": "44", - "w": "252", - "h": "44", - "x": "365", - "y": "2989", - "properties": { - "controlName": "ext_link:roadmap.sh/frontend" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "252", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "149", - "measuredH": "25", - "x": "51", - "y": "9", - "properties": { - "size": "17", - "text": "Frontend Roadmap" - } - } - ] - } - } - }, - { - "ID": "6697", - "typeID": "__group__", - "zOrder": "227", - "measuredW": "282", - "measuredH": "50", - "w": "282", - "h": "50", - "x": "481", - "y": "2408", - "properties": { - "controlName": "118-working-with-apis" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "276", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "136", - "measuredH": "25", - "x": "70", - "y": "12", - "properties": { - "size": "17", - "text": "Working with APIs" - } - }, - { - "ID": "3", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "258", - "y": "12", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6698", - "typeID": "__group__", - "zOrder": "228", - "measuredW": "195", - "measuredH": "44", - "w": "195", - "h": "44", - "x": "185", - "y": "2432", - "properties": { - "controlName": "100-working-with-apis:xml-http-request" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "184", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "11", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "143", - "measuredH": "25", - "x": "31", - "y": "9", - "properties": { - "size": "17", - "text": "XMLHTTPRequest" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6699", - "typeID": "__group__", - "zOrder": "229", - "measuredW": "195", - "measuredH": "44", - "w": "195", - "h": "44", - "x": "185", - "y": "2482", - "properties": { - "controlName": "101-working-with-apis:fetch" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "184", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "11", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "44", - "measuredH": "25", - "x": "81", - "y": "9", - "properties": { - "size": "17", - "text": "Fetch" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6700", - "typeID": "__group__", - "zOrder": "116", - "measuredW": "350", - "measuredH": "141", - "w": "350", - "h": "141", - "x": "924", - "y": "184", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "350", - "h": "141", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "314", - "measuredH": "25", - "x": "14", - "y": "17", - "properties": { - "size": "17", - "text": "Find the detailed version of this roadmap" - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "319", - "measuredH": "25", - "x": "14", - "y": "45", - "properties": { - "size": "17", - "text": "along with resources and other roadmaps" - } - }, - { - "ID": "3", - "typeID": "__group__", - "zOrder": "3", - "measuredW": "320", - "measuredH": "45", - "w": "320", - "h": "45", - "x": "15", - "y": "81", - "properties": { - "controlName": "ext_link:roadmap.sh" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "320", - "h": "45", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "borderColor": "4273622", - "color": "4273622" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "105", - "measuredH": "28", - "x": "141", - "y": "8", - "properties": { - "color": "16777215", - "size": "20", - "text": "roadmap.sh" - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "45", - "measuredH": "28", - "x": "65", - "y": "8", - "properties": { - "color": "16777215", - "size": "20", - "text": "https" - } - }, - { - "ID": "3", - "typeID": "Label", - "zOrder": "3", - "measuredW": "5", - "measuredH": "28", - "x": "113", - "y": "8", - "properties": { - "color": "16777215", - "size": "20", - "text": ":" - } - }, - { - "ID": "4", - "typeID": "Label", - "zOrder": "4", - "measuredW": "10", - "measuredH": "28", - "x": "120", - "y": "9", - "properties": { - "color": "16777215", - "size": "20", - "text": "/" - } - }, - { - "ID": "5", - "typeID": "Label", - "zOrder": "5", - "measuredW": "10", - "measuredH": "28", - "x": "128", - "y": "9", - "properties": { - "color": "16777215", - "size": "20", - "text": "/" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6701", - "typeID": "__group__", - "zOrder": "120", - "measuredW": "491", - "measuredH": "136", - "w": "491", - "h": "136", - "x": "106", - "y": "187", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "__group__", - "zOrder": "0", - "measuredW": "491", - "measuredH": "136", - "w": "491", - "h": "136", - "x": "0", - "y": "0", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "491", - "h": "136", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "3", - "typeID": "Label", - "zOrder": "2", - "measuredW": "244", - "measuredH": "24", - "x": "59", - "y": "21", - "properties": { - "size": "16", - "text": "Beginner Topics / start with these" - } - }, - { - "ID": "6", - "typeID": "Label", - "zOrder": "3", - "measuredW": "394", - "measuredH": "24", - "x": "60", - "y": "86", - "properties": { - "size": "16", - "text": "Advanced Topics / pick these after intermediate topics" - } - }, - { - "ID": "9", - "typeID": "Label", - "zOrder": "5", - "measuredW": "385", - "measuredH": "24", - "x": "59", - "y": "54", - "properties": { - "size": "16", - "text": "Intermediate Topics / pick them after beginner topics" - } - }, - { - "ID": "13", - "typeID": "__group__", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "23", - "y": "21", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - }, - { - "ID": "14", - "typeID": "__group__", - "zOrder": "6", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "23", - "y": "53", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - }, - { - "ID": "15", - "typeID": "__group__", - "zOrder": "4", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "23", - "y": "86", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } - } - ] - } - } + { + "id": "iRlgVcCk54BVDA-Rx0kt8", + "label": "Advanced Topics / pick these at last", + "color": "#000" + } + ] + }, + "zIndex": 999, + "width": 348, + "height": 124, + "positionAbsolute": { + "x": -522.3080206821377, + "y": -232.76957062917046 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "6khAD6mzZ9S96JJuC5_j6", + "type": "topic", + "position": { + "x": -126.95968546864998, + "y": 75.2304293708296 + }, + "selected": false, + "data": { + "label": "Introduction to JavaScript", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + }, + "oldId": "ADarwihuI2nBq1C3U7-Zr" + }, + "zIndex": 999, + "width": 243, + "height": 49, + "style": { + "width": 243, + "height": 49 + }, + "positionAbsolute": { + "x": -126.95968546864998, + "y": 75.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "UBB-8hUcwo4Mfd0cmEcdA", + "type": "subtopic", + "position": { + "x": -465.4974907322696, + "y": 4.230429370829597 + }, + "selected": false, + "data": { + "label": "What is JavaScript", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 216, + "height": 49, + "style": { + "width": 216 + }, + "positionAbsolute": { + "x": -465.4974907322696, + "y": 4.230429370829597 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "l-GKzcsBNA0r6Jax8hwnP", + "type": "subtopic", + "position": { + "x": -465.4974907322696, + "y": 57.2304293708296 + }, + "selected": false, + "data": { + "label": "History of JavaScript", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 216, + "height": 49, + "style": { + "width": 216 + }, + "positionAbsolute": { + "x": -465.4974907322696, + "y": 57.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "SFPsWnVpZBAw3_re7op4h", + "type": "subtopic", + "position": { + "x": -465.4974907322696, + "y": 110.2304293708296 + }, + "selected": false, + "data": { + "label": "JavaScript Versions", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 216, + "height": 49, + "style": { + "width": 216 + }, + "positionAbsolute": { + "x": -465.4974907322696, + "y": 110.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "uXsWIUUxtc4H_iRx3uZv0", + "type": "subtopic", + "position": { + "x": -465.4974907322696, + "y": 163.2304293708296 + }, + "selected": false, + "data": { + "label": "How to run JavaScript", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 216, + "height": 49, + "style": { + "width": 216, + "height": 49 + }, + "positionAbsolute": { + "x": -465.4974907322696, + "y": 163.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "BqbAWt--Guqex-rrb4ZUv", + "type": "subtopic", + "position": { + "x": 245.50250926773037, + "y": 43.2304293708296 + }, + "selected": false, + "data": { + "label": "Variable Declarations", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 241, + "height": 49, + "style": { + "width": 241, + "height": 49 + }, + "positionAbsolute": { + "x": 245.50250926773037, + "y": 43.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Lb5jLF91WO5V5CWpifciW", + "type": "subtopic", + "position": { + "x": 245.50250926773037, + "y": 96.2304293708296 + }, + "selected": false, + "data": { + "label": "Hoisting", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 241, + "height": 49, + "style": { + "width": 241, + "height": 49 + }, + "positionAbsolute": { + "x": 245.50250926773037, + "y": 96.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "HfieG3v3wnmpZDfNwEJvZ", + "type": "subtopic", + "position": { + "x": 245.50250926773037, + "y": 149.2304293708296 + }, + "selected": false, + "data": { + "label": "Variable Naming Rules", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 241, + "height": 49, + "style": { + "width": 241, + "height": 49 + }, + "positionAbsolute": { + "x": 245.50250926773037, + "y": 149.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "7iMJuaB7yKlSIbT4dBe5L", + "type": "subtopic", + "position": { + "x": 245.50250926773037, + "y": 202.2304293708296 + }, + "selected": false, + "data": { + "label": "Variable Scopes", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 241, + "height": 49, + "style": { + "width": 241, + "height": 49 + }, + "positionAbsolute": { + "x": 245.50250926773037, + "y": 202.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "JSjeM8qnBg4onXq9mn5gB", + "type": "subtopic", + "position": { + "x": 242.50250926773037, + "y": -28.769570629170403 + }, + "selected": false, + "data": { + "label": "var", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 75, + "height": 49, + "style": { + "width": 75, + "height": 49 + }, + "positionAbsolute": { + "x": 242.50250926773037, + "y": -28.769570629170403 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "kDRa9G3pMp0Cb0mqYUawM", + "type": "subtopic", + "position": { + "x": 323.5025092677304, + "y": -28.769570629170403 + }, + "selected": false, + "data": { + "label": "let", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 70, + "height": 49, + "style": { + "width": 70, + "height": 49 + }, + "positionAbsolute": { + "x": 323.5025092677304, + "y": -28.769570629170403 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "q85z6x1Lc-yLWepwtIT2_", + "type": "subtopic", + "position": { + "x": 399.5025092677304, + "y": -28.769570629170403 + }, + "selected": false, + "data": { + "label": "const", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 87, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 399.5025092677304, + "y": -28.769570629170403 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "uqEzHYx13Y2EpvTTRzykn", + "type": "subtopic", + "position": { + "x": 245.00250926773037, + "y": 267.7304293708296 + }, + "selected": false, + "data": { + "label": "Block", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 70, + "height": 49, + "style": { + "width": 70, + "height": 49 + }, + "positionAbsolute": { + "x": 245.00250926773037, + "y": 267.7304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "YMT7O6lrMSMtNo0EnmsnQ", + "type": "subtopic", + "position": { + "x": 319.0025092677304, + "y": 267.7304293708296 + }, + "selected": false, + "data": { + "label": "Function", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 90, + "height": 49, + "style": { + "width": 90, + "height": 49 + }, + "positionAbsolute": { + "x": 319.0025092677304, + "y": 267.7304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "oC4o6GLEES_nUgCJu9Q6I", + "type": "subtopic", + "position": { + "x": 413.0025092677304, + "y": 267.7304293708296 + }, + "selected": false, + "data": { + "label": "Global", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 70, + "height": 49, + "style": { + "width": 70, + "height": 49 + }, + "positionAbsolute": { + "x": 413.0025092677304, + "y": 267.7304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "kvActjpU4FUJdrmuFoFEe", + "type": "topic", + "position": { + "x": -126.95968546864998, + "y": 129.2304293708296 + }, + "selected": false, + "data": { + "label": "All about Variables", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + }, + "oldId": "ADarwihuI2nBq1C3U7-Zr" + }, + "zIndex": 999, + "width": 243, + "height": 49, + "style": { + "width": 243, + "height": 49 + }, + "positionAbsolute": { + "x": -126.95968546864998, + "y": 129.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "-jbPPuEXacBR0d0CWPHgd", + "type": "topic", + "position": { + "x": -214.62877362673987, + "y": 400.2304293708296 + }, + "selected": false, + "data": { + "label": "Data Types", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + }, + "oldId": "ADarwihuI2nBq1C3U7-Zr" + }, + "zIndex": 999, + "width": 136, + "height": 49, + "style": { + "width": 136, + "height": 49 + }, + "positionAbsolute": { + "x": -214.62877362673987, + "y": 400.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "1RcwBHU3jzx0YxxUGZic4", + "type": "subtopic", + "position": { + "x": -511.23327447982547, + "y": 303.23042937082954 + }, + "selected": false, + "data": { + "label": "string", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "resizing": false, + "dragging": false, + "positionAbsolute": { + "x": -511.23327447982547, + "y": 303.23042937082954 + }, + "selectable": true, + "focusable": true + }, + { + "id": "ZLs0NKM0lrnOy5ATDhlk0", + "type": "subtopic", + "position": { + "x": -407.4974907322696, + "y": 303.23042937082954 + }, + "selected": false, + "data": { + "label": "undefined", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": -407.4974907322696, + "y": 303.23042937082954 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "GZ_SXsWmP7AsXRTc4WUMw", + "type": "subtopic", + "position": { + "x": -511.23327447982547, + "y": 356.23042937082954 + }, + "selected": false, + "data": { + "label": "number", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": -511.23327447982547, + "y": 356.23042937082954 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "6lUF0neW1piiP1RsaVxEX", + "type": "subtopic", + "position": { + "x": -407.4974907322696, + "y": 356.23042937082954 + }, + "selected": false, + "data": { + "label": "bigint", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "resizing": false, + "dragging": false, + "positionAbsolute": { + "x": -407.4974907322696, + "y": 356.23042937082954 + }, + "selectable": true, + "focusable": true + }, + { + "id": "b1HvkoWA2t4kt8mS6FySm", + "type": "subtopic", + "position": { + "x": -511.23327447982547, + "y": 409.23042937082954 + }, + "selected": false, + "data": { + "label": "boolean", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": -511.23327447982547, + "y": 409.23042937082954 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "CxyNyFMuTLS3owtRMgClD", + "type": "subtopic", + "position": { + "x": -407.4974907322696, + "y": 409.23042937082954 + }, + "selected": false, + "data": { + "label": "null", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": -407.4974907322696, + "y": 409.23042937082954 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "R6ICrk6vjoBxx5nRGo4Jg", + "type": "subtopic", + "position": { + "x": -511.23327447982547, + "y": 462.23042937082954 + }, + "selected": false, + "data": { + "label": "Symbol", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 204, + "height": 49, + "style": { + "width": 204, + "height": 49 + }, + "positionAbsolute": { + "x": -511.23327447982547, + "y": 462.23042937082954 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "AsJveV8cD6YH1VF156K4t", + "type": "label", + "position": { + "x": -474.23327447982547, + "y": 521.7304293708296 + }, + "selected": false, + "data": { + "label": "Primitive Types", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 131, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": -474.23327447982547, + "y": 521.7304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "xe8HZ8Mt1fK8yJMcDPYHJ", + "type": "subtopic", + "position": { + "x": -4.080988474536298, + "y": 375.2304293708296 + }, + "selected": false, + "data": { + "label": "Object", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "RRACLQ6-aopkxImIp3Toc", + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 168, + "height": 49, + "style": { + "width": 168, + "height": 49 + }, + "positionAbsolute": { + "x": -4.080988474536298, + "y": 375.2304293708296 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "0I6dJE0ygXPGjeRAe8AtT", + "type": "subtopic", + "position": { + "x": -2.233274479825468, + "y": 241.73042937082948 + }, + "selected": false, + "data": { + "label": "Object Prototype", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 218, + "height": 49, + "style": { + "width": 218, + "height": 49 + }, + "positionAbsolute": { + "x": -2.233274479825468, + "y": 241.73042937082948 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "Xge6eru1hRGobnOEHLZqv", + "type": "subtopic", + "position": { + "x": -2.233274479825468, + "y": 294.73042937082954 + }, + "selected": false, + "data": { + "label": "Prototypal Inheritance", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 218, + "height": 49, + "style": { + "width": 218, + "height": 49 + }, + "positionAbsolute": { + "x": -2.233274479825468, + "y": 294.73042937082954 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "RRACLQ6-aopkxImIp3Toc", + "type": "subtopic", + "position": { + "x": -4.080988474536298, + "y": 428.2304293708296 + }, + "selected": false, + "data": { + "label": "typeof operator", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 168, + "height": 49, + "style": { + "width": 168, + "height": 49 + }, + "positionAbsolute": { + "x": -4.080988474536298, + "y": 428.2304293708296 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "D95ndkkwmT5X_HqboEn6E", + "type": "subtopic", + "position": { + "x": 247.00250926773037, + "y": 375.2304293708296 + }, + "selected": false, + "data": { + "label": "Built-in Objects", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 162, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 247.00250926773037, + "y": 375.2304293708296 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "XPmBieVCXvL3WbWkYRoKr", + "type": "topic", + "position": { + "x": -126.95968546864998, + "y": 640.2304293708296 + }, + "selected": false, + "data": { + "label": "Type Casting", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + }, + "oldId": "ADarwihuI2nBq1C3U7-Zr" + }, + "zIndex": 999, + "width": 177, + "height": 49, + "style": { + "width": 177, + "height": 49 + }, + "positionAbsolute": { + "x": -126.95968546864998, + "y": 640.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "_Bo2YZqZ_gY35SLPML4T6", + "type": "subtopic", + "position": { + "x": -524.4974907322696, + "y": 587.2304293708296 + }, + "selected": false, + "data": { + "label": "Type Conversion vs Coercion", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 269, + "height": 49, + "style": { + "width": 269 + }, + "positionAbsolute": { + "x": -524.4974907322696, + "y": 587.2304293708296 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "1xhjrRN-Rfekei2JwwU7Y", + "type": "subtopic", + "position": { + "x": -524.4974907322696, + "y": 693.2304293708296 + }, + "selected": false, + "data": { + "label": "Explicit Type Casting", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 269, + "height": 49, + "style": { + "width": 269, + "height": 49 + }, + "positionAbsolute": { + "x": -524.4974907322696, + "y": 693.2304293708296 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "pP42K_eH4RCdUdUS8BJlP", + "type": "subtopic", + "position": { + "x": -524.4974907322696, + "y": 640.2304293708296 + }, + "selected": false, + "data": { + "label": "Implicit Type Casting", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 269, + "height": 49, + "style": { + "width": 269 + }, + "positionAbsolute": { + "x": -524.4974907322696, + "y": 640.2304293708296 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "ADarwihuI2nBq1C3U7-Zr", + "type": "topic", + "position": { + "x": 141.50250926773037, + "y": 640.2304293708296 + }, + "selected": false, + "data": { + "label": "Data Structures", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 171, + "height": 49, + "style": { + "width": 171, + "height": 49 + }, + "positionAbsolute": { + "x": 141.50250926773037, + "y": 640.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "rhJrrqkRqy2Qw_he4SPGz", + "type": "subtopic", + "position": { + "x": 128.50250926773037, + "y": 564.7304293708296 + }, + "selected": false, + "data": { + "label": "Keyed Collections", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 197, + "height": 49, + "style": { + "width": 197, + "height": 49 + }, + "positionAbsolute": { + "x": 128.50250926773037, + "y": 564.7304293708296 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "Xc0jL4rafpI-ixIaAxo9O", + "type": "subtopic", + "position": { + "x": 405.1719904951085, + "y": 457.7304293708296 + }, + "selected": false, + "data": { + "label": "Map", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 127, + "height": 49, + "style": { + "width": 127, + "height": 49 + }, + "positionAbsolute": { + "x": 405.1719904951085, + "y": 457.7304293708296 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "6icsjC4aisDgPWasVuCOt", + "type": "subtopic", + "position": { + "x": 405.1719904951085, + "y": 510.7304293708296 + }, + "selected": false, + "data": { + "label": "Weak Map", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 127, + "height": 49, + "style": { + "width": 127, + "height": 49 + }, + "positionAbsolute": { + "x": 405.1719904951085, + "y": 510.7304293708296 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "sciU68E13mcfL577y6Vim", + "type": "subtopic", + "position": { + "x": 405.1719904951085, + "y": 563.7304293708296 + }, + "selected": false, + "data": { + "label": "Set", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "right-center" } - ] - }, - "attributes": { - "name": "New Wireframe 1 copy", - "order": 1000010.2336643032, - "parentID": null, - "notes": "" - }, - "branchID": "Master", - "resourceID": "D5E1AC09-3023-4145-A52A-4D904363A065", - "mockupH": "2958", - "mockupW": "1168", - "measuredW": "1274", - "measuredH": "3142", - "version": "1.0" - }, - "groupOffset": { - "x": 0, - "y": 0 - }, - "dependencies": [], - "projectID": "file:///Users/kamrify/Desktop/New%20Roadmaps/New%20Project%201.bmpr" + }, + "zIndex": 999, + "width": 127, + "height": 49, + "style": { + "width": 127, + "height": 49 + }, + "positionAbsolute": { + "x": 405.1719904951085, + "y": 563.7304293708296 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "DSFzj61N9ojz29mjExhVa", + "type": "subtopic", + "position": { + "x": 405.1719904951085, + "y": 616.7304293708296 + }, + "selected": false, + "data": { + "label": "Weak Set", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 127, + "height": 49, + "style": { + "width": 127, + "height": 49 + }, + "positionAbsolute": { + "x": 405.1719904951085, + "y": 616.7304293708296 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "lBOGoHZrmnIRatvryDwTm", + "type": "subtopic", + "position": { + "x": 128.50250926773037, + "y": 742.2304293708296 + }, + "selected": false, + "data": { + "label": "Indexed Collections", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 197, + "height": 49, + "style": { + "width": 197, + "height": 49 + }, + "positionAbsolute": { + "x": 128.50250926773037, + "y": 742.2304293708296 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "8X1mdQ3NDBVOZZWBbAFRE", + "type": "subtopic", + "position": { + "x": 389.171875, + "y": 713.063720703125 + }, + "selected": false, + "data": { + "label": "Typed Arrays", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 144, + "height": 49, + "style": { + "width": 144 + }, + "positionAbsolute": { + "x": 389.171875, + "y": 713.063720703125 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "NZedBxG9B9TRVOf2QE2yL", + "type": "subtopic", + "position": { + "x": 389.171875, + "y": 766.063720703125 + }, + "selected": false, + "data": { + "label": "Arrays", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 144, + "height": 49, + "style": { + "width": 144 + }, + "positionAbsolute": { + "x": 389.171875, + "y": 766.063720703125 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "JwLGAuSOTyZ5BHSqeBDU6", + "type": "subtopic", + "position": { + "x": 129.50250926773037, + "y": 510.7304293708296 + }, + "selected": false, + "data": { + "label": "Structured Data", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 195, + "height": 49, + "style": { + "width": 195, + "height": 49 + }, + "positionAbsolute": { + "x": 129.50250926773037, + "y": 510.7304293708296 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "bFNvtHp97OzKnPJgr7WaH", + "type": "subtopic", + "position": { + "x": 255.50250926773037, + "y": 439.2304293708296 + }, + "selected": false, + "data": { + "label": "JSON", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 70, + "height": 49, + "style": { + "width": 70, + "height": 49 + }, + "positionAbsolute": { + "x": 255.50250926773037, + "y": 439.2304293708296 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "23Xa6q5VvRVlzc6Dx8vST", + "type": "topic", + "position": { + "x": -212.7816601458129, + "y": 794.563720703125 + }, + "selected": false, + "data": { + "label": "Equality Comparisons", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + }, + "oldId": "YD-2l_amfqqqCdtc_Zdzo" + }, + "zIndex": 999, + "width": 211, + "height": 49, + "style": { + "width": 211, + "height": 49 + }, + "positionAbsolute": { + "x": -212.7816601458129, + "y": 794.563720703125 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "RonBj1htt6jnBt3W7zoTA", + "type": "subtopic", + "position": { + "x": -510.828125, + "y": 781.063720703125 + }, + "selected": false, + "data": { + "label": "==", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 60, + "height": 49, + "style": { + "width": 60, + "height": 49 + }, + "dragging": false, + "focusable": true, + "positionAbsolute": { + "x": -510.828125, + "y": 781.063720703125 + }, + "selectable": true, + "resizing": false + }, + { + "id": "lJwcc6JoUIQoiQ6FkV2KW", + "type": "subtopic", + "position": { + "x": -446.828125, + "y": 781.063720703125 + }, + "selected": false, + "data": { + "label": "===", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 60, + "height": 49, + "style": { + "width": 60, + "height": 49 + }, + "positionAbsolute": { + "x": -446.828125, + "y": 781.063720703125 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "ATma3bLKdmWY_WTsPIKxh", + "type": "subtopic", + "position": { + "x": -382.828125, + "y": 781.063720703125 + }, + "selected": false, + "data": { + "label": "Object.is", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 111, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -382.828125, + "y": 781.063720703125 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "w_jxbePkFlj8DO1erTIzf", + "type": "label", + "position": { + "x": -514.2332744798255, + "y": 832.063720703125 + }, + "selected": false, + "data": { + "label": "Value Comparison Operators", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 238, + "height": 36, + "style": {}, + "dragging": false, + "positionAbsolute": { + "x": -514.2332744798255, + "y": 832.063720703125 + }, + "focusable": true, + "selectable": true + }, + { + "id": "PLallt_T33W6bUEn0Hc3W", + "type": "subtopic", + "position": { + "x": -200.2816601458129, + "y": 934.063720703125 + }, + "selected": false, + "data": { + "label": "isLooselyEqual", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "iRlgVcCk54BVDA-Rx0kt8", + "label": "Advanced Topics / pick these at last", + "color": "#000", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 186, + "height": 49, + "style": { + "width": 186, + "height": 49 + }, + "positionAbsolute": { + "x": -200.2816601458129, + "y": 934.063720703125 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "pcILon_Jjm2_XS10iUJ0E", + "type": "subtopic", + "position": { + "x": -200.2816601458129, + "y": 987.063720703125 + }, + "selected": false, + "data": { + "label": "isStrictlyEqual", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "iRlgVcCk54BVDA-Rx0kt8", + "label": "Advanced Topics / pick these at last", + "color": "#000", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 186, + "height": 50, + "style": { + "width": 186, + "height": 50 + }, + "positionAbsolute": { + "x": -200.2816601458129, + "y": 987.063720703125 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "fL3B2hkTgMb0oEwMiWJtK", + "type": "subtopic", + "position": { + "x": -200.2816601458129, + "y": 1041.063720703125 + }, + "selected": false, + "data": { + "label": "SameValueZero", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "iRlgVcCk54BVDA-Rx0kt8", + "label": "Advanced Topics / pick these at last", + "color": "#000", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 186, + "height": 50, + "style": { + "width": 186, + "height": 50 + }, + "positionAbsolute": { + "x": -200.2816601458129, + "y": 1041.063720703125 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "Saqi1gQD3ddyJQ9tFIXqz", + "type": "label", + "position": { + "x": -187.7816601458129, + "y": 894.2304293708296 + }, + "selected": false, + "data": { + "label": "Equality Algorithms", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 161, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": -187.7816601458129, + "y": 894.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "YD-2l_amfqqqCdtc_Zdzo", + "type": "topic", + "position": { + "x": 127.55738234743455, + "y": 1013.063720703125 + }, + "selected": false, + "data": { + "label": "Loops and Iterations", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 288, + "height": 49, + "style": { + "width": 288, + "height": 49 + }, + "positionAbsolute": { + "x": 127.55738234743455, + "y": 1013.063720703125 + }, + "dragging": false, + "focusable": true, + "selectable": true, + "resizing": false + }, + { + "id": "2M211rcaPSWbZ-sPoSEVR", + "type": "subtopic", + "position": { + "x": 127.55738234743455, + "y": 826.2304293708296 + }, + "selected": false, + "data": { + "label": "for", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 106, + "height": 49, + "style": { + "width": 106, + "height": 49 + }, + "positionAbsolute": { + "x": 127.55738234743455, + "y": 826.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "57lO_3uxJaWsFXS-0J1AK", + "type": "subtopic", + "position": { + "x": 127.55738234743455, + "y": 879.2304293708296 + }, + "selected": false, + "data": { + "label": "do...while", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 106, + "height": 49, + "style": { + "width": 106, + "height": 49 + }, + "positionAbsolute": { + "x": 127.55738234743455, + "y": 879.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "9-MpHmzK_IiCi6IcvAlGM", + "type": "subtopic", + "position": { + "x": 127.55738234743455, + "y": 932.2304293708296 + }, + "selected": false, + "data": { + "label": "while", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 106, + "height": 49, + "style": { + "width": 106, + "height": 49 + }, + "positionAbsolute": { + "x": 127.55738234743455, + "y": 932.2304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "cq3vvFZoNnAAZJ6oEBUwb", + "type": "subtopic", + "position": { + "x": 239.43263762370384, + "y": 932.9735702358665 + }, + "selected": false, + "data": { + "label": "for...in loop", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 173, + "height": 49, + "style": { + "width": 173, + "height": 49 + }, + "positionAbsolute": { + "x": 239.43263762370384, + "y": 932.9735702358665 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "FBz6h_AmTJBXoBN-a38a5", + "type": "subtopic", + "position": { + "x": 239.43263762370384, + "y": 879.9735702358665 + }, + "selected": false, + "data": { + "label": "for...of loop", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 173, + "height": 49, + "style": { + "width": 173, + "height": 49 + }, + "positionAbsolute": { + "x": 239.43263762370384, + "y": 879.9735702358665 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "4oHFzn7R7xLxfuLpsJjr-", + "type": "subtopic", + "position": { + "x": 239.43263762370384, + "y": 826.9735702358665 + }, + "selected": false, + "data": { + "label": "break / continue", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 173, + "height": 49, + "style": { + "width": 173, + "height": 49 + }, + "positionAbsolute": { + "x": 239.43263762370384, + "y": 826.9735702358665 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "3tckJ2Sci7z-sNx9jx9eF", + "type": "topic", + "position": { + "x": 86.55738234743455, + "y": 1194.2304293708296 + }, + "selected": false, + "data": { + "label": "Control Flow", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-top" + }, + "oldId": "_6vZa43gWjxO2OcD1iCCQ" + }, + "zIndex": 999, + "width": 147, + "height": 49, + "style": { + "width": 147, + "height": 49 + }, + "positionAbsolute": { + "x": 86.55738234743455, + "y": 1194.2304293708296 + }, + "dragging": false, + "focusable": true, + "selectable": true, + "resizing": false + }, + { + "id": "34TKGxV9YziOWMh9rT_KE", + "type": "subtopic", + "position": { + "x": 311.0025092677304, + "y": 1226.3588589383112 + }, + "selected": false, + "data": { + "label": "Exceptional Handling", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 224, + "height": 49, + "style": { + "width": 224, + "height": 49 + }, + "positionAbsolute": { + "x": 311.0025092677304, + "y": 1226.3588589383112 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "ttCsd2_H2SuRivCjGv1OX", + "type": "subtopic", + "position": { + "x": 310.5025092677304, + "y": 1172.3588589383112 + }, + "selected": false, + "data": { + "label": "Conditional Statements", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 225, + "height": 49, + "style": { + "width": 225, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 310.5025092677304, + "y": 1172.3588589383112 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "ndbDXAx6bL4lZmpXv16Y_", + "type": "subtopic", + "position": { + "x": 311.5162275376565, + "y": 1094.9435228468967 + }, + "selected": false, + "data": { + "label": "if...else", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "H_QlcUlavKKfcNK8CYAvb", + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 108, + "height": 49, + "style": { + "width": 108, + "height": 49 + }, + "positionAbsolute": { + "x": 311.5162275376565, + "y": 1094.9435228468967 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "H_QlcUlavKKfcNK8CYAvb", + "type": "subtopic", + "position": { + "x": 429.0448461352869, + "y": 1094.9435228468967 + }, + "selected": false, + "data": { + "label": "Switch", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 103, + "height": 49, + "style": { + "width": 103, + "height": 49 + }, + "positionAbsolute": { + "x": 429.0448461352869, + "y": 1094.9435228468967 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "ReGIniyLYl5hGExchrJd2", + "type": "subtopic", + "position": { + "x": 310.27559437185573, + "y": 1303.7725047650335 + }, + "selected": false, + "data": { + "label": "throw statement", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 224, + "height": 49, + "style": { + "width": 224, + "height": 49 + }, + "positionAbsolute": { + "x": 310.27559437185573, + "y": 1303.7725047650335 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "rbjEZe5vxCJ8reI1oZ-jf", + "type": "subtopic", + "position": { + "x": 310.27559437185573, + "y": 1356.7725047650335 + }, + "selected": false, + "data": { + "label": "try/catch/finally", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 224, + "height": 49, + "style": { + "width": 224, + "height": 49 + }, + "positionAbsolute": { + "x": 310.27559437185573, + "y": 1356.7725047650335 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "-z-4VTaC3tOThqChgyoMs", + "type": "subtopic", + "position": { + "x": 310.27559437185573, + "y": 1409.7725047650335 + }, + "selected": false, + "data": { + "label": "Error Objects", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 224, + "height": 49, + "style": { + "width": 224, + "height": 49 + }, + "positionAbsolute": { + "x": 310.27559437185573, + "y": 1409.7725047650335 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "_6vZa43gWjxO2OcD1iCCQ", + "type": "topic", + "position": { + "x": -204.2816601458129, + "y": 1194.2304293708296 + }, + "selected": false, + "data": { + "label": "Expressions & Operators", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-top" + }, + "oldId": "YD-2l_amfqqqCdtc_Zdzo" + }, + "zIndex": 999, + "width": 236, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -204.2816601458129, + "y": 1194.2304293708296 + }, + "dragging": false, + "focusable": true, + "selectable": true, + "resizing": false + }, + { + "id": "IvBtUzIGnkgGXrJjqmjf4", + "type": "subtopic", + "position": { + "x": -521.6276397705078, + "y": 1142.3694458007812 + }, + "selected": false, + "data": { + "label": "Assignment Operators", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 223, + "height": 49, + "style": { + "width": 223 + }, + "positionAbsolute": { + "x": -521.6276397705078, + "y": 1142.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "-v4_V4UuoZSgUk2sqOCim", + "type": "subtopic", + "position": { + "x": -521.6276397705078, + "y": 1195.3694458007812 + }, + "selected": false, + "data": { + "label": "Comparison Operators", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 223, + "height": 49, + "style": { + "width": 223, + "height": 49 + }, + "positionAbsolute": { + "x": -521.6276397705078, + "y": 1195.3694458007812 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "0PK1NwlgkNe2Vf-We4uLH", + "type": "subtopic", + "position": { + "x": -521.6276397705078, + "y": 1248.3694458007812 + }, + "selected": false, + "data": { + "label": "Arithmetic Operators", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 223, + "height": 49, + "style": { + "width": 223 + }, + "positionAbsolute": { + "x": -521.6276397705078, + "y": 1248.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "ghjNJW67Wj5L5QK46xwL-", + "type": "subtopic", + "position": { + "x": -521.6276397705078, + "y": 1301.3694458007812 + }, + "selected": false, + "data": { + "label": "Bitwise Operators", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 223, + "height": 49, + "style": { + "width": 223 + }, + "positionAbsolute": { + "x": -521.6276397705078, + "y": 1301.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "bo4SvzU4BrPl3c99zW7Y5", + "type": "subtopic", + "position": { + "x": -521.6276397705078, + "y": 1354.3694458007812 + }, + "selected": false, + "data": { + "label": "Logical Operators", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 223, + "height": 49, + "style": { + "width": 223 + }, + "positionAbsolute": { + "x": -521.6276397705078, + "y": 1354.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "udoz0DZi7f-vm30dSnYKu", + "type": "subtopic", + "position": { + "x": -521.6276397705078, + "y": 1407.3694458007812 + }, + "selected": false, + "data": { + "label": "BigInt Operators", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 223, + "height": 49, + "style": { + "width": 223 + }, + "positionAbsolute": { + "x": -521.6276397705078, + "y": 1407.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "c38b6t5f17Zg2O2yg3eFP", + "type": "subtopic", + "position": { + "x": -521.6276397705078, + "y": 1460.3694458007812 + }, + "selected": false, + "data": { + "label": "String Operators", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 223, + "height": 49, + "style": { + "width": 223 + }, + "positionAbsolute": { + "x": -521.6276397705078, + "y": 1460.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "640mk-m5mB90Mme-7jcXV", + "type": "subtopic", + "position": { + "x": -521.6276397705078, + "y": 930.3694458007812 + }, + "selected": false, + "data": { + "label": "Conditional Operators", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 223, + "height": 49, + "style": { + "width": 223 + }, + "positionAbsolute": { + "x": -521.6276397705078, + "y": 930.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "6_8EwyZY2jBkZr7xnfRY3", + "type": "subtopic", + "position": { + "x": -521.6276397705078, + "y": 983.3694458007812 + }, + "selected": false, + "data": { + "label": "Comma Operators", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 223, + "height": 49, + "style": { + "width": 223 + }, + "positionAbsolute": { + "x": -521.6276397705078, + "y": 983.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "k9rSR-YQ8B_iRcXNm2btP", + "type": "subtopic", + "position": { + "x": -521.6276397705078, + "y": 1036.3694458007812 + }, + "selected": false, + "data": { + "label": "Unary Opeartors", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 223, + "height": 49, + "style": { + "width": 223 + }, + "positionAbsolute": { + "x": -521.6276397705078, + "y": 1036.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "BbrrliATuH9beTypRaFey", + "type": "subtopic", + "position": { + "x": -521.6276397705078, + "y": 1089.3694458007812 + }, + "selected": false, + "data": { + "label": "Relational Operators", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 223, + "height": 49, + "style": { + "width": 223 + }, + "positionAbsolute": { + "x": -521.6276397705078, + "y": 1089.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "k8bJH9qydZm8I9rhH7rXw", + "type": "topic", + "position": { + "x": -204.2816601458129, + "y": 1468.3694458007812 + }, + "selected": false, + "data": { + "label": "Functions", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + }, + "oldId": "_6vZa43gWjxO2OcD1iCCQ" + }, + "zIndex": 999, + "width": 134, + "height": 49, + "style": { + "width": 134, + "height": 49 + }, + "positionAbsolute": { + "x": -204.2816601458129, + "y": 1468.3694458007812 + }, + "dragging": false, + "focusable": true, + "selectable": true, + "resizing": false + }, + { + "id": "R1D4fsZliHv7wIo8Tj-kp", + "type": "subtopic", + "position": { + "x": 9.766725520174532, + "y": 1362.3694458007812 + }, + "selected": false, + "data": { + "label": "Function Parameters", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 242, + "height": 49, + "style": { + "width": 242, + "height": 49 + }, + "positionAbsolute": { + "x": 9.766725520174532, + "y": 1362.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "fr0NChxMXLpJizyMhXcXS", + "type": "subtopic", + "position": { + "x": 9.766725520174532, + "y": 1415.3694458007812 + }, + "selected": false, + "data": { + "label": "Arrow Functions", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 242, + "height": 49, + "style": { + "width": 242, + "height": 49 + }, + "positionAbsolute": { + "x": 9.766725520174532, + "y": 1415.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "YZlCoPvZuX5MmpLOTj5d4", + "type": "subtopic", + "position": { + "x": 9.766725520174532, + "y": 1468.3694458007812 + }, + "selected": false, + "data": { + "label": "IIFEs", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 242, + "height": 49, + "style": { + "width": 242, + "height": 49 + }, + "positionAbsolute": { + "x": 9.766725520174532, + "y": 1468.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "QLC7bW-qHskLH2HOA-Sko", + "type": "subtopic", + "position": { + "x": 9.766725520174532, + "y": 1521.3694458007812 + }, + "selected": false, + "data": { + "label": "arguments object", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 242, + "height": 49, + "style": { + "width": 242, + "height": 49 + }, + "positionAbsolute": { + "x": 9.766725520174532, + "y": 1521.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "ISNzEYtrWe2v0R7Xfl5k-", + "type": "subtopic", + "position": { + "x": 9.766725520174532, + "y": 1574.3694458007812 + }, + "selected": false, + "data": { + "label": "Scope & Function Stack", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 242, + "height": 49, + "style": { + "width": 242, + "height": 49 + }, + "positionAbsolute": { + "x": 9.766725520174532, + "y": 1574.3694458007812 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "s8wUJivWmetysJ8bt9FBC", + "type": "subtopic", + "position": { + "x": 9.766725520174532, + "y": 1627.3694458007812 + }, + "selected": false, + "data": { + "label": "Built-in Functions", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 242, + "height": 49, + "style": { + "width": 242, + "height": 49 + }, + "positionAbsolute": { + "x": 9.766725520174532, + "y": 1627.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "8X8mRl-puL0Lp43dO5mha", + "type": "subtopic", + "position": { + "x": 8.766725520174532, + "y": 1286.3694458007812 + }, + "selected": false, + "data": { + "label": "Default Params", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 163, + "height": 49, + "style": { + "width": 163, + "height": 49 + }, + "positionAbsolute": { + "x": 8.766725520174532, + "y": 1286.3694458007812 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "-_6q0bIjQrvAaCWrVkASO", + "type": "subtopic", + "position": { + "x": 174.76672552017453, + "y": 1286.3694458007812 + }, + "selected": false, + "data": { + "label": "Rest", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 75, + "height": 49, + "style": { + "width": 75, + "height": 49 + }, + "positionAbsolute": { + "x": 174.76672552017453, + "y": 1286.3694458007812 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "YJGhhFuWmFvhRKOg6nwON", + "type": "subtopic", + "position": { + "x": 356.3723602294922, + "y": 1518.3694458007812 + }, + "selected": false, + "data": { + "label": "Recursion", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 165, + "height": 49, + "style": { + "width": 165, + "height": 49 + }, + "positionAbsolute": { + "x": 356.3723602294922, + "y": 1518.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "q7b5iMJ1Lfka5A-K-YcaN", + "type": "subtopic", + "position": { + "x": 356.3723602294922, + "y": 1571.3694458007812 + }, + "selected": false, + "data": { + "label": "Lexical Scoping", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 165, + "height": 49, + "style": { + "width": 165, + "height": 49 + }, + "positionAbsolute": { + "x": 356.3723602294922, + "y": 1571.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "itS6B12I8I1KNCPvc0KCQ", + "type": "subtopic", + "position": { + "x": 356.3723602294922, + "y": 1624.3694458007812 + }, + "selected": false, + "data": { + "label": "Closures", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 165, + "height": 49, + "style": { + "width": 165, + "height": 49 + }, + "positionAbsolute": { + "x": 356.3723602294922, + "y": 1624.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Xw8lb0xCWKmNs4KZfhBUy", + "type": "topic", + "position": { + "x": -204.62877362673987, + "y": 1686.3694458007812 + }, + "selected": false, + "data": { + "label": "Strict Mode", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "left-center" + }, + "oldId": "k8bJH9qydZm8I9rhH7rXw" + }, + "zIndex": 999, + "width": 134, + "height": 49, + "style": { + "width": 134, + "height": 49 + }, + "positionAbsolute": { + "x": -204.62877362673987, + "y": 1686.3694458007812 + }, + "dragging": false, + "focusable": true, + "selectable": true, + "resizing": false + }, + { + "id": "fm2CuL1IZp3hnrLrPUX7U", + "type": "topic", + "position": { + "x": -204.2816601458129, + "y": 1792.3694458007812 + }, + "selected": false, + "data": { + "label": "Using (this) keyword", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 200, + "height": 49, + "style": { + "width": 200, + "height": 49 + }, + "positionAbsolute": { + "x": -204.2816601458129, + "y": 1792.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "3E5MuxPvEJU-dwgTrbQAR", + "type": "subtopic", + "position": { + "x": -521.6276397705078, + "y": 1686.3694458007812 + }, + "selected": false, + "data": { + "label": "in a method", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 189, + "height": 49, + "style": { + "width": 189, + "height": 49 + }, + "positionAbsolute": { + "x": -521.6276397705078, + "y": 1686.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "azsXq6Y5iCvQDgTWZpWQ3", + "type": "subtopic", + "position": { + "x": -521.6276397705078, + "y": 1739.3694458007812 + }, + "selected": false, + "data": { + "label": "in a function", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 189, + "height": 49, + "style": { + "width": 189, + "height": 49 + }, + "positionAbsolute": { + "x": -521.6276397705078, + "y": 1739.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "qps2Mdm-lwa4Wr0IxKm0C", + "type": "subtopic", + "position": { + "x": -521.6276397705078, + "y": 1792.3694458007812 + }, + "selected": false, + "data": { + "label": "using it alone", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 189, + "height": 49, + "style": { + "width": 189, + "height": 49 + }, + "positionAbsolute": { + "x": -521.6276397705078, + "y": 1792.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "JVbEBtVrTTFnTF3_yUIAC", + "type": "subtopic", + "position": { + "x": -521.6276397705078, + "y": 1845.3694458007812 + }, + "selected": false, + "data": { + "label": "in event handlers", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 189, + "height": 49, + "style": { + "width": 189, + "height": 49 + }, + "positionAbsolute": { + "x": -521.6276397705078, + "y": 1845.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "P0190rTm2wLQmCzWOKour", + "type": "subtopic", + "position": { + "x": -521.6276397705078, + "y": 1898.3694458007812 + }, + "selected": false, + "data": { + "label": "in arrow functions", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 189, + "height": 49, + "style": { + "width": 189, + "height": 49 + }, + "positionAbsolute": { + "x": -521.6276397705078, + "y": 1898.3694458007812 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "EAN6DCiCfSq04R4vKgZ0q", + "type": "subtopic", + "position": { + "x": -203.1276397705078, + "y": 1869.8694458007812 + }, + "selected": false, + "data": { + "label": "Function Borrowing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 200, + "height": 49, + "style": { + "width": 200, + "height": 49 + }, + "positionAbsolute": { + "x": -203.1276397705078, + "y": 1869.8694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "p2NhSwPYMtRiPRHjPaqmX", + "type": "subtopic", + "position": { + "x": -203.1276397705078, + "y": 1922.8694458007812 + }, + "selected": false, + "data": { + "label": "Explicit Binding", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 200, + "height": 49, + "style": { + "width": 200, + "height": 49 + }, + "positionAbsolute": { + "x": -203.1276397705078, + "y": 1922.8694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "gsyY3Oa3Jf0W5K_lyqBYO", + "type": "subtopic", + "position": { + "x": -199.6276397705078, + "y": 1996.3694458007812 + }, + "selected": false, + "data": { + "label": "call", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 55, + "height": 49, + "style": { + "width": 55, + "height": 49 + }, + "positionAbsolute": { + "x": -199.6276397705078, + "y": 1996.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "-BtF34cEzI6J8sZCDRlRE", + "type": "subtopic", + "position": { + "x": -140.6276397705078, + "y": 1996.3694458007812 + }, + "selected": false, + "data": { + "label": "apply", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 70, + "height": 49, + "style": { + "width": 70, + "height": 49 + }, + "positionAbsolute": { + "x": -140.6276397705078, + "y": 1996.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "dbercnxXVTJXMpYSDNGb2", + "type": "subtopic", + "position": { + "x": -61.62763977050781, + "y": 1996.3694458007812 + }, + "selected": false, + "data": { + "label": "bind", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 60, + "height": 49, + "style": { + "width": 60, + "height": 49 + }, + "positionAbsolute": { + "x": -61.62763977050781, + "y": 1996.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "sFOqx6_7poVIVuXhJVY0E", + "type": "topic", + "position": { + "x": 103.55738234743455, + "y": 1793.8694458007812 + }, + "selected": false, + "data": { + "label": "Asynchronous JavaScript", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 239, + "height": 49, + "style": { + "width": 239, + "height": 49 + }, + "positionAbsolute": { + "x": 103.55738234743455, + "y": 1793.8694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "_bs5NNHVdHLWGBmpYwHMi", + "type": "subtopic", + "position": { + "x": 106.55738234743455, + "y": 1708.3694458007812 + }, + "selected": false, + "data": { + "label": "Event Loop", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "iRlgVcCk54BVDA-Rx0kt8", + "label": "Advanced Topics / pick these at last", + "color": "#000", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 132, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 106.55738234743455, + "y": 1708.3694458007812 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "wXypuqEmFLIubx-QQvDIr", + "type": "subtopic", + "position": { + "x": 108.6719904951085, + "y": 1874.2304293708296 + }, + "selected": false, + "data": { + "label": "setTimeout", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 131, + "height": 49, + "style": { + "width": 131, + "height": 49 + }, + "positionAbsolute": { + "x": 108.6719904951085, + "y": 1874.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "jaC3XXudd7OBKwwCpoPFf", + "type": "subtopic", + "position": { + "x": 108.6719904951085, + "y": 1927.2304293708296 + }, + "selected": false, + "data": { + "label": "setInterval", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 131, + "height": 49, + "style": { + "width": 131, + "height": 49 + }, + "positionAbsolute": { + "x": 108.6719904951085, + "y": 1927.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "D8oGY7pdviRByaz6c9sU6", + "type": "subtopic", + "position": { + "x": 389.171875, + "y": 1770.2304293708296 + }, + "selected": false, + "data": { + "label": "Callbacks", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 146, + "height": 49, + "style": { + "width": 146, + "height": 49 + }, + "positionAbsolute": { + "x": 389.171875, + "y": 1770.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "yXSF5gGST7l2X-4z1g0d_", + "type": "subtopic", + "position": { + "x": 389.171875, + "y": 1823.2304293708296 + }, + "selected": false, + "data": { + "label": "Promises", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 146, + "height": 49, + "style": { + "width": 146, + "height": 49 + }, + "positionAbsolute": { + "x": 389.171875, + "y": 1823.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "PJSdqvh5OBwPCNpn3q_S5", + "type": "subtopic", + "position": { + "x": 389.171875, + "y": 1694.3694458007812 + }, + "selected": false, + "data": { + "label": "Callback Hell", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 146, + "height": 49, + "style": { + "width": 146, + "height": 49 + }, + "positionAbsolute": { + "x": 389.171875, + "y": 1694.3694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Dn872mgexmxoLtbkIgIgz", + "type": "subtopic", + "position": { + "x": 389.5025092677304, + "y": 1898.8694458007812 + }, + "selected": false, + "data": { + "label": "async/await", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "PJSdqvh5OBwPCNpn3q_S5", + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 146, + "height": 49, + "style": { + "width": 146, + "height": 49 + }, + "positionAbsolute": { + "x": 389.5025092677304, + "y": 1898.8694458007812 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "q6vciQb_Jk-Up16Pk5NeE", + "type": "topic", + "position": { + "x": 163.9190115254637, + "y": 2098.2304293708294 + }, + "selected": false, + "data": { + "label": "Working with APIs", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "sFOqx6_7poVIVuXhJVY0E", + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-top" + } + }, + "zIndex": 999, + "width": 186, + "height": 49, + "style": { + "width": 186, + "height": 49 + }, + "positionAbsolute": { + "x": 163.9190115254637, + "y": 2098.2304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "kL5rfWxXe4J44ENru1uJS", + "type": "subtopic", + "position": { + "x": 344.0025092677304, + "y": 2018.8694458007812 + }, + "selected": false, + "data": { + "label": "Fetch", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 188, + "height": 49, + "style": { + "width": 188 + }, + "positionAbsolute": { + "x": 344.0025092677304, + "y": 2018.8694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "LiuhBE7dIlkoWkthSoCsa", + "type": "subtopic", + "position": { + "x": 344.0025092677304, + "y": 1965.8694458007812 + }, + "selected": false, + "data": { + "label": "XMLHTTPRequest", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "kL5rfWxXe4J44ENru1uJS", + "legend": { + "id": "NEZQB0yHPCcKwsESDYbk5", + "color": "#38761d", + "label": "Beginner Topics / start with these", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 188, + "height": 49, + "style": { + "width": 188 + }, + "positionAbsolute": { + "x": 344.0025092677304, + "y": 1965.8694458007812 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "F_Lrj0F7UXriqJ0mhwxCy", + "type": "topic", + "position": { + "x": 40.26672552017453, + "y": 2098.2304293708294 + }, + "selected": false, + "data": { + "label": "Classes", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "q6vciQb_Jk-Up16Pk5NeE", + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "left-top" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": 40.26672552017453, + "y": 2098.2304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "TZ8XGdykSJjKBjX6Nivwo", + "type": "topic", + "position": { + "x": -230.45968546864998, + "y": 2098.2304293708294 + }, + "selected": false, + "data": { + "label": "Iterators and Generators", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "F_Lrj0F7UXriqJ0mhwxCy", + "legend": { + "id": "iRlgVcCk54BVDA-Rx0kt8", + "label": "Advanced Topics / pick these at last", + "color": "#000", + "position": "left-top" + } + }, + "zIndex": 999, + "width": 235, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -230.45968546864998, + "y": 2098.2304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "hLnJlwnECFbVMeFpH0M5Q", + "type": "topic", + "position": { + "x": -523.328125, + "y": 2098.2304293708294 + }, + "selected": false, + "data": { + "label": "Modules in JavaScript", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "TZ8XGdykSJjKBjX6Nivwo", + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 214, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -523.328125, + "y": 2098.2304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "4EXeGkOpfAViB9Uo4zL6O", + "type": "subtopic", + "position": { + "x": -483.328125, + "y": 1969.2304293708296 + }, + "selected": false, + "data": { + "label": "CommonJS", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 134, + "height": 49, + "style": { + "width": 134 + }, + "positionAbsolute": { + "x": -483.328125, + "y": 1969.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "jLNmYeo20Mbu4WRvVgvwU", + "type": "subtopic", + "position": { + "x": -483.328125, + "y": 2022.2304293708296 + }, + "selected": false, + "data": { + "label": "ESM", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 134, + "height": 49, + "style": { + "width": 134 + }, + "positionAbsolute": { + "x": -483.328125, + "y": 2022.2304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "MatU4SthAAhByJ40XdZQn", + "type": "topic", + "position": { + "x": -523.328125, + "y": 2200.2304293708294 + }, + "selected": false, + "data": { + "label": "Memory Management", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "hLnJlwnECFbVMeFpH0M5Q", + "legend": { + "id": "iRlgVcCk54BVDA-Rx0kt8", + "label": "Advanced Topics / pick these at last", + "color": "#000", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 214, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -523.328125, + "y": 2200.2304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "ZR2WfH1cerA-V_kaPwRvm", + "type": "subtopic", + "position": { + "x": -510.328125, + "y": 2279.385077050813 + }, + "selected": false, + "data": { + "label": "Memory Lifecycle", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "KKyX8N4lTgN0w-Khm6Ztq", + "legend": { + "id": "iRlgVcCk54BVDA-Rx0kt8", + "label": "Advanced Topics / pick these at last", + "color": "#000", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 188, + "height": 49, + "style": { + "width": 188, + "height": 49 + }, + "positionAbsolute": { + "x": -510.328125, + "y": 2279.385077050813 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "bhuGtcyqPFKu-900aESYz", + "type": "topic", + "position": { + "x": -203.1276397705078, + "y": 1578.3694458007812 + }, + "selected": false, + "data": { + "label": "DOM APIs", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "left-center" + }, + "oldId": "Xw8lb0xCWKmNs4KZfhBUy" + }, + "zIndex": 999, + "width": 134, + "height": 49, + "style": { + "width": 134, + "height": 49 + }, + "positionAbsolute": { + "x": -203.1276397705078, + "y": 1578.3694458007812 + }, + "dragging": false, + "focusable": true, + "selectable": true, + "resizing": false + }, + { + "id": "KKyX8N4lTgN0w-Khm6Ztq", + "type": "subtopic", + "position": { + "x": -510.328125, + "y": 2332.385077050813 + }, + "selected": false, + "data": { + "label": "Gabage Collection", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "iRlgVcCk54BVDA-Rx0kt8", + "label": "Advanced Topics / pick these at last", + "color": "#000", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 188, + "height": 49, + "style": { + "width": 188, + "height": 49 + }, + "positionAbsolute": { + "x": -510.328125, + "y": 2332.385077050813 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "rc5WzBBOm2cus-rQl8EOE", + "type": "topic", + "position": { + "x": -228.95968546864998, + "y": 2200.2304293708294 + }, + "selected": false, + "data": { + "label": "Using Browser DevTools", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "MatU4SthAAhByJ40XdZQn", + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 232, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -228.95968546864998, + "y": 2200.2304293708294 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "dhEtcgv7G9fNV-AUNJdWk", + "type": "subtopic", + "position": { + "x": 136.6719904951085, + "y": 2200.7304293708294 + }, + "selected": false, + "data": { + "label": "Debugging Issues", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 246, + "height": 49, + "style": { + "width": 246, + "height": 49 + }, + "positionAbsolute": { + "x": 136.6719904951085, + "y": 2200.7304293708294 + }, + "dragging": false, + "focusable": true + }, + { + "id": "BA_ArmZMnVMaL_zl3W3Pt", + "type": "subtopic", + "position": { + "x": 136.6719904951085, + "y": 2253.7304293708294 + }, + "selected": false, + "data": { + "label": "Debugging Memory Leaks", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 246, + "height": 49, + "style": { + "width": 246, + "height": 49 + }, + "positionAbsolute": { + "x": 136.6719904951085, + "y": 2253.7304293708294 + }, + "dragging": false, + "focusable": true + }, + { + "id": "ECxISKUAU7js_JsfSHzud", + "type": "subtopic", + "position": { + "x": 137.6719904951085, + "y": 2306.7304293708294 + }, + "selected": false, + "data": { + "label": "Debugging Performance", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "bcE9YSY2vLzRyJQSceY9M", + "label": "Intermediate Topics / pick these next", + "color": "#9900ff", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 246, + "height": 49, + "style": { + "width": 246, + "height": 49 + }, + "positionAbsolute": { + "x": 137.6719904951085, + "y": 2306.7304293708294 + }, + "dragging": false, + "focusable": true + }, + { + "width": 91, + "height": 49, + "id": "U0fJo2a3vnaodNJhfZ78I", + "type": "button", + "position": { + "x": -219.2816601458129, + "y": 2495.0743589624644 + }, + "selected": false, + "data": { + "label": "React", + "href": "https://roadm.sh/react", + "color": "#FFFFFf", + "backgroundColor": "#4136D4", + "style": { + "fontSize": 17 + }, + "borderColor": "#4136D4", + "oldId": "P5IZjP0g1_fnvHy3YTR4q" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -219.2816601458129, + "y": 2495.0743589624644 + }, + "style": {}, + "focusable": true, + "resizing": false, + "selectable": true + }, + { + "width": 102, + "height": 49, + "id": "iuSv7V59YxUZawN38Qlli", + "type": "button", + "position": { + "x": 7.718339854187093, + "y": 2495.0743589624644 + }, + "selected": false, + "data": { + "label": "Node.js", + "href": "https://roadmap.sh/nodejs", + "color": "#FFFFFf", + "backgroundColor": "#4136D4", + "style": { + "fontSize": 17 + }, + "borderColor": "#4136D4", + "oldId": "ZSrQoNGKiR484uALMWO9F" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": 7.718339854187093, + "y": 2495.0743589624644 + }, + "style": {}, + "focusable": true, + "resizing": false, + "selectable": true + }, + { + "id": "nfMrC0eoXZl72H4o3VFEP", + "type": "subtopic", + "position": { + "x": -200.2816601458129, + "y": 1096.063720703125 + }, + "selected": false, + "data": { + "label": "SameValue", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "legend": { + "id": "iRlgVcCk54BVDA-Rx0kt8", + "label": "Advanced Topics / pick these at last", + "color": "#000", + "position": "right-center" + }, + "oldId": "fL3B2hkTgMb0oEwMiWJtK" + }, + "zIndex": 999, + "width": 186, + "height": 50, + "style": { + "width": 186, + "height": 50 + }, + "positionAbsolute": { + "x": -200.2816601458129, + "y": 1096.063720703125 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + } + ], + "edges": [ + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "M0aRyhxjzTWUOW95D1g1y", + "selected": false, + "type": "smoothstep", + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "Xw4lLz2zWuTkNu8r4oheF", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "mbCXMk97_HKXG3d4TxBOC", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "6khAD6mzZ9S96JJuC5_j6", + "sourceHandle": "y2", + "target": "UBB-8hUcwo4Mfd0cmEcdA", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-ADarwihuI2nBq1C3U7-Zry2-UBB-8hUcwo4Mfd0cmEcdAz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "6khAD6mzZ9S96JJuC5_j6", + "sourceHandle": "y2", + "target": "l-GKzcsBNA0r6Jax8hwnP", + "targetHandle": "z2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-ADarwihuI2nBq1C3U7-Zry2-l-GKzcsBNA0r6Jax8hwnPz2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "6khAD6mzZ9S96JJuC5_j6", + "sourceHandle": "y2", + "target": "SFPsWnVpZBAw3_re7op4h", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-ADarwihuI2nBq1C3U7-Zry2-SFPsWnVpZBAw3_re7op4hz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "6khAD6mzZ9S96JJuC5_j6", + "sourceHandle": "y2", + "target": "uXsWIUUxtc4H_iRx3uZv0", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-ADarwihuI2nBq1C3U7-Zry2-uXsWIUUxtc4H_iRx3uZv0z1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "iogwMmOvub2ZF4zgg6WyF", + "sourceHandle": "x2", + "target": "6khAD6mzZ9S96JJuC5_j6", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-iogwMmOvub2ZF4zgg6WyFx2-ADarwihuI2nBq1C3U7-Zrw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "kvActjpU4FUJdrmuFoFEe", + "sourceHandle": "z2", + "target": "7iMJuaB7yKlSIbT4dBe5L", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "selected": false, + "id": "reactflow__edge-ADarwihuI2nBq1C3U7-Zrz2-7iMJuaB7yKlSIbT4dBe5Ly1", + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "kvActjpU4FUJdrmuFoFEe", + "sourceHandle": "z2", + "target": "HfieG3v3wnmpZDfNwEJvZ", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "selected": false, + "id": "reactflow__edge-ADarwihuI2nBq1C3U7-Zrz2-HfieG3v3wnmpZDfNwEJvZy1", + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "kvActjpU4FUJdrmuFoFEe", + "sourceHandle": "z2", + "target": "Lb5jLF91WO5V5CWpifciW", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "selected": false, + "id": "reactflow__edge-ADarwihuI2nBq1C3U7-Zrz2-Lb5jLF91WO5V5CWpifciWy1", + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "kvActjpU4FUJdrmuFoFEe", + "sourceHandle": "z2", + "target": "BqbAWt--Guqex-rrb4ZUv", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "selected": false, + "id": "reactflow__edge-ADarwihuI2nBq1C3U7-Zrz2-BqbAWt--Guqex-rrb4ZUvy1", + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "kvActjpU4FUJdrmuFoFEe", + "sourceHandle": "x2", + "target": "-jbPPuEXacBR0d0CWPHgd", + "targetHandle": "w2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-kvActjpU4FUJdrmuFoFEex2-ADarwihuI2nBq1C3U7-Zrw2", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "-jbPPuEXacBR0d0CWPHgd", + "sourceHandle": "y2", + "target": "SSqBPOJROQpX5poMFSJtJ", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-ADarwihuI2nBq1C3U7-Zry2-SSqBPOJROQpX5poMFSJtJz1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "-jbPPuEXacBR0d0CWPHgd", + "sourceHandle": "z2", + "target": "xe8HZ8Mt1fK8yJMcDPYHJ", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-ADarwihuI2nBq1C3U7-Zrz2-RRACLQ6-aopkxImIp3Tocy1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "-jbPPuEXacBR0d0CWPHgd", + "sourceHandle": "z2", + "target": "RRACLQ6-aopkxImIp3Toc", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-ADarwihuI2nBq1C3U7-Zrz2-RRACLQ6-aopkxImIp3Tocy1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "xe8HZ8Mt1fK8yJMcDPYHJ", + "sourceHandle": "z2", + "target": "D95ndkkwmT5X_HqboEn6E", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-xe8HZ8Mt1fK8yJMcDPYHJz2-D95ndkkwmT5X_HqboEn6Ey2", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "-jbPPuEXacBR0d0CWPHgd", + "sourceHandle": "x2", + "target": "XPmBieVCXvL3WbWkYRoKr", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge--jbPPuEXacBR0d0CWPHgdx2-ADarwihuI2nBq1C3U7-Zrw1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "XPmBieVCXvL3WbWkYRoKr", + "sourceHandle": "y2", + "target": "_Bo2YZqZ_gY35SLPML4T6", + "targetHandle": "z2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-ADarwihuI2nBq1C3U7-Zry2-_Bo2YZqZ_gY35SLPML4T6z2", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "XPmBieVCXvL3WbWkYRoKr", + "sourceHandle": "y2", + "target": "pP42K_eH4RCdUdUS8BJlP", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-XPmBieVCXvL3WbWkYRoKry2-pP42K_eH4RCdUdUS8BJlPz1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "XPmBieVCXvL3WbWkYRoKr", + "sourceHandle": "y2", + "target": "1xhjrRN-Rfekei2JwwU7Y", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-XPmBieVCXvL3WbWkYRoKry2-1xhjrRN-Rfekei2JwwU7Yz1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "ADarwihuI2nBq1C3U7-Zr", + "sourceHandle": "w2", + "target": "rhJrrqkRqy2Qw_he4SPGz", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-ADarwihuI2nBq1C3U7-Zrw2-rhJrrqkRqy2Qw_he4SPGzx1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "rhJrrqkRqy2Qw_he4SPGz", + "sourceHandle": "z2", + "target": "Xc0jL4rafpI-ixIaAxo9O", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-rhJrrqkRqy2Qw_he4SPGzz2-Xc0jL4rafpI-ixIaAxo9Oy1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "rhJrrqkRqy2Qw_he4SPGz", + "sourceHandle": "z2", + "target": "6icsjC4aisDgPWasVuCOt", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-rhJrrqkRqy2Qw_he4SPGzz2-6icsjC4aisDgPWasVuCOty2", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "rhJrrqkRqy2Qw_he4SPGz", + "sourceHandle": "z2", + "target": "sciU68E13mcfL577y6Vim", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-rhJrrqkRqy2Qw_he4SPGzz2-sciU68E13mcfL577y6Vimy2", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "rhJrrqkRqy2Qw_he4SPGz", + "sourceHandle": "z2", + "target": "DSFzj61N9ojz29mjExhVa", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-rhJrrqkRqy2Qw_he4SPGzz2-DSFzj61N9ojz29mjExhVay1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "XPmBieVCXvL3WbWkYRoKr", + "sourceHandle": "z2", + "target": "ADarwihuI2nBq1C3U7-Zr", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-XPmBieVCXvL3WbWkYRoKrz2-ADarwihuI2nBq1C3U7-Zry1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "ADarwihuI2nBq1C3U7-Zr", + "sourceHandle": "x2", + "target": "lBOGoHZrmnIRatvryDwTm", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-ADarwihuI2nBq1C3U7-Zrx2-lBOGoHZrmnIRatvryDwTmw1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "lBOGoHZrmnIRatvryDwTm", + "sourceHandle": "z2", + "target": "8X1mdQ3NDBVOZZWBbAFRE", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-lBOGoHZrmnIRatvryDwTmz2-8X1mdQ3NDBVOZZWBbAFREy1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "lBOGoHZrmnIRatvryDwTm", + "sourceHandle": "z2", + "target": "NZedBxG9B9TRVOf2QE2yL", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-lBOGoHZrmnIRatvryDwTmz2-NZedBxG9B9TRVOf2QE2yLy2", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "ADarwihuI2nBq1C3U7-Zr", + "sourceHandle": "y2", + "target": "23Xa6q5VvRVlzc6Dx8vST", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-ADarwihuI2nBq1C3U7-Zry2-YD-2l_amfqqqCdtc_Zdzoz1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "23Xa6q5VvRVlzc6Dx8vST", + "sourceHandle": "y2", + "target": "iZjl6qe9LGLFqXyopMUFX", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-YD-2l_amfqqqCdtc_Zdzoy2-iZjl6qe9LGLFqXyopMUFXz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "23Xa6q5VvRVlzc6Dx8vST", + "sourceHandle": "x2", + "target": "JM16NHhFVOwwbwqCubmYw", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-YD-2l_amfqqqCdtc_Zdzox2-JM16NHhFVOwwbwqCubmYww1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "23Xa6q5VvRVlzc6Dx8vST", + "sourceHandle": "z2", + "target": "YD-2l_amfqqqCdtc_Zdzo", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-23Xa6q5VvRVlzc6Dx8vSTz2-YD-2l_amfqqqCdtc_Zdzoy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "3tckJ2Sci7z-sNx9jx9eF", + "sourceHandle": "z2", + "target": "ttCsd2_H2SuRivCjGv1OX", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-_6vZa43gWjxO2OcD1iCCQz2-ttCsd2_H2SuRivCjGv1OXy2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "3tckJ2Sci7z-sNx9jx9eF", + "sourceHandle": "z2", + "target": "34TKGxV9YziOWMh9rT_KE", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-_6vZa43gWjxO2OcD1iCCQz2-34TKGxV9YziOWMh9rT_KEy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "34TKGxV9YziOWMh9rT_KE", + "sourceHandle": "x2", + "target": "ReGIniyLYl5hGExchrJd2", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-34TKGxV9YziOWMh9rT_KEx2-ReGIniyLYl5hGExchrJd2w1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "3tckJ2Sci7z-sNx9jx9eF", + "sourceHandle": "y2", + "target": "_6vZa43gWjxO2OcD1iCCQ", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-3tckJ2Sci7z-sNx9jx9eFy2-_6vZa43gWjxO2OcD1iCCQz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_6vZa43gWjxO2OcD1iCCQ", + "sourceHandle": "y2", + "target": "640mk-m5mB90Mme-7jcXV", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-_6vZa43gWjxO2OcD1iCCQy2-640mk-m5mB90Mme-7jcXVz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_6vZa43gWjxO2OcD1iCCQ", + "sourceHandle": "y2", + "target": "6_8EwyZY2jBkZr7xnfRY3", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-_6vZa43gWjxO2OcD1iCCQy2-6_8EwyZY2jBkZr7xnfRY3z1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_6vZa43gWjxO2OcD1iCCQ", + "sourceHandle": "y2", + "target": "k9rSR-YQ8B_iRcXNm2btP", + "targetHandle": "z2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-_6vZa43gWjxO2OcD1iCCQy2-k9rSR-YQ8B_iRcXNm2btPz2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_6vZa43gWjxO2OcD1iCCQ", + "sourceHandle": "y2", + "target": "BbrrliATuH9beTypRaFey", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-_6vZa43gWjxO2OcD1iCCQy2-BbrrliATuH9beTypRaFeyz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_6vZa43gWjxO2OcD1iCCQ", + "sourceHandle": "y2", + "target": "IvBtUzIGnkgGXrJjqmjf4", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-_6vZa43gWjxO2OcD1iCCQy2-IvBtUzIGnkgGXrJjqmjf4z1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_6vZa43gWjxO2OcD1iCCQ", + "sourceHandle": "y2", + "target": "-v4_V4UuoZSgUk2sqOCim", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-_6vZa43gWjxO2OcD1iCCQy2--v4_V4UuoZSgUk2sqOCimz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_6vZa43gWjxO2OcD1iCCQ", + "sourceHandle": "y2", + "target": "0PK1NwlgkNe2Vf-We4uLH", + "targetHandle": "z2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-_6vZa43gWjxO2OcD1iCCQy2-0PK1NwlgkNe2Vf-We4uLHz2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_6vZa43gWjxO2OcD1iCCQ", + "sourceHandle": "y2", + "target": "ghjNJW67Wj5L5QK46xwL-", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-_6vZa43gWjxO2OcD1iCCQy2-ghjNJW67Wj5L5QK46xwL-z1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_6vZa43gWjxO2OcD1iCCQ", + "sourceHandle": "y2", + "target": "bo4SvzU4BrPl3c99zW7Y5", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-_6vZa43gWjxO2OcD1iCCQy2-bo4SvzU4BrPl3c99zW7Y5z1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_6vZa43gWjxO2OcD1iCCQ", + "sourceHandle": "y2", + "target": "udoz0DZi7f-vm30dSnYKu", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-_6vZa43gWjxO2OcD1iCCQy2-udoz0DZi7f-vm30dSnYKuz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_6vZa43gWjxO2OcD1iCCQ", + "sourceHandle": "y2", + "target": "c38b6t5f17Zg2O2yg3eFP", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-_6vZa43gWjxO2OcD1iCCQy2-c38b6t5f17Zg2O2yg3eFPz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "k8bJH9qydZm8I9rhH7rXw", + "sourceHandle": "z2", + "target": "R1D4fsZliHv7wIo8Tj-kp", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-k8bJH9qydZm8I9rhH7rXwz2-R1D4fsZliHv7wIo8Tj-kpy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "k8bJH9qydZm8I9rhH7rXw", + "sourceHandle": "z2", + "target": "fr0NChxMXLpJizyMhXcXS", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-k8bJH9qydZm8I9rhH7rXwz2-fr0NChxMXLpJizyMhXcXSy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "k8bJH9qydZm8I9rhH7rXw", + "sourceHandle": "z2", + "target": "YZlCoPvZuX5MmpLOTj5d4", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-k8bJH9qydZm8I9rhH7rXwz2-YZlCoPvZuX5MmpLOTj5d4y1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "k8bJH9qydZm8I9rhH7rXw", + "sourceHandle": "z2", + "target": "QLC7bW-qHskLH2HOA-Sko", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-k8bJH9qydZm8I9rhH7rXwz2-QLC7bW-qHskLH2HOA-Skoy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "k8bJH9qydZm8I9rhH7rXw", + "sourceHandle": "z2", + "target": "ISNzEYtrWe2v0R7Xfl5k-", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-k8bJH9qydZm8I9rhH7rXwz2-ISNzEYtrWe2v0R7Xfl5k-y1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "k8bJH9qydZm8I9rhH7rXw", + "sourceHandle": "z2", + "target": "s8wUJivWmetysJ8bt9FBC", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-k8bJH9qydZm8I9rhH7rXwz2-s8wUJivWmetysJ8bt9FBCy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "ISNzEYtrWe2v0R7Xfl5k-", + "sourceHandle": "z2", + "target": "YJGhhFuWmFvhRKOg6nwON", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-ISNzEYtrWe2v0R7Xfl5k-z2-YJGhhFuWmFvhRKOg6nwONy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "ISNzEYtrWe2v0R7Xfl5k-", + "sourceHandle": "z2", + "target": "q7b5iMJ1Lfka5A-K-YcaN", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-ISNzEYtrWe2v0R7Xfl5k-z2-q7b5iMJ1Lfka5A-K-YcaNy2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "ISNzEYtrWe2v0R7Xfl5k-", + "sourceHandle": "z2", + "target": "itS6B12I8I1KNCPvc0KCQ", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-ISNzEYtrWe2v0R7Xfl5k-z2-itS6B12I8I1KNCPvc0KCQy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "fm2CuL1IZp3hnrLrPUX7U", + "sourceHandle": "y2", + "target": "3E5MuxPvEJU-dwgTrbQAR", + "targetHandle": "z2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-fm2CuL1IZp3hnrLrPUX7Uy2-3E5MuxPvEJU-dwgTrbQARz2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "fm2CuL1IZp3hnrLrPUX7U", + "sourceHandle": "y2", + "target": "azsXq6Y5iCvQDgTWZpWQ3", + "targetHandle": "z2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-fm2CuL1IZp3hnrLrPUX7Uy2-azsXq6Y5iCvQDgTWZpWQ3z2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "fm2CuL1IZp3hnrLrPUX7U", + "sourceHandle": "y2", + "target": "qps2Mdm-lwa4Wr0IxKm0C", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-fm2CuL1IZp3hnrLrPUX7Uy2-qps2Mdm-lwa4Wr0IxKm0Cz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "fm2CuL1IZp3hnrLrPUX7U", + "sourceHandle": "y2", + "target": "JVbEBtVrTTFnTF3_yUIAC", + "targetHandle": "z2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-fm2CuL1IZp3hnrLrPUX7Uy2-JVbEBtVrTTFnTF3_yUIACz2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "fm2CuL1IZp3hnrLrPUX7U", + "sourceHandle": "y2", + "target": "P0190rTm2wLQmCzWOKour", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-fm2CuL1IZp3hnrLrPUX7Uy2-P0190rTm2wLQmCzWOKourz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "fm2CuL1IZp3hnrLrPUX7U", + "sourceHandle": "z2", + "target": "sFOqx6_7poVIVuXhJVY0E", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-fm2CuL1IZp3hnrLrPUX7Uz2-sFOqx6_7poVIVuXhJVY0Ey1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "PJSdqvh5OBwPCNpn3q_S5", + "sourceHandle": "x2", + "target": "D8oGY7pdviRByaz6c9sU6", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-PJSdqvh5OBwPCNpn3q_S5x2-D8oGY7pdviRByaz6c9sU6w1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "yXSF5gGST7l2X-4z1g0d_", + "sourceHandle": "x2", + "target": "Dn872mgexmxoLtbkIgIgz", + "targetHandle": "w2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-yXSF5gGST7l2X-4z1g0d_x2-Dn872mgexmxoLtbkIgIgzw2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "sFOqx6_7poVIVuXhJVY0E", + "sourceHandle": "z2", + "target": "D8oGY7pdviRByaz6c9sU6", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-sFOqx6_7poVIVuXhJVY0Ez2-D8oGY7pdviRByaz6c9sU6y1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "sFOqx6_7poVIVuXhJVY0E", + "sourceHandle": "z2", + "target": "yXSF5gGST7l2X-4z1g0d_", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-sFOqx6_7poVIVuXhJVY0Ez2-yXSF5gGST7l2X-4z1g0d_y1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "q6vciQb_Jk-Up16Pk5NeE", + "sourceHandle": "y2", + "target": "F_Lrj0F7UXriqJ0mhwxCy", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-q6vciQb_Jk-Up16Pk5NeEy2-F_Lrj0F7UXriqJ0mhwxCyz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "F_Lrj0F7UXriqJ0mhwxCy", + "sourceHandle": "y2", + "target": "TZ8XGdykSJjKBjX6Nivwo", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-F_Lrj0F7UXriqJ0mhwxCyy2-TZ8XGdykSJjKBjX6Nivwoz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "TZ8XGdykSJjKBjX6Nivwo", + "sourceHandle": "y2", + "target": "hLnJlwnECFbVMeFpH0M5Q", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-TZ8XGdykSJjKBjX6Nivwoy2-hLnJlwnECFbVMeFpH0M5Qz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "hLnJlwnECFbVMeFpH0M5Q", + "sourceHandle": "w2", + "target": "jLNmYeo20Mbu4WRvVgvwU", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-hLnJlwnECFbVMeFpH0M5Qw2-jLNmYeo20Mbu4WRvVgvwUx1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "hLnJlwnECFbVMeFpH0M5Q", + "sourceHandle": "x2", + "target": "MatU4SthAAhByJ40XdZQn", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-hLnJlwnECFbVMeFpH0M5Qx2-MatU4SthAAhByJ40XdZQnw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "q6vciQb_Jk-Up16Pk5NeE", + "sourceHandle": "z2", + "target": "kL5rfWxXe4J44ENru1uJS", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "selected": false, + "selectable": true, + "focusable": true, + "id": "reactflow__edge-q6vciQb_Jk-Up16Pk5NeEz2-kL5rfWxXe4J44ENru1uJSx1" + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "MatU4SthAAhByJ40XdZQn", + "sourceHandle": "x2", + "target": "ZR2WfH1cerA-V_kaPwRvm", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-MatU4SthAAhByJ40XdZQnx2-KKyX8N4lTgN0w-Khm6Ztqw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "MatU4SthAAhByJ40XdZQn", + "sourceHandle": "z2", + "target": "rc5WzBBOm2cus-rQl8EOE", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-MatU4SthAAhByJ40XdZQnz2-rc5WzBBOm2cus-rQl8EOEy1", + "selected": false, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "rc5WzBBOm2cus-rQl8EOE", + "sourceHandle": "z2", + "target": "dhEtcgv7G9fNV-AUNJdWk", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-rc5WzBBOm2cus-rQl8EOEz2-dhEtcgv7G9fNV-AUNJdWky1", + "selected": false, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "rc5WzBBOm2cus-rQl8EOE", + "sourceHandle": "z2", + "target": "BA_ArmZMnVMaL_zl3W3Pt", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-rc5WzBBOm2cus-rQl8EOEz2-BA_ArmZMnVMaL_zl3W3Pty1", + "selected": false, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "rc5WzBBOm2cus-rQl8EOE", + "sourceHandle": "z2", + "target": "ECxISKUAU7js_JsfSHzud", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-rc5WzBBOm2cus-rQl8EOEz2-ECxISKUAU7js_JsfSHzudy1", + "selected": false, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "rc5WzBBOm2cus-rQl8EOE", + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-rc5WzBBOm2cus-rQl8EOEx2-GV_zWF6rSWg5bqgiXhOEfw1", + "selected": false, + "focusable": true + } + ] } \ No newline at end of file diff --git a/src/data/roadmaps/javascript/javascript.md b/src/data/roadmaps/javascript/javascript.md index 0f3098c2d..49e6298ea 100644 --- a/src/data/roadmaps/javascript/javascript.md +++ b/src/data/roadmaps/javascript/javascript.md @@ -1,6 +1,7 @@ --- jsonUrl: '/jsons/roadmaps/javascript.json' pdfUrl: '/pdfs/roadmaps/javascript.pdf' +renderer: 'editor' order: 5 briefTitle: 'JavaScript' briefDescription: 'Step by step guide to learn JavaScript in 2024' @@ -10,7 +11,7 @@ isNew: false hasTopics: true dimensions: width: 968 - height: 2438.9 + height: 2550 schema: headline: 'JavaScript Roadmap' description: 'Learn JavaScript with this interactive step by step guide in 2024. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' diff --git a/src/data/roadmaps/javascript/migration-mapping.json b/src/data/roadmaps/javascript/migration-mapping.json new file mode 100644 index 000000000..4d5ef5568 --- /dev/null +++ b/src/data/roadmaps/javascript/migration-mapping.json @@ -0,0 +1,116 @@ +{ + "javascript-introduction": "6khAD6mzZ9S96JJuC5_j6", + "javascript-variables": "kvActjpU4FUJdrmuFoFEe", + "javascript-introduction:what-is-javascript": "UBB-8hUcwo4Mfd0cmEcdA", + "javascript-introduction:history-of-javascript": "l-GKzcsBNA0r6Jax8hwnP", + "javascript-introduction:javascript-versions": "SFPsWnVpZBAw3_re7op4h", + "javascript-introduction:how-to-run-javascript": "uXsWIUUxtc4H_iRx3uZv0", + "javascript-variables:hoisting": "Lb5jLF91WO5V5CWpifciW", + "javascript-variables:variable-declarations": "BqbAWt--Guqex-rrb4ZUv", + "javascript-variables:naming-rules": "HfieG3v3wnmpZDfNwEJvZ", + "javascript-variables:scopes": "7iMJuaB7yKlSIbT4dBe5L", + "javascript-variables:scopes:block": "uqEzHYx13Y2EpvTTRzykn", + "javascript-variables:scopes:function": "YMT7O6lrMSMtNo0EnmsnQ", + "javascript-variables:scopes:global": "oC4o6GLEES_nUgCJu9Q6I", + "javascript-variables:variable-declarations:var": "JSjeM8qnBg4onXq9mn5gB", + "javascript-variables:variable-declarations:let": "kDRa9G3pMp0Cb0mqYUawM", + "javascript-variables:variable-declarations:const": "q85z6x1Lc-yLWepwtIT2_", + "javascript-datatypes": "-jbPPuEXacBR0d0CWPHgd", + "javascript-datatypes:primitive-types": "1RcwBHU3jzx0YxxUGZic4", + "javascript-datatypes:object:prototypal-inheritance": "Xge6eru1hRGobnOEHLZqv", + "javascript-datatypes:object:prototype": "0I6dJE0ygXPGjeRAe8AtT", + "javascript-datatypes:object": "xe8HZ8Mt1fK8yJMcDPYHJ", + "javascript-datatypes:typeof-operator": "RRACLQ6-aopkxImIp3Toc", + "javascript-datatypes:object:builtin-objects": "D95ndkkwmT5X_HqboEn6E", + "javascript-type-casting": "XPmBieVCXvL3WbWkYRoKr", + "javascript-type-casting:type-conversion-coercion": "_Bo2YZqZ_gY35SLPML4T6", + "javascript-type-casting:explicit-type-casting": "1xhjrRN-Rfekei2JwwU7Y", + "javascript-type-casting:implicit-type-casting": "pP42K_eH4RCdUdUS8BJlP", + "javascript-data-structures": "ADarwihuI2nBq1C3U7-Zr", + "javascript-data-structures:keyed-collections": "rhJrrqkRqy2Qw_he4SPGz", + "javascript-data-structures:keyed-collections:map": "Xc0jL4rafpI-ixIaAxo9O", + "javascript-data-structures:keyed-collections:weak-map": "6icsjC4aisDgPWasVuCOt", + "javascript-data-structures:keyed-collections:set": "sciU68E13mcfL577y6Vim", + "javascript-data-structures:keyed-collections:weak-set": "DSFzj61N9ojz29mjExhVa", + "javascript-data-structures:structured-data": "JwLGAuSOTyZ5BHSqeBDU6", + "javascript-data-structures:structured-data:json": "bFNvtHp97OzKnPJgr7WaH", + "javascript-data-structures:indexed-collections": "lBOGoHZrmnIRatvryDwTm", + "javascript-data-structures:indexed-collections:typed-arrays": "8X1mdQ3NDBVOZZWBbAFRE", + "javascript-data-structures:indexed-collections:arrays": "NZedBxG9B9TRVOf2QE2yL", + "javascript-equality-comparisons": "23Xa6q5VvRVlzc6Dx8vST", + "javascript-equality-comparisons:value-comparison-operators": "RonBj1htt6jnBt3W7zoTA", + "javascript-equality-comparisons:equality-algorithms:is-loosely-equal": "PLallt_T33W6bUEn0Hc3W", + "javascript-equality-comparisons:equality-algorithms:is-strictly-equal": "pcILon_Jjm2_XS10iUJ0E", + "javascript-equality-comparisons:equality-algorithms:same-value-zero": "fL3B2hkTgMb0oEwMiWJtK", + "javascript-loops-iterations": "YD-2l_amfqqqCdtc_Zdzo", + "javascript-loops-iterations:for-statement": "2M211rcaPSWbZ-sPoSEVR", + "javascript-loops-iterations:do-while-statement": "57lO_3uxJaWsFXS-0J1AK", + "javascript-loops-iterations:while-statement": "9-MpHmzK_IiCi6IcvAlGM", + "javascript-control-flow:conditional-statements:if-else": "ndbDXAx6bL4lZmpXv16Y_", + "javascript-control-flow:conditional-statements:switch": "H_QlcUlavKKfcNK8CYAvb", + "javascript-loops-iterations:for-in-statement": "cq3vvFZoNnAAZJ6oEBUwb", + "javascript-loops-iterations:for-of-statement": "FBz6h_AmTJBXoBN-a38a5", + "javascript-loops-iterations:break-continue": "4oHFzn7R7xLxfuLpsJjr-", + "javascript-control-flow": "3tckJ2Sci7z-sNx9jx9eF", + "javascript-control-flow:conditional-statements": "ttCsd2_H2SuRivCjGv1OX", + "javascript-control-flow:exception-handling": "34TKGxV9YziOWMh9rT_KE", + "javascript-control-flow:exception-handling:throw-statement": "ReGIniyLYl5hGExchrJd2", + "javascript-control-flow:exception-handling:try-catch-finally": "rbjEZe5vxCJ8reI1oZ-jf", + "javascript-control-flow:exception-handling:utilizing-error-objects": "-z-4VTaC3tOThqChgyoMs", + "javascript-expressions-and-operators": "_6vZa43gWjxO2OcD1iCCQ", + "javascript-expressions-and-operators:assignment-operators": "IvBtUzIGnkgGXrJjqmjf4", + "javascript-expressions-and-operators:omparison-operators": "-v4_V4UuoZSgUk2sqOCim", + "javascript-expressions-and-operators:arithmetic-operators": "0PK1NwlgkNe2Vf-We4uLH", + "javascript-expressions-and-operators:bitwise-operators": "ghjNJW67Wj5L5QK46xwL-", + "javascript-expressions-and-operators:logical-operators": "bo4SvzU4BrPl3c99zW7Y5", + "javascript-expressions-and-operators:bigint-operators": "udoz0DZi7f-vm30dSnYKu", + "javascript-expressions-and-operators:string-operators": "c38b6t5f17Zg2O2yg3eFP", + "javascript-expressions-and-operators:conditional-operators": "640mk-m5mB90Mme-7jcXV", + "javascript-expressions-and-operators:comma-operators": "6_8EwyZY2jBkZr7xnfRY3", + "javascript-expressions-and-operators:unary-operators": "k9rSR-YQ8B_iRcXNm2btP", + "javascript-expressions-and-operators:relational-operators": "BbrrliATuH9beTypRaFey", + "javascript-functions": "k8bJH9qydZm8I9rhH7rXw", + "javascript-functions:function-parameters": "R1D4fsZliHv7wIo8Tj-kp", + "javascript-functions:arrow-functions": "fr0NChxMXLpJizyMhXcXS", + "javascript-functions:function-parameters:default-params": "8X8mRl-puL0Lp43dO5mha", + "javascript-functions:function-parameters:rest-params": "-_6q0bIjQrvAaCWrVkASO", + "javascript-functions:iifes": "YZlCoPvZuX5MmpLOTj5d4", + "javascript-functions:arguments-object": "QLC7bW-qHskLH2HOA-Sko", + "javascript-functions:scope-and-function-stack": "ISNzEYtrWe2v0R7Xfl5k-", + "javascript-functions:built-in-functions": "s8wUJivWmetysJ8bt9FBC", + "javascript-functions:scope-and-function-stack:recursion": "YJGhhFuWmFvhRKOg6nwON", + "javascript-functions:scope-and-function-stack:lexical-scoping": "q7b5iMJ1Lfka5A-K-YcaN", + "javascript-functions:scope-and-function-stack:closures": "itS6B12I8I1KNCPvc0KCQ", + "javascript-strict-mode": "Xw8lb0xCWKmNs4KZfhBUy", + "javascript-this-keyword": "fm2CuL1IZp3hnrLrPUX7U", + "javascript-this-keyword:function-borrowing": "EAN6DCiCfSq04R4vKgZ0q", + "javascript-this-keyword:explicit-binding": "p2NhSwPYMtRiPRHjPaqmX", + "javascript-this-keyword:this-in-a-method": "3E5MuxPvEJU-dwgTrbQAR", + "javascript-this-keyword:this-in-a-function": "azsXq6Y5iCvQDgTWZpWQ3", + "javascript-this-keyword:using-this-alone": "qps2Mdm-lwa4Wr0IxKm0C", + "javascript-this-keyword:this-in-event-handlers": "JVbEBtVrTTFnTF3_yUIAC", + "javascript-this-keyword:this-in-arrow-functions": "P0190rTm2wLQmCzWOKour", + "javascript-asynchronous-javascript": "sFOqx6_7poVIVuXhJVY0E", + "javascript-asynchronous-javascript:event-loop": "_bs5NNHVdHLWGBmpYwHMi", + "javascript-asynchronous-javascript:set-timeout": "wXypuqEmFLIubx-QQvDIr", + "javascript-asynchronous-javascript:set-interval": "jaC3XXudd7OBKwwCpoPFf", + "javascript-asynchronous-javascript:callbacks": "D8oGY7pdviRByaz6c9sU6", + "javascript-asynchronous-javascript:callbacks:callback-hell": "PJSdqvh5OBwPCNpn3q_S5", + "javascript-asynchronous-javascript:promises": "yXSF5gGST7l2X-4z1g0d_", + "javascript-asynchronous-javascript:promises:async-await": "Dn872mgexmxoLtbkIgIgz", + "working-with-apis": "q6vciQb_Jk-Up16Pk5NeE", + "working-with-apis:xml-http-request": "LiuhBE7dIlkoWkthSoCsa", + "working-with-apis:fetch": "kL5rfWxXe4J44ENru1uJS", + "javascript-iterators-and-generators": "TZ8XGdykSJjKBjX6Nivwo", + "javascript-classes": "F_Lrj0F7UXriqJ0mhwxCy", + "javascript-modules": "hLnJlwnECFbVMeFpH0M5Q", + "javascript-modules:commonjs": "4EXeGkOpfAViB9Uo4zL6O", + "javascript-modules:esm": "jLNmYeo20Mbu4WRvVgvwU", + "javascript-memory-management": "MatU4SthAAhByJ40XdZQn", + "javascript-memory-management:memory-lifecycle": "ZR2WfH1cerA-V_kaPwRvm", + "javascript-memory-management:garbage-collection": "KKyX8N4lTgN0w-Khm6Ztq", + "javascript-chrome-dev-tools": "rc5WzBBOm2cus-rQl8EOE", + "javascript-chrome-dev-tools:debugging-issues": "dhEtcgv7G9fNV-AUNJdWk", + "javascript-chrome-dev-tools:debugging-memory-leaks": "BA_ArmZMnVMaL_zl3W3Pt", + "javascript-chrome-dev-tools:debugging-performance": "ECxISKUAU7js_JsfSHzud" +} \ No newline at end of file diff --git a/src/data/roadmaps/kubernetes/content/100-kubernetes-introduction/103-kubernetes-alternatives.md b/src/data/roadmaps/kubernetes/content/100-kubernetes-introduction/103-kubernetes-alternatives.md index 24ba54e78..dee19dccd 100644 --- a/src/data/roadmaps/kubernetes/content/100-kubernetes-introduction/103-kubernetes-alternatives.md +++ b/src/data/roadmaps/kubernetes/content/100-kubernetes-introduction/103-kubernetes-alternatives.md @@ -10,7 +10,6 @@ Kubernetes is a popular open-source container orchestration tool that is widely Learn more from the following links: -- [@article@Kubernetes vs. Docker Swarm – A Comparison](https://www.freecodecamp.org/news/kubernetes-vs-docker-swarm-what-is-the-difference/) - [@article@Compare Apache Mesos vs. Kubernetes](https://www.techtarget.com/searchitoperations/tip/Compare-container-orchestrators-Apache-Mesos-vs-Kubernetes) - [@article@Docker Swarm, a User-Friendly Alternative to Kubernetes](https://thenewstack.io/docker-swarm-a-user-friendly-alternative-to-kubernetes/) - [@article@Can You Live without Kubernetes?](https://thenewstack.io/can-you-live-without-kubernetes/) diff --git a/src/data/roadmaps/kubernetes/content/108-monitoring-and-logging/104-observability-engines.md b/src/data/roadmaps/kubernetes/content/108-monitoring-and-logging/104-observability-engines.md index 74d97e4ca..66040c2d9 100644 --- a/src/data/roadmaps/kubernetes/content/108-monitoring-and-logging/104-observability-engines.md +++ b/src/data/roadmaps/kubernetes/content/108-monitoring-and-logging/104-observability-engines.md @@ -7,3 +7,5 @@ Learn more from the following resources: - [@article@Kubernetes Observability 101: Tools, Best Practices, And More](https://www.cloudzero.com/blog/kubernetes-observability) - [@article@Kubernetes Observability in KubeSphere](https://kubesphere.io/observability/) - [@feed@Explore top posts about Observability](https://app.daily.dev/tags/observability?ref=roadmapsh) +- [@opensource@K8sGPT - AI scanner for Kubernetes problems](https://github.com/k8sgpt-ai/k8sgpt) +- [@opensource@HolmesGPT - AIOps Platform for investigating Kubernetes problems and Prometheus alerts](https://github.com/robusta-dev/holmesgpt/) diff --git a/src/data/roadmaps/linux/content/100-navigation-basics/100-basic-commands.md b/src/data/roadmaps/linux/content/100-navigation-basics/100-basic-commands.md index ce88fe09f..7bfb570bf 100644 --- a/src/data/roadmaps/linux/content/100-navigation-basics/100-basic-commands.md +++ b/src/data/roadmaps/linux/content/100-navigation-basics/100-basic-commands.md @@ -1,16 +1,20 @@ # Linux Navigation Basics: Basic Commands -In the world of Linux, understanding how to navigate through the system is quite essential. Unlike many other modern operating systems, Linux primarily uses command-line interfaces (CLI) thereby, making it necessary to get comfortable with different commands. These basic commands under Linux navigation involve moving around the file system, viewing the contents of directories, creating, renaming or deleting files/directories, and more. Navigating through Linux using these commands not only increases efficiency, but also provides a deeper understanding of the system's file and directory structure. +Linux Navigation Basics is about using simple commands to move around and manage files on your computer. For example, cd lets you go into different folders, ls shows you what files and folders are inside, and pwd tells you where you are currently. These commands help you easily find and organize your files. + ```bash # Change directory cd /path/to/directory -# List contents of a directory +# Lists files and directories in the current directory. ls # View current working directory pwd + +# Displays the mannual page for a command +man ls ``` In this brief introduction, we will discuss and explore these basic commands and how they aid us in navigation around the Linux environment. \ No newline at end of file diff --git a/src/data/roadmaps/linux/content/100-navigation-basics/101-moving-files.md b/src/data/roadmaps/linux/content/100-navigation-basics/101-moving-files.md index c2f1245f2..a1079dd2b 100644 --- a/src/data/roadmaps/linux/content/100-navigation-basics/101-moving-files.md +++ b/src/data/roadmaps/linux/content/100-navigation-basics/101-moving-files.md @@ -10,4 +10,4 @@ mv [options] source destination Here, `source` denotes the file or directory that you want to move while `destination` denotes the location where you want to move your source file or directory. -The `mv` command is widely used because of its simplicity and versatility. Whether you want to organize your files by moving them into different directories or rename a bunch of files, the `mv` command is your go-to tool in Linux. \ No newline at end of file +The `mv` command is widely used because of its simplicity and versatility. Whether you want to organize your files by moving them into different directories or rename a bunch of files, the `mv` command is your go-to tool in Linux. diff --git a/src/data/roadmaps/linux/content/100-navigation-basics/102-creating-files.md b/src/data/roadmaps/linux/content/100-navigation-basics/102-creating-files.md index 8acbc9653..3cf3b606c 100644 --- a/src/data/roadmaps/linux/content/100-navigation-basics/102-creating-files.md +++ b/src/data/roadmaps/linux/content/100-navigation-basics/102-creating-files.md @@ -1,8 +1,6 @@ # Creating Files -Linux provides a versatile and powerful command-line interface (CLI) that helps users perform various tasks including file creation and navigation. Learning how to create files is among the fundamental skills for novices venturing into the Linux world. One of the simplest ways to create a file in Linux is with the `touch` command. This command, when supplied with the name of a file as a parameter, either creates a new file with the given name or, if a file with such name is already present, updates the last modified time of the file. - -Another useful command for creating files is `cat >filename`. This command creates a new file with the specified name and waits for user input. Hence, the process ends when you press `Ctrl+D` to send `EOF` (End-Of-File) to the `cat` command. +Creating files in Linux is about making new blank or filled files on your computer. You can use commands like `touch` to create an empty file, `echo` to make a file with some text inside, or `cat` to type directly into a new file. These commands help you set up and save your documents or data. Here's an example of file creation with the `touch` command: @@ -16,4 +14,22 @@ and with `cat` command: cat > newfile.txt ``` -Both these commands create a new "newfile.txt" if it does not already exist. \ No newline at end of file +Both these commands create a new "newfile.txt" if it does not already exist. + +# Deleting Files + +Deleting files in Linux means getting rid of unwanted or unnecessary files from your computer. You use the `rm` command to delete a file, and it’s permanent, so be careful. You can also use `rm -i` (interactive) to ask for confirmation before deleting, which helps prevent accidental loss of important files. + +```bash +# Deletes the file named example.txt +rm example.txt +``` + +```bash +# Ask for confirmation +rm -i [filename] +``` +```bash +# Removes an empty directory +rmdir [directory] +``` diff --git a/src/data/roadmaps/linux/content/100-navigation-basics/103-directory-hierarchy.md b/src/data/roadmaps/linux/content/100-navigation-basics/103-directory-hierarchy.md index 6ae052cdb..1cd5b9a7c 100644 --- a/src/data/roadmaps/linux/content/100-navigation-basics/103-directory-hierarchy.md +++ b/src/data/roadmaps/linux/content/100-navigation-basics/103-directory-hierarchy.md @@ -2,9 +2,15 @@ In Linux, understanding the directory hierarchy is crucial for efficient navigation and file management. A Linux system's directory structure, also known as the Filesystem Hierarchy Standard (FHS), is a defined tree structure that helps to prevent files from being scattered all over the system and instead organise them in a logical and easy-to-navigate manner. -Each directory serves a specific purpose. For instance, `/bin` holds binary executable files (command files), `/etc` has system configuration files, `/home` stores users' personal files, and `/var` contains varying files such as logs and print queues. - -No code snippet is necessary as understanding directory hierarchy is a conceptual knowledge and doesn't involve code execution. +- `/`: Root directory, the top level of the file system. +- `/home`: User home directories. +- `/bin`: Essential binary executables. +- `/sbin`: System administration binaries. +- `/etc`: Configuration files. +- `/var`: Variable data (logs, spool files). +- `/usr`: User programs and data. +- `/lib`: Shared libraries. +- `/tmp`: Temporary files. Visit the following resources to learn more: diff --git a/src/data/roadmaps/linux/content/100-navigation-basics/index.md b/src/data/roadmaps/linux/content/100-navigation-basics/index.md index 6077c4591..d0f8635ab 100644 --- a/src/data/roadmaps/linux/content/100-navigation-basics/index.md +++ b/src/data/roadmaps/linux/content/100-navigation-basics/index.md @@ -1,6 +1,6 @@ # Navigation Basics -In Linux, navigation between directories and files is a fundamental, yet essential function that allows you to exploit the power of the command-line interface (CLI). Mastering the basic Linux navigation commands such as `cd`, `pwd`, `ls`, and `tree` enables you to flawlessly move from one point to another within the filesystem, display the list of files & directories, and understand your position relative to other system components. These commands are advantageous not just to system administrators but to anyone interacting with Linux environments, hence familiarizing yourself with them is a critical step in building Linux proficiency. +In Linux, navigation between directories and files is a fundamental, yet essential function that allows you to exploit the power of the command-line interface (CLI). Mastering the basic Linux navigation commands such as `cd`, `pwd`, `ls`, and `tree` enables you to flawlessly move from one point to another within the filesystem, display the list of files & directories, and understand your position relative to other system components. Here is how you use these commands: @@ -10,20 +10,13 @@ Here is how you use these commands: cd /path/to/directory ``` -- To print the current directory, use the `pwd` command: - -```bash -pwd -``` - - To list the contents of a directory, use the `ls` command: ```bash ls ``` +Visit the following resources to learn more: -- The `tree` command displays directories as trees (system hierarchy): - -```bash -tree -``` \ No newline at end of file +- [@article@Intro to Linux](https://www.linkedin.com/pulse/intro-linux-fundamentals-what-hillary-nyakundi-4u7af/) +- [@video@Linux fundamentals](https://www.youtube.com/watch?v=kPylihJRG70&t=1381s&ab_channel=TryHackMe) +- [@article@Practice on Linux fundamentals]( https://linuxjourney.com/) diff --git a/src/data/roadmaps/linux/content/101-editing-files/100-vim.md b/src/data/roadmaps/linux/content/101-editing-files/100-vim.md index 1f60772cd..f78b5a31c 100644 --- a/src/data/roadmaps/linux/content/101-editing-files/100-vim.md +++ b/src/data/roadmaps/linux/content/101-editing-files/100-vim.md @@ -1,14 +1,25 @@ -# Vim: An Essential Tool for Editing Files +# Vim: An Essential Tool for Editing Files -Vim, an acronym for 'Vi Improved', is a highly configurable and complex text editor built to enable efficient text editing in Linux environments. It is an improved version of the 'vi' editor, a standard text editor that comes with a UNIX operating system. While learning Vim can have a steep learning curve, its powerful features allow users to accomplish tasks more quickly than with many other text editors. +Vim (Vi Improved) is a powerful and flexible text editor used in Unix-like systems. It builds on the original Vi editor with additional features and improvements, including multi-level undo, syntax highlighting, and an extensive set of commands for text manipulation. +
+Vim operates primarily in three modes: -One of the key reasons that make Vim popular among developers is its ability to handle large files adeptly, having a less memory footprint. Moreover, it operates in different modes such as 'command mode', 'insert mode', and 'visual mode' which eases the process of editing files. - -Although the challenge of learning Vim may seem daunting, it is a fundamental tool for anyone seeking mastery in the Linux environment. +- Normal (for navigation and manipulation). +- Insert (for editing text). +- Command (for executing commands). A simple use of Vim to edit a 'example.txt' file would look like this: + ```bash vim example.txt ``` -To insert new content, press 'i' for 'insert mode'. After editing, press 'ESC' to go back to 'command mode', and type ':wq' to save and quit. \ No newline at end of file +To insert new content, press 'i' for 'insert mode'. After editing, press 'ESC' to go back to 'command mode', and type ':wq' to save and quit. + +To learn more, visit this: +
+Check out this [Github repo](https://github.com/iggredible/Learn-Vim?tab=readme-ov-file) on Vim from basic to advanced. + +- [@article@Learn Vim Progressively](https://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/) +- [@video@Vim basics](https://www.youtube.com/watch?v=wACD8WEnImo&list=PLT98CRl2KxKHy4A5N70jMRYAROzzC2a6x&ab_channel=LearnLinuxTV) +- [@article@Platform to practice Vim](https://vim-adventures.com/) diff --git a/src/data/roadmaps/linux/content/101-editing-files/101-nano.md b/src/data/roadmaps/linux/content/101-editing-files/101-nano.md index 0e73b984d..5651813dc 100644 --- a/src/data/roadmaps/linux/content/101-editing-files/101-nano.md +++ b/src/data/roadmaps/linux/content/101-editing-files/101-nano.md @@ -1,13 +1,25 @@ # Nano: A File Editing Tool -Nano is a popular, user-friendly text editor used for creating and editing files directly within the Linux command line interface (CLI). It is an alternative to editors like Vi and Emacs and is considered more straightforward for beginners due to its simple and intuitive interface. +Nano is a popular, user-friendly text editor used for creating and editing files directly within the Linux command line interface (CLI). It is an alternative to editors like `Vi` and `Emacs` and is considered more straightforward for beginners due to its simple and intuitive interface. -Nano comes pre-installed with many Linux distributions and can be used for various tasks, such as writing scripts, editing configuration files, or taking quick notes. With its interactive command line interface, Nano offers a unique blend of usability and functionality. +Nano comes pre-installed with many Linux distributions but if it's not installed, here's how to do it for popular Linux distributions. +```bash +# Ubuntu based distributions +sudo apt update +sudo apt install nano + +``` +```bash +# Arch Linux +sudo pacman -S nano +``` To use Nano to edit or create files in Linux, the following command can be used: ```bash nano filename ``` +Visit the following resources to learn more: -This command opens the named file or creates a new one if it doesn't exist yet. All the editing is done within the terminal itself. While using Nano, the command options are always visible at the bottom of the screen, making it an excellent choice for Linux beginners or those preferring straightforward text editing tools. \ No newline at end of file +- [@article@Blog on nano](https://ioflood.com/blog/nano-linux-command/) +- [@video@Nano editor fundamentals](https://www.youtube.com/watch?v=gyKiDczLIZ4&ab_channel=HackerSploit) diff --git a/src/data/roadmaps/linux/content/101-editing-files/index.md b/src/data/roadmaps/linux/content/101-editing-files/index.md index 7d4c30507..08b16919f 100644 --- a/src/data/roadmaps/linux/content/101-editing-files/index.md +++ b/src/data/roadmaps/linux/content/101-editing-files/index.md @@ -7,7 +7,17 @@ For instance, `nano` is a basic text editor, which is easy to use and perfect fo To edit a file you first need to open it using a command like: ```bash -nano filename +nano [filename] ``` -This command will open the file `filename` in the `nano` editor. Once open, you can make changes to the file, save, and exit it. Other editors like `vi/vim` and `emacs` have their own specific commands for editing, saving and exiting files. It's essential to learn the basic commands of your chosen editor to efficiently work with files in Linux. \ No newline at end of file +```bash +vi [filename] or vim [filename] +``` + +```bash +gedit [filename] +``` +Visit the following resources to learn more: + +- [@article@How to edit a file](https://www.scaler.com/topics/how-to-edit-a-file-in-linux/) +- [@article@Linux edit file](https://www.javatpoint.com/linux-edit-file) \ No newline at end of file diff --git a/src/data/roadmaps/mlops/content/100-programming-fundamentals/101-bash.md b/src/data/roadmaps/mlops/content/100-programming-fundamentals/101-bash.md deleted file mode 100644 index 0032387b3..000000000 --- a/src/data/roadmaps/mlops/content/100-programming-fundamentals/101-bash.md +++ /dev/null @@ -1,6 +0,0 @@ -# Bash - -Understanding bash is essential for MLOps tasks. - -- **Book Suggestion:** _The Linux Command Line, 2nd Edition_ by William E. Shotts -- [@article@Bash Scripting Tutorial](https://www.freecodecamp.org/news/bash-scripting-tutorial-linux-shell-script-and-command-line-for-beginners/) diff --git a/src/data/roadmaps/mlops/content/105-data-eng-fundamentals/100-data-pipelines/100-airflow.md b/src/data/roadmaps/mlops/content/airflow@pVSlVHXIap0unFxLGM-lQ.md similarity index 100% rename from src/data/roadmaps/mlops/content/105-data-eng-fundamentals/100-data-pipelines/100-airflow.md rename to src/data/roadmaps/mlops/content/airflow@pVSlVHXIap0unFxLGM-lQ.md diff --git a/src/data/roadmaps/mlops/content/102-cloud-computing/100-aws-azure-gcp.md b/src/data/roadmaps/mlops/content/aws--azure--gcp@u3E7FGW4Iwdsu61KYFxCX.md similarity index 100% rename from src/data/roadmaps/mlops/content/102-cloud-computing/100-aws-azure-gcp.md rename to src/data/roadmaps/mlops/content/aws--azure--gcp@u3E7FGW4Iwdsu61KYFxCX.md diff --git a/src/data/roadmaps/mlops/content/bash@mMzqJF2KQ49TDEk5F3VAI.md b/src/data/roadmaps/mlops/content/bash@mMzqJF2KQ49TDEk5F3VAI.md new file mode 100644 index 000000000..b2d82c4fd --- /dev/null +++ b/src/data/roadmaps/mlops/content/bash@mMzqJF2KQ49TDEk5F3VAI.md @@ -0,0 +1,5 @@ +# Bash + +Understanding bash is essential for MLOps tasks. + +- **Book Suggestion:** _The Linux Command Line, 2nd Edition_ by William E. Shotts diff --git a/src/data/roadmaps/mlops/content/107-mlops-components/101-ci-cd.md b/src/data/roadmaps/mlops/content/cicd@a6vawajw7BpL6plH_nuAz.md similarity index 100% rename from src/data/roadmaps/mlops/content/107-mlops-components/101-ci-cd.md rename to src/data/roadmaps/mlops/content/cicd@a6vawajw7BpL6plH_nuAz.md diff --git a/src/data/roadmaps/mlops/content/102-cloud-computing/index.md b/src/data/roadmaps/mlops/content/cloud-computing@00GZcwe25QYi7rDzaOoMt.md similarity index 100% rename from src/data/roadmaps/mlops/content/102-cloud-computing/index.md rename to src/data/roadmaps/mlops/content/cloud-computing@00GZcwe25QYi7rDzaOoMt.md diff --git a/src/data/roadmaps/mlops/content/102-cloud-computing/101-cloud-native-ml-services.md b/src/data/roadmaps/mlops/content/cloud-native-ml-services@kbfucfIO5KCsuv3jKbHTa.md similarity index 100% rename from src/data/roadmaps/mlops/content/102-cloud-computing/101-cloud-native-ml-services.md rename to src/data/roadmaps/mlops/content/cloud-native-ml-services@kbfucfIO5KCsuv3jKbHTa.md diff --git a/src/data/roadmaps/mlops/content/103-containerization/index.md b/src/data/roadmaps/mlops/content/containerization@tKeejLv8Q7QX40UtOjpav.md similarity index 100% rename from src/data/roadmaps/mlops/content/103-containerization/index.md rename to src/data/roadmaps/mlops/content/containerization@tKeejLv8Q7QX40UtOjpav.md diff --git a/src/data/roadmaps/mlops/content/105-data-eng-fundamentals/index.md b/src/data/roadmaps/mlops/content/data-engineering-fundamentals@VykbCu7LWIx8fQpqKzoA7.md similarity index 100% rename from src/data/roadmaps/mlops/content/105-data-eng-fundamentals/index.md rename to src/data/roadmaps/mlops/content/data-engineering-fundamentals@VykbCu7LWIx8fQpqKzoA7.md diff --git a/src/data/roadmaps/mlops/content/105-data-eng-fundamentals/103-data-ingestion-architecture.md b/src/data/roadmaps/mlops/content/data-ingestion-architecture@Berd78HvnulNEGOsHCf8n.md similarity index 100% rename from src/data/roadmaps/mlops/content/105-data-eng-fundamentals/103-data-ingestion-architecture.md rename to src/data/roadmaps/mlops/content/data-ingestion-architecture@Berd78HvnulNEGOsHCf8n.md diff --git a/src/data/roadmaps/mlops/content/105-data-eng-fundamentals/101-data-lakes-warehouses.md b/src/data/roadmaps/mlops/content/data-lakes--warehouses@wOogVDV4FIDLXVPwFqJ8C.md similarity index 100% rename from src/data/roadmaps/mlops/content/105-data-eng-fundamentals/101-data-lakes-warehouses.md rename to src/data/roadmaps/mlops/content/data-lakes--warehouses@wOogVDV4FIDLXVPwFqJ8C.md diff --git a/src/data/roadmaps/mlops/content/107-mlops-components/104-data-lineage.md b/src/data/roadmaps/mlops/content/data-lineage--feature-stores@6XgP_2NLuiw654zvTyueT.md similarity index 100% rename from src/data/roadmaps/mlops/content/107-mlops-components/104-data-lineage.md rename to src/data/roadmaps/mlops/content/data-lineage--feature-stores@6XgP_2NLuiw654zvTyueT.md diff --git a/src/data/roadmaps/mlops/content/105-data-eng-fundamentals/100-data-pipelines/index.md b/src/data/roadmaps/mlops/content/data-pipelines@cOg3ejZRYE-u-M0c89IjM.md similarity index 100% rename from src/data/roadmaps/mlops/content/105-data-eng-fundamentals/100-data-pipelines/index.md rename to src/data/roadmaps/mlops/content/data-pipelines@cOg3ejZRYE-u-M0c89IjM.md diff --git a/src/data/roadmaps/mlops/content/103-containerization/100-docker.md b/src/data/roadmaps/mlops/content/docker@XIdCvT-4HyyglHJLRrHlz.md similarity index 100% rename from src/data/roadmaps/mlops/content/103-containerization/100-docker.md rename to src/data/roadmaps/mlops/content/docker@XIdCvT-4HyyglHJLRrHlz.md diff --git a/src/data/roadmaps/mlops/content/107-mlops-components/103-experiment-tracking.md b/src/data/roadmaps/mlops/content/experiment-tracking--model-registry@fGGWKmAJ50Ke6wWJBEgby.md similarity index 100% rename from src/data/roadmaps/mlops/content/107-mlops-components/103-experiment-tracking.md rename to src/data/roadmaps/mlops/content/experiment-tracking--model-registry@fGGWKmAJ50Ke6wWJBEgby.md diff --git a/src/data/roadmaps/mlops/content/105-data-eng-fundamentals/104-flink.md b/src/data/roadmaps/mlops/content/flink@o6GQ3-8DgDtHzdX6yeg1w.md similarity index 100% rename from src/data/roadmaps/mlops/content/105-data-eng-fundamentals/104-flink.md rename to src/data/roadmaps/mlops/content/flink@o6GQ3-8DgDtHzdX6yeg1w.md diff --git a/src/data/roadmaps/mlops/content/101-version-control-systems/100-git.md b/src/data/roadmaps/mlops/content/git@06T5CbZAGJU6fJhCmqCC8.md similarity index 100% rename from src/data/roadmaps/mlops/content/101-version-control-systems/100-git.md rename to src/data/roadmaps/mlops/content/git@06T5CbZAGJU6fJhCmqCC8.md diff --git a/src/data/roadmaps/mlops/content/101-version-control-systems/101-github.md b/src/data/roadmaps/mlops/content/github@7t7jSb3YgyWlhgCe8Se1I.md similarity index 100% rename from src/data/roadmaps/mlops/content/101-version-control-systems/101-github.md rename to src/data/roadmaps/mlops/content/github@7t7jSb3YgyWlhgCe8Se1I.md diff --git a/src/data/roadmaps/mlops/content/100-programming-fundamentals/102-golang.md b/src/data/roadmaps/mlops/content/go@vdVq3RQvQF3mF8PQc6DMg.md similarity index 100% rename from src/data/roadmaps/mlops/content/100-programming-fundamentals/102-golang.md rename to src/data/roadmaps/mlops/content/go@vdVq3RQvQF3mF8PQc6DMg.md diff --git a/src/data/roadmaps/mlops/content/index.md b/src/data/roadmaps/mlops/content/index.md deleted file mode 100644 index 4e768b56d..000000000 --- a/src/data/roadmaps/mlops/content/index.md +++ /dev/null @@ -1 +0,0 @@ -# \ No newline at end of file diff --git a/src/data/roadmaps/mlops/content/108-infra-as-code.md b/src/data/roadmaps/mlops/content/infrastructure-as-code@sf67bSL7HAx6iN7S6MYKs.md similarity index 100% rename from src/data/roadmaps/mlops/content/108-infra-as-code.md rename to src/data/roadmaps/mlops/content/infrastructure-as-code@sf67bSL7HAx6iN7S6MYKs.md diff --git a/src/data/roadmaps/mlops/content/105-data-eng-fundamentals/103-kafka.md b/src/data/roadmaps/mlops/content/kafka@fMNwzhgLgHlAZJ9NvKikR.md similarity index 100% rename from src/data/roadmaps/mlops/content/105-data-eng-fundamentals/103-kafka.md rename to src/data/roadmaps/mlops/content/kafka@fMNwzhgLgHlAZJ9NvKikR.md diff --git a/src/data/roadmaps/mlops/content/103-containerization/101-kubernetes.md b/src/data/roadmaps/mlops/content/kubernetes@XQoK9l-xtN2J8ZV8dw53X.md similarity index 100% rename from src/data/roadmaps/mlops/content/103-containerization/101-kubernetes.md rename to src/data/roadmaps/mlops/content/kubernetes@XQoK9l-xtN2J8ZV8dw53X.md diff --git a/src/data/roadmaps/mlops/content/104-ml-fundamentals.md b/src/data/roadmaps/mlops/content/machine-learning-fundamentals@ulka7VEVjz6ls5SnI6a6z.md similarity index 100% rename from src/data/roadmaps/mlops/content/104-ml-fundamentals.md rename to src/data/roadmaps/mlops/content/machine-learning-fundamentals@ulka7VEVjz6ls5SnI6a6z.md diff --git a/src/data/roadmaps/mlops/content/107-mlops-components/index.md b/src/data/roadmaps/mlops/content/mlops-components@l1xasxQy2vAY34NWaqKEe.md similarity index 100% rename from src/data/roadmaps/mlops/content/107-mlops-components/index.md rename to src/data/roadmaps/mlops/content/mlops-components@l1xasxQy2vAY34NWaqKEe.md diff --git a/src/data/roadmaps/mlops/content/106-mlops-principles.md b/src/data/roadmaps/mlops/content/mlops-principles@iTsEHVCo6KGq7H2HMgy5S.md similarity index 100% rename from src/data/roadmaps/mlops/content/106-mlops-principles.md rename to src/data/roadmaps/mlops/content/mlops-principles@iTsEHVCo6KGq7H2HMgy5S.md diff --git a/src/data/roadmaps/mlops/content/107-mlops-components/105-model-training.md b/src/data/roadmaps/mlops/content/model-training--serving@zsW1NRb0dMgS-KzWsI0QU.md similarity index 100% rename from src/data/roadmaps/mlops/content/107-mlops-components/105-model-training.md rename to src/data/roadmaps/mlops/content/model-training--serving@zsW1NRb0dMgS-KzWsI0QU.md diff --git a/src/data/roadmaps/mlops/content/107-mlops-components/106-monitoring.md b/src/data/roadmaps/mlops/content/monitoring--observability@r4fbUwD83uYumEO1X8f09.md similarity index 100% rename from src/data/roadmaps/mlops/content/107-mlops-components/106-monitoring.md rename to src/data/roadmaps/mlops/content/monitoring--observability@r4fbUwD83uYumEO1X8f09.md diff --git a/src/data/roadmaps/mlops/content/107-mlops-components/102-orchestration.md b/src/data/roadmaps/mlops/content/orchestration@fes7M--Y8i08_zeP98tVV.md similarity index 100% rename from src/data/roadmaps/mlops/content/107-mlops-components/102-orchestration.md rename to src/data/roadmaps/mlops/content/orchestration@fes7M--Y8i08_zeP98tVV.md diff --git a/src/data/roadmaps/mlops/content/100-programming-fundamentals/index.md b/src/data/roadmaps/mlops/content/programming-fundamentals@_7uvOebQUI4xaSwtMjpEd.md similarity index 100% rename from src/data/roadmaps/mlops/content/100-programming-fundamentals/index.md rename to src/data/roadmaps/mlops/content/programming-fundamentals@_7uvOebQUI4xaSwtMjpEd.md diff --git a/src/data/roadmaps/mlops/content/100-programming-fundamentals/100-python.md b/src/data/roadmaps/mlops/content/python@Vh81GnOUOZvDOlOyI5PwT.md similarity index 100% rename from src/data/roadmaps/mlops/content/100-programming-fundamentals/100-python.md rename to src/data/roadmaps/mlops/content/python@Vh81GnOUOZvDOlOyI5PwT.md diff --git a/src/data/roadmaps/mlops/content/105-data-eng-fundamentals/102-spark.md b/src/data/roadmaps/mlops/content/spark@UljuqA89_SlCSDWWMD_C_.md similarity index 100% rename from src/data/roadmaps/mlops/content/105-data-eng-fundamentals/102-spark.md rename to src/data/roadmaps/mlops/content/spark@UljuqA89_SlCSDWWMD_C_.md diff --git a/src/data/roadmaps/mlops/content/101-version-control-systems/index.md b/src/data/roadmaps/mlops/content/version-control-systems@oUhlUoWQQ1txx_sepD5ev.md similarity index 100% rename from src/data/roadmaps/mlops/content/101-version-control-systems/index.md rename to src/data/roadmaps/mlops/content/version-control-systems@oUhlUoWQQ1txx_sepD5ev.md diff --git a/src/data/roadmaps/mlops/content/107-mlops-components/100-version-control.md b/src/data/roadmaps/mlops/content/version-control@kHDSwlSq8WkLey4EJIQSR.md similarity index 100% rename from src/data/roadmaps/mlops/content/107-mlops-components/100-version-control.md rename to src/data/roadmaps/mlops/content/version-control@kHDSwlSq8WkLey4EJIQSR.md diff --git a/src/data/roadmaps/mlops/migration-mapping.json b/src/data/roadmaps/mlops/migration-mapping.json new file mode 100644 index 000000000..e2fdc1106 --- /dev/null +++ b/src/data/roadmaps/mlops/migration-mapping.json @@ -0,0 +1,34 @@ +{ + "programming-fundamentals": "_7uvOebQUI4xaSwtMjpEd", + "programming-fundamentals:python": "Vh81GnOUOZvDOlOyI5PwT", + "programming-fundamentals:golang": "vdVq3RQvQF3mF8PQc6DMg", + "programming-fundamentals:bash": "mMzqJF2KQ49TDEk5F3VAI", + "version-control-systems": "oUhlUoWQQ1txx_sepD5ev", + "version-control-systems:git": "06T5CbZAGJU6fJhCmqCC8", + "version-control-systems:github": "7t7jSb3YgyWlhgCe8Se1I", + "cloud-computing": "00GZcwe25QYi7rDzaOoMt", + "cloud-computing:aws-azure-gcp": "u3E7FGW4Iwdsu61KYFxCX", + "cloud-computing:cloud-native-ml-services": "kbfucfIO5KCsuv3jKbHTa", + "containerization": "tKeejLv8Q7QX40UtOjpav", + "containerization:docker": "XIdCvT-4HyyglHJLRrHlz", + "containerization:kubernetes": "XQoK9l-xtN2J8ZV8dw53X", + "ml-fundamentals": "ulka7VEVjz6ls5SnI6a6z", + "data-eng-fundamentals": "VykbCu7LWIx8fQpqKzoA7", + "data-eng-fundamentals:data-pipelines": "cOg3ejZRYE-u-M0c89IjM", + "data-eng-fundamentals:data-lakes-warehouses": "wOogVDV4FIDLXVPwFqJ8C", + "data-eng-fundamentals:data-ingestion-architecture": "Berd78HvnulNEGOsHCf8n", + "data-eng-fundamentals:data-pipelines:airflow": "pVSlVHXIap0unFxLGM-lQ", + "data-eng-fundamentals:spark": "UljuqA89_SlCSDWWMD_C_", + "data-eng-fundamentals:kafka": "fMNwzhgLgHlAZJ9NvKikR", + "data-eng-fundamentals:flink": "o6GQ3-8DgDtHzdX6yeg1w", + "mlops-principles": "iTsEHVCo6KGq7H2HMgy5S", + "mlops-components": "l1xasxQy2vAY34NWaqKEe", + "mlops-components:version-control": "kHDSwlSq8WkLey4EJIQSR", + "mlops-components:ci-cd": "a6vawajw7BpL6plH_nuAz", + "mlops-components:orchestration": "fes7M--Y8i08_zeP98tVV", + "mlops-components:experiment-tracking": "fGGWKmAJ50Ke6wWJBEgby", + "mlops-components:data-lineage": "6XgP_2NLuiw654zvTyueT", + "mlops-components:model-training": "zsW1NRb0dMgS-KzWsI0QU", + "mlops-components:monitoring": "r4fbUwD83uYumEO1X8f09", + "infra-as-code": "sf67bSL7HAx6iN7S6MYKs" +} \ No newline at end of file diff --git a/src/data/roadmaps/mlops/mlops.json b/src/data/roadmaps/mlops/mlops.json index 1c692154a..0bafa181e 100644 --- a/src/data/roadmaps/mlops/mlops.json +++ b/src/data/roadmaps/mlops/mlops.json @@ -1,3259 +1,2143 @@ { - "mockup": { - "controls": { - "control": [ - { - "ID": "1160", - "typeID": "Arrow", - "zOrder": "0", - "w": "92", - "h": "54", - "measuredW": "150", - "measuredH": "100", - "x": "775", - "y": "1357", - "properties": { - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 91.8899475740078, - "y": 0.1827846917374245 - }, - "p1": { - "x": 0.47294727744165954, - "y": -0.11979256698357832 - }, - "p2": { - "x": -0.12049726552004358, - "y": 53.973506290230716 - } - } - }, - { - "ID": "1161", - "typeID": "Arrow", - "zOrder": "1", - "w": "1", - "h": "62", - "measuredW": "150", - "measuredH": "100", - "x": "609", - "y": "1230", - "properties": { - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 0.08850738176079176, - "y": 62.03857705484643 - }, - "p1": { - "x": 0.4673783006670681, - "y": -0.0036060514395746643 - }, - "p2": { - "x": 0.08850738176079176, - "y": 0.4180672042343758 - } - } - }, - { - "ID": "1162", - "typeID": "Arrow", - "zOrder": "2", - "w": "107", - "h": "60", - "measuredW": "150", - "measuredH": "100", - "x": "1389", - "y": "649", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 106.95319991843417, - "y": 0.21734292549183465 - }, - "p1": { - "x": 0.48232779097387135, - "y": 0.06750593824228049 - }, - "p2": { - "x": -0.4816074511304578, - "y": 59.863034899371996 - } - } - }, - { - "ID": "1163", - "typeID": "Arrow", - "zOrder": "3", - "w": "226", - "h": "145", - "measuredW": "150", - "measuredH": "100", - "x": "1107", - "y": "1641", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "stroke": "dotted", - "p0": { - "x": 226.47706272280266, - "y": 145.09752175520043 - }, - "p1": { - "x": 0.48716510424745796, - "y": -0.09050463451557213 - }, - "p2": { - "x": 0.2240318781412043, - "y": 0.17641653110717925 - } - } - }, - { - "ID": "1164", - "typeID": "Arrow", - "zOrder": "4", - "w": "226", - "h": "95", - "measuredW": "150", - "measuredH": "100", - "x": "1109", - "y": "1639", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "stroke": "dotted", - "p0": { - "x": 225.2491412605234, - "y": 94.57035639603009 - }, - "p1": { - "x": 0.5112460408552416, - "y": -0.07415022000257976 - }, - "p2": { - "x": -0.45605469521706254, - "y": -0.4634103221762871 - } - } - }, - { - "ID": "1165", - "typeID": "Arrow", - "zOrder": "5", - "w": "213", - "h": "44", - "measuredW": "150", - "measuredH": "100", - "x": "1123", - "y": "1633", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "stroke": "dotted", - "p0": { - "x": 212.56905468716513, - "y": 43.81407905043466 - }, - "p1": { - "x": 0.5075193151706439, - "y": -0.04906393850575839 - }, - "p2": { - "x": 0.06299299784222967, - "y": 0.25693597125678025 - } - } - }, - { - "ID": "1166", - "typeID": "Arrow", - "zOrder": "6", - "w": "219", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "1126", - "y": "1621", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "stroke": "dotted", - "p0": { - "x": 218.47706272280266, - "y": 0.09752175520043238 - }, - "p1": { - "x": 0.49999999999999983, - "y": 0 - }, - "p2": { - "x": -0.2971801488740766, - "y": 0.09752175520043238 - } - } - }, - { - "ID": "1167", - "typeID": "Arrow", - "zOrder": "7", - "w": "201", - "h": "46", - "measuredW": "150", - "measuredH": "100", - "x": "1135", - "y": "1563", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "stroke": "dotted", - "p0": { - "x": 200.56905468716513, - "y": 0.30152435924355814 - }, - "p1": { - "x": 0.4723739008968917, - "y": 0.03172772602757116 - }, - "p2": { - "x": -0.05778616238194445, - "y": 46.49849429170513 - } - } - }, - { - "ID": "1168", - "typeID": "Arrow", - "zOrder": "8", - "w": "216", - "h": "90", - "measuredW": "150", - "measuredH": "100", - "x": "1118", - "y": "1513", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "stroke": "dotted", - "p0": { - "x": 216.2491412605234, - "y": 0.14481414685678828 - }, - "p1": { - "x": 0.5158288215391025, - "y": 0.059454538465246405 - }, - "p2": { - "x": -0.216660708724703, - "y": 89.89892715849624 - } - } - }, - { - "ID": "1169", - "typeID": "Arrow", - "zOrder": "9", - "w": "1", - "h": "517", - "measuredW": "150", - "measuredH": "100", - "x": "1002", - "y": "1348", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": 0, - "y": 517.5616990602057 - }, - "p1": { - "x": 0.4999999999999998, - "y": 0 - }, - "p2": { - "x": 0, - "y": 0.10948518400027751 - } - } - }, - { - "ID": "1170", - "typeID": "Arrow", - "zOrder": "10", - "w": "235", - "h": "148", - "measuredW": "150", - "measuredH": "100", - "x": "1103", - "y": "1455", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": 235.2088815404486, - "y": 0.06862337461961943 - }, - "p1": { - "x": 0.48837869822485236, - "y": 0.08549112426035499 - }, - "p2": { - "x": 0.2642915982160048, - "y": 147.89892715849624 - }, - "stroke": "dotted" - } - }, - { - "ID": "1171", - "typeID": "Arrow", - "zOrder": "11", - "w": "1", - "h": "218", - "measuredW": "150", - "measuredH": "100", - "x": "1342", - "y": "1119", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": 0, - "y": 217.77529435680026 - }, - "p1": { - "x": 0.4999999999999997, - "y": 0 - }, - "p2": { - "x": 0, - "y": 0.10948518400027751 - } - } - }, - { - "ID": "1172", - "typeID": "Arrow", - "zOrder": "12", - "w": "63", - "h": "105", - "measuredW": "150", - "measuredH": "100", - "x": "810", - "y": "1357", - "properties": { - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 62.37564854400023, - "y": -0.1653379887995925 - }, - "p1": { - "x": 0.5477800857142193, - "y": -0.20118082073468316 - }, - "p2": { - "x": 3.099225975514628, - "y": 104.93313727827694 - } - } - }, - { - "ID": "1173", - "typeID": "Arrow", - "zOrder": "13", - "w": "110", - "h": "4", - "measuredW": "150", - "measuredH": "100", - "x": "766", - "y": "1347", - "properties": { - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 110.39032527680024, - "y": -0.2520769391996964 - }, - "p1": { - "x": 0.46737830066706804, - "y": -0.0036060514395746695 - }, - "p2": { - "x": 0.08850738176079176, - "y": 3.418067204234376 - } - } - }, - { - "ID": "1174", - "typeID": "Arrow", - "zOrder": "14", - "w": "95", - "h": "48", - "measuredW": "150", - "measuredH": "100", - "x": "776", - "y": "1285", - "properties": { - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 95.03742296640019, - "y": 47.74660161440033 - }, - "p1": { - "x": 0.5329020041028875, - "y": 0.14344326968597146 - }, - "p2": { - "x": 0.023406956800158696, - "y": -0.4295191791995876 - } - } - }, - { - "ID": "1175", - "typeID": "Arrow", - "zOrder": "15", - "w": "330", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "1085", - "y": "1346", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": 330.0261202608003, - "y": 0.10948518400027751 - }, - "p1": { - "x": 0.4999999999999997, - "y": 0 - }, - "p2": { - "x": 0, - "y": 0.10948518400027751 - } - } - }, - { - "ID": "1176", - "typeID": "Arrow", - "zOrder": "16", - "w": "211", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "1053", - "y": "1109", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": 210.56248173120025, - "y": 0.10948518400027751 - }, - "p1": { - "x": 0.4999999999999997, - "y": 0 - }, - "p2": { - "x": 0, - "y": 0.10948518400027751 - } - } - }, - { - "ID": "1177", - "typeID": "Arrow", - "zOrder": "17", - "w": "86", - "h": "48", - "measuredW": "150", - "measuredH": "100", - "x": "777", - "y": "1112", - "properties": { - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 86.00806950080016, - "y": -0.193370007999647 - }, - "p1": { - "x": 0.49913203574984505, - "y": -0.12569866906689672 - }, - "p2": { - "x": 0.3616325344002007, - "y": 47.982750785600274 - } - } - }, - { - "ID": "1178", - "typeID": "Arrow", - "zOrder": "18", - "w": "110", - "h": "4", - "measuredW": "150", - "measuredH": "100", - "x": "766", - "y": "1096", - "properties": { - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "10027263", - "p0": { - "x": 110.39032527680024, - "y": -0.2520769391996964 - }, - "p1": { - "x": 0.46737830066706804, - "y": -0.0036060514395746695 - }, - "p2": { - "x": 0.08850738176079176, - "y": 3.418067204234376 - } - } - }, - { - "ID": "1179", - "typeID": "Arrow", - "zOrder": "19", - "w": "202", - "h": "207", - "measuredW": "150", - "measuredH": "100", - "x": "1046", - "y": "888", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": 202.41703584960032, - "y": 0.4697258608002812 - }, - "p1": { - "x": 0.47994703797035837, - "y": 0.21594840473241347 - }, - "p2": { - "x": 0.3449736320003467, - "y": 207.8946903888002 - } - } - }, - { - "ID": "1180", - "typeID": "Arrow", - "zOrder": "20", - "w": "129", - "h": "28", - "measuredW": "150", - "measuredH": "100", - "x": "1363", - "y": "886", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 128.22671495968893, - "y": 28.16661002949195 - }, - "p1": { - "x": 0.38104819840898435, - "y": -0.0902667290594294 - }, - "p2": { - "x": -0.39830420705629876, - "y": 0.1492791218840921 - } - } - }, - { - "ID": "1181", - "typeID": "Arrow", - "zOrder": "21", - "w": "129", - "h": "24", - "measuredW": "150", - "measuredH": "100", - "x": "1361", - "y": "849", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 128.95319991843417, - "y": 0.21734292549183465 - }, - "p1": { - "x": 0.4823277909738713, - "y": 0.06750593824228046 - }, - "p2": { - "x": 0.32818075168870564, - "y": 23.140613668080164 - } - } - }, - { - "ID": "1182", - "typeID": "__group__", - "zOrder": "22", - "measuredW": "163", - "measuredH": "49", - "w": "163", - "h": "49", - "x": "1482", - "y": "827", - "properties": { - "controlName": "100-version-control-systems:git" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "163", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "22", - "measuredH": "25", - "x": "71", - "y": "12", - "properties": { - "size": "17", - "text": "Git" - } - } - ] - } - } - }, - { - "ID": "1183", - "typeID": "__group__", - "zOrder": "23", - "measuredW": "163", - "measuredH": "49", - "w": "163", - "h": "49", - "x": "1482", - "y": "881", - "properties": { - "controlName": "101-version-control-systems:github" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "163", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "54", - "measuredH": "25", - "x": "55", - "y": "12", - "properties": { - "size": "17", - "text": "GitHub" - } - } - ] - } - } - }, - { - "ID": "1184", - "typeID": "Label", - "zOrder": "24", - "measuredW": "161", - "measuredH": "32", - "x": "921", - "y": "1879", - "properties": { - "text": "Keep Learning", - "size": "24" - } - }, - { - "ID": "1185", - "typeID": "Arrow", - "zOrder": "25", - "w": "1", - "h": "63", - "measuredW": "150", - "measuredH": "100", - "x": "1001", - "y": "1922", - "properties": { - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": 0, - "y": -0.053257099628808646 - }, - "p1": { - "x": 0.4438624012549728, - "y": -0.00008403832147459168 - }, - "p2": { - "x": 0, - "y": 63 - }, - "stroke": "dotted" - } - }, - { - "ID": "1186", - "typeID": "Arrow", - "zOrder": "26", - "w": "129", - "h": "28", - "measuredW": "150", - "measuredH": "100", - "x": "1367", - "y": "1118", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 128.22671495968893, - "y": 28.16661002949195 - }, - "p1": { - "x": 0.38104819840898435, - "y": -0.0902667290594294 - }, - "p2": { - "x": -0.39830420705629876, - "y": 0.1492791218840921 - } - } - }, - { - "ID": "1187", - "typeID": "Arrow", - "zOrder": "27", - "w": "129", - "h": "24", - "measuredW": "150", - "measuredH": "100", - "x": "1365", - "y": "1081", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 128.95319991843417, - "y": 0.21734292549183465 - }, - "p1": { - "x": 0.4823277909738713, - "y": 0.06750593824228046 - }, - "p2": { - "x": 0.32818075168870564, - "y": 23.140613668080164 - } - } - }, - { - "ID": "1188", - "typeID": "Arrow", - "zOrder": "28", - "w": "1", - "h": "278", - "measuredW": "150", - "measuredH": "100", - "x": "1250", - "y": "603", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.49999999999999983, - "y": 0 - }, - "p2": { - "x": 0, - "y": 278.1094851840003 - } - } - }, - { - "ID": "1189", - "typeID": "Arrow", - "zOrder": "29", - "w": "129", - "h": "28", - "measuredW": "150", - "measuredH": "100", - "x": "1363", - "y": "733", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 128.22671495968893, - "y": 28.16661002949195 - }, - "p1": { - "x": 0.38104819840898435, - "y": -0.0902667290594294 - }, - "p2": { - "x": -0.39830420705629876, - "y": 0.1492791218840921 - } - } - }, - { - "ID": "1190", - "typeID": "Arrow", - "zOrder": "30", - "w": "129", - "h": "24", - "measuredW": "150", - "measuredH": "100", - "x": "1361", - "y": "696", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 128.95319991843417, - "y": 0.21734292549183465 - }, - "p1": { - "x": 0.4823277909738713, - "y": 0.06750593824228046 - }, - "p2": { - "x": 0.32818075168870564, - "y": 23.140613668080164 - } - } - }, - { - "ID": "1191", - "typeID": "__group__", - "zOrder": "31", - "measuredW": "473", - "measuredH": "175", - "w": "473", - "h": "175", - "x": "549", - "y": "679", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "473", - "h": "175", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "__group__", - "zOrder": "1", - "measuredW": "287", - "measuredH": "27", - "w": "287", - "h": "27", - "x": "26", - "y": "79", - "properties": { - "controlName": "ext_link:roadmap.sh/ai-data-scientist" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Label", - "zOrder": "0", - "measuredW": "254", - "measuredH": "26", - "x": "33", - "y": "0", - "properties": { - "size": "18", - "text": "AI and Data Scientist Roadmap" - } - }, - { - "ID": "1", - "typeID": "__group__", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "3", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "10066329", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "209", - "measuredH": "32", - "x": "26", - "y": "34", - "properties": { - "size": "24", - "text": "Related Roadmaps" - } - }, - { - "ID": "3", - "typeID": "__group__", - "zOrder": "3", - "measuredW": "183", - "measuredH": "27", - "w": "183", - "h": "27", - "x": "26", - "y": "117", - "properties": { - "controlName": "ext_link:roadmap.sh/devops" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Label", - "zOrder": "0", - "measuredW": "150", - "measuredH": "26", - "x": "33", - "y": "0", - "properties": { - "size": "18", - "text": "DevOps Roadmap" - } - }, - { - "ID": "1", - "typeID": "__group__", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "3", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "10066329", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "4", - "typeID": "__group__", - "zOrder": "4", - "measuredW": "189", - "measuredH": "27", - "w": "189", - "h": "27", - "x": "235", - "y": "117", - "properties": { - "controlName": "ext_link:roadmap.sh/backend" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Label", - "zOrder": "0", - "measuredW": "156", - "measuredH": "26", - "x": "33", - "y": "0", - "properties": { - "size": "18", - "text": "Backend Roadmap" - } - }, - { - "ID": "1", - "typeID": "__group__", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "3", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "10066329", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "1192", - "typeID": "__group__", - "zOrder": "32", - "measuredW": "473", - "measuredH": "127", - "w": "473", - "h": "127", - "x": "549", - "y": "559", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "473", - "h": "127", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "382", - "measuredH": "26", - "x": "21", - "y": "22", - "properties": { - "size": "18", - "text": "This roadmap is meant for beginners. If you are" - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "425", - "measuredH": "26", - "x": "21", - "y": "51", - "properties": { - "size": "18", - "text": "transitioning from DataScience/DevOps background" - } - }, - { - "ID": "3", - "typeID": "Label", - "zOrder": "3", - "measuredW": "215", - "measuredH": "26", - "x": "21", - "y": "80", - "properties": { - "size": "18", - "text": "you might skip some parts." - } - } - ] - } - } - }, - { - "ID": "1193", - "typeID": "Label", - "zOrder": "33", - "measuredW": "104", - "measuredH": "40", - "x": "1199", - "y": "546", - "properties": { - "size": "32", - "text": "MLOps" - } - }, - { - "ID": "1194", - "typeID": "Arrow", - "zOrder": "34", - "w": "1", - "h": "75", - "measuredW": "150", - "measuredH": "100", - "x": "1250", - "y": "459", - "properties": { - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.43268541466795796, - "y": -0.4292144763719534 - }, - "p1": { - "x": 0.4673783006670677, - "y": -0.0036060514395746665 - }, - "p2": { - "x": 0.08850738176079176, - "y": 74.41806720423438 - }, - "color": "10027263" - } - }, - { - "ID": "1195", - "typeID": "__group__", - "zOrder": "35", - "measuredW": "350", - "measuredH": "141", - "w": "350", - "h": "141", - "x": "1422", - "y": "427", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "350", - "h": "141", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "314", - "measuredH": "25", - "x": "14", - "y": "17", - "properties": { - "size": "17", - "text": "Find the detailed version of this roadmap" - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "319", - "measuredH": "25", - "x": "14", - "y": "45", - "properties": { - "size": "17", - "text": "along with resources and other roadmaps" - } - }, - { - "ID": "3", - "typeID": "__group__", - "zOrder": "3", - "measuredW": "320", - "measuredH": "45", - "w": "320", - "h": "45", - "x": "15", - "y": "81", - "properties": { - "controlName": "ext_link:roadmap.sh" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "320", - "h": "45", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "borderColor": "4273622", - "color": "4273622" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "105", - "measuredH": "28", - "x": "141", - "y": "8", - "properties": { - "color": "16777215", - "size": "20", - "text": "roadmap.sh" - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "45", - "measuredH": "28", - "x": "66", - "y": "8", - "properties": { - "color": "16777215", - "size": "20", - "text": "https" - } - }, - { - "ID": "3", - "typeID": "Label", - "zOrder": "3", - "measuredW": "5", - "measuredH": "28", - "x": "113", - "y": "8", - "properties": { - "bold": "true", - "color": "16777215", - "size": "20", - "text": ":" - } - }, - { - "ID": "4", - "typeID": "Label", - "zOrder": "4", - "measuredW": "10", - "measuredH": "28", - "x": "120", - "y": "9", - "properties": { - "color": "16777215", - "size": "20", - "text": "/" - } - }, - { - "ID": "5", - "typeID": "Label", - "zOrder": "5", - "measuredW": "10", - "measuredH": "28", - "x": "128", - "y": "9", - "properties": { - "color": "16777215", - "size": "20", - "text": "/" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "1196", - "typeID": "__group__", - "zOrder": "36", - "measuredW": "295", - "measuredH": "50", - "w": "295", - "h": "50", - "x": "1101", - "y": "701", - "properties": { - "controlName": "100-programming-fundamentals" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "295", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "217", - "measuredH": "25", - "x": "39", - "y": "12", - "properties": { - "size": "17", - "text": "Programming Fundamentals" - } - } - ] - } - } - }, - { - "ID": "1197", - "typeID": "Arrow", - "zOrder": "37", - "w": "3", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "1797", - "y": "586", - "properties": { - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "color": "16777215", - "p0": { - "x": 0.14652915468354877, - "y": 0.452028801972574 - }, - "p1": { - "x": 0.47345427259831346, - "y": -0.00011162392477928299 - }, - "p2": { - "x": 2.7298768229543384, - "y": 0.452028801972574 - } - } - }, - { - "ID": "1198", - "typeID": "Arrow", - "zOrder": "38", - "w": "3", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "1318", - "y": "394", - "properties": { - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "color": "16777215", - "p0": { - "x": 0.14652915468354877, - "y": 0.452028801972574 - }, - "p1": { - "x": 0.47345427259831346, - "y": -0.00011162392477928299 - }, - "p2": { - "x": 2.7298768229543384, - "y": 0.452028801972574 - } - } - }, - { - "ID": "1199", - "typeID": "__group__", - "zOrder": "39", - "measuredW": "163", - "measuredH": "49", - "w": "163", - "h": "49", - "x": "1482", - "y": "624", - "properties": { - "controlName": "100-programming-fundamentals:python" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "163", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "53", - "measuredH": "25", - "x": "55", - "y": "12", - "properties": { - "size": "17", - "text": "Python" - } - } - ] - } - } - }, - { - "ID": "1200", - "typeID": "__group__", - "zOrder": "40", - "measuredW": "163", - "measuredH": "49", - "w": "163", - "h": "49", - "x": "1482", - "y": "678", - "properties": { - "controlName": "102-programming-fundamentals:golang" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "163", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "23", - "measuredH": "25", - "x": "70", - "y": "12", - "properties": { - "size": "17", - "text": "Go" - } - } - ] - } - } - }, - { - "ID": "1201", - "typeID": "__group__", - "zOrder": "41", - "measuredW": "172", - "measuredH": "50", - "w": "172", - "h": "50", - "x": "1235", - "y": "1085", - "properties": { - "controlName": "103-containerization" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "172", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "126", - "measuredH": "25", - "x": "23", - "y": "12", - "properties": { - "size": "17", - "text": "Containerization" - } - } - ] - } - } - }, - { - "ID": "1202", - "typeID": "__group__", - "zOrder": "42", - "measuredW": "164", - "measuredH": "49", - "w": "164", - "h": "49", - "x": "1484", - "y": "1056", - "properties": { - "controlName": "100-containerization:docker" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "164", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "56", - "measuredH": "25", - "x": "54", - "y": "12", - "properties": { - "size": "17", - "text": "Docker" - } - } - ] - } - } - }, - { - "ID": "1203", - "typeID": "__group__", - "zOrder": "43", - "measuredW": "164", - "measuredH": "49", - "w": "164", - "h": "49", - "x": "1484", - "y": "1110", - "properties": { - "controlName": "101-containerization:kubernetes" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "164", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "90", - "measuredH": "25", - "x": "37", - "y": "12", - "properties": { - "size": "17", - "text": "Kubernetes" - } - } - ] - } - } - }, - { - "ID": "1204", - "typeID": "__group__", - "zOrder": "44", - "measuredW": "305", - "measuredH": "50", - "w": "305", - "h": "50", - "x": "854", - "y": "1487", - "properties": { - "controlName": "106-mlops-principles" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "305", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "136", - "measuredH": "25", - "x": "85", - "y": "12", - "properties": { - "size": "17", - "text": "MLOps Principles" - } - } - ] - } - } - }, - { - "ID": "1205", - "typeID": "__group__", - "zOrder": "45", - "measuredW": "299", - "measuredH": "50", - "w": "299", - "h": "50", - "x": "853", - "y": "1597", - "properties": { - "controlName": "107-mlops-components" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "299", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "158", - "measuredH": "25", - "x": "71", - "y": "12", - "properties": { - "size": "17", - "text": "MLOps Components" - } - } - ] - } - } - }, - { - "ID": "1206", - "typeID": "__group__", - "zOrder": "46", - "measuredW": "357", - "measuredH": "49", - "w": "357", - "h": "49", - "x": "1326", - "y": "1436", - "properties": { - "controlName": "100-mlops-components:version-control" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "357", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "118", - "measuredH": "25", - "x": "120", - "y": "12", - "properties": { - "size": "17", - "text": "Version Control" - } - } - ] - } - } - }, - { - "ID": "1207", - "typeID": "__group__", - "zOrder": "47", - "measuredW": "357", - "measuredH": "49", - "w": "357", - "h": "49", - "x": "1326", - "y": "1490", - "properties": { - "controlName": "101-mlops-components:ci-cd" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "357", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "59", - "measuredH": "25", - "x": "149", - "y": "12", - "properties": { - "size": "17", - "text": "CI / CD" - } - } - ] - } - } - }, - { - "ID": "1208", - "typeID": "__group__", - "zOrder": "48", - "measuredW": "358", - "measuredH": "49", - "w": "358", - "h": "49", - "x": "1326", - "y": "1544", - "properties": { - "controlName": "102-mlops-components:orchestration" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "358", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "105", - "measuredH": "25", - "x": "126", - "y": "12", - "properties": { - "size": "17", - "text": "Orchestration" - } - } - ] - } - } - }, - { - "ID": "1209", - "typeID": "__group__", - "zOrder": "49", - "measuredW": "358", - "measuredH": "49", - "w": "358", - "h": "49", - "x": "1326", - "y": "1598", - "properties": { - "controlName": "103-mlops-components:experiment-tracking" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "358", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "313", - "measuredH": "25", - "x": "22", - "y": "12", - "properties": { - "size": "17", - "text": "Experiment Tracking and Model Registry" - } - } - ] - } - } - }, - { - "ID": "1210", - "typeID": "__group__", - "zOrder": "50", - "measuredW": "358", - "measuredH": "49", - "w": "358", - "h": "49", - "x": "1326", - "y": "1652", - "properties": { - "controlName": "104-mlops-components:data-lineage" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "358", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "256", - "measuredH": "25", - "x": "51", - "y": "12", - "properties": { - "size": "17", - "text": "Data Lineage and Feature Stores" - } - } - ] - } - } - }, - { - "ID": "1211", - "typeID": "__group__", - "zOrder": "51", - "measuredW": "358", - "measuredH": "49", - "w": "358", - "h": "49", - "x": "1326", - "y": "1706", - "properties": { - "controlName": "105-mlops-components:model-training" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "358", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "210", - "measuredH": "25", - "x": "74", - "y": "12", - "properties": { - "size": "17", - "text": "Model Training and Serving" - } - } - ] - } - } - }, - { - "ID": "1212", - "typeID": "__group__", - "zOrder": "52", - "measuredW": "358", - "measuredH": "49", - "w": "358", - "h": "49", - "x": "1326", - "y": "1761", - "properties": { - "controlName": "106-mlops-components:monitoring" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "358", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "220", - "measuredH": "25", - "x": "69", - "y": "12", - "properties": { - "size": "17", - "text": "Monitoring and Observability" - } - } - ] - } - } - }, - { - "ID": "1213", - "typeID": "__group__", - "zOrder": "53", - "measuredW": "473", - "measuredH": "147", - "w": "473", - "h": "147", - "x": "549", - "y": "417", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "473", - "h": "147", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "238", - "measuredH": "26", - "x": "21", - "y": "65", - "properties": { - "size": "18", - "text": "This roadmap was created by" - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "37", - "measuredH": "26", - "x": "21", - "y": "97", - "properties": { - "size": "18", - "text": "from" - } - }, - { - "ID": "6", - "typeID": "__group__", - "zOrder": "3", - "measuredW": "151", - "measuredH": "26", - "w": "151", - "h": "26", - "x": "265", - "y": "65", - "properties": { - "controlName": "ext_link:bit.ly/maria-mlops" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Label", - "zOrder": "0", - "measuredW": "151", - "measuredH": "26", - "x": "0", - "y": "0", - "properties": { - "size": "18", - "color": "10027263", - "text": "Maria Vechtomova" - } - } - ] - } - } - }, - { - "ID": "8", - "typeID": "__group__", - "zOrder": "4", - "measuredW": "148", - "measuredH": "26", - "w": "148", - "h": "26", - "x": "65", - "y": "97", - "properties": { - "controlName": "ext_link:bit.ly/marvelousmlops-mlops" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Label", - "zOrder": "0", - "measuredW": "148", - "measuredH": "26", - "x": "0", - "y": "0", - "properties": { - "color": "10027263", - "size": "18", - "text": "Marvelous MLOps" - } - } - ] - } - } - }, - { - "ID": "9", - "typeID": "Label", - "zOrder": "5", - "measuredW": "166", - "measuredH": "26", - "x": "220", - "y": "97", - "properties": { - "size": "18", - "text": ". Do check them out!" - } - }, - { - "ID": "10", - "typeID": "Label", - "zOrder": "6", - "measuredW": "163", - "measuredH": "32", - "x": "21", - "y": "23", - "properties": { - "size": "24", - "text": "Special thanks!" - } - } - ] - } - } - }, - { - "ID": "1214", - "typeID": "__group__", - "zOrder": "54", - "measuredW": "299", - "measuredH": "50", - "w": "299", - "h": "50", - "x": "1245", - "y": "1321", - "properties": { - "controlName": "104-ml-fundamentals" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "299", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "253", - "measuredH": "25", - "x": "23", - "y": "12", - "properties": { - "size": "17", - "text": "Machine Learning Fundamentals" - } - } - ] - } - } - }, - { - "ID": "1215", - "typeID": "__group__", - "zOrder": "55", - "measuredW": "299", - "measuredH": "50", - "w": "299", - "h": "50", - "x": "857", - "y": "1754", - "properties": { - "controlName": "108-infra-as-code" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "299", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "174", - "measuredH": "25", - "x": "63", - "y": "12", - "properties": { - "size": "17", - "text": "Infrastructure as Code" - } - } - ] - } - } - }, - { - "ID": "1216", - "typeID": "__group__", - "zOrder": "56", - "measuredW": "461", - "measuredH": "127", - "w": "461", - "h": "127", - "x": "549", - "y": "895", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Label", - "zOrder": "0", - "measuredW": "267", - "measuredH": "32", - "x": "0", - "y": "0", - "properties": { - "size": "24", - "text": "ML vs MLOps Engineers" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "460", - "measuredH": "26", - "x": "1", - "y": "41", - "properties": { - "size": "18", - "text": "ML engineers develop models; MLOps engineers deploy" - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "449", - "measuredH": "26", - "x": "1", - "y": "71", - "properties": { - "size": "18", - "text": "and manage them in production, ensuring reliability and" - } - }, - { - "ID": "3", - "typeID": "Label", - "zOrder": "3", - "measuredW": "81", - "measuredH": "26", - "x": "1", - "y": "101", - "properties": { - "size": "18", - "text": "scalability." - } - } - ] - } - } - }, - { - "ID": "1217", - "typeID": "__group__", - "zOrder": "57", - "measuredW": "295", - "measuredH": "49", - "w": "295", - "h": "49", - "x": "1101", - "y": "855", - "properties": { - "controlName": "101-version-control-systems" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "295", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "186", - "measuredH": "25", - "x": "55", - "y": "12", - "properties": { - "size": "17", - "text": "Version Control Systems" - } - } - ] - } - } - }, - { - "ID": "1218", - "typeID": "__group__", - "zOrder": "58", - "measuredW": "205", - "measuredH": "50", - "w": "205", - "h": "50", - "x": "854", - "y": "1075", - "properties": { - "controlName": "102-cloud-computing" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "205", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "133", - "measuredH": "25", - "x": "36", - "y": "12", - "properties": { - "size": "17", - "text": "Cloud Computing" - } - } - ] - } - } - }, - { - "ID": "1219", - "typeID": "__group__", - "zOrder": "59", - "measuredW": "237", - "measuredH": "49", - "w": "237", - "h": "49", - "x": "549", - "y": "1075", - "properties": { - "controlName": "100-cloud-computing:aws-azure-gcp" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "237", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "149", - "measuredH": "25", - "x": "44", - "y": "12", - "properties": { - "size": "17", - "text": "AWS / Azure / GCP" - } - } - ] - } - } - }, - { - "ID": "1220", - "typeID": "__group__", - "zOrder": "60", - "measuredW": "237", - "measuredH": "49", - "w": "237", - "h": "49", - "x": "549", - "y": "1130", - "properties": { - "controlName": "101-cloud-computing:cloud-native-ml-services" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "237", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "197", - "measuredH": "25", - "x": "20", - "y": "12", - "properties": { - "size": "17", - "text": "Cloud-native ML Services" - } - } - ] - } - } - }, - { - "ID": "1221", - "typeID": "__group__", - "zOrder": "61", - "measuredW": "305", - "measuredH": "50", - "w": "305", - "h": "50", - "x": "854", - "y": "1322", - "properties": { - "controlName": "105-data-eng-fundamentals" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "305", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "249", - "measuredH": "25", - "x": "28", - "y": "12", - "properties": { - "size": "17", - "text": "Data Engineering Fundamentals" - } - } - ] - } - } - }, - { - "ID": "1222", - "typeID": "__group__", - "zOrder": "62", - "measuredW": "237", - "measuredH": "49", - "w": "237", - "h": "49", - "x": "549", - "y": "1271", - "properties": { - "controlName": "100-data-eng-fundamentals:data-pipelines" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "237", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "112", - "measuredH": "25", - "x": "63", - "y": "12", - "properties": { - "size": "17", - "text": "Data Pipelines" - } - } - ] - } - } - }, - { - "ID": "1223", - "typeID": "__group__", - "zOrder": "63", - "measuredW": "237", - "measuredH": "49", - "w": "237", - "h": "49", - "x": "549", - "y": "1326", - "properties": { - "controlName": "101-data-eng-fundamentals:data-lakes-warehouses" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "237", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "197", - "measuredH": "25", - "x": "20", - "y": "12", - "properties": { - "size": "17", - "text": "Data lakes & Warehouses" - } - } - ] - } - } - }, - { - "ID": "1224", - "typeID": "__group__", - "zOrder": "64", - "measuredW": "116", - "measuredH": "49", - "w": "116", - "h": "49", - "x": "712", - "y": "1441", - "properties": { - "controlName": "102-data-eng-fundamentals:spark" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "116", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "45", - "measuredH": "25", - "x": "35", - "y": "12", - "properties": { - "size": "17", - "text": "Spark" - } - } - ] - } - } - }, - { - "ID": "1225", - "typeID": "Arrow", - "zOrder": "65", - "w": "3", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "1010", - "y": "2020", - "properties": { - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "color": "16777215", - "p0": { - "x": 0.14652915468354877, - "y": 0.452028801972574 - }, - "p1": { - "x": 0.47345427259831346, - "y": -0.00011162392477928299 - }, - "p2": { - "x": 2.7298768229543384, - "y": 0.452028801972574 - } - } - }, - { - "ID": "1226", - "typeID": "__group__", - "zOrder": "66", - "measuredW": "163", - "measuredH": "49", - "w": "163", - "h": "49", - "x": "1482", - "y": "732", - "properties": { - "controlName": "101-programming-fundamentals:bash" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "163", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "40", - "measuredH": "25", - "x": "62", - "y": "12", - "properties": { - "size": "17", - "text": "Bash" - } - } - ] - } - } - }, - { - "ID": "1227", - "typeID": "__group__", - "zOrder": "67", - "measuredW": "111", - "measuredH": "49", - "w": "111", - "h": "49", - "x": "549", - "y": "1201", - "properties": { - "controlName": "100-data-eng-fundamentals:data-pipelines:airflow" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "111", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "50", - "measuredH": "25", - "x": "31", - "y": "12", - "properties": { - "size": "17", - "text": "Airflow" - } - } - ] - } - } - }, - { - "ID": "1228", - "typeID": "__group__", - "zOrder": "68", - "measuredW": "117", - "measuredH": "49", - "w": "117", - "h": "49", - "x": "711", - "y": "1493", - "properties": { - "controlName": "103-data-eng-fundamentals:kafka" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "117", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "44", - "measuredH": "25", - "x": "37", - "y": "12", - "properties": { - "size": "17", - "text": "Kafka" - } - } - ] - } - } - }, - { - "ID": "1229", - "typeID": "__group__", - "zOrder": "69", - "measuredW": "116", - "measuredH": "49", - "w": "116", - "h": "49", - "x": "712", - "y": "1545", - "properties": { - "controlName": "104-data-eng-fundamentals:flink" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "116", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "36", - "measuredH": "25", - "x": "40", - "y": "12", - "properties": { - "size": "17", - "text": "Flink" - } - } - ] - } - } - }, - { - "ID": "1230", - "typeID": "__group__", - "zOrder": "70", - "measuredW": "237", - "measuredH": "49", - "w": "237", - "h": "49", - "x": "549", - "y": "1380", - "properties": { - "controlName": "103-data-eng-fundamentals:data-ingestion-architecture" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "237", - "h": "49", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "211", - "measuredH": "25", - "x": "13", - "y": "12", - "properties": { - "size": "17", - "text": "Data Ingestion Architecture" - } - } - ] - } - } - } - ] - }, - "attributes": { - "name": "New Wireframe 1", - "order": 1000000, - "parentID": null, - "notes": "" - }, - "branchID": "Master", - "resourceID": "5A30BFEF-684E-429E-9C5D-BAAAC1A8339A", - "mockupH": "1627", - "mockupW": "1251", - "measuredW": "1800", - "measuredH": "2021", - "version": "1.0", - "calloutsOffset": { - "x": 549, - "y": 392.4520288019726 - } - }, - "groupOffset": { - "x": 0, - "y": 0 - }, - "dependencies": [], - "projectID": "file:///Users/dan/Library/Application%20Support/Balsamiq%20Wireframes/UnsavedFiles/New%20Project%201.bmpr" + "nodes": [ + { + "id": "i_A9OSIbpoRw8siik74KT", + "type": "vertical", + "position": { + "x": 200.84147172248663, + "y": 907.5243058676606 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 97, + "style": { + "width": 20, + "height": 97 + }, + "positionAbsolute": { + "x": 200.84147172248663, + "y": 907.5243058676606 + }, + "dragging": false, + "resizing": true, + "selectable": true, + "focusable": true + }, + { + "id": "7zgx29rLsHEuBkCACkyi8", + "type": "vertical", + "position": { + "x": -482.02532545570534, + "y": 573.4965695331865 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 106, + "style": { + "width": 20, + "height": 106 + }, + "positionAbsolute": { + "x": -482.02532545570534, + "y": 573.4965695331865 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "width": 131, + "height": 68, + "id": "iogwMmOvub2ZF4zgg6WyF", + "type": "title", + "position": { + "x": -46.73195037554086, + "y": -179.55566976101449 + }, + "selected": false, + "data": { + "label": "MLOps", + "style": { + "fontSize": 28, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "9nxw2PEl-_eQPW0FHNPq2" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -46.73195037554086, + "y": -179.55566976101449 + }, + "focusable": true, + "selectable": true + }, + { + "width": 20, + "height": 64, + "id": "LEijbLyxg4RyutKEM2Y5g", + "type": "vertical", + "position": { + "x": 8.768049624459138, + "y": -243.55566976101449 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#0A33FF" + }, + "oldId": "xD07fJ1NmNeAarVCEfubU" + }, + "zIndex": 999, + "positionAbsolute": { + "x": 8.768049624459138, + "y": -243.55566976101449 + }, + "dragging": false, + "focusable": true, + "style": { + "width": 20, + "height": 64 + }, + "resizing": true, + "selectable": true + }, + { + "id": "yHmHXymPNWwu8p1vvqD3o", + "type": "paragraph", + "position": { + "x": 179.8414717224867, + "y": -232.76957062917046 + }, + "selected": false, + "data": { + "label": "Find the detailed version of this roadmap along with other similar roadmaps", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "left", + "borderColor": "#000000", + "backgroundColor": "#FFFFFf" + } + }, + "zIndex": 999, + "width": 354, + "height": 143, + "positionAbsolute": { + "x": 179.8414717224867, + "y": -232.76957062917046 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 354, + "height": 143 + }, + "resizing": false + }, + { + "id": "R_Fs6rdl2XtQ9aLOubMqL", + "type": "button", + "position": { + "x": 193.04484613528683, + "y": -150.78400721142515 + }, + "selected": false, + "data": { + "label": "roadmap.sh", + "href": "https://roadmap.sh", + "color": "#ffffff", + "backgroundColor": "#4136D6", + "style": { + "fontSize": 17 + }, + "oldId": "2zqZkyVgigifcRS1H7F_b" + }, + "zIndex": 999, + "width": 329, + "height": 49, + "dragging": false, + "style": { + "width": 329, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": 193.04484613528683, + "y": -150.78400721142515 + }, + "selectable": true, + "focusable": true + }, + { + "id": "xwpc_KxehAruFM0pCQnie", + "type": "vertical", + "position": { + "x": 16.051288453857865, + "y": 2891.946022458241 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#4136D4" + }, + "oldId": "Ju00mr0KLGN2BV6yEQGPt" + }, + "zIndex": 999, + "width": 20, + "height": 104, + "positionAbsolute": { + "x": 16.051288453857865, + "y": 2891.946022458241 + }, + "dragging": false, + "style": { + "width": 20, + "height": 104 + }, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "width": 443, + "height": 119, + "id": "GV_zWF6rSWg5bqgiXhOEf", + "type": "paragraph", + "position": { + "x": -195.44871154614214, + "y": 2801.355271941364 + }, + "selected": false, + "data": { + "label": "Visit the following relevant roadmaps", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "borderColor": "#000000", + "backgroundColor": "#ffffff" + }, + "oldId": "sVXZrBCsiSzWBBYWTm-nQ" + }, + "zIndex": 999, + "positionAbsolute": { + "x": -195.44871154614214, + "y": 2801.355271941364 + }, + "dragging": false, + "style": { + "width": 443, + "height": 119 + }, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "_7uvOebQUI4xaSwtMjpEd", + "type": "topic", + "position": { + "x": -130.23195037554086, + "y": 15.405057155248713 + }, + "selected": false, + "data": { + "label": "Programming Fundamentals", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "rQArtuVKGVgLn_fw9yO3b" + }, + "zIndex": 999, + "width": 298, + "height": 49, + "style": { + "width": 298, + "height": 49 + }, + "positionAbsolute": { + "x": -130.23195037554086, + "y": 15.405057155248713 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "FbfHP9hFBuISrGzKaX-qm", + "type": "paragraph", + "position": { + "x": -520.8639110926986, + "y": -233.1028359109968 + }, + "selected": false, + "data": { + "label": "Shout out to Maria Vechtomova who helped make this roadmap.", + "style": { + "fontSize": 17, + "borderColor": "#000000", + "backgroundColor": "#ffffff", + "color": "#000000", + "textAlign": "left", + "justifyContent": "flex-start", + "padding": 16 + } + }, + "zIndex": 999, + "width": 347, + "height": 148, + "style": { + "width": 347, + "height": 148 + }, + "dragging": false, + "positionAbsolute": { + "x": -520.8639110926986, + "y": -233.1028359109968 + }, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "2zqZkyVgigifcRS1H7F_b", + "type": "button", + "position": { + "x": -505.86391109269846, + "y": -152.09530466580176 + }, + "selected": false, + "data": { + "label": "LinkedIn Profile", + "href": "https://www.linkedin.com/in/maria-vechtomova/", + "color": "#000000", + "backgroundColor": "#dedede", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 317, + "height": 49, + "dragging": false, + "style": { + "width": 317, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": -505.86391109269846, + "y": -152.09530466580176 + }, + "selectable": true, + "focusable": true + }, + { + "width": 134, + "height": 49, + "id": "ZSrQoNGKiR484uALMWO9F", + "type": "button", + "position": { + "x": 101.89840193478477, + "y": 2859.0445538530157 + }, + "selected": false, + "data": { + "label": "API Design", + "href": "https://roadmap.sh/api-design", + "color": "#FFFFFf", + "backgroundColor": "#4136D4", + "style": { + "fontSize": 17 + }, + "borderColor": "#4136D4", + "oldId": "dlGf3ZdFXYx0Z6Viu2x-l" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": 101.89840193478477, + "y": 2859.0445538530157 + }, + "style": { + "width": 134, + "height": 49 + }, + "focusable": true, + "resizing": false, + "selectable": true + }, + { + "id": "Vh81GnOUOZvDOlOyI5PwT", + "type": "subtopic", + "position": { + "x": 245.84147172248663, + "y": -38.59494284475129 + }, + "selected": false, + "data": { + "label": "Python", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 128, + "height": 49, + "style": { + "width": 128, + "height": 49 + }, + "positionAbsolute": { + "x": 245.84147172248663, + "y": -38.59494284475129 + }, + "dragging": false, + "focusable": true, + "selectable": true, + "resizing": false + }, + { + "width": 283, + "height": 49, + "id": "P5IZjP0g1_fnvHy3YTR4q", + "type": "button", + "position": { + "x": -185.10159806521517, + "y": 2859.0445538530157 + }, + "selected": false, + "data": { + "label": "Client-side game Development", + "href": "https://roadmap.sh/backend", + "color": "#FFFFFf", + "backgroundColor": "#4136D4", + "style": { + "fontSize": 17 + }, + "borderColor": "#4136D4", + "oldId": "dlGf3ZdFXYx0Z6Viu2x-l" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -185.10159806521517, + "y": 2859.0445538530157 + }, + "style": {}, + "focusable": true, + "resizing": false, + "selectable": true + }, + { + "id": "vdVq3RQvQF3mF8PQc6DMg", + "type": "subtopic", + "position": { + "x": 245.84147172248663, + "y": 14.405057155248713 + }, + "selected": false, + "data": { + "label": "Go", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 128, + "height": 49, + "style": { + "width": 128 + }, + "positionAbsolute": { + "x": 245.84147172248663, + "y": 14.405057155248713 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "mMzqJF2KQ49TDEk5F3VAI", + "type": "subtopic", + "position": { + "x": 245.84147172248663, + "y": 67.40505715524871 + }, + "selected": false, + "data": { + "label": "Bash", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 128, + "height": 49, + "style": { + "width": 128, + "height": 49 + }, + "positionAbsolute": { + "x": 245.84147172248663, + "y": 67.40505715524871 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "oUhlUoWQQ1txx_sepD5ev", + "type": "topic", + "position": { + "x": -130.23195037554086, + "y": 159.82372041354537 + }, + "selected": false, + "data": { + "label": "Version Control Systems", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 298, + "height": 49, + "style": { + "width": 298, + "height": 49 + }, + "positionAbsolute": { + "x": -130.23195037554086, + "y": 159.82372041354537 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "06T5CbZAGJU6fJhCmqCC8", + "type": "subtopic", + "position": { + "x": 251.70194132402605, + "y": 159.82372041354537 + }, + "selected": false, + "data": { + "label": "Git", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": 251.70194132402605, + "y": 159.82372041354537 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "7t7jSb3YgyWlhgCe8Se1I", + "type": "subtopic", + "position": { + "x": 355.70194132402605, + "y": 159.82372041354537 + }, + "selected": false, + "data": { + "label": "GitHub", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 122, + "height": 49, + "style": { + "width": 122, + "height": 49 + }, + "positionAbsolute": { + "x": 355.70194132402605, + "y": 159.82372041354537 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "t768fYHleFqdEL4KKLxUu", + "type": "button", + "position": { + "x": -435.38840663342205, + "y": 15.405057155248713 + }, + "selected": false, + "data": { + "label": "DevOps Roadmap", + "href": "https://github.com/utilForever", + "color": "#000000", + "backgroundColor": "#dedede", + "style": { + "fontSize": 17 + }, + "oldId": "2zqZkyVgigifcRS1H7F_b" + }, + "zIndex": 999, + "width": 213, + "height": 49, + "dragging": false, + "style": { + "width": 213, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": -435.38840663342205, + "y": 15.405057155248713 + }, + "selectable": true, + "focusable": true + }, + { + "id": "X3qWG4PYD3XLoK_-JBwJ_", + "type": "horizontal", + "position": { + "x": -517.4487115461421, + "y": 28.905057155248713 + }, + "selected": false, + "data": { + "label": "horizontal node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 80, + "height": 20, + "style": { + "width": 80, + "height": 20 + }, + "positionAbsolute": { + "x": -517.4487115461421, + "y": 28.905057155248713 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "00GZcwe25QYi7rDzaOoMt", + "type": "topic", + "position": { + "x": -130.23195037554086, + "y": 301.2262524348043 + }, + "selected": false, + "data": { + "label": "Cloud Computing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "tKeejLv8Q7QX40UtOjpav" + }, + "zIndex": 999, + "width": 298, + "height": 49, + "style": { + "width": 298, + "height": 49 + }, + "positionAbsolute": { + "x": -130.23195037554086, + "y": 301.2262524348043 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "u3E7FGW4Iwdsu61KYFxCX", + "type": "subtopic", + "position": { + "x": 248.3414717224867, + "y": 280.1080587312499 + }, + "selected": false, + "data": { + "label": "AWS / Azure / GCP", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 247, + "height": 49, + "style": { + "width": 247 + }, + "positionAbsolute": { + "x": 248.3414717224867, + "y": 280.1080587312499 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "kbfucfIO5KCsuv3jKbHTa", + "type": "subtopic", + "position": { + "x": 248.3414717224867, + "y": 333.1080587312499 + }, + "selected": false, + "data": { + "label": "Cloud-native ML Services", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 247, + "height": 49, + "style": { + "width": 247, + "height": 49 + }, + "positionAbsolute": { + "x": 248.3414717224867, + "y": 333.1080587312499 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "tKeejLv8Q7QX40UtOjpav", + "type": "topic", + "position": { + "x": -130.23195037554086, + "y": 451.3531923133914 + }, + "selected": false, + "data": { + "label": "Containerization", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 298, + "height": 49, + "style": { + "width": 298, + "height": 49 + }, + "positionAbsolute": { + "x": -130.23195037554086, + "y": 451.3531923133914 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "LOTsf9hmAVwt06ZulhoIi", + "type": "linksgroup", + "position": { + "x": -520.8639110926986, + "y": 159.82372041354537 + }, + "selected": false, + "data": { + "label": "Related Roadmaps", + "links": [ + { + "id": "NEqSbf3TeV9XDXwehKZNL", + "label": "AI & Data Scientist", + "href": "", + "url": "https://roadmap.sh/ai-data-scientist" + }, + { + "id": "IGwANbaE-b9GlmAFYUjFe", + "label": "DevOps Roadmap", + "url": "https://roadmap.sh/devops" + }, + { + "id": "oDWm-Br59939RG0IJmofV", + "label": "Backend Roadmap", + "url": "https://roadmap.sh/backend" + }, + { + "id": "eAm4DKNyPQMbSpJFpy-0R", + "label": "Python Roadmap", + "url": "https://roadmap.sh/python" + }, + { + "id": "hdkeX4rocCNh8KqHSh7S3", + "label": "Go Roadmap", + "url": "https://roadmap.sh/go" + } + ] + }, + "zIndex": 999, + "width": 312, + "height": 227, + "positionAbsolute": { + "x": -520.8639110926986, + "y": 159.82372041354537 + }, + "dragging": false, + "focusable": true, + "style": { + "width": 312, + "height": 227 + }, + "resizing": false, + "selectable": true + }, + { + "id": "XIdCvT-4HyyglHJLRrHlz", + "type": "subtopic", + "position": { + "x": 249.763301245604, + "y": 427.49656953318646 + }, + "selected": false, + "data": { + "label": "Docker", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 134, + "height": 49, + "style": { + "width": 134, + "height": 49 + }, + "positionAbsolute": { + "x": 249.763301245604, + "y": 427.49656953318646 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "XQoK9l-xtN2J8ZV8dw53X", + "type": "subtopic", + "position": { + "x": 249.763301245604, + "y": 480.4965695331865 + }, + "selected": false, + "data": { + "label": "Kubernetes", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 134, + "height": 49, + "style": { + "width": 134, + "height": 49 + }, + "positionAbsolute": { + "x": 249.763301245604, + "y": 480.4965695331865 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "ulka7VEVjz6ls5SnI6a6z", + "type": "topic", + "position": { + "x": -130.23195037554086, + "y": 575.1003675650747 + }, + "selected": false, + "data": { + "label": "Machine Learning Fundamentals", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "qbaxC-hB857MKE6Uq_3-t" + }, + "zIndex": 999, + "width": 298, + "height": 49, + "style": { + "width": 298, + "height": 49 + }, + "positionAbsolute": { + "x": -130.23195037554086, + "y": 575.1003675650747 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "VykbCu7LWIx8fQpqKzoA7", + "type": "topic", + "position": { + "x": -130.23195037554086, + "y": 702.317764812742 + }, + "selected": false, + "data": { + "label": "Data Engineering Fundamentals", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "qbaxC-hB857MKE6Uq_3-t" + }, + "zIndex": 999, + "width": 298, + "height": 49, + "style": { + "width": 298, + "height": 49 + }, + "positionAbsolute": { + "x": -130.23195037554086, + "y": 702.317764812742 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "cOg3ejZRYE-u-M0c89IjM", + "type": "subtopic", + "position": { + "x": -519.0253254557053, + "y": 648.9022665810186 + }, + "selected": false, + "data": { + "label": "Data Pipelines", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 262, + "height": 49, + "style": { + "width": 262 + }, + "positionAbsolute": { + "x": -519.0253254557053, + "y": 648.9022665810186 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "wOogVDV4FIDLXVPwFqJ8C", + "type": "subtopic", + "position": { + "x": -519.0253254557053, + "y": 701.9022665810186 + }, + "selected": false, + "data": { + "label": "Data Lakes & Warehouses", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 262, + "height": 49, + "style": { + "width": 262 + }, + "positionAbsolute": { + "x": -519.0253254557053, + "y": 701.9022665810186 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Berd78HvnulNEGOsHCf8n", + "type": "subtopic", + "position": { + "x": -519.0253254557053, + "y": 754.9022665810186 + }, + "selected": false, + "data": { + "label": "Data Ingestion Architecture", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 262, + "height": 49, + "style": { + "width": 262, + "height": 49 + }, + "positionAbsolute": { + "x": -519.0253254557053, + "y": 754.9022665810186 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "pVSlVHXIap0unFxLGM-lQ", + "type": "subtopic", + "position": { + "x": -519.0253254557053, + "y": 554.2844473298085 + }, + "selected": false, + "data": { + "label": "Airflow", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 94, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -519.0253254557053, + "y": 554.2844473298085 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "UljuqA89_SlCSDWWMD_C_", + "type": "subtopic", + "position": { + "x": 253.05607963417134, + "y": 649.5330520426936 + }, + "selected": false, + "data": { + "label": "Spark", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 122, + "height": 49, + "style": { + "width": 122 + }, + "dragging": false, + "positionAbsolute": { + "x": 253.05607963417134, + "y": 649.5330520426936 + }, + "selectable": true, + "focusable": true + }, + { + "id": "fMNwzhgLgHlAZJ9NvKikR", + "type": "subtopic", + "position": { + "x": 253.05607963417134, + "y": 702.5330520426936 + }, + "selected": false, + "data": { + "label": "Kafka", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 122, + "height": 49, + "style": { + "width": 122 + }, + "positionAbsolute": { + "x": 253.05607963417134, + "y": 702.5330520426936 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "o6GQ3-8DgDtHzdX6yeg1w", + "type": "subtopic", + "position": { + "x": 253.05607963417134, + "y": 755.5330520426936 + }, + "selected": false, + "data": { + "label": "Flink", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 122, + "height": 49, + "style": { + "width": 122 + }, + "positionAbsolute": { + "x": 253.05607963417134, + "y": 755.5330520426936 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "iTsEHVCo6KGq7H2HMgy5S", + "type": "topic", + "position": { + "x": -208.86391109269857, + "y": 888.4952084201582 + }, + "selected": false, + "data": { + "label": "MLOps Principles", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "l1xasxQy2vAY34NWaqKEe" + }, + "zIndex": 999, + "width": 189, + "height": 49, + "style": { + "width": 189, + "height": 49 + }, + "positionAbsolute": { + "x": -208.86391109269857, + "y": 888.4952084201582 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "l1xasxQy2vAY34NWaqKEe", + "type": "topic", + "position": { + "x": 45.05607963417134, + "y": 888.4952084201582 + }, + "selected": false, + "data": { + "label": "MLOps Components", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "qbaxC-hB857MKE6Uq_3-t" + }, + "zIndex": 999, + "width": 208, + "height": 49, + "style": { + "width": 208, + "height": 49 + }, + "positionAbsolute": { + "x": 45.05607963417134, + "y": 888.4952084201582 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "kHDSwlSq8WkLey4EJIQSR", + "type": "subtopic", + "position": { + "x": 184.43931539181858, + "y": 979.1270488906907 + }, + "selected": false, + "data": { + "label": "Version Control", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 346, + "height": 49, + "style": { + "width": 346, + "height": 49 + }, + "positionAbsolute": { + "x": 184.43931539181858, + "y": 979.1270488906907 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "a6vawajw7BpL6plH_nuAz", + "type": "subtopic", + "position": { + "x": 184.1360889073012, + "y": 1032.1270488906907 + }, + "selected": false, + "data": { + "label": "CI/CD", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 107, + "height": 49, + "style": { + "width": 107, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 184.1360889073012, + "y": 1032.1270488906907 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "fes7M--Y8i08_zeP98tVV", + "type": "subtopic", + "position": { + "x": 296.4393153918186, + "y": 1032.1270488906907 + }, + "selected": false, + "data": { + "label": "Orchestration", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 234, + "height": 49, + "style": { + "width": 234, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 296.4393153918186, + "y": 1032.1270488906907 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "fGGWKmAJ50Ke6wWJBEgby", + "type": "subtopic", + "position": { + "x": 184.43931539181858, + "y": 1086.513449674912 + }, + "selected": false, + "data": { + "label": "Experiment Tracking & Model Registry", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 346, + "height": 49, + "style": { + "width": 346, + "height": 49 + }, + "positionAbsolute": { + "x": 184.43931539181858, + "y": 1086.513449674912 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "6XgP_2NLuiw654zvTyueT", + "type": "subtopic", + "position": { + "x": 184.43931539181858, + "y": 1139.513449674912 + }, + "selected": false, + "data": { + "label": "Data Lineage & Feature Stores", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 346, + "height": 49, + "style": { + "width": 346, + "height": 49 + }, + "positionAbsolute": { + "x": 184.43931539181858, + "y": 1139.513449674912 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "zsW1NRb0dMgS-KzWsI0QU", + "type": "subtopic", + "position": { + "x": 184.43931539181858, + "y": 1192.513449674912 + }, + "selected": false, + "data": { + "label": "Model Training & Serving", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 346, + "height": 49, + "style": { + "width": 346, + "height": 49 + }, + "positionAbsolute": { + "x": 184.43931539181858, + "y": 1192.513449674912 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "r4fbUwD83uYumEO1X8f09", + "type": "subtopic", + "position": { + "x": 184.43931539181858, + "y": 1245.513449674912 + }, + "selected": false, + "data": { + "label": "Monitoring & Observability", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 346, + "height": 49, + "style": { + "width": 346, + "height": 49 + }, + "positionAbsolute": { + "x": 184.43931539181858, + "y": 1245.513449674912 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "sf67bSL7HAx6iN7S6MYKs", + "type": "topic", + "position": { + "x": -82.94871154614214, + "y": 1090.513449674912 + }, + "selected": false, + "data": { + "label": "Infrastructure as Code", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 218, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -82.94871154614214, + "y": 1090.513449674912 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "36akZIuVtQ0f-3d4pJL8k", + "type": "paragraph", + "position": { + "x": -70.44871154614214, + "y": 1226.513449674912 + }, + "selected": false, + "data": { + "label": "Keep learning", + "style": { + "fontSize": 24, + "borderColor": "transparent", + "backgroundColor": "transparent", + "color": "#000000", + "textAlign": "center", + "justifyContent": "flex-start", + "padding": 16 + } + }, + "zIndex": 999, + "width": 193, + "height": 73, + "style": { + "width": 193, + "height": 73 + }, + "positionAbsolute": { + "x": -70.44871154614214, + "y": 1226.513449674912 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "id": "mJPTVaiqPP9tfykaGs1_h", + "type": "vertical", + "position": { + "x": 16.051288453857865, + "y": 1299.513449674912 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 4, + "strokeDasharray": "0.8 8", + "strokeLinecap": "round" + } + }, + "zIndex": 999, + "width": 20, + "height": 94, + "style": { + "width": 20, + "height": 94 + }, + "positionAbsolute": { + "x": 16.051288453857865, + "y": 1299.513449674912 + }, + "dragging": false, + "resizing": false, + "focusable": true + } + ], + "edges": [ + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "M0aRyhxjzTWUOW95D1g1y", + "selected": false, + "type": "smoothstep", + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "Xw4lLz2zWuTkNu8r4oheF", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "mbCXMk97_HKXG3d4TxBOC", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "iogwMmOvub2ZF4zgg6WyF", + "sourceHandle": "x2", + "target": "_7uvOebQUI4xaSwtMjpEd", + "targetHandle": "w2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-iogwMmOvub2ZF4zgg6WyFx2-rQArtuVKGVgLn_fw9yO3bw2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_7uvOebQUI4xaSwtMjpEd", + "sourceHandle": "z2", + "target": "Vh81GnOUOZvDOlOyI5PwT", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-rQArtuVKGVgLn_fw9yO3bz2-Vh81GnOUOZvDOlOyI5PwTy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_7uvOebQUI4xaSwtMjpEd", + "sourceHandle": "z2", + "target": "vdVq3RQvQF3mF8PQc6DMg", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-rQArtuVKGVgLn_fw9yO3bz2-vdVq3RQvQF3mF8PQc6DMgy2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_7uvOebQUI4xaSwtMjpEd", + "sourceHandle": "z2", + "target": "mMzqJF2KQ49TDEk5F3VAI", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-rQArtuVKGVgLn_fw9yO3bz2-mMzqJF2KQ49TDEk5F3VAIy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_7uvOebQUI4xaSwtMjpEd", + "sourceHandle": "x2", + "target": "oUhlUoWQQ1txx_sepD5ev", + "targetHandle": "w2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-rQArtuVKGVgLn_fw9yO3bx2-oUhlUoWQQ1txx_sepD5evw2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "oUhlUoWQQ1txx_sepD5ev", + "sourceHandle": "z2", + "target": "06T5CbZAGJU6fJhCmqCC8", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-oUhlUoWQQ1txx_sepD5evz2-06T5CbZAGJU6fJhCmqCC8y2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_7uvOebQUI4xaSwtMjpEd", + "sourceHandle": "y2", + "target": "t768fYHleFqdEL4KKLxUu", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-_7uvOebQUI4xaSwtMjpEdy2-t768fYHleFqdEL4KKLxUuz1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "oUhlUoWQQ1txx_sepD5ev", + "sourceHandle": "x2", + "target": "00GZcwe25QYi7rDzaOoMt", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-oUhlUoWQQ1txx_sepD5evx2-tKeejLv8Q7QX40UtOjpavw1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "00GZcwe25QYi7rDzaOoMt", + "sourceHandle": "z2", + "target": "u3E7FGW4Iwdsu61KYFxCX", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-tKeejLv8Q7QX40UtOjpavz2-u3E7FGW4Iwdsu61KYFxCXy1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "00GZcwe25QYi7rDzaOoMt", + "sourceHandle": "z2", + "target": "kbfucfIO5KCsuv3jKbHTa", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-tKeejLv8Q7QX40UtOjpavz2-kbfucfIO5KCsuv3jKbHTay1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "00GZcwe25QYi7rDzaOoMt", + "sourceHandle": "x2", + "target": "tKeejLv8Q7QX40UtOjpav", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-00GZcwe25QYi7rDzaOoMtx2-tKeejLv8Q7QX40UtOjpavw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tKeejLv8Q7QX40UtOjpav", + "sourceHandle": "z2", + "target": "XIdCvT-4HyyglHJLRrHlz", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-tKeejLv8Q7QX40UtOjpavz2-XIdCvT-4HyyglHJLRrHlzy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tKeejLv8Q7QX40UtOjpav", + "sourceHandle": "z2", + "target": "XQoK9l-xtN2J8ZV8dw53X", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-tKeejLv8Q7QX40UtOjpavz2-XQoK9l-xtN2J8ZV8dw53Xy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tKeejLv8Q7QX40UtOjpav", + "sourceHandle": "x2", + "target": "ulka7VEVjz6ls5SnI6a6z", + "targetHandle": "w2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-tKeejLv8Q7QX40UtOjpavx2-qbaxC-hB857MKE6Uq_3-tw2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "ulka7VEVjz6ls5SnI6a6z", + "sourceHandle": "x2", + "target": "VykbCu7LWIx8fQpqKzoA7", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-ulka7VEVjz6ls5SnI6a6zx2-qbaxC-hB857MKE6Uq_3-tw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "VykbCu7LWIx8fQpqKzoA7", + "sourceHandle": "y2", + "target": "cOg3ejZRYE-u-M0c89IjM", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-qbaxC-hB857MKE6Uq_3-ty2-cOg3ejZRYE-u-M0c89IjMz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "VykbCu7LWIx8fQpqKzoA7", + "sourceHandle": "y2", + "target": "wOogVDV4FIDLXVPwFqJ8C", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-qbaxC-hB857MKE6Uq_3-ty2-wOogVDV4FIDLXVPwFqJ8Cz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "VykbCu7LWIx8fQpqKzoA7", + "sourceHandle": "y2", + "target": "Berd78HvnulNEGOsHCf8n", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-qbaxC-hB857MKE6Uq_3-ty2-Berd78HvnulNEGOsHCf8nz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "VykbCu7LWIx8fQpqKzoA7", + "sourceHandle": "z2", + "target": "fMNwzhgLgHlAZJ9NvKikR", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-qbaxC-hB857MKE6Uq_3-tz2-fMNwzhgLgHlAZJ9NvKikRy2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "VykbCu7LWIx8fQpqKzoA7", + "sourceHandle": "z2", + "target": "UljuqA89_SlCSDWWMD_C_", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-qbaxC-hB857MKE6Uq_3-tz2-UljuqA89_SlCSDWWMD_C_y2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "VykbCu7LWIx8fQpqKzoA7", + "sourceHandle": "z2", + "target": "o6GQ3-8DgDtHzdX6yeg1w", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-qbaxC-hB857MKE6Uq_3-tz2-o6GQ3-8DgDtHzdX6yeg1wy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "VykbCu7LWIx8fQpqKzoA7", + "sourceHandle": "x2", + "target": "iTsEHVCo6KGq7H2HMgy5S", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-VykbCu7LWIx8fQpqKzoA7x2-qbaxC-hB857MKE6Uq_3-tw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "VykbCu7LWIx8fQpqKzoA7", + "sourceHandle": "x2", + "target": "l1xasxQy2vAY34NWaqKEe", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "selected": false, + "id": "reactflow__edge-VykbCu7LWIx8fQpqKzoA7x2-l1xasxQy2vAY34NWaqKEew1", + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "l1xasxQy2vAY34NWaqKEe", + "sourceHandle": "x2", + "target": "sf67bSL7HAx6iN7S6MYKs", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-l1xasxQy2vAY34NWaqKEex2-sf67bSL7HAx6iN7S6MYKsw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "iTsEHVCo6KGq7H2HMgy5S", + "sourceHandle": "x2", + "target": "sf67bSL7HAx6iN7S6MYKs", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-iTsEHVCo6KGq7H2HMgy5Sx2-sf67bSL7HAx6iN7S6MYKsw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "sf67bSL7HAx6iN7S6MYKs", + "sourceHandle": "x2", + "target": "36akZIuVtQ0f-3d4pJL8k", + "targetHandle": "w2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-sf67bSL7HAx6iN7S6MYKsx2-36akZIuVtQ0f-3d4pJL8kw2", + "selected": false, + "focusable": true + } + ] } \ No newline at end of file diff --git a/src/data/roadmaps/mlops/mlops.md b/src/data/roadmaps/mlops/mlops.md index 3c976d71b..b4a998b6a 100644 --- a/src/data/roadmaps/mlops/mlops.md +++ b/src/data/roadmaps/mlops/mlops.md @@ -1,6 +1,7 @@ --- jsonUrl: '/jsons/roadmaps/mlops.json' pdfUrl: '/pdfs/roadmaps/mlops.pdf' +renderer: 'editor' order: 18 briefTitle: 'MLOps' briefDescription: 'Step by step guide to learn MLOps in 2024' @@ -10,13 +11,13 @@ hasTopics: true isNew: false dimensions: width: 968 - height: 1256.63 + height: 1475 schema: headline: 'MLOps Roadmap' description: 'Learn about MLOps with this interactive step by step guide in 2023. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' imageUrl: 'https://roadmap.sh/roadmaps/mlops.png' datePublished: '2024-02-12' - dateModified: '2024-02-12' + dateModified: '2024-07-18' seo: title: 'MLOps Roadmap' description: 'Learn about MLOps using this roadmap. Community driven, articles, resources, guides, interview questions, quizzes for modern backend development.' @@ -27,7 +28,10 @@ seo: - 'ai ops engineer' relatedRoadmaps: - 'ai-data-scientist' + - 'devops' + - 'backend' - 'python' + - 'golang' sitemap: priority: 1 changefreq: 'monthly' diff --git a/src/data/roadmaps/nodejs/content/100-nodejs-introduction/101-why-nodejs.md b/src/data/roadmaps/nodejs/content/100-nodejs-introduction/101-why-nodejs.md index f5ee28714..582709fb7 100644 --- a/src/data/roadmaps/nodejs/content/100-nodejs-introduction/101-why-nodejs.md +++ b/src/data/roadmaps/nodejs/content/100-nodejs-introduction/101-why-nodejs.md @@ -4,7 +4,6 @@ Node.js is a cross-platform runtime, perfect for a wide range of use cases. Its Visit the following resources to learn more: -- [@article@Pros of Node.js](https://www.freecodecamp.org/news/what-are-the-advantages-of-node-js/) - [@official@Learn Node.js](https://nodejs.org/en/learn/getting-started/introduction-to-nodejs) - [@article@Why Choose Node.js?](https://medium.com/selleo/why-choose-node-js-b0091ad6c3fc) - [@article@5 Reasons to Choose Node.js](https://www.bitovi.com/blog/5-reasons-to-choose-nodejs) diff --git a/src/data/roadmaps/nodejs/content/101-nodejs-modules/index.md b/src/data/roadmaps/nodejs/content/101-nodejs-modules/index.md index 5dfd72fca..ea46f1397 100644 --- a/src/data/roadmaps/nodejs/content/101-nodejs-modules/index.md +++ b/src/data/roadmaps/nodejs/content/101-nodejs-modules/index.md @@ -6,6 +6,5 @@ Visit the following resources to learn more: - [@official@Modules: CommonJS modules](https://nodejs.org/api/modules.html#modules-commonjs-modules) - [@article@CommonJS vs. ES modules in Node.js](https://blog.logrocket.com/commonjs-vs-es-modules-node-js/) -- [@article@Using Modules](https://www.freecodecamp.org/news/modular-programming-nodejs-npm-modules/) - [@video@Modules in Node.js](https://www.youtube.com/watch?v=9Amxzvq5LY8&) - [@feed@Explore top posts about Node.js](https://app.daily.dev/tags/nodejs?ref=roadmapsh) diff --git a/src/data/roadmaps/nodejs/content/102-nodejs-npm/100-npx.md b/src/data/roadmaps/nodejs/content/102-nodejs-npm/100-npx.md index 96e591b8d..c3e86affd 100644 --- a/src/data/roadmaps/nodejs/content/102-nodejs-npm/100-npx.md +++ b/src/data/roadmaps/nodejs/content/102-nodejs-npm/100-npx.md @@ -5,5 +5,4 @@ npx is a very powerful command that's been available in npm starting version 5.2 Visit the following resources to learn more: - [@article@Introduction to the npx Node.js Package Runner](https://medium.com/@maybekatz/introducing-npx-an-npm-package-runner-55f7d4bd282b) -- [@article@npm vs npx — What’s the Difference?](https://www.freecodecamp.org/news/npm-vs-npx-whats-the-difference/) - [@official@Official Documentation](https://docs.npmjs.com/cli/commands/npx/) diff --git a/src/data/roadmaps/nodejs/content/102-nodejs-npm/102-updating-packages.md b/src/data/roadmaps/nodejs/content/102-nodejs-npm/102-updating-packages.md index a11c407a8..3f140119d 100644 --- a/src/data/roadmaps/nodejs/content/102-nodejs-npm/102-updating-packages.md +++ b/src/data/roadmaps/nodejs/content/102-nodejs-npm/102-updating-packages.md @@ -4,6 +4,5 @@ npm provides various features to help install and maintain the project's depende Visit the following resources to learn more: -- [@article@How to update?](https://www.freecodecamp.org/news/how-to-update-npm-dependencies/) - [@video@How to Update All NPM Dependencies At Once](https://www.youtube.com/watch?v=Ghdfdq17JAY) - [@official@Updating packages downloaded from the registry](https://docs.npmjs.com/updating-packages-downloaded-from-the-registry) diff --git a/src/data/roadmaps/nodejs/content/102-nodejs-npm/106-creating-packages.md b/src/data/roadmaps/nodejs/content/102-nodejs-npm/106-creating-packages.md index 95dcd3308..242829605 100644 --- a/src/data/roadmaps/nodejs/content/102-nodejs-npm/106-creating-packages.md +++ b/src/data/roadmaps/nodejs/content/102-nodejs-npm/106-creating-packages.md @@ -4,5 +4,4 @@ npm packages allow you to bundle some specific functionality into a reusable pac Visit the following resources to learn more: -- [@article@How to make a tiny npm package and publish it](https://www.freecodecamp.org/news/how-to-make-a-beautiful-tiny-npm-package-and-publish-it-2881d4307f78/) - [@article@Best practices for creating a modern npm package](https://snyk.io/blog/best-practices-create-modern-npm-package/) diff --git a/src/data/roadmaps/nodejs/content/104-nodejs-async-programming/102-promises.md b/src/data/roadmaps/nodejs/content/104-nodejs-async-programming/102-promises.md index d12ce05b8..7c6a24ce1 100644 --- a/src/data/roadmaps/nodejs/content/104-nodejs-async-programming/102-promises.md +++ b/src/data/roadmaps/nodejs/content/104-nodejs-async-programming/102-promises.md @@ -13,5 +13,4 @@ Visit the following resources to learn more: - [@article@Promise Methods](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) - [@official@Promises](https://www.promisejs.org/) -- [@article@JavaScript Promises for Beginners](https://www.freecodecamp.org/news/javascript-promises-for-beginners/) - [@video@Asynchronous JavaScript - Promises](https://www.youtube.com/watch?v=a_8nrslImo4/) diff --git a/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/104-environment-variables/100-dotenv.md b/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/104-environment-variables/100-dotenv.md index 40ebe58a2..b59ae8e88 100644 --- a/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/104-environment-variables/100-dotenv.md +++ b/src/data/roadmaps/nodejs/content/106-nodejs-command-line-apps/104-environment-variables/100-dotenv.md @@ -9,5 +9,4 @@ Visit the following resources to learn more: - [@opensource@dotenv Docs](https://github.com/motdotla/dotenv#readme) - [@official@Dotenv package](https://www.npmjs.com/package/dotenv) - [@article@Dotenv tutorial](https://zetcode.com/javascript/dotenv/) -- [@article@How to Use Node Environment Variables with a DotEnv File for Node.js and npm](https://www.freecodecamp.org/news/how-to-use-node-environment-variables-with-a-dotenv-file-for-node-js-and-npm/) - [@feed@Explore top posts about General Programming](https://app.daily.dev/tags/general-programming?ref=roadmapsh) diff --git a/src/data/roadmaps/nodejs/content/107-nodejs-apis/101-express-js.md b/src/data/roadmaps/nodejs/content/107-nodejs-apis/101-express-js.md index a54e1adc6..ce9fbbc81 100644 --- a/src/data/roadmaps/nodejs/content/107-nodejs-apis/101-express-js.md +++ b/src/data/roadmaps/nodejs/content/107-nodejs-apis/101-express-js.md @@ -8,5 +8,4 @@ Visit the following resources to learn more: - [@official@Official Getting Started Guide](https://expressjs.com/en/starter/installing.html) - [@article@Express Full Guide](https://www.tutorialspoint.com/nodejs/nodejs_express_framework.htm) - [@article@Sample Project](https://auth0.com/blog/create-a-simple-and-stylish-node-express-app/) -- [@article@Express Explained with Examples](https://www.freecodecamp.org/news/express-explained-with-examples-installation-routing-middleware-and-more/) - [@feed@Explore top posts about Express.js](https://app.daily.dev/tags/express?ref=roadmapsh) diff --git a/src/data/roadmaps/nodejs/content/110-nodejs-databases/101-document/100-mongoose.md b/src/data/roadmaps/nodejs/content/110-nodejs-databases/101-document/100-mongoose.md index ccae79e3a..ede05c733 100644 --- a/src/data/roadmaps/nodejs/content/110-nodejs-databases/101-document/100-mongoose.md +++ b/src/data/roadmaps/nodejs/content/110-nodejs-databases/101-document/100-mongoose.md @@ -5,6 +5,5 @@ Mongoose is an Object Data Modeling (ODM) library for MongoDB and Node.js. Mongo Visit the following resources to learn more: - [@article@Mongoose Website](https://mongoosejs.com) -- [@article@Introduction to Mongoose for MongoDB](https://www.freecodecamp.org/news/introduction-to-mongoose-for-mongodb-d2a7aa593c57) - [@article@Getting Started with MongoDB and Mongoose](https://www.mongodb.com/developer/languages/javascript/getting-started-with-mongodb-and-mongoose/) - [@feed@Explore top posts about Mongoose](https://app.daily.dev/tags/mongoose?ref=roadmapsh) diff --git a/src/data/roadmaps/product-manager/content/blue-ocean-strategy@gjdCSm_jZmG_q6YjG_8Qu.md b/src/data/roadmaps/product-manager/content/blue-ocean-strategy@gjdCSm_jZmG_q6YjG_8Qu.md index 1cff9909b..003672e59 100644 --- a/src/data/roadmaps/product-manager/content/blue-ocean-strategy@gjdCSm_jZmG_q6YjG_8Qu.md +++ b/src/data/roadmaps/product-manager/content/blue-ocean-strategy@gjdCSm_jZmG_q6YjG_8Qu.md @@ -2,4 +2,8 @@ Blue Ocean Strategy is a significant methodology in product identification for a Product Manager. It's a marketing theory from a book published in 2005 which advocates the creation of new demand in uncontested market spaces, or "Blue Oceans". Rather than competing within the confines of the existing industry or trying to steal customers from rivals (Red Ocean Strategy), Blue Ocean Strategy proposes to create a new space in the market, thereby making the competition irrelevant. -From a product management perspective, this involves implementing innovative ideas, seeking new opportunities and envisioning potential markets. Product Managers, hence, are able to utilize this strategy to develop unique products that can trigger exponential growth and success for their organizations. In a nutshell, Blue Ocean Strategy provides a creative and systematic approach towards successful product identification and differentiation. \ No newline at end of file +From a product management perspective, this involves implementing innovative ideas, seeking new opportunities and envisioning potential markets. Product Managers, hence, are able to utilize this strategy to develop unique products that can trigger exponential growth and success for their organizations. In a nutshell, Blue Ocean Strategy provides a creative and systematic approach towards successful product identification and differentiation. + +Learn more from the following resources: + +- [@video@How To Differentiate Your Business With BLUE OCEAN STRATEGY](https://www.youtube.com/watch?v=UKDxj6W7CXs) diff --git a/src/data/roadmaps/product-manager/content/discovery@vP4tfzP-hOiAsv4K4RsQy.md b/src/data/roadmaps/product-manager/content/discovery@vP4tfzP-hOiAsv4K4RsQy.md index caec8fed5..2ac4437dc 100644 --- a/src/data/roadmaps/product-manager/content/discovery@vP4tfzP-hOiAsv4K4RsQy.md +++ b/src/data/roadmaps/product-manager/content/discovery@vP4tfzP-hOiAsv4K4RsQy.md @@ -1,3 +1,7 @@ # Discovery -The discovery phase is a crucial stage in a Product Manager's role. It involves exploring, researching, understanding customer needs, and identifying market opportunities to develop a product that aligns with business goals while providing value to users. During this phase, Product Managers gather and analyze data from customers, competitors, and the market to clearly define the problem to be solved. Visual forms like customer journey maps, personas, or prototypes are often used to effectively communicate the findings. The insights gained during the discovery phase set the foundation for the decisions made in the subsequent product development phases. \ No newline at end of file +The discovery phase is a crucial stage in a Product Manager's role. It involves exploring, researching, understanding customer needs, and identifying market opportunities to develop a product that aligns with business goals while providing value to users. During this phase, Product Managers gather and analyze data from customers, competitors, and the market to clearly define the problem to be solved. Visual forms like customer journey maps, personas, or prototypes are often used to effectively communicate the findings. The insights gained during the discovery phase set the foundation for the decisions made in the subsequent product development phases. + +Visit the following resources to learn more: + +- [@video@Introduction to Modern Product Discovery by Teresa Torres](https://youtu.be/l7-5x0ra2tc?si=Zh4LeSF_qAj8y6-a) diff --git a/src/data/roadmaps/product-manager/content/product-identification@fmpJB_14CYn7PVuoGZdoz.md b/src/data/roadmaps/product-manager/content/product-identification@fmpJB_14CYn7PVuoGZdoz.md index 0e9d8e63b..3ad2bd12b 100644 --- a/src/data/roadmaps/product-manager/content/product-identification@fmpJB_14CYn7PVuoGZdoz.md +++ b/src/data/roadmaps/product-manager/content/product-identification@fmpJB_14CYn7PVuoGZdoz.md @@ -1,3 +1,3 @@ # Product Identification -Product Identification plays a critical role in the diverse spectrum of responsibilities held by a Product Manager. It typically involves identifying and detailing the core features, value proposition, and user demographics of a product. This is an essential preliminary step in product development that not only assists in recogning the unique selling points but also helps in positioning the product appropriately in the competitive market. The rationale, advantages and potential of a product are all captured during the product identification process, making it a key strategic roadmap element for a Product Manager. Knowledge of product identification can empower Product Managers to make informed decisions that align with user needs and business goals. \ No newline at end of file +Product Identification plays a critical role in the diverse spectrum of responsibilities held by a Product Manager. It typically involves identifying and detailing the core features, value proposition, and user demographics of a product. This is an essential preliminary step in product development that not only assists in recognising the unique selling points but also helps in positioning the product appropriately in the competitive market. The rationale, advantages and potential of a product are all captured during the product identification process, making it a key strategic roadmap element for a Product Manager. Knowledge of product identification can empower Product Managers to make informed decisions that align with user needs and business goals. diff --git a/src/data/roadmaps/python/content/100-python-basics/102-conditionals.md b/src/data/roadmaps/python/content/100-python-basics/102-conditionals.md index ef9e9aa51..1feda9f85 100644 --- a/src/data/roadmaps/python/content/100-python-basics/102-conditionals.md +++ b/src/data/roadmaps/python/content/100-python-basics/102-conditionals.md @@ -7,3 +7,4 @@ Visit the following resources to learn more: - [@article@Python Conditional Statements: IF…Else, ELIF & Switch Case](https://www.guru99.com/if-loop-python-conditional-structures.html) - [@article@Conditional Statements in Python](https://realpython.com/python-conditional-statements/) - [@article@How to use a match statement in Python](https://learnpython.com/blog/python-match-case-statement/) +- [@article@W3Schools - Python Conditions and If statements](https://www.w3schools.com/python/python_conditions.asp) diff --git a/src/data/roadmaps/python/content/100-python-basics/104-functions.md b/src/data/roadmaps/python/content/100-python-basics/104-functions.md index c90fbadf8..8ab73ec92 100644 --- a/src/data/roadmaps/python/content/100-python-basics/104-functions.md +++ b/src/data/roadmaps/python/content/100-python-basics/104-functions.md @@ -6,6 +6,5 @@ In Python, you define a function with the `def` keyword, then write the function Visit the following resources to learn more: -- [@article@Python Functions – How to Define and Call a Function](https://www.freecodecamp.org/news/python-functions-define-and-call-a-function/) - [@article@Python Functions - W3Schools](https://www.w3schools.com/python/python_functions.asp) - [@article@Built-in Functions in Python](https://docs.python.org/3/library/functions.html) diff --git a/src/data/roadmaps/python/content/101-data-structures-and-algorithms/100-arrays-linked-lists.md b/src/data/roadmaps/python/content/101-data-structures-and-algorithms/100-arrays-linked-lists.md index bd4413f92..dc51aa283 100644 --- a/src/data/roadmaps/python/content/101-data-structures-and-algorithms/100-arrays-linked-lists.md +++ b/src/data/roadmaps/python/content/101-data-structures-and-algorithms/100-arrays-linked-lists.md @@ -4,7 +4,6 @@ Arrays store elements in contiguous memory locations, resulting in easily calcul Visit the following resources to learn more: -- [@article@Python Array Tutorial](https://www.freecodecamp.org/news/python-array-tutorial-define-index-methods/) - [@article@Arrays in Python](https://www.edureka.co/blog/arrays-in-python/) - [@video@Array Data Structure | Illustrated Data Structures](https://www.youtube.com/watch?v=QJNwK2uJyGs) - [@video@Linked List Data Structure | Illustrated Data Structures](https://www.youtube.com/watch?v=odW9FU8jPRQ) diff --git a/src/data/roadmaps/python/content/101-data-structures-and-algorithms/101-heaps-stacks-queues.md b/src/data/roadmaps/python/content/101-data-structures-and-algorithms/101-heaps-stacks-queues.md index e76a0a00d..f4317e2a2 100644 --- a/src/data/roadmaps/python/content/101-data-structures-and-algorithms/101-heaps-stacks-queues.md +++ b/src/data/roadmaps/python/content/101-data-structures-and-algorithms/101-heaps-stacks-queues.md @@ -12,6 +12,5 @@ Visit the following resources to learn more: - [@video@Stack Data Structure | Illustrated Data Structures](https://www.youtube.com/watch?v=I5lq6sCuABE) - [@video@Queue Data Structure | Illustrated Data Structures](https://www.youtube.com/watch?v=mDCi1lXd9hc) - [@article@How to Implement Python Stack?](https://realpython.com/how-to-implement-python-stack/) -- [@article@Queue in Python](https://www.geeksforgeeks.org/queue-in-python/) - [@article@Python Stacks, Queues, and Priority Queues in Practice](https://realpython.com/queue-in-python/) - [@article@Heap Implementation in Python](https://www.educative.io/answers/heap-implementation-in-python) diff --git a/src/data/roadmaps/python/content/101-data-structures-and-algorithms/103-binary-search-trees.md b/src/data/roadmaps/python/content/101-data-structures-and-algorithms/103-binary-search-trees.md index 5c01fec07..b04e57653 100644 --- a/src/data/roadmaps/python/content/101-data-structures-and-algorithms/103-binary-search-trees.md +++ b/src/data/roadmaps/python/content/101-data-structures-and-algorithms/103-binary-search-trees.md @@ -5,6 +5,5 @@ A binary search tree, also called an ordered or sorted binary tree, is a rooted Visit the following resources to learn more: - [@video@Tree Data Structure | Illustrated Data Structures](https://www.youtube.com/watch?v=S2W3SXGPVyU) -- [@article@Writing a Binary Search Tree in Python With Examples](https://blog.boot.dev/computer-science/binary-search-tree-in-python/) - [@article@How to Implement Binary Search Tree in Python](https://web.archive.org/web/20230601181553/https://www.section.io/engineering-education/implementing-binary-search-tree-using-python/) - [@article@Binary Search Tree in Python](https://www.pythonforbeginners.com/data-structures/binary-search-tree-in-python) diff --git a/src/data/roadmaps/qa/content/chrome-devtools@Xadg2WZTz6Cc_Ir9FsbgY.md b/src/data/roadmaps/qa/content/chrome-devtools@Xadg2WZTz6Cc_Ir9FsbgY.md index 1c7dcee70..b66b03f29 100644 --- a/src/data/roadmaps/qa/content/chrome-devtools@Xadg2WZTz6Cc_Ir9FsbgY.md +++ b/src/data/roadmaps/qa/content/chrome-devtools@Xadg2WZTz6Cc_Ir9FsbgY.md @@ -9,5 +9,4 @@ NOTE: This isn't a chrome-specific feature, and most browsers (Chromium based or Visit the following resources to learn more: - [@article@Official Docs](https://developer.chrome.com/docs/devtools/overview/) -- [@article@Mastering Chrome Dev Tools](https://www.freecodecamp.org/news/mastering-chrome-developer-tools-next-level-front-end-development-techniques-3ac0b6fe8a3/) - [@feed@Explore top posts about DevTools](https://app.daily.dev/tags/devtools?ref=roadmapsh) diff --git a/src/data/roadmaps/qa/content/puppeteer@YKHlLKIlL-Y4ZtHTLfApu.md b/src/data/roadmaps/qa/content/puppeteer@YKHlLKIlL-Y4ZtHTLfApu.md index 3453aef55..c0272d705 100644 --- a/src/data/roadmaps/qa/content/puppeteer@YKHlLKIlL-Y4ZtHTLfApu.md +++ b/src/data/roadmaps/qa/content/puppeteer@YKHlLKIlL-Y4ZtHTLfApu.md @@ -5,5 +5,4 @@ Puppeteer is a Node library which provides a high-level API to control headless Visit the following resources to learn more: - [@article@Puppetter](https://developer.chrome.com/docs/puppeteer/) -- [@article@Puppetter Tutorial](https://www.freecodecamp.org/news/how-to-use-puppeteer-with-nodejs/) - [@feed@Explore top posts about Crawling](https://app.daily.dev/tags/crawling?ref=roadmapsh) \ No newline at end of file diff --git a/src/data/roadmaps/qa/content/puppeteer@sHyFCf7XQKxGxchaYxp2B.md b/src/data/roadmaps/qa/content/puppeteer@sHyFCf7XQKxGxchaYxp2B.md index fb4f7cb91..3601d2b5e 100644 --- a/src/data/roadmaps/qa/content/puppeteer@sHyFCf7XQKxGxchaYxp2B.md +++ b/src/data/roadmaps/qa/content/puppeteer@sHyFCf7XQKxGxchaYxp2B.md @@ -5,5 +5,4 @@ Puppeteer is a Node library that provides a high-level API to control headless C Visit the following resources to learn more: - [@article@Puppeteer Website](https://pptr.dev/) -- [@article@How to Use Puppeteer With Node.js](https://www.freecodecamp.org/news/how-to-use-puppeteer-with-nodejs/) - [@feed@Explore top posts about Crawling](https://app.daily.dev/tags/crawling?ref=roadmapsh) diff --git a/src/data/roadmaps/react/content/100-react-roadmap-note.md b/src/data/roadmaps/react/content/100-react-roadmap-note.md deleted file mode 100644 index 337796a0f..000000000 --- a/src/data/roadmaps/react/content/100-react-roadmap-note.md +++ /dev/null @@ -1,3 +0,0 @@ -# Note - -This roadmap specifically covers **React and the ecosystem** around it. You will notice that it is missing things like version control, package managers, build tools, linters, task runners and other things that are not directly related to React; this is intentional. Have a look at the [Frontend Roadmap](/frontend) for a more comprehensive overview of the frontend ecosystem. diff --git a/src/data/roadmaps/react/content/101-cli-tools/101-create-react-app.md b/src/data/roadmaps/react/content/101-cli-tools/101-create-react-app.md deleted file mode 100644 index 32f0b87bc..000000000 --- a/src/data/roadmaps/react/content/101-cli-tools/101-create-react-app.md +++ /dev/null @@ -1,12 +0,0 @@ -# Create React App - -Create React App is the CLI based tool and is the best way to start building a new single-page application in React. - -It sets up your development environment so that you can use the latest JavaScript features, provides a nice developer experience, and optimizes your app for production. You’ll need to have Node >= 14.0.0 and npm >= 5.6 on your machine. - -Visit the following resources to learn more: - -- [@official@Official Docs](https://react.dev/learn/start-a-new-react-project) -- [@article@React W3Schools](https://www.w3schools.com/react/react_intro.asp) -- [@article@Advanced: Custom Setup with Webpack](https://www.robinwieruch.de/minimal-react-webpack-babel-setup/) -- [@feed@Explore top posts about React](https://app.daily.dev/tags/react?ref=roadmapsh) diff --git a/src/data/roadmaps/react/content/102-components/100-class-components.md b/src/data/roadmaps/react/content/102-components/100-class-components.md deleted file mode 100644 index d205fb5ed..000000000 --- a/src/data/roadmaps/react/content/102-components/100-class-components.md +++ /dev/null @@ -1,13 +0,0 @@ -# Class Components - -Components can either be created using the class based approach or a functional approach. These components are simple classes (made up of multiple functions that add functionality to the application). All class based components are child classes for the Component class of ReactJS. - -Although the class components are supported in React, it is encouraged to write functional components and make use of hooks in modern React applications. - -Visit the following resources to learn more: - -- [@official@Components and Props](https://react.dev/learn/thinking-in-react#props-vs-state) -- [@article@Is There Any Reason to Still Use React Class Components?](https://medium.com/geekculture/is-there-any-reason-to-still-use-react-class-components-9b6a1e6aa9ef) -- [@article@Functional Components vs Class Components in React](https://www.freecodecamp.org/news/functional-components-vs-class-components-in-react) -- [@article@Migrate Class Components to Functional Components with Hooks in React](https://www.robinwieruch.de/react-hooks-migration/) -- [@video@React Class Components Tutorial](https://www.youtube.com/watch?v=lnV34uLEzis) \ No newline at end of file diff --git a/src/data/roadmaps/react/content/104-hooks/index.md b/src/data/roadmaps/react/content/104-hooks/index.md deleted file mode 100644 index 573f9a851..000000000 --- a/src/data/roadmaps/react/content/104-hooks/index.md +++ /dev/null @@ -1,8 +0,0 @@ -# Hooks - -Hooks were introduced in React 16.8 and they let us use React's features-like managing your component's state and or performing an after effect when certain changes occur in state(s) without writing a class. - -Visit the following resources to learn more: - -- [@official@Hooks Reference](https://react.dev/reference/react) -- [@feed@Explore top posts about React Hooks](https://app.daily.dev/tags/react-hooks?ref=roadmapsh) diff --git a/src/data/roadmaps/react/content/105-routers/101-reach-router.md b/src/data/roadmaps/react/content/105-routers/101-reach-router.md deleted file mode 100644 index eb1ecb8cd..000000000 --- a/src/data/roadmaps/react/content/105-routers/101-reach-router.md +++ /dev/null @@ -1,8 +0,0 @@ -# Reach Router - -Reach Router is a small, simple router for React that borrows from React Router, Ember, and Preact Router. Reach Router has a small footprint, supports only simple route patterns by design, and has strong (but experimental) accessibility features. - -Visit the following resources to learn more: - -- [@official@Reach Router — Official Website](https://reach.tech/router/) -- [@official@Getting Started Guide](https://reach.tech/router/tutorial/01-intro) diff --git a/src/data/roadmaps/react/content/106-state-management/102-redux-and-redux-toolkit.md b/src/data/roadmaps/react/content/106-state-management/102-redux-and-redux-toolkit.md deleted file mode 100644 index a94f278f8..000000000 --- a/src/data/roadmaps/react/content/106-state-management/102-redux-and-redux-toolkit.md +++ /dev/null @@ -1,17 +0,0 @@ -# Redux - -Redux is a predictable state container for JavaScript apps. It helps you write applications that behave consistently, run in different environments (client, server, and native), and are easy to test. On top of that, it provides a great developer experience, such as [live code editing combined with a time traveling debugger](https://github.com/reduxjs/redux-devtools). - -Redux Toolkit (RTK) is a library for managing state in JavaScript applications. It is an opinionated set of tools and utilities for building Redux applications, and it is designed to make it easier and faster to build Redux applications. - -RTK is often used as an alternative to writing Redux applications from scratch, as it provides a set of conventions and utilities that can make it easier and faster to build Redux applications. - -Visit the following resources to learn more: - -- [@article@Redux Toolkit - ReduxJS](https://redux-toolkit.js.org/) -- [@article@Official Website](https://redux.js.org/) -- [@article@Official Getting Started to Redux](https://redux.js.org/introduction/getting-started) -- [@article@Redux Toolkit Official Website](https://redux-toolkit.js.org) -- [@article@Official Tutorial to Learn Redux](https://redux.js.org/tutorials/essentials/part-1-overview-concepts) -- [@video@Redux Tutorial - Beginner to Advanced](https://youtube.com/watch?v=zrs7u6bdbUw) -- [@feed@Explore top posts about Redux](https://app.daily.dev/tags/redux?ref=roadmapsh) diff --git a/src/data/roadmaps/react/content/106-state-management/103-mobx.md b/src/data/roadmaps/react/content/106-state-management/103-mobx.md deleted file mode 100644 index e32860974..000000000 --- a/src/data/roadmaps/react/content/106-state-management/103-mobx.md +++ /dev/null @@ -1,9 +0,0 @@ -# MobX - -MobX is an open source state management tool. MobX, a simple, scalable, and standalone state management library, follows functional reactive programming (FRP) implementation and prevents inconsistent state by ensuring that all derivations are performed automatically. - -Visit the following resources to learn more: - -- [@article@MobX Official Website](https://mobx.js.org/) -- [@video@Intro to MobX Tutorial](https://www.youtube.com/watch?v=WQQq1QbYlAw) -- [@feed@Explore top posts about React](https://app.daily.dev/tags/react?ref=roadmapsh) diff --git a/src/data/roadmaps/react/content/106-state-management/104-recoil.md b/src/data/roadmaps/react/content/106-state-management/104-recoil.md deleted file mode 100644 index ce7a86d5e..000000000 --- a/src/data/roadmaps/react/content/106-state-management/104-recoil.md +++ /dev/null @@ -1,19 +0,0 @@ -# Recoil - -Recoil is a library for managing state in React applications. - -Recoil is designed to be easy to use and efficient, with a focus on improving the performance and scalability of large, complex React applications. It is based on the concept of atoms and selectors, which are used to manage the state of a component. Atoms represent the state of a component, and selectors are used to derive new state from atoms. - -Recoil provides a set of utilities and APIs for managing state, including: - -- atom: A utility for creating atoms, which represent the state of a component. -- selector: A utility for creating selectors, which are used to derive new state from atoms. -- useRecoilValue: A hook for accessing the value of an atom or selector in a component. -- useSetRecoilState: A hook for updating the value of an atom in a component. - -Recoil is often used as an alternative to other state management libraries, such as Redux and MobX, because of its simplicity and performance. It is particularly well-suited for large, complex React applications where the overhead of other state management libraries may be too high. - -Visit the following resources to learn more: - -- [@article@Recoil - Official Website](https://recoiljs.org/) -- [@feed@Explore top posts about React](https://app.daily.dev/tags/react?ref=roadmapsh) diff --git a/src/data/roadmaps/react/content/107-styling/100-styled-components.md b/src/data/roadmaps/react/content/107-styling/100-styled-components.md deleted file mode 100644 index 556d6094c..000000000 --- a/src/data/roadmaps/react/content/107-styling/100-styled-components.md +++ /dev/null @@ -1,11 +0,0 @@ -# Styled components - -Styled-components is a CSS-in-JS library that enables you to write regular CSS and attach it to JavaScript components. With styled-components, you can use the CSS you’re already familiar with instead of having to learn a new styling structure. - -Visit the following resources to learn more: - -- [@article@Official Website](https://styled-components.com/) -- [@article@Official Docs](https://styled-components.com/docs) -- [@video@Styled Components Crash Course & Project](https://www.youtube.com/watch?v=02zO0hZmwnw) -- [@article@Best Practices for Styled Components](https://www.robinwieruch.de/styled-components/) -- [@feed@Explore top posts about Styled Components](https://app.daily.dev/tags/styled-components?ref=roadmapsh) diff --git a/src/data/roadmaps/react/content/107-styling/101-emotion.md b/src/data/roadmaps/react/content/107-styling/101-emotion.md deleted file mode 100644 index 2ef92ea70..000000000 --- a/src/data/roadmaps/react/content/107-styling/101-emotion.md +++ /dev/null @@ -1,8 +0,0 @@ -# Emotion - -Emotion is a library designed for writing css styles with JavaScript. It provides powerful and predictable style composition in addition to a great developer experience with features such as source maps, labels, and testing utilities. Both string and object styles are supported. - -Visit the following resources to learn more: - -- [@official@Official Website and Docs](https://emotion.sh/docs/introduction) -- [@video@Styled components using emotion in React](https://www.youtube.com/watch?v=yO3JU2bMLGA) diff --git a/src/data/roadmaps/react/content/107-styling/102-mantine.md b/src/data/roadmaps/react/content/107-styling/102-mantine.md deleted file mode 100644 index 7066d222c..000000000 --- a/src/data/roadmaps/react/content/107-styling/102-mantine.md +++ /dev/null @@ -1,9 +0,0 @@ -# Mantine - -Mantine is a React components library with more than 100 customizable components and 40 hooks to cover you in any situation. - -Visit the following resources to learn more: - -- [@official@Mantine Website](https://mantine.dev/) -- [@official@Usage with Create React App](https://mantine.dev/guides/cra/) -- [@article@5 Mantine Hooks for UI management](https://blog.logrocket.com/5-mantine-hooks-simplifying-ui-management-react/) diff --git a/src/data/roadmaps/react/content/107-styling/104-material-ui.md b/src/data/roadmaps/react/content/107-styling/104-material-ui.md deleted file mode 100644 index 3564eebdc..000000000 --- a/src/data/roadmaps/react/content/107-styling/104-material-ui.md +++ /dev/null @@ -1,9 +0,0 @@ -# Material UI - -Material-UI is an open-source framework that features React components that implement Google’s Material Design. - -Visit the following resources to learn more: - -- [@article@Official Website](https://mui.com/material-ui/) -- [@article@Official Documentation](https://mui.com/material-ui/getting-started/) -- [@video@Material UI React Tutorial](https://www.youtube.com/watch?v=o1chMISeTC0) diff --git a/src/data/roadmaps/react/content/108-api-calls/106-superagent.md b/src/data/roadmaps/react/content/108-api-calls/106-superagent.md deleted file mode 100644 index 378973ee2..000000000 --- a/src/data/roadmaps/react/content/108-api-calls/106-superagent.md +++ /dev/null @@ -1,8 +0,0 @@ -# Superagent - -Small progressive client-side HTTP request library, and Node.js module with the same API, supporting many high-level HTTP client features - -Visit the following resources to learn more: - -- [@article@Official Website](https://ladjs.github.io/superagent) -- [@opensource@GitHub Repository](https://github.com/visionmedia/superagent) diff --git a/src/data/roadmaps/react/content/110-frameworks/100-remix.md b/src/data/roadmaps/react/content/110-frameworks/100-remix.md deleted file mode 100644 index f563b6833..000000000 --- a/src/data/roadmaps/react/content/110-frameworks/100-remix.md +++ /dev/null @@ -1,8 +0,0 @@ -# Remix - -Remix is a full stack web framework that lets you focus on the user interface and work back through web standards to deliver a fast, slick, and resilient user experience. People are gonna love using your stuff. - -Visit the following resources to learn more: - -- [@official@Official Website](https://remix.run/) -- [@official@Official Docs for Getting Started](https://remix.run/docs/en/v1#getting-started) diff --git a/src/data/roadmaps/react/content/111-forms/102-final-form.md b/src/data/roadmaps/react/content/111-forms/102-final-form.md deleted file mode 100644 index 8076764de..000000000 --- a/src/data/roadmaps/react/content/111-forms/102-final-form.md +++ /dev/null @@ -1,8 +0,0 @@ -# Final form - -High performance subscription-based form state management for React. - -Visit the following resources to learn more: - -- [@article@Final Form — Official Website](https://final-form.org/react) -- [@opensource@final-form / react-final-form](https://github.com/final-form/react-final-form) diff --git a/src/data/roadmaps/react/content/115-fiber-architecture.md b/src/data/roadmaps/react/content/115-fiber-architecture.md deleted file mode 100644 index 2e9676534..000000000 --- a/src/data/roadmaps/react/content/115-fiber-architecture.md +++ /dev/null @@ -1,9 +0,0 @@ -# Fiber Architecture - -React 16.0 was released with an update to the React core algorithm. This new core architecture is named “Fiber.” Facebook has completely rewritten the internals of React from the ground-up while keeping the public API essentially unchanged; in simple terms, it means only changing the engine of a running car. - -Visit the following resources to learn more: - -- [@opensource@React Fiber Architecture](https://github.com/acdlite/react-fiber-architecture) -- [@article@Understanding React Fiber Architecture](https://dzone.com/articles/understanding-of-react-fiber-architecture) -- [@feed@Explore top posts about Architecture](https://app.daily.dev/tags/architecture?ref=roadmapsh) diff --git a/src/data/roadmaps/react/content/animation@bRpeoo9zXrnZ2IHSI7JX4.md b/src/data/roadmaps/react/content/animation@bRpeoo9zXrnZ2IHSI7JX4.md new file mode 100644 index 000000000..583b7f7c0 --- /dev/null +++ b/src/data/roadmaps/react/content/animation@bRpeoo9zXrnZ2IHSI7JX4.md @@ -0,0 +1 @@ +# Animation \ No newline at end of file diff --git a/src/data/roadmaps/react/content/108-api-calls/index.md b/src/data/roadmaps/react/content/api-calls@b4AP2OggxFAwsQtUwiUJJ.md similarity index 100% rename from src/data/roadmaps/react/content/108-api-calls/index.md rename to src/data/roadmaps/react/content/api-calls@b4AP2OggxFAwsQtUwiUJJ.md diff --git a/src/data/roadmaps/react/content/108-api-calls/100-apollo.md b/src/data/roadmaps/react/content/apollo@8nMbfGxe3STMbrAVcqHHh.md similarity index 100% rename from src/data/roadmaps/react/content/108-api-calls/100-apollo.md rename to src/data/roadmaps/react/content/apollo@8nMbfGxe3STMbrAVcqHHh.md diff --git a/src/data/roadmaps/react/content/ark-ui@kiCTo0U6VgNON8rv_Ktlj.md b/src/data/roadmaps/react/content/ark-ui@kiCTo0U6VgNON8rv_Ktlj.md new file mode 100644 index 000000000..8cf433799 --- /dev/null +++ b/src/data/roadmaps/react/content/ark-ui@kiCTo0U6VgNON8rv_Ktlj.md @@ -0,0 +1 @@ +# Ark UI \ No newline at end of file diff --git a/src/data/roadmaps/react/content/astro@_HoZkE7FH-v3wI_722ZTF.md b/src/data/roadmaps/react/content/astro@_HoZkE7FH-v3wI_722ZTF.md new file mode 100644 index 000000000..3f697ed90 --- /dev/null +++ b/src/data/roadmaps/react/content/astro@_HoZkE7FH-v3wI_722ZTF.md @@ -0,0 +1 @@ +# Astro \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/102-axios.md b/src/data/roadmaps/react/content/axios@ElqWQClryfSYdL7P_mgYK.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/102-axios.md rename to src/data/roadmaps/react/content/axios@ElqWQClryfSYdL7P_mgYK.md diff --git a/src/data/roadmaps/react/content/107-styling/105-chakra-ui.md b/src/data/roadmaps/react/content/chakra-ui@uqphqAnlcJOLnwHZs5jWu.md similarity index 79% rename from src/data/roadmaps/react/content/107-styling/105-chakra-ui.md rename to src/data/roadmaps/react/content/chakra-ui@uqphqAnlcJOLnwHZs5jWu.md index 4a2e26ba7..5d2d08642 100644 --- a/src/data/roadmaps/react/content/107-styling/105-chakra-ui.md +++ b/src/data/roadmaps/react/content/chakra-ui@uqphqAnlcJOLnwHZs5jWu.md @@ -8,4 +8,3 @@ Visit the following resources to learn more: - [@article@Chakra UI Official Getting Started](https://chakra-ui.com/docs/getting-started) - [@video@Official Getting Started Video](https://youtu.be/wI2vqXsjsIo) - [@video@Chakra UI Crash Course](https://youtu.be/s-bIsz-NR3c) -- [@article@Why You Should Start Using Chakra UI](https://www.freecodecamp.org/news/why-should-you-start-using-chakraui/) diff --git a/src/data/roadmaps/react/content/101-cli-tools/index.md b/src/data/roadmaps/react/content/cli-tools@tU4Umtnfu01t9gLlnlK6b.md similarity index 100% rename from src/data/roadmaps/react/content/101-cli-tools/index.md rename to src/data/roadmaps/react/content/cli-tools@tU4Umtnfu01t9gLlnlK6b.md diff --git a/src/data/roadmaps/react/content/component--libraries@thfnymb_UIiKxakKfiua5.md b/src/data/roadmaps/react/content/component--libraries@thfnymb_UIiKxakKfiua5.md new file mode 100644 index 000000000..db07127cd --- /dev/null +++ b/src/data/roadmaps/react/content/component--libraries@thfnymb_UIiKxakKfiua5.md @@ -0,0 +1 @@ +# Component / Libraries \ No newline at end of file diff --git a/src/data/roadmaps/react/content/103-rendering/100-component-life-cycle.md b/src/data/roadmaps/react/content/component-lifecycle@8OBlgDRUg-CTgDXY-QHyO.md similarity index 100% rename from src/data/roadmaps/react/content/103-rendering/100-component-life-cycle.md rename to src/data/roadmaps/react/content/component-lifecycle@8OBlgDRUg-CTgDXY-QHyO.md diff --git a/src/data/roadmaps/react/content/102-components/index.md b/src/data/roadmaps/react/content/components@79K4xgljcoSHkCYI1D55O.md similarity index 100% rename from src/data/roadmaps/react/content/102-components/index.md rename to src/data/roadmaps/react/content/components@79K4xgljcoSHkCYI1D55O.md diff --git a/src/data/roadmaps/react/content/102-components/105-composition-vs-inheritance.md b/src/data/roadmaps/react/content/composition@4T59gdcwdXqj9kCuK7cfp.md similarity index 100% rename from src/data/roadmaps/react/content/102-components/105-composition-vs-inheritance.md rename to src/data/roadmaps/react/content/composition@4T59gdcwdXqj9kCuK7cfp.md diff --git a/src/data/roadmaps/react/content/102-components/104-conditional-rendering.md b/src/data/roadmaps/react/content/conditional-rendering@aE6XBgH23135_9QmD4ff2.md similarity index 100% rename from src/data/roadmaps/react/content/102-components/104-conditional-rendering.md rename to src/data/roadmaps/react/content/conditional-rendering@aE6XBgH23135_9QmD4ff2.md diff --git a/src/data/roadmaps/react/content/106-state-management/100-context.md b/src/data/roadmaps/react/content/context@10uL0r388lKh8pWYWqRZD.md similarity index 100% rename from src/data/roadmaps/react/content/106-state-management/100-context.md rename to src/data/roadmaps/react/content/context@10uL0r388lKh8pWYWqRZD.md diff --git a/src/data/roadmaps/react/content/104-hooks/101-writing-your-own-hooks.md b/src/data/roadmaps/react/content/creating-custom-hooks@HX75SExuzR5AP7TQ94qid.md similarity index 81% rename from src/data/roadmaps/react/content/104-hooks/101-writing-your-own-hooks.md rename to src/data/roadmaps/react/content/creating-custom-hooks@HX75SExuzR5AP7TQ94qid.md index d36393a50..e80db4951 100644 --- a/src/data/roadmaps/react/content/104-hooks/101-writing-your-own-hooks.md +++ b/src/data/roadmaps/react/content/creating-custom-hooks@HX75SExuzR5AP7TQ94qid.md @@ -5,6 +5,5 @@ Building your own Hooks lets you extract component logic into reusable functions Visit the following resources to learn more: - [@official@Reusing Logic with Custom Hooks](https://react.dev/learn/reusing-logic-with-custom-hooks) -- [@article@How to create a custom Hook (1)](https://www.freecodecamp.org/news/how-to-create-react-hooks/) - [@article@How to create a custom Hook (2) followed by Examples](https://www.robinwieruch.de/react-custom-hook/) - [@feed@Explore top posts about React Hooks](https://app.daily.dev/tags/react-hooks?ref=roadmapsh) diff --git a/src/data/roadmaps/react/content/107-styling/106-css-modules.md b/src/data/roadmaps/react/content/css-modules@awoEhwPKjUcR84XGL6Som.md similarity index 100% rename from src/data/roadmaps/react/content/107-styling/106-css-modules.md rename to src/data/roadmaps/react/content/css-modules@awoEhwPKjUcR84XGL6Som.md diff --git a/src/data/roadmaps/react/content/109-testing/103-cypress.md b/src/data/roadmaps/react/content/cypress@zN7Ps1puD-YpHbKi1pHH8.md similarity index 100% rename from src/data/roadmaps/react/content/109-testing/103-cypress.md rename to src/data/roadmaps/react/content/cypress@zN7Ps1puD-YpHbKi1pHH8.md diff --git a/src/data/roadmaps/react/content/114-error-boundaries.md b/src/data/roadmaps/react/content/error-boundaries@gMHMjsh0i8paLZUH5mDX3.md similarity index 100% rename from src/data/roadmaps/react/content/114-error-boundaries.md rename to src/data/roadmaps/react/content/error-boundaries@gMHMjsh0i8paLZUH5mDX3.md diff --git a/src/data/roadmaps/react/content/103-rendering/104-events.md b/src/data/roadmaps/react/content/events@Nex2HcTOYIbfqUzXyxSMY.md similarity index 100% rename from src/data/roadmaps/react/content/103-rendering/104-events.md rename to src/data/roadmaps/react/content/events@Nex2HcTOYIbfqUzXyxSMY.md diff --git a/src/data/roadmaps/react/content/111-forms/101-formik.md b/src/data/roadmaps/react/content/formik@gr1CaLvL7tFOkIRywSsID.md similarity index 100% rename from src/data/roadmaps/react/content/111-forms/101-formik.md rename to src/data/roadmaps/react/content/formik@gr1CaLvL7tFOkIRywSsID.md diff --git a/src/data/roadmaps/react/content/111-forms/index.md b/src/data/roadmaps/react/content/forms@KHcC5pFN3qLnsbPPKpYd2.md similarity index 100% rename from src/data/roadmaps/react/content/111-forms/index.md rename to src/data/roadmaps/react/content/forms@KHcC5pFN3qLnsbPPKpYd2.md diff --git a/src/data/roadmaps/react/content/framer-motion@H6-XGDjs4f-qbv13v5av0.md b/src/data/roadmaps/react/content/framer-motion@H6-XGDjs4f-qbv13v5av0.md new file mode 100644 index 000000000..886e1dc97 --- /dev/null +++ b/src/data/roadmaps/react/content/framer-motion@H6-XGDjs4f-qbv13v5av0.md @@ -0,0 +1 @@ +# Framer Motion \ No newline at end of file diff --git a/src/data/roadmaps/react/content/110-frameworks/index.md b/src/data/roadmaps/react/content/frameworks@W-atg_Msa9uPLr6RXAKSb.md similarity index 100% rename from src/data/roadmaps/react/content/110-frameworks/index.md rename to src/data/roadmaps/react/content/frameworks@W-atg_Msa9uPLr6RXAKSb.md diff --git a/src/data/roadmaps/react/content/102-components/101-functional-components.md b/src/data/roadmaps/react/content/functional-components@8mw4TxlLN4ZKAlLl-_NVV.md similarity index 100% rename from src/data/roadmaps/react/content/102-components/101-functional-components.md rename to src/data/roadmaps/react/content/functional-components@8mw4TxlLN4ZKAlLl-_NVV.md diff --git a/src/data/roadmaps/react/content/gsock@y2dI1DVLWKAkv6VRpgaQa.md b/src/data/roadmaps/react/content/gsock@y2dI1DVLWKAkv6VRpgaQa.md new file mode 100644 index 000000000..1c94e29b2 --- /dev/null +++ b/src/data/roadmaps/react/content/gsock@y2dI1DVLWKAkv6VRpgaQa.md @@ -0,0 +1 @@ +# GSock \ No newline at end of file diff --git a/src/data/roadmaps/react/content/headless-component-libraries@MnDgQq9Vcxsu3wDqv5uh2.md b/src/data/roadmaps/react/content/headless-component-libraries@MnDgQq9Vcxsu3wDqv5uh2.md new file mode 100644 index 000000000..33e6bbef9 --- /dev/null +++ b/src/data/roadmaps/react/content/headless-component-libraries@MnDgQq9Vcxsu3wDqv5uh2.md @@ -0,0 +1 @@ +# Headless Component Libraries \ No newline at end of file diff --git a/src/data/roadmaps/react/content/103-rendering/105-high-order-components.md b/src/data/roadmaps/react/content/high-order-components@zOENl96GUZRw2PP2KxIck.md similarity index 100% rename from src/data/roadmaps/react/content/103-rendering/105-high-order-components.md rename to src/data/roadmaps/react/content/high-order-components@zOENl96GUZRw2PP2KxIck.md diff --git a/src/data/roadmaps/react/content/hooks-best-practices@mkyU0ug8MXxV4biHuOity.md b/src/data/roadmaps/react/content/hooks-best-practices@mkyU0ug8MXxV4biHuOity.md new file mode 100644 index 000000000..76bd3c728 --- /dev/null +++ b/src/data/roadmaps/react/content/hooks-best-practices@mkyU0ug8MXxV4biHuOity.md @@ -0,0 +1 @@ +# Hooks Best Practices \ No newline at end of file diff --git a/src/data/roadmaps/react/content/104-hooks/100-basic-hooks/index.md b/src/data/roadmaps/react/content/hooks@LbLQhonBqzxHU6B-L--Vq.md similarity index 100% rename from src/data/roadmaps/react/content/104-hooks/100-basic-hooks/index.md rename to src/data/roadmaps/react/content/hooks@LbLQhonBqzxHU6B-L--Vq.md diff --git a/src/data/roadmaps/react/content/109-testing/100-jest.md b/src/data/roadmaps/react/content/jest@opa61u9gYgSpoPtxp58wu.md similarity index 100% rename from src/data/roadmaps/react/content/109-testing/100-jest.md rename to src/data/roadmaps/react/content/jest@opa61u9gYgSpoPtxp58wu.md diff --git a/src/data/roadmaps/react/content/jotai@yI6XiNW04EL78UL4lkVgd.md b/src/data/roadmaps/react/content/jotai@yI6XiNW04EL78UL4lkVgd.md new file mode 100644 index 000000000..e4c3c3cb3 --- /dev/null +++ b/src/data/roadmaps/react/content/jotai@yI6XiNW04EL78UL4lkVgd.md @@ -0,0 +1 @@ +# Jotai \ No newline at end of file diff --git a/src/data/roadmaps/react/content/102-components/102-jsx.md b/src/data/roadmaps/react/content/jsx@WREBxWSNQDD_6fzpHL6CE.md similarity index 84% rename from src/data/roadmaps/react/content/102-components/102-jsx.md rename to src/data/roadmaps/react/content/jsx@WREBxWSNQDD_6fzpHL6CE.md index dfa81f0ee..8fec6aad8 100644 --- a/src/data/roadmaps/react/content/102-components/102-jsx.md +++ b/src/data/roadmaps/react/content/jsx@WREBxWSNQDD_6fzpHL6CE.md @@ -6,7 +6,6 @@ Visit the following resources to learn more: - [@official@Writing markup with JSX](https://react.dev/learn/writing-markup-with-jsx) - [@official@JavaScript in JSX with Curly Braces](https://react.dev/learn/javascript-in-jsx-with-curly-braces) -- [@article@JSX in React – Explained with Examples](https://www.freecodecamp.org/news/jsx-in-react-introduction/) - [@article@Working with JSX - React - CodeGuage](https://www.codeguage.com/courses/react/jsx) - [@article@JSX in React on w3school](https://www.w3schools.com/react/react_jsx.asp) - [@feed@Explore top posts about JSX](https://app.daily.dev/tags/jsx?ref=roadmapsh) diff --git a/src/data/roadmaps/react/content/103-rendering/101-lists-and-keys.md b/src/data/roadmaps/react/content/lists-and-keys@HeWVCPHqVnnbOn6zIim4K.md similarity index 100% rename from src/data/roadmaps/react/content/103-rendering/101-lists-and-keys.md rename to src/data/roadmaps/react/content/lists-and-keys@HeWVCPHqVnnbOn6zIim4K.md diff --git a/src/data/roadmaps/react/content/material-ui@gy7eBxPOlwG8BvxHVLDQ9.md b/src/data/roadmaps/react/content/material-ui@gy7eBxPOlwG8BvxHVLDQ9.md new file mode 100644 index 000000000..56edfa35d --- /dev/null +++ b/src/data/roadmaps/react/content/material-ui@gy7eBxPOlwG8BvxHVLDQ9.md @@ -0,0 +1 @@ +# Material UI \ No newline at end of file diff --git a/src/data/roadmaps/react/content/116-mobile/index.md b/src/data/roadmaps/react/content/mobile-applications@txARr3lgTvy-vJCj5zAb1.md similarity index 100% rename from src/data/roadmaps/react/content/116-mobile/index.md rename to src/data/roadmaps/react/content/mobile-applications@txARr3lgTvy-vJCj5zAb1.md diff --git a/src/data/roadmaps/react/content/mobx@1kbrCI5JS0c9wbzxXpgFU.md b/src/data/roadmaps/react/content/mobx@1kbrCI5JS0c9wbzxXpgFU.md new file mode 100644 index 000000000..ba197ae4b --- /dev/null +++ b/src/data/roadmaps/react/content/mobx@1kbrCI5JS0c9wbzxXpgFU.md @@ -0,0 +1 @@ +# MobX \ No newline at end of file diff --git a/src/data/roadmaps/react/content/110-frameworks/101-next-js.md b/src/data/roadmaps/react/content/nextjs@HdWq9ue0JdwmwqSIN2OD_.md similarity index 87% rename from src/data/roadmaps/react/content/110-frameworks/101-next-js.md rename to src/data/roadmaps/react/content/nextjs@HdWq9ue0JdwmwqSIN2OD_.md index cf36326e6..864d4f4ce 100644 --- a/src/data/roadmaps/react/content/110-frameworks/101-next-js.md +++ b/src/data/roadmaps/react/content/nextjs@HdWq9ue0JdwmwqSIN2OD_.md @@ -9,5 +9,4 @@ Visit the following resources to learn more: - [@video@Next.js Full course](https://www.youtube.com/watch?v=9P8mASSREYM\&list=PLC3y8-rFHvwgC9mj0qv972IO5DmD-H0ZH) - [@article@Mastering Next.js](https://masteringnextjs.com/) - [@video@Next.js for Beginners - freeCodeCamp](https://youtu.be/KjY94sAKLlw?si=orve81YcY8Fm2vDy) -- [@article@The Next.js Handbook — freeCodeCamp](https://www.freecodecamp.org/news/the-next-js-handbook/) - [@feed@Explore top posts about JavaScript](https://app.daily.dev/tags/javascript?ref=roadmapsh) diff --git a/src/data/roadmaps/react/content/panda-css@akVNUPOqaTXaSHoQFlkP_.md b/src/data/roadmaps/react/content/panda-css@akVNUPOqaTXaSHoQFlkP_.md new file mode 100644 index 000000000..a33d2876b --- /dev/null +++ b/src/data/roadmaps/react/content/panda-css@akVNUPOqaTXaSHoQFlkP_.md @@ -0,0 +1 @@ +# Panda CSS \ No newline at end of file diff --git a/src/data/roadmaps/react/content/109-testing/104-playwright.md b/src/data/roadmaps/react/content/playwright@g39P0c6M2sHNoUPs0m8tr.md similarity index 100% rename from src/data/roadmaps/react/content/109-testing/104-playwright.md rename to src/data/roadmaps/react/content/playwright@g39P0c6M2sHNoUPs0m8tr.md diff --git a/src/data/roadmaps/react/content/113-portals.md b/src/data/roadmaps/react/content/portals@DcDggX4OmmwvJGHwuV86t.md similarity index 100% rename from src/data/roadmaps/react/content/113-portals.md rename to src/data/roadmaps/react/content/portals@DcDggX4OmmwvJGHwuV86t.md diff --git a/src/data/roadmaps/react/content/102-components/103-props-vs-state.md b/src/data/roadmaps/react/content/props-vs-state@RFuy3Eho3mnW1GpP08BVw.md similarity index 100% rename from src/data/roadmaps/react/content/102-components/103-props-vs-state.md rename to src/data/roadmaps/react/content/props-vs-state@RFuy3Eho3mnW1GpP08BVw.md diff --git a/src/data/roadmaps/react/content/radix-ui@XL9XOV2h0BAuA5cFcM5L_.md b/src/data/roadmaps/react/content/radix-ui@XL9XOV2h0BAuA5cFcM5L_.md new file mode 100644 index 000000000..19211654e --- /dev/null +++ b/src/data/roadmaps/react/content/radix-ui@XL9XOV2h0BAuA5cFcM5L_.md @@ -0,0 +1 @@ +# Radix UI \ No newline at end of file diff --git a/src/data/roadmaps/react/content/react-aria@RvDfKoa_HIW3QDBfkPv3m.md b/src/data/roadmaps/react/content/react-aria@RvDfKoa_HIW3QDBfkPv3m.md new file mode 100644 index 000000000..a3b29409c --- /dev/null +++ b/src/data/roadmaps/react/content/react-aria@RvDfKoa_HIW3QDBfkPv3m.md @@ -0,0 +1 @@ +# React Aria \ No newline at end of file diff --git a/src/data/roadmaps/react/content/111-forms/100-react-hook-form.md b/src/data/roadmaps/react/content/react-hook-form@_5ht0PAdVOJWPzTRS1mVg.md similarity index 100% rename from src/data/roadmaps/react/content/111-forms/100-react-hook-form.md rename to src/data/roadmaps/react/content/react-hook-form@_5ht0PAdVOJWPzTRS1mVg.md diff --git a/src/data/roadmaps/react/content/116-mobile/100-react-native.md b/src/data/roadmaps/react/content/react-native@NvXAq1vN2wpncdW-yTL4c.md similarity index 100% rename from src/data/roadmaps/react/content/116-mobile/100-react-native.md rename to src/data/roadmaps/react/content/react-native@NvXAq1vN2wpncdW-yTL4c.md diff --git a/src/data/roadmaps/react/content/108-api-calls/104-react-query.md b/src/data/roadmaps/react/content/react-query@5EPmbiNdP_vhIXclv_GjV.md similarity index 100% rename from src/data/roadmaps/react/content/108-api-calls/104-react-query.md rename to src/data/roadmaps/react/content/react-query@5EPmbiNdP_vhIXclv_GjV.md diff --git a/src/data/roadmaps/react/content/react-router@-WjJBYCmRRj08n_9HxohY.md b/src/data/roadmaps/react/content/react-router@-WjJBYCmRRj08n_9HxohY.md new file mode 100644 index 000000000..a839ae966 --- /dev/null +++ b/src/data/roadmaps/react/content/react-router@-WjJBYCmRRj08n_9HxohY.md @@ -0,0 +1,8 @@ +# react-router + +There used to be Remix in this list but they announced to merge Remix into react-router after v7. + +Visit the following resources to learn more: + +- [@official@Official Website](https://remix.run/) +- [@official@Announcement to merge Remix into react-router](https://remix.run/blog/merging-remix-and-react-router) diff --git a/src/data/roadmaps/react/content/105-routers/100-react-router.md b/src/data/roadmaps/react/content/react-router@jvp43wFkKlGQX2y7IxkbM.md similarity index 100% rename from src/data/roadmaps/react/content/105-routers/100-react-router.md rename to src/data/roadmaps/react/content/react-router@jvp43wFkKlGQX2y7IxkbM.md diff --git a/src/data/roadmaps/react/content/react-spring@WzoB5B6SdOI4Mzv6U51nY.md b/src/data/roadmaps/react/content/react-spring@WzoB5B6SdOI4Mzv6U51nY.md new file mode 100644 index 000000000..ac1e6fb31 --- /dev/null +++ b/src/data/roadmaps/react/content/react-spring@WzoB5B6SdOI4Mzv6U51nY.md @@ -0,0 +1 @@ +# react spring \ No newline at end of file diff --git a/src/data/roadmaps/react/content/109-testing/102-react-testing-library.md b/src/data/roadmaps/react/content/react-testing-library@cQllxv7qGbRtM9O5llgN6.md similarity index 100% rename from src/data/roadmaps/react/content/109-testing/102-react-testing-library.md rename to src/data/roadmaps/react/content/react-testing-library@cQllxv7qGbRtM9O5llgN6.md diff --git a/src/data/roadmaps/react/content/103-rendering/103-refs.md b/src/data/roadmaps/react/content/refs@_zNAOhFWMcWqP4oxNPCXF.md similarity index 100% rename from src/data/roadmaps/react/content/103-rendering/103-refs.md rename to src/data/roadmaps/react/content/refs@_zNAOhFWMcWqP4oxNPCXF.md diff --git a/src/data/roadmaps/react/content/108-api-calls/101-relay.md b/src/data/roadmaps/react/content/relay@cLfM342sZfsCwmPPxQpEI.md similarity index 100% rename from src/data/roadmaps/react/content/108-api-calls/101-relay.md rename to src/data/roadmaps/react/content/relay@cLfM342sZfsCwmPPxQpEI.md diff --git a/src/data/roadmaps/react/content/103-rendering/102-render-props.md b/src/data/roadmaps/react/content/render-props@vdumdIglnouf1KyGIGZnc.md similarity index 100% rename from src/data/roadmaps/react/content/103-rendering/102-render-props.md rename to src/data/roadmaps/react/content/render-props@vdumdIglnouf1KyGIGZnc.md diff --git a/src/data/roadmaps/react/content/103-rendering/index.md b/src/data/roadmaps/react/content/rendering@0uiGsC5SWavNdlFqizkKe.md similarity index 94% rename from src/data/roadmaps/react/content/103-rendering/index.md rename to src/data/roadmaps/react/content/rendering@0uiGsC5SWavNdlFqizkKe.md index 9ea2814de..d202ee018 100644 --- a/src/data/roadmaps/react/content/103-rendering/index.md +++ b/src/data/roadmaps/react/content/rendering@0uiGsC5SWavNdlFqizkKe.md @@ -13,4 +13,3 @@ This process is known as reconciliation, and it is an important aspect of how Re Visit the following resources to learn more: -- [@article@React.js under the Hood](https://www.freecodecamp.org/news/react-under-the-hood/) diff --git a/src/data/roadmaps/react/content/105-routers/index.md b/src/data/roadmaps/react/content/routers@NStw6bi_pPB49K41BFSgo.md similarity index 100% rename from src/data/roadmaps/react/content/105-routers/index.md rename to src/data/roadmaps/react/content/routers@NStw6bi_pPB49K41BFSgo.md diff --git a/src/data/roadmaps/react/content/108-api-calls/107-rtk-query.md b/src/data/roadmaps/react/content/rtk-query@h49-tjEkKcq7d7ikRHIOx.md similarity index 100% rename from src/data/roadmaps/react/content/108-api-calls/107-rtk-query.md rename to src/data/roadmaps/react/content/rtk-query@h49-tjEkKcq7d7ikRHIOx.md diff --git a/src/data/roadmaps/react/content/server-apis@SUeXDkmOLipdRP4fSrZOH.md b/src/data/roadmaps/react/content/server-apis@SUeXDkmOLipdRP4fSrZOH.md new file mode 100644 index 000000000..0dcdf5bef --- /dev/null +++ b/src/data/roadmaps/react/content/server-apis@SUeXDkmOLipdRP4fSrZOH.md @@ -0,0 +1 @@ +# Server APIs \ No newline at end of file diff --git a/src/data/roadmaps/react/content/shadcn-ui@njKsYNkwTXPQ1NjlGKXab.md b/src/data/roadmaps/react/content/shadcn-ui@njKsYNkwTXPQ1NjlGKXab.md new file mode 100644 index 000000000..d70487160 --- /dev/null +++ b/src/data/roadmaps/react/content/shadcn-ui@njKsYNkwTXPQ1NjlGKXab.md @@ -0,0 +1 @@ +# Shadcn UI \ No newline at end of file diff --git a/src/data/roadmaps/react/content/106-state-management/index.md b/src/data/roadmaps/react/content/state-management@I7_mX4h-Yywp1YyTJRKXI.md similarity index 100% rename from src/data/roadmaps/react/content/106-state-management/index.md rename to src/data/roadmaps/react/content/state-management@I7_mX4h-Yywp1YyTJRKXI.md diff --git a/src/data/roadmaps/react/content/112-suspense.md b/src/data/roadmaps/react/content/suspense@_F3WMxhzaK9F8_-zHDDMF.md similarity index 100% rename from src/data/roadmaps/react/content/112-suspense.md rename to src/data/roadmaps/react/content/suspense@_F3WMxhzaK9F8_-zHDDMF.md diff --git a/src/data/roadmaps/react/content/108-api-calls/103-swr.md b/src/data/roadmaps/react/content/swr@-ea1KsXEyz-4voHXklG_J.md similarity index 100% rename from src/data/roadmaps/react/content/108-api-calls/103-swr.md rename to src/data/roadmaps/react/content/swr@-ea1KsXEyz-4voHXklG_J.md diff --git a/src/data/roadmaps/react/content/107-styling/103-tailwind.md b/src/data/roadmaps/react/content/tailwind-css@KO3viVIJJREtxXxsocN7j.md similarity index 100% rename from src/data/roadmaps/react/content/107-styling/103-tailwind.md rename to src/data/roadmaps/react/content/tailwind-css@KO3viVIJJREtxXxsocN7j.md diff --git a/src/data/roadmaps/react/content/tanstack-router@zWL8VLx_g0SWubavJDs6i.md b/src/data/roadmaps/react/content/tanstack-router@zWL8VLx_g0SWubavJDs6i.md new file mode 100644 index 000000000..3636ad552 --- /dev/null +++ b/src/data/roadmaps/react/content/tanstack-router@zWL8VLx_g0SWubavJDs6i.md @@ -0,0 +1 @@ +# Tanstack Router \ No newline at end of file diff --git a/src/data/roadmaps/react/content/109-testing/index.md b/src/data/roadmaps/react/content/testing@e_lwZ-a72-tAan2KDX6k3.md similarity index 100% rename from src/data/roadmaps/react/content/109-testing/index.md rename to src/data/roadmaps/react/content/testing@e_lwZ-a72-tAan2KDX6k3.md diff --git a/src/data/roadmaps/react/content/topic-node@L7ySAxVypdIk3Mij_u3ch.md b/src/data/roadmaps/react/content/topic-node@L7ySAxVypdIk3Mij_u3ch.md new file mode 100644 index 000000000..59f1a30d4 --- /dev/null +++ b/src/data/roadmaps/react/content/topic-node@L7ySAxVypdIk3Mij_u3ch.md @@ -0,0 +1 @@ +# topic node \ No newline at end of file diff --git a/src/data/roadmaps/react/content/types--validation@UNlvRp6k3_RDoTAAIEfJ1.md b/src/data/roadmaps/react/content/types--validation@UNlvRp6k3_RDoTAAIEfJ1.md new file mode 100644 index 000000000..deca2e57d --- /dev/null +++ b/src/data/roadmaps/react/content/types--validation@UNlvRp6k3_RDoTAAIEfJ1.md @@ -0,0 +1 @@ +# Types & Validation \ No newline at end of file diff --git a/src/data/roadmaps/react/content/typescript@ElgRwv5LSVg5FXGx-2K2s.md b/src/data/roadmaps/react/content/typescript@ElgRwv5LSVg5FXGx-2K2s.md new file mode 100644 index 000000000..c1e85c36b --- /dev/null +++ b/src/data/roadmaps/react/content/typescript@ElgRwv5LSVg5FXGx-2K2s.md @@ -0,0 +1 @@ +# TypeScript \ No newline at end of file diff --git a/src/data/roadmaps/react/content/108-api-calls/102-urql.md b/src/data/roadmaps/react/content/urql@9M5jRu0pj8KMvg9f-2oqZ.md similarity index 100% rename from src/data/roadmaps/react/content/108-api-calls/102-urql.md rename to src/data/roadmaps/react/content/urql@9M5jRu0pj8KMvg9f-2oqZ.md diff --git a/src/data/roadmaps/react/content/usecallback@2zrN65JZhCyNimi33g78f.md b/src/data/roadmaps/react/content/usecallback@2zrN65JZhCyNimi33g78f.md new file mode 100644 index 000000000..f41f96140 --- /dev/null +++ b/src/data/roadmaps/react/content/usecallback@2zrN65JZhCyNimi33g78f.md @@ -0,0 +1,9 @@ +# useCallback + +`useCallback` is a React hook that returns a memoized version of a callback function. It's used to optimize performance by preventing unnecessary re-renders. Specifically, it helps avoid recreating functions when their dependencies haven't changed, which can be useful when passing callbacks to child components that rely on referential equality to prevent re-rendering. + +Visit the following resources to learn more: + +- [@article@React Documentation on useCallback](https://reactjs.org/docs/hooks-reference.html#usecallback) +- [@article@useCallback Explained in Depth](https://kentcdodds.com/blog/usememo-and-usecallback) +- [@article@useCallback Hook: An Introductory Guide](https://dmitripavlutin.com/dont-overuse-react-usecallback/) diff --git a/src/data/roadmaps/react/content/104-hooks/102-common-hooks.md b/src/data/roadmaps/react/content/usecallback@dgoDNDtW2_q9R9yhkXrcz.md similarity index 100% rename from src/data/roadmaps/react/content/104-hooks/102-common-hooks.md rename to src/data/roadmaps/react/content/usecallback@dgoDNDtW2_q9R9yhkXrcz.md diff --git a/src/data/roadmaps/react/content/usecontext@D5_O-uElftYGQr_bTU_se.md b/src/data/roadmaps/react/content/usecontext@D5_O-uElftYGQr_bTU_se.md new file mode 100644 index 000000000..493fd9e86 --- /dev/null +++ b/src/data/roadmaps/react/content/usecontext@D5_O-uElftYGQr_bTU_se.md @@ -0,0 +1,9 @@ +# useContext + +The `useContext` Hook lets us share data between components without having to pass props down through every level of the component tree. +This is particularly useful when many components need to access the same data or when components are deeply nested. + +Visit the following resources to learn more: + +-[@official@Using the useContext](https://react.dev/reference/react/useContext) +-[@official@Understand the concept of context](https://react.dev/learn/passing-data-deeply-with-context) diff --git a/src/data/roadmaps/react/content/104-hooks/100-basic-hooks/101-use-effect.md b/src/data/roadmaps/react/content/useeffect@8OnzX03hkZ9K9i__tjmFX.md similarity index 100% rename from src/data/roadmaps/react/content/104-hooks/100-basic-hooks/101-use-effect.md rename to src/data/roadmaps/react/content/useeffect@8OnzX03hkZ9K9i__tjmFX.md diff --git a/src/data/roadmaps/react/content/usememo@w3bNp7OkehI1gjx8NzlC8.md b/src/data/roadmaps/react/content/usememo@w3bNp7OkehI1gjx8NzlC8.md new file mode 100644 index 000000000..dea3a3da9 --- /dev/null +++ b/src/data/roadmaps/react/content/usememo@w3bNp7OkehI1gjx8NzlC8.md @@ -0,0 +1 @@ +# useMemo \ No newline at end of file diff --git a/src/data/roadmaps/react/content/usereducer@v48Mv0wQqjXbvy8x6gDjQ.md b/src/data/roadmaps/react/content/usereducer@v48Mv0wQqjXbvy8x6gDjQ.md new file mode 100644 index 000000000..2e835e027 --- /dev/null +++ b/src/data/roadmaps/react/content/usereducer@v48Mv0wQqjXbvy8x6gDjQ.md @@ -0,0 +1 @@ +# useReducer diff --git a/src/data/roadmaps/react/content/useref@t_laNdMmdLApYszqXRdWg.md b/src/data/roadmaps/react/content/useref@t_laNdMmdLApYszqXRdWg.md new file mode 100644 index 000000000..5147c2626 --- /dev/null +++ b/src/data/roadmaps/react/content/useref@t_laNdMmdLApYszqXRdWg.md @@ -0,0 +1,8 @@ +# useRef + +useRef is a React hook that provides a way to create a mutable reference that persists across component re-renders. It stores a value that doesn't cause re-renders when it changes. + +Visit the following resources to learn more: +- [@official@useRef](https://react.dev/reference/react/useRef) +- [@article@W3Schools](https://www.w3schools.com/react/react_useref.asp) +- [@video@WebDevSimplified](https://www.youtube.com/watch?v=t2ypzz6gJm0) diff --git a/src/data/roadmaps/react/content/104-hooks/100-basic-hooks/100-use-state.md b/src/data/roadmaps/react/content/usestate@FK59Zsm5ENA9g11XWCan_.md similarity index 100% rename from src/data/roadmaps/react/content/104-hooks/100-basic-hooks/100-use-state.md rename to src/data/roadmaps/react/content/usestate@FK59Zsm5ENA9g11XWCan_.md diff --git a/src/data/roadmaps/react/content/usestate@YEpkbNzEMzS6wAKg85J_N.md b/src/data/roadmaps/react/content/usestate@YEpkbNzEMzS6wAKg85J_N.md new file mode 100644 index 000000000..9f739b09a --- /dev/null +++ b/src/data/roadmaps/react/content/usestate@YEpkbNzEMzS6wAKg85J_N.md @@ -0,0 +1 @@ +# useState \ No newline at end of file diff --git a/src/data/roadmaps/react/content/101-cli-tools/100-vite.md b/src/data/roadmaps/react/content/vite@y9ToYDix-koRbR6FLydFw.md similarity index 100% rename from src/data/roadmaps/react/content/101-cli-tools/100-vite.md rename to src/data/roadmaps/react/content/vite@y9ToYDix-koRbR6FLydFw.md diff --git a/src/data/roadmaps/react/content/109-testing/101-vitest.md b/src/data/roadmaps/react/content/vitest@LULjhsPNONyI5912DKzPw.md similarity index 100% rename from src/data/roadmaps/react/content/109-testing/101-vitest.md rename to src/data/roadmaps/react/content/vitest@LULjhsPNONyI5912DKzPw.md diff --git a/src/data/roadmaps/react/content/107-styling/index.md b/src/data/roadmaps/react/content/writing-css@DfrCkbD-HEHwLymv10zb5.md similarity index 100% rename from src/data/roadmaps/react/content/107-styling/index.md rename to src/data/roadmaps/react/content/writing-css@DfrCkbD-HEHwLymv10zb5.md diff --git a/src/data/roadmaps/react/content/zod@K3RZ8ESxWCpLKHePF87Hy.md b/src/data/roadmaps/react/content/zod@K3RZ8ESxWCpLKHePF87Hy.md new file mode 100644 index 000000000..795aac14e --- /dev/null +++ b/src/data/roadmaps/react/content/zod@K3RZ8ESxWCpLKHePF87Hy.md @@ -0,0 +1 @@ +# Zod \ No newline at end of file diff --git a/src/data/roadmaps/react/content/106-state-management/101-zustand.md b/src/data/roadmaps/react/content/zustand@nl5imPsdY2oEWlg-9TTuk.md similarity index 100% rename from src/data/roadmaps/react/content/106-state-management/101-zustand.md rename to src/data/roadmaps/react/content/zustand@nl5imPsdY2oEWlg-9TTuk.md diff --git a/src/data/roadmaps/react/migration-mapping.json b/src/data/roadmaps/react/migration-mapping.json new file mode 100644 index 000000000..3bbbb280e --- /dev/null +++ b/src/data/roadmaps/react/migration-mapping.json @@ -0,0 +1,56 @@ +{ + "cli-tools": "tU4Umtnfu01t9gLlnlK6b", + "cli-tools:vite": "y9ToYDix-koRbR6FLydFw", + "components": "79K4xgljcoSHkCYI1D55O", + "components:functional-components": "8mw4TxlLN4ZKAlLl-_NVV", + "components:jsx": "WREBxWSNQDD_6fzpHL6CE", + "components:props-vs-state": "RFuy3Eho3mnW1GpP08BVw", + "components:conditional-rendering": "aE6XBgH23135_9QmD4ff2", + "components:composition-vs-inheritance": "4T59gdcwdXqj9kCuK7cfp", + "rendering": "0uiGsC5SWavNdlFqizkKe", + "rendering:component-life-cycle": "8OBlgDRUg-CTgDXY-QHyO", + "rendering:lists-and-keys": "HeWVCPHqVnnbOn6zIim4K", + "rendering:render-props": "vdumdIglnouf1KyGIGZnc", + "rendering:refs": "_zNAOhFWMcWqP4oxNPCXF", + "rendering:events": "Nex2HcTOYIbfqUzXyxSMY", + "rendering:high-order-components": "zOENl96GUZRw2PP2KxIck", + "hooks": "LbLQhonBqzxHU6B-L--Vq", + "hooks:basic-hooks:use-state": "FK59Zsm5ENA9g11XWCan_", + "hooks:basic-hooks:use-effect": "8OnzX03hkZ9K9i__tjmFX", + "hooks:writing-your-own-hooks": "HX75SExuzR5AP7TQ94qid", + "hooks:common-hooks": "dgoDNDtW2_q9R9yhkXrcz", + "routers": "NStw6bi_pPB49K41BFSgo", + "routers:react-router": "jvp43wFkKlGQX2y7IxkbM", + "state-management": "I7_mX4h-Yywp1YyTJRKXI", + "state-management:context": "10uL0r388lKh8pWYWqRZD", + "state-management:zustand": "nl5imPsdY2oEWlg-9TTuk", + "styling": "DfrCkbD-HEHwLymv10zb5", + "styling:tailwind": "KO3viVIJJREtxXxsocN7j", + "styling:chakra-ui": "uqphqAnlcJOLnwHZs5jWu", + "styling:css-modules": "awoEhwPKjUcR84XGL6Som", + "api-calls": "b4AP2OggxFAwsQtUwiUJJ", + "api-calls:apollo": "8nMbfGxe3STMbrAVcqHHh", + "api-calls:relay": "cLfM342sZfsCwmPPxQpEI", + "api-calls:urql": "9M5jRu0pj8KMvg9f-2oqZ", + "api-calls:swr": "-ea1KsXEyz-4voHXklG_J", + "api-calls:react-query": "5EPmbiNdP_vhIXclv_GjV", + "api-calls:axios": "ElqWQClryfSYdL7P_mgYK", + "api-calls:rtk-query": "h49-tjEkKcq7d7ikRHIOx", + "testing": "e_lwZ-a72-tAan2KDX6k3", + "testing:jest": "opa61u9gYgSpoPtxp58wu", + "testing:vitest": "LULjhsPNONyI5912DKzPw", + "testing:react-testing-library": "cQllxv7qGbRtM9O5llgN6", + "testing:cypress": "zN7Ps1puD-YpHbKi1pHH8", + "testing:playwright": "g39P0c6M2sHNoUPs0m8tr", + "frameworks": "W-atg_Msa9uPLr6RXAKSb", + "frameworks:remix": "-WjJBYCmRRj08n_9HxohY", + "frameworks:next-js": "HdWq9ue0JdwmwqSIN2OD_", + "forms": "KHcC5pFN3qLnsbPPKpYd2", + "forms:react-hook-form": "_5ht0PAdVOJWPzTRS1mVg", + "forms:formik": "gr1CaLvL7tFOkIRywSsID", + "suspense": "_F3WMxhzaK9F8_-zHDDMF", + "portals": "DcDggX4OmmwvJGHwuV86t", + "error-boundaries": "gMHMjsh0i8paLZUH5mDX3", + "mobile": "txARr3lgTvy-vJCj5zAb1", + "mobile:react-native": "NvXAq1vN2wpncdW-yTL4c" +} \ No newline at end of file diff --git a/src/data/roadmaps/react/react.json b/src/data/roadmaps/react/react.json index cb90b42bc..9d141c503 100644 --- a/src/data/roadmaps/react/react.json +++ b/src/data/roadmaps/react/react.json @@ -1,7392 +1,4502 @@ { - "mockup": { - "controls": { - "control": [ - { - "ID": "6041", - "typeID": "Arrow", - "zOrder": "0", - "w": "1", - "h": "287", - "measuredW": "150", - "measuredH": "100", - "x": "717", - "y": "1770", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.44386240125497245, - "y": -0.00008403832147459167 - }, - "p2": { - "x": 0, - "y": 286.8596251740669 - } - } - }, - { - "ID": "6042", - "typeID": "Arrow", - "zOrder": "1", - "w": "1", - "h": "92", - "measuredW": "150", - "measuredH": "100", - "x": "717", - "y": "1663", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.48803395698428176, - "y": 92.16332546474791 - }, - "p1": { - "x": 0.4642857142857146, - "y": -0.003992113361953179 - }, - "p2": { - "x": 0.48803395698428176, - "y": 0.31578862917604056 - } - } - }, - { - "ID": "6043", - "typeID": "Arrow", - "zOrder": "2", - "w": "215", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "717", - "y": "1758", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 214.87452368273557, - "y": -0.1189739449064291 - }, - "p1": { - "x": 0.46856302129091915, - "y": -0.0004822370830620489 - }, - "p2": { - "x": -0.49168649527814523, - "y": -0.1189739449064291 - } - } - }, - { - "ID": "6044", - "typeID": "Arrow", - "zOrder": "3", - "w": "100", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "1110", - "y": "1452", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 99.87452368273557, - "y": -0.1189739449064291 - }, - "p1": { - "x": 0.4685630212909191, - "y": -0.00048223708306204904 - }, - "p2": { - "x": 0.22113086399144777, - "y": 1.2242665918161038 - } - } - }, - { - "ID": "6045", - "typeID": "Arrow", - "zOrder": "4", - "w": "1", - "h": "107", - "measuredW": "150", - "measuredH": "100", - "x": "1305", - "y": "1447", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.48803395698428176, - "y": 106.92077890672635 - }, - "p1": { - "x": 0.46428571428571475, - "y": -0.0039921133619531856 - }, - "p2": { - "x": 0.48803395698428176, - "y": -0.11897394490631541 - } - } - }, - { - "ID": "6046", - "typeID": "Arrow", - "zOrder": "5", - "w": "1", - "h": "329", - "measuredW": "150", - "measuredH": "100", - "x": "1306", - "y": "1128", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.20078475948139385, - "y": 328.45459981746376 - }, - "p1": { - "x": 0.46856302129091976, - "y": -0.0004822370830620469 - }, - "p2": { - "x": 0.20078475948128016, - "y": -0.11897394490631541 - } - } - }, - { - "ID": "6047", - "typeID": "Arrow", - "zOrder": "6", - "w": "1", - "h": "87", - "measuredW": "150", - "measuredH": "100", - "x": "1303", - "y": "1033", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.48803395698428176, - "y": 87.26690962551424 - }, - "p1": { - "x": 0.46428571428571475, - "y": -0.0039921133619531856 - }, - "p2": { - "x": 0.48803395698428176, - "y": -0.11897394490631541 - } - } - }, - { - "ID": "6048", - "typeID": "Arrow", - "zOrder": "7", - "w": "323", - "h": "336", - "measuredW": "150", - "measuredH": "100", - "x": "959", - "y": "1129", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 323.71054144095206, - "y": -0.2577704536804504 - }, - "p1": { - "x": 0.5105886846310793, - "y": 0.2003859568009807 - }, - "p2": { - "x": 0.23583113021061308, - "y": 335.9299197382693 - } - } - }, - { - "ID": "6049", - "typeID": "Arrow", - "zOrder": "8", - "w": "1", - "h": "158", - "measuredW": "150", - "measuredH": "100", - "x": "881", - "y": "1393", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.48803395698428176, - "y": 157.48267742941835 - }, - "p1": { - "x": 0.4642857142857147, - "y": -0.003992113361953185 - }, - "p2": { - "x": 0.48803395698428176, - "y": -0.11897394490631541 - } - } - }, - { - "ID": "6050", - "typeID": "Arrow", - "zOrder": "9", - "w": "399", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "442", - "y": "1469", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 398.87452368273557, - "y": -0.1189739449064291 - }, - "p1": { - "x": 0.46856302129091915, - "y": -0.00048223708306204834 - }, - "p2": { - "x": 0.20078475948128016, - "y": -0.11897394490631541 - } - } - }, - { - "ID": "6051", - "typeID": "TextArea", - "zOrder": "10", - "w": "249", - "h": "131", - "measuredW": "200", - "measuredH": "140", - "x": "735", - "y": "1283", - "properties": { - "color": "16777215" - } - }, - { - "ID": "6052", - "typeID": "Arrow", - "zOrder": "11", - "w": "1", - "h": "179", - "measuredW": "150", - "measuredH": "100", - "x": "428", - "y": "1387", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.48803395698428176, - "y": 178.1633254647479 - }, - "p1": { - "x": 0.4642857142857147, - "y": -0.00399211336195318 - }, - "p2": { - "x": 0.48803395698428176, - "y": -0.48484848484849863 - } - } - }, - { - "ID": "6053", - "typeID": "Arrow", - "zOrder": "12", - "w": "1", - "h": "154", - "measuredW": "150", - "measuredH": "100", - "x": "439", - "y": "1012", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.48803395698428176, - "y": 153.19958759057454 - }, - "p1": { - "x": 0.4642857142857147, - "y": -0.003992113361953182 - }, - "p2": { - "x": 0.48803395698428176, - "y": -0.48484848484849863 - } - } - }, - { - "ID": "6054", - "typeID": "Arrow", - "zOrder": "13", - "w": "170", - "h": "10", - "measuredW": "150", - "measuredH": "100", - "x": "455", - "y": "1077", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 170.15151515151513, - "y": 10.881026055093571 - }, - "p1": { - "x": 0.46856302129091937, - "y": -0.0004822370830620513 - }, - "p2": { - "x": 0.08755558946864994, - "y": 0.40174459352692793 - }, - "stroke": "dotted" - } - }, - { - "ID": "6055", - "typeID": "Arrow", - "zOrder": "14", - "w": "160", - "h": "49", - "measuredW": "150", - "measuredH": "100", - "x": "463", - "y": "1089", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 159.9948370393879, - "y": 49.03492956155333 - }, - "p1": { - "x": 0.4948398930687969, - "y": -0.06769152207708602 - }, - "p2": { - "x": 0.0831404204171804, - "y": 0.39512183994975203 - } - } - }, - { - "ID": "6056", - "typeID": "Arrow", - "zOrder": "15", - "w": "164", - "h": "93", - "measuredW": "150", - "measuredH": "100", - "x": "456", - "y": "1095", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 164.32964209573845, - "y": 92.3410360190694 - }, - "p1": { - "x": 0.41660090341695827, - "y": -0.10834198348411798 - }, - "p2": { - "x": 0.4201530612933766, - "y": -0.27448827275134136 - } - } - }, - { - "ID": "6057", - "typeID": "Arrow", - "zOrder": "16", - "w": "165", - "h": "133", - "measuredW": "150", - "measuredH": "100", - "x": "455", - "y": "1103", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 165.32964209573845, - "y": 132.31454500476048 - }, - "p1": { - "x": 0.4477509372866056, - "y": -0.11613270851109678 - }, - "p2": { - "x": 0.08755558946864994, - "y": -0.2789034418026404 - } - } - }, - { - "ID": "6058", - "typeID": "Arrow", - "zOrder": "17", - "w": "1", - "h": "577", - "measuredW": "150", - "measuredH": "100", - "x": "308", - "y": "886", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.20078475948128016, - "y": 577.1975430248967 - }, - "p1": { - "x": 0.46856302129091965, - "y": -0.0004822370830620473 - }, - "p2": { - "x": 0.20078475948128016, - "y": -0.11897394490631541 - } - } - }, - { - "ID": "6059", - "typeID": "Arrow", - "zOrder": "18", - "w": "1", - "h": "93", - "measuredW": "150", - "measuredH": "100", - "x": "329", - "y": "795", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.48803395698428176, - "y": 93.15044501005173 - }, - "p1": { - "x": 0.46428571428571475, - "y": -0.003992113361953184 - }, - "p2": { - "x": 0.48803395698428176, - "y": -0.19048075572618473 - }, - "stroke": "dotted" - } - }, - { - "ID": "6060", - "typeID": "Arrow", - "zOrder": "19", - "w": "1", - "h": "66", - "measuredW": "150", - "measuredH": "100", - "x": "717", - "y": "884", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.48803395698428176, - "y": 66.30567517486509 - }, - "p1": { - "x": 0.46428571428571463, - "y": -0.003992113361953185 - }, - "p2": { - "x": 0.48803395698428176, - "y": -0.11897394490631541 - }, - "stroke": "dotted" - } - }, - { - "ID": "6061", - "typeID": "Arrow", - "zOrder": "20", - "w": "497", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "464", - "y": "884", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 497.3020743683919, - "y": -0.11897394490631541 - }, - "p1": { - "x": 0.4685630212909191, - "y": -0.0004822370830620483 - }, - "p2": { - "x": 0.20078475948128016, - "y": -0.11897394490631541 - } - } - }, - { - "ID": "6062", - "typeID": "Arrow", - "zOrder": "21", - "w": "148", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "445", - "y": "448", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 147.7561454352989, - "y": 0.8810260550936846 - }, - "p1": { - "x": 0.4642857142857145, - "y": -0.003992113361953184 - }, - "p2": { - "x": 0.24143192912043787, - "y": 0.8810260550936846 - }, - "stroke": "dotted" - } - }, - { - "ID": "6063", - "typeID": "Arrow", - "zOrder": "22", - "w": "170", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "1054", - "y": "883", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 169.71016756073527, - "y": 0.8810260550936846 - }, - "p1": { - "x": 0.4642857142857145, - "y": -0.003992113361953182 - }, - "p2": { - "x": -0.3783855341235949, - "y": 0.8810260550936846 - } - } - }, - { - "ID": "6064", - "typeID": "__group__", - "zOrder": "23", - "measuredW": "198", - "measuredH": "157", - "w": "198", - "h": "157", - "x": "1182", - "y": "779", - "properties": { - "controlName": "100-hooks:basic-hooks" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "198", - "h": "157", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "96", - "measuredH": "25", - "x": "51", - "y": "16", - "properties": { - "size": "17", - "text": "Basic Hooks" - } - } - ] - } - } - }, - { - "ID": "6065", - "typeID": "Arrow", - "zOrder": "24", - "w": "1", - "h": "66", - "measuredW": "150", - "measuredH": "100", - "x": "976", - "y": "896", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.48803395698428176, - "y": 66.30567517486509 - }, - "p1": { - "x": 0.46428571428571463, - "y": -0.003992113361953185 - }, - "p2": { - "x": 0.48803395698428176, - "y": -0.11897394490631541 - }, - "stroke": "dotted" - } - }, - { - "ID": "6066", - "typeID": "Arrow", - "zOrder": "25", - "w": "214", - "h": "167", - "measuredW": "150", - "measuredH": "100", - "x": "709", - "y": "629", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 213.9972034401286, - "y": 0.1978603245679551 - }, - "p1": { - "x": 0.5695204038704246, - "y": -0.08613798906184292 - }, - "p2": { - "x": 0.42742393837579584, - "y": 166.92007529045236 - } - } - }, - { - "ID": "6067", - "typeID": "Arrow", - "zOrder": "26", - "w": "196", - "h": "113", - "measuredW": "150", - "measuredH": "100", - "x": "715", - "y": "629", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 195.59637753357526, - "y": 0.419164872841975 - }, - "p1": { - "x": 0.5695204038704248, - "y": -0.0861379890618429 - }, - "p2": { - "x": -0.06109788093374391, - "y": 113.4044675769951 - } - } - }, - { - "ID": "6068", - "typeID": "Arrow", - "zOrder": "27", - "w": "200", - "h": "31", - "measuredW": "150", - "measuredH": "100", - "x": "712", - "y": "577", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 199.9742470787478, - "y": 30.37325215008036 - }, - "p1": { - "x": 0.591967784066173, - "y": 0.06824118415324375 - }, - "p2": { - "x": 0.1831630287210828, - "y": 0.06012215628322792 - } - } - }, - { - "ID": "6069", - "typeID": "Arrow", - "zOrder": "28", - "w": "179", - "h": "63", - "measuredW": "150", - "measuredH": "100", - "x": "715", - "y": "627", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 179.061942991504, - "y": -0.33657421750319827 - }, - "p1": { - "x": 0.5695204038704248, - "y": -0.0861379890618428 - }, - "p2": { - "x": -0.06109788093374391, - "y": 63.045424860436356 - } - } - }, - { - "ID": "6070", - "typeID": "Arrow", - "zOrder": "29", - "w": "205", - "h": "74", - "measuredW": "150", - "measuredH": "100", - "x": "714", - "y": "532", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 204.86359480461078, - "y": 73.99538260490783 - }, - "p1": { - "x": 0.591967784066173, - "y": 0.06824118415324368 - }, - "p2": { - "x": -0.4389674261063874, - "y": -0.4095728344125291 - } - } - }, - { - "ID": "6071", - "typeID": "Arrow", - "zOrder": "30", - "w": "185", - "h": "29", - "measuredW": "150", - "measuredH": "100", - "x": "708", - "y": "618", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 184.68407344633147, - "y": 0.3962085114611682 - }, - "p1": { - "x": 0.5656988692166243, - "y": -0.05770306981716299 - }, - "p2": { - "x": 0.049554393203266045, - "y": 29.331468960085772 - } - } - }, - { - "ID": "6072", - "typeID": "Arrow", - "zOrder": "31", - "w": "2", - "h": "403", - "measuredW": "150", - "measuredH": "100", - "x": "975", - "y": "455", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.48803395698428176, - "y": 403.1504450100517 - }, - "p1": { - "x": 0.46428571428571463, - "y": -0.003992113361953183 - }, - "p2": { - "x": 0.48803395698428176, - "y": -0.11897394490631541 - } - } - }, - { - "ID": "6073", - "typeID": "Arrow", - "zOrder": "32", - "w": "153", - "h": "68", - "measuredW": "150", - "measuredH": "100", - "x": "1039", - "y": "465", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 153.21206975808968, - "y": 67.70107943972448 - }, - "p1": { - "x": 0.47348954701664, - "y": -0.1281842780799702 - }, - "p2": { - "x": 0.2685502439312586, - "y": 0.18547172626716701 - } - } - }, - { - "ID": "6074", - "typeID": "Arrow", - "zOrder": "33", - "w": "120", - "h": "44", - "measuredW": "150", - "measuredH": "100", - "x": "1052", - "y": "403", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 119.54402658050071, - "y": 0.18134219350019976 - }, - "p1": { - "x": 0.45395537525354945, - "y": 0.09452332657200811 - }, - "p2": { - "x": -0.3306238495154048, - "y": 44.27316763902337 - } - } - }, - { - "ID": "6075", - "typeID": "Arrow", - "zOrder": "34", - "w": "154", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "1028", - "y": "456", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 153.18911339670876, - "y": 0.8810260550936846 - }, - "p1": { - "x": 0.46428571428571463, - "y": -0.003992113361953182 - }, - "p2": { - "x": -0.3783855341235949, - "y": 0.8810260550936846 - }, - "stroke": "dotted" - } - }, - { - "ID": "6076", - "typeID": "Canvas", - "zOrder": "35", - "w": "198", - "h": "272", - "measuredW": "100", - "measuredH": "70", - "x": "1182", - "y": "491" - }, - { - "ID": "6077", - "typeID": "Arrow", - "zOrder": "36", - "w": "281", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "664", - "y": "454", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 281.3020743683919, - "y": 0.8810260550936846 - }, - "p1": { - "x": 0.4642857142857147, - "y": -0.003992113361953183 - }, - "p2": { - "x": 0.48803395698428176, - "y": 0.8810260550936846 - } - } - }, - { - "ID": "6078", - "typeID": "Arrow", - "zOrder": "37", - "w": "121", - "h": "48", - "measuredW": "150", - "measuredH": "100", - "x": "482", - "y": "390", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.24502512380570352, - "y": -0.2591533504318022 - }, - "p1": { - "x": 0.3864377036851346, - "y": -0.12346452745048851 - }, - "p2": { - "x": 120.9799374604795, - "y": 47.93872333970569 - } - } - }, - { - "ID": "6079", - "typeID": "Arrow", - "zOrder": "38", - "w": "195", - "h": "124", - "measuredW": "150", - "measuredH": "100", - "x": "689", - "y": "308", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 194.50455208805204, - "y": 0.21486631796096844 - }, - "p1": { - "x": 0.5125873193980325, - "y": 0.11743289538347922 - }, - "p2": { - "x": -0.016173803428500833, - "y": 124.53032187659227 - } - } + "nodes": [ + { + "id": "-AKmITUmSGIflJG-eGkm5", + "type": "section", + "position": { + "x": -334.6031392708364, + "y": 1216.976431006493 + }, + "selected": false, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "zIndex": -999, + "width": 352, + "height": 218, + "style": { + "width": 352, + "height": 218 + }, + "resizing": false, + "dragging": false, + "positionAbsolute": { + "x": -334.6031392708364, + "y": 1216.976431006493 + }, + "selectable": true, + "focusable": true + }, + { + "id": "NiyRDadVpAFMzSVtgoFZ0", + "type": "vertical", + "position": { + "x": -387.02532545570534, + "y": 810.9443302389855 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75, + "strokeDasharray": "0.8 8", + "strokeLinecap": "round" }, - { - "ID": "6080", - "typeID": "Arrow", - "zOrder": "39", - "w": "15", - "h": "83", - "measuredW": "150", - "measuredH": "100", - "x": "885", - "y": "213", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 11.504552088052037, - "y": 0.21486631796096844 - }, - "p1": { - "x": 0.48122701874598317, - "y": 0.08919085657179801 - }, - "p2": { - "x": -0.05283881539992308, - "y": 83.59686539590052 - } - } + "oldId": "sL8hbjRDbzA2bc9OzIfPe" + }, + "zIndex": 999, + "width": 20, + "height": 72, + "style": { + "width": 20, + "height": 72 + }, + "positionAbsolute": { + "x": -387.02532545570534, + "y": 810.9443302389855 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "sL8hbjRDbzA2bc9OzIfPe", + "type": "vertical", + "position": { + "x": -387.02532545570534, + "y": 889.4443302389855 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75 + } + }, + "zIndex": 999, + "width": 20, + "height": 149, + "style": { + "width": 20, + "height": 149 + }, + "positionAbsolute": { + "x": -387.02532545570534, + "y": 889.4443302389855 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "n1TuNyZjK9CLAfbKRQENe", + "type": "vertical", + "position": { + "x": 91.54031453135002, + "y": 429.44433023898546 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 124, + "style": { + "width": 20, + "height": 124 + }, + "positionAbsolute": { + "x": 91.54031453135002, + "y": 429.44433023898546 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "NeJdgNbsxiUjt_GBzub6Z", + "type": "section", + "position": { + "x": -249.52532545570534, + "y": 274.94433023898546 + }, + "width": 248, + "height": 255, + "style": { + "width": 248, + "height": 255 + }, + "selected": false, + "data": { + "style": { + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "positionAbsolute": { + "x": -249.52532545570534, + "y": 274.94433023898546 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "FkTj8n1pIAGa1nf93MUKC", + "type": "section", + "position": { + "x": -5.525325455705342, + "y": 274.44433023898546 + }, + "width": 157, + "height": 155, + "style": { + "width": 157, + "height": 155 + }, + "selected": false, + "data": { + "style": { + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "positionAbsolute": { + "x": -5.525325455705342, + "y": 274.44433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "clS37EDia6KZVHCszqRqZ", + "type": "vertical", + "position": { + "x": 351.3414717224867, + "y": 235.94433023898546 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 84, + "style": { + "width": 20, + "height": 84 + }, + "positionAbsolute": { + "x": 351.3414717224867, + "y": 235.94433023898546 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "l4RmWQLIK1NOOm6QTQMBa", + "type": "section", + "position": { + "x": -514.0253254557053, + "y": 262.94433023898546 + }, + "width": 234, + "height": 270, + "style": { + "width": 234, + "height": 270 + }, + "selected": false, + "data": { + "style": { + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "positionAbsolute": { + "x": -514.0253254557053, + "y": 262.94433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "width": 116, + "height": 68, + "id": "iogwMmOvub2ZF4zgg6WyF", + "type": "title", + "position": { + "x": -49.45968546864998, + "y": -157.76957062917046 + }, + "selected": false, + "data": { + "label": "React", + "style": { + "fontSize": 28, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6081", - "typeID": "Label", - "zOrder": "40", - "measuredW": "76", - "measuredH": "36", - "x": "844", - "y": "163", - "properties": { - "size": "28", - "text": "React" - } + "oldId": "9nxw2PEl-_eQPW0FHNPq2" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -49.45968546864998, + "y": -157.76957062917046 + }, + "focusable": true, + "selectable": true + }, + { + "width": 20, + "height": 64, + "id": "LEijbLyxg4RyutKEM2Y5g", + "type": "vertical", + "position": { + "x": -1.4596854686499796, + "y": -232.76957062917046 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#0A33FF" }, - { - "ID": "6086", - "typeID": "__group__", - "zOrder": "42", - "measuredW": "342", - "measuredH": "55", - "w": "342", - "h": "55", - "x": "712", - "y": "274", - "properties": { - "controlName": "ext_link:roadmap.sh/javascript" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "342", - "h": "55", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "4273622", - "borderColor": "4273622" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "230", - "measuredH": "28", - "x": "56", - "y": "14", - "properties": { - "size": "20", - "color": "16777215", - "text": "Visit JavaScript Roadmap" - } - } - ] - } - } + "oldId": "xD07fJ1NmNeAarVCEfubU" + }, + "zIndex": 999, + "positionAbsolute": { + "x": -1.4596854686499796, + "y": -232.76957062917046 + }, + "dragging": false, + "focusable": true, + "style": { + "width": 20, + "height": 64 + }, + "resizing": true, + "selectable": true + }, + { + "id": "yHmHXymPNWwu8p1vvqD3o", + "type": "paragraph", + "position": { + "x": 179.8414717224867, + "y": -232.76957062917046 + }, + "selected": false, + "data": { + "label": "Find the detailed version of this roadmap along with other similar roadmaps", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "left", + "borderColor": "#000000", + "backgroundColor": "#FFFFFf" + } + }, + "zIndex": 999, + "width": 363, + "height": 143, + "positionAbsolute": { + "x": 179.8414717224867, + "y": -232.76957062917046 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 363, + "height": 143 + }, + "resizing": false + }, + { + "id": "R_Fs6rdl2XtQ9aLOubMqL", + "type": "button", + "position": { + "x": 193.04484613528683, + "y": -150.78400721142515 + }, + "selected": false, + "data": { + "label": "roadmap.sh", + "href": "https://roadmap.sh", + "color": "#ffffff", + "backgroundColor": "#4136D6", + "style": { + "fontSize": 17 }, - { - "ID": "6087", - "typeID": "Arrow", - "zOrder": "43", - "w": "11", - "h": "65", - "measuredW": "150", - "measuredH": "100", - "x": "847", - "y": "86", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 5.81355254908226, - "y": -0.3048709282632984 - }, - "p1": { - "x": 0.4747832595422888, - "y": -0.12123341254486592 - }, - "p2": { - "x": 11, - "y": 65 - } - } + "oldId": "2zqZkyVgigifcRS1H7F_b" + }, + "zIndex": 999, + "width": 339, + "height": 49, + "dragging": false, + "style": { + "width": 339, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": 193.04484613528683, + "y": -150.78400721142515 + }, + "selectable": true, + "focusable": true + }, + { + "id": "xwpc_KxehAruFM0pCQnie", + "type": "vertical", + "position": { + "x": 161.49706098308326, + "y": 2056.1213007495107 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#4136D4" }, - { - "ID": "6088", - "typeID": "__group__", - "zOrder": "44", - "measuredW": "207", - "measuredH": "47", - "w": "207", - "h": "47", - "x": "560", - "y": "424", - "properties": { - "controlName": "101-cli-tools" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "207", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "72", - "measuredH": "25", - "x": "68", - "y": "11", - "properties": { - "size": "17", - "text": "CLI Tools" - } - } - ] - } - } + "oldId": "Ju00mr0KLGN2BV6yEQGPt" + }, + "zIndex": 999, + "width": 20, + "height": 104, + "positionAbsolute": { + "x": 161.49706098308326, + "y": 2056.1213007495107 + }, + "dragging": false, + "style": { + "width": 20, + "height": 104 + }, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "width": 426, + "height": 119, + "id": "GV_zWF6rSWg5bqgiXhOEf", + "type": "paragraph", + "position": { + "x": -41.502939016916685, + "y": 1966.605335469083 + }, + "selected": false, + "data": { + "label": "Have a look at the following related roadmaps", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "borderColor": "#000000", + "backgroundColor": "#ffffff" }, - { - "ID": "6089", - "typeID": "__group__", - "zOrder": "45", - "measuredW": "206", - "measuredH": "44", - "w": "206", - "h": "44", - "x": "279", - "y": "426", - "properties": { - "controlName": "101-cli-tools:create-react-app" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "197", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "9", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "139", - "measuredH": "25", - "x": "38", - "y": "10", - "properties": { - "size": "17", - "text": "Create React App" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "11", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "3700253", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "oldId": "sVXZrBCsiSzWBBYWTm-nQ" + }, + "zIndex": 999, + "positionAbsolute": { + "x": -41.502939016916685, + "y": 1966.605335469083 + }, + "dragging": false, + "style": { + "width": 426, + "height": 119 + }, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "width": 205, + "height": 49, + "id": "ZSrQoNGKiR484uALMWO9F", + "type": "button", + "position": { + "x": 169.0448461352869, + "y": 2024.2946173807345 + }, + "selected": false, + "data": { + "label": "TypeScript Roadmap", + "href": "https://roadmap.sh/typescript", + "color": "#FFFFFf", + "backgroundColor": "#4136D4", + "style": { + "fontSize": 17 }, - { - "ID": "6090", - "typeID": "__group__", - "zOrder": "46", - "measuredW": "206", - "measuredH": "44", - "w": "206", - "h": "44", - "x": "279", - "y": "377", - "properties": { - "controlName": "100-cli-tools:vite" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "197", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "9", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "30", - "measuredH": "25", - "x": "94", - "y": "10", - "properties": { - "size": "17", - "text": "Vite" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "10027263", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "borderColor": "#4136D4", + "oldId": "dlGf3ZdFXYx0Z6Viu2x-l" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": 169.0448461352869, + "y": 2024.2946173807345 + }, + "style": {}, + "focusable": true, + "resizing": false, + "selectable": true + }, + { + "width": 194, + "height": 49, + "id": "P5IZjP0g1_fnvHy3YTR4q", + "type": "button", + "position": { + "x": -31.15582553598972, + "y": 2024.2946173807345 + }, + "selected": false, + "data": { + "label": "Frontend Roadmap", + "href": "https://roadmap.sh/frontend", + "color": "#FFFFFf", + "backgroundColor": "#4136D4", + "style": { + "fontSize": 17 }, - { - "ID": "6091", - "typeID": "__group__", - "zOrder": "47", - "measuredW": "207", - "measuredH": "47", - "w": "207", - "h": "47", - "x": "872", - "y": "431", - "properties": { - "controlName": "102-components" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "207", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "99", - "measuredH": "25", - "x": "54", - "y": "11", - "properties": { - "size": "17", - "text": "Components" - } - } - ] - } - } + "borderColor": "#4136D4", + "oldId": "dlGf3ZdFXYx0Z6Viu2x-l" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -31.15582553598972, + "y": 2024.2946173807345 + }, + "style": {}, + "focusable": true, + "resizing": false, + "selectable": true + }, + { + "id": "tU4Umtnfu01t9gLlnlK6b", + "type": "topic", + "position": { + "x": -94.45968546864998, + "y": 114.94433023898546 + }, + "selected": false, + "data": { + "label": "CLI Tools", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 206, + "height": 49, + "style": { + "width": 206, + "height": 49 + }, + "positionAbsolute": { + "x": -94.45968546864998, + "y": 114.94433023898546 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "XDvH2t3AJGevS17uM8TO6", + "type": "button", + "position": { + "x": -94.45968546864998, + "y": 2.944330238985458 + }, + "selected": false, + "data": { + "label": "JavaScript Roadmap", + "href": "https://roadmap.sh/javascript", + "color": "#ffffff", + "backgroundColor": "#4136D6", + "style": { + "fontSize": 17 }, - { - "ID": "6092", - "typeID": "__group__", - "zOrder": "48", - "measuredW": "246", - "measuredH": "47", - "w": "246", - "h": "47", - "x": "1164", - "y": "434", - "properties": { - "controlName": "101-components:functional-components" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "235", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "183", - "measuredH": "25", - "x": "26", - "y": "11", - "properties": { - "size": "17", - "text": "Functional Components" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "222", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "10027263", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "oldId": "R_Fs6rdl2XtQ9aLOubMqL" + }, + "zIndex": 999, + "width": 206, + "height": 49, + "dragging": false, + "style": { + "width": 206, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": -94.45968546864998, + "y": 2.944330238985458 + }, + "selectable": true, + "focusable": true + }, + { + "id": "y9ToYDix-koRbR6FLydFw", + "type": "subtopic", + "position": { + "x": 169.0448461352869, + "y": 114.94433023898546 + }, + "selected": false, + "data": { + "label": "Vite", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6093", - "typeID": "__group__", - "zOrder": "49", - "measuredW": "235", - "measuredH": "47", - "w": "235", - "h": "47", - "x": "1163", - "y": "381", - "properties": { - "controlName": "100-components:class-components" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "235", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "14540253" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "146", - "measuredH": "25", - "x": "45", - "y": "11", - "properties": { - "size": "17", - "text": "Class Components" - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": 169.0448461352869, + "y": 114.94433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "XB1EQomsFGntZTofIfckn", + "type": "paragraph", + "position": { + "x": 169.0448461352869, + "y": -46.05566976101454 + }, + "selected": false, + "data": { + "label": "Make sure to learn the \"Beginner\" topics of the JavaScript roadmap before you start learning React.", + "style": { + "fontSize": 17, + "borderColor": "#ffffff", + "backgroundColor": "#ffffff", + "color": "#000000", + "textAlign": "left", + "justifyContent": "flex-start", + "padding": 16 + } + }, + "zIndex": 999, + "width": 363, + "height": 119, + "style": { + "width": 363, + "height": 119 + }, + "positionAbsolute": { + "x": 169.0448461352869, + "y": -46.05566976101454 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "79K4xgljcoSHkCYI1D55O", + "type": "topic", + "position": { + "x": -94.45968546864998, + "y": 207.44433023898546 + }, + "selected": false, + "data": { + "label": "Components", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6094", - "typeID": "__group__", - "zOrder": "50", - "measuredW": "215", - "measuredH": "44", - "w": "215", - "h": "44", - "x": "1173", - "y": "542", - "properties": { - "controlName": "102-components:jsx" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "215", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "30", - "measuredH": "25", - "x": "93", - "y": "9", - "properties": { - "size": "17", - "text": "JSX" - } - } - ] - } - } + "oldId": "0uiGsC5SWavNdlFqizkKe" + }, + "zIndex": 999, + "width": 206, + "height": 49, + "style": { + "width": 206, + "height": 49 + }, + "positionAbsolute": { + "x": -94.45968546864998, + "y": 207.44433023898546 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "8mw4TxlLN4ZKAlLl-_NVV", + "type": "subtopic", + "position": { + "x": -515.0253254557053, + "y": 207.44433023898546 + }, + "selected": false, + "data": { + "label": "Functional Components", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6095", - "typeID": "__group__", - "zOrder": "51", - "measuredW": "215", - "measuredH": "47", - "w": "215", - "h": "47", - "x": "1173", - "y": "590", - "properties": { - "controlName": "103-components:props-vs-state" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "215", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "110", - "measuredH": "25", - "x": "53", - "y": "11", - "properties": { - "size": "17", - "text": "Props vs State" - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 236, + "height": 49, + "style": { + "width": 236, + "height": 49 + }, + "positionAbsolute": { + "x": -515.0253254557053, + "y": 207.44433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "h_o0LOSuwRvymWLF7IVj_", + "type": "paragraph", + "position": { + "x": -514.5253254557053, + "y": 0.944330238985458 + }, + "selected": false, + "data": { + "label": "There used to be \"Class Components\" which React doesn't recommend any more. You don't need to learn about them but you might still notice them in some legacy projects", + "style": { + "fontSize": 17, + "borderColor": "#ffffff", + "backgroundColor": "#ffffff", + "color": "#000000", + "textAlign": "left", + "justifyContent": "flex-start", + "padding": 16 }, - { - "ID": "6096", - "typeID": "__group__", - "zOrder": "52", - "measuredW": "215", - "measuredH": "47", - "w": "215", - "h": "47", - "x": "1173", - "y": "641", - "properties": { - "controlName": "104-components:conditional-rendering" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "215", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "173", - "measuredH": "25", - "x": "21", - "y": "11", - "properties": { - "size": "17", - "text": "Conditional Rendering" - } - } - ] - } - } + "oldId": "XB1EQomsFGntZTofIfckn" + }, + "zIndex": 999, + "width": 363, + "height": 162, + "style": { + "width": 363 + }, + "positionAbsolute": { + "x": -514.5253254557053, + "y": 0.944330238985458 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "HMTUjok_ZAcrP6YobWs3T", + "type": "label", + "position": { + "x": -506.02532545570534, + "y": 489.94433023898546 + }, + "selected": false, + "data": { + "label": "Component Basics", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 218, + "height": 36, + "style": { + "width": 218 + }, + "positionAbsolute": { + "x": -506.02532545570534, + "y": 489.94433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "WREBxWSNQDD_6fzpHL6CE", + "type": "subtopic", + "position": { + "x": -506.02532545570534, + "y": 270.94433023898546 + }, + "selected": false, + "data": { + "label": "JSX", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6097", - "typeID": "__group__", - "zOrder": "53", - "measuredW": "215", - "measuredH": "47", - "w": "215", - "h": "47", - "x": "1173", - "y": "692", - "properties": { - "controlName": "105-components:composition-vs-inheritance" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "215", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "97", - "measuredH": "25", - "x": "59", - "y": "11", - "properties": { - "size": "17", - "text": "Composition" - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 218, + "height": 49, + "style": { + "width": 218, + "height": 49 + }, + "positionAbsolute": { + "x": -506.02532545570534, + "y": 270.94433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "RFuy3Eho3mnW1GpP08BVw", + "type": "subtopic", + "position": { + "x": -506.02532545570534, + "y": 323.94433023898546 + }, + "selected": false, + "data": { + "label": "Props vs State", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6098", - "typeID": "Label", - "zOrder": "54", - "measuredW": "154", - "measuredH": "25", - "x": "1204", - "y": "506", - "properties": { - "size": "17", - "text": "Components Basics" - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 218, + "height": 49, + "style": { + "width": 218, + "height": 49 + }, + "positionAbsolute": { + "x": -506.02532545570534, + "y": 323.94433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "aE6XBgH23135_9QmD4ff2", + "type": "subtopic", + "position": { + "x": -506.02532545570534, + "y": 376.94433023898546 + }, + "selected": false, + "data": { + "label": "Conditional Rendering", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6099", - "typeID": "__group__", - "zOrder": "55", - "measuredW": "207", - "measuredH": "47", - "w": "207", - "h": "47", - "x": "872", - "y": "600", - "properties": { - "controlName": "103-rendering" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "207", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "82", - "measuredH": "25", - "x": "63", - "y": "11", - "properties": { - "size": "17", - "text": "Rendering" - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 218, + "height": 49, + "style": { + "width": 218, + "height": 49 + }, + "positionAbsolute": { + "x": -506.02532545570534, + "y": 376.94433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "4T59gdcwdXqj9kCuK7cfp", + "type": "subtopic", + "position": { + "x": -506.02532545570534, + "y": 429.94433023898546 + }, + "selected": false, + "data": { + "label": "Composition", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6100", - "typeID": "__group__", - "zOrder": "56", - "measuredW": "255", - "measuredH": "47", - "w": "255", - "h": "47", - "x": "460", - "y": "559", - "properties": { - "controlName": "101-rendering:lists-and-keys" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "255", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "111", - "measuredH": "25", - "x": "72", - "y": "11", - "properties": { - "size": "17", - "text": "Lists and Keys" - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 218, + "height": 49, + "style": { + "width": 218, + "height": 49 + }, + "positionAbsolute": { + "x": -506.02532545570534, + "y": 429.94433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "0uiGsC5SWavNdlFqizkKe", + "type": "topic", + "position": { + "x": 298.04484613528683, + "y": 207.44433023898546 + }, + "selected": false, + "data": { + "label": "Rendering", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 129, + "height": 49, + "style": { + "width": 129, + "height": 49 + }, + "positionAbsolute": { + "x": 298.04484613528683, + "y": 207.44433023898546 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "8OBlgDRUg-CTgDXY-QHyO", + "type": "subtopic", + "position": { + "x": 305.47467454429466, + "y": 278.44433023898546 + }, + "selected": false, + "data": { + "label": "Component Lifecycle", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6101", - "typeID": "__group__", - "zOrder": "57", - "measuredW": "255", - "measuredH": "47", - "w": "255", - "h": "47", - "x": "460", - "y": "507", - "properties": { - "controlName": "100-rendering:component-life-cycle" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "255", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "170", - "measuredH": "25", - "x": "43", - "y": "11", - "properties": { - "size": "17", - "text": "Component Life Cycle" - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 233, + "height": 49, + "style": { + "width": 233, + "height": 49 + }, + "positionAbsolute": { + "x": 305.47467454429466, + "y": 278.44433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "HeWVCPHqVnnbOn6zIim4K", + "type": "subtopic", + "position": { + "x": 305.47467454429466, + "y": 331.44433023898546 + }, + "selected": false, + "data": { + "label": "Lists and Keys", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6102", - "typeID": "__group__", - "zOrder": "58", - "measuredW": "255", - "measuredH": "47", - "w": "255", - "h": "47", - "x": "460", - "y": "611", - "properties": { - "controlName": "102-rendering:render-props" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "255", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "107", - "measuredH": "25", - "x": "74", - "y": "11", - "properties": { - "size": "17", - "text": "Render Props" - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 233, + "height": 49, + "style": { + "width": 233, + "height": 49 + }, + "positionAbsolute": { + "x": 305.47467454429466, + "y": 331.44433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "vdumdIglnouf1KyGIGZnc", + "type": "subtopic", + "position": { + "x": 305.47467454429466, + "y": 384.44433023898546 + }, + "selected": false, + "data": { + "label": "Render Props", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6103", - "typeID": "__group__", - "zOrder": "59", - "measuredW": "255", - "measuredH": "47", - "w": "255", - "h": "47", - "x": "460", - "y": "663", - "properties": { - "controlName": "103-rendering:refs" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "255", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "36", - "measuredH": "25", - "x": "110", - "y": "11", - "properties": { - "size": "17", - "text": "Refs" - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 233, + "height": 49, + "style": { + "width": 233, + "height": 49 + }, + "positionAbsolute": { + "x": 305.47467454429466, + "y": 384.44433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "_zNAOhFWMcWqP4oxNPCXF", + "type": "subtopic", + "position": { + "x": 305.47467454429466, + "y": 437.44433023898546 + }, + "selected": false, + "data": { + "label": "Refs", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6104", - "typeID": "__group__", - "zOrder": "60", - "measuredW": "255", - "measuredH": "47", - "w": "255", - "h": "47", - "x": "460", - "y": "715", - "properties": { - "controlName": "104-rendering:events" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "255", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "53", - "measuredH": "25", - "x": "101", - "y": "11", - "properties": { - "size": "17", - "text": "Events" - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 233, + "height": 49, + "style": { + "width": 233, + "height": 49 + }, + "positionAbsolute": { + "x": 305.47467454429466, + "y": 437.44433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Nex2HcTOYIbfqUzXyxSMY", + "type": "subtopic", + "position": { + "x": 305.47467454429466, + "y": 490.44433023898546 + }, + "selected": false, + "data": { + "label": "Events", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6105", - "typeID": "__group__", - "zOrder": "61", - "measuredW": "255", - "measuredH": "47", - "w": "255", - "h": "47", - "x": "460", - "y": "768", - "properties": { - "controlName": "105-rendering:high-order-components" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "255", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "188", - "measuredH": "25", - "x": "34", - "y": "11", - "properties": { - "size": "17", - "text": "High Order Components" - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 233, + "height": 49, + "style": { + "width": 233, + "height": 49 + }, + "positionAbsolute": { + "x": 305.47467454429466, + "y": 490.44433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "zOENl96GUZRw2PP2KxIck", + "type": "subtopic", + "position": { + "x": 305.47467454429466, + "y": 543.4443302389855 + }, + "selected": false, + "data": { + "label": "High Order Components", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6106", - "typeID": "__group__", - "zOrder": "62", - "measuredW": "242", - "measuredH": "47", - "w": "242", - "h": "47", - "x": "872", - "y": "860", - "properties": { - "controlName": "104-hooks" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "242", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "49", - "measuredH": "25", - "x": "96", - "y": "11", - "properties": { - "size": "17", - "text": "Hooks" - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 233, + "height": 49, + "style": { + "width": 233, + "height": 49 + }, + "positionAbsolute": { + "x": 305.47467454429466, + "y": 543.4443302389855 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "LbLQhonBqzxHU6B-L--Vq", + "type": "topic", + "position": { + "x": 57.04484613528689, + "y": 553.4443302389855 + }, + "selected": false, + "data": { + "label": "Hooks", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6107", - "typeID": "__group__", - "zOrder": "63", - "measuredW": "174", - "measuredH": "44", - "w": "174", - "h": "44", - "x": "1194", - "y": "827", - "properties": { - "controlName": "100-hooks:basic-hooks:use-state" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "174", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "69", - "measuredH": "25", - "x": "52", - "y": "10", - "properties": { - "size": "17", - "text": "useState" - } - } - ] - } - } + "oldId": "thfnymb_UIiKxakKfiua5" + }, + "zIndex": 999, + "width": 112, + "height": 49, + "style": { + "width": 112, + "height": 49 + }, + "positionAbsolute": { + "x": 57.04484613528689, + "y": 553.4443302389855 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "mkmz1JuNsTOR1D4vqilCX", + "type": "label", + "position": { + "x": 16.974674544294658, + "y": 387.44433023898546 + }, + "selected": false, + "data": { + "label": "Basic Hooks", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 112, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": 16.974674544294658, + "y": 387.44433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "YEpkbNzEMzS6wAKg85J_N", + "type": "subtopic", + "position": { + "x": 6.974674544294658, + "y": 282.44433023898546 + }, + "selected": false, + "data": { + "label": "useState", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6108", - "typeID": "__group__", - "zOrder": "64", - "measuredW": "175", - "measuredH": "44", - "w": "175", - "h": "44", - "x": "1193", - "y": "875", - "properties": { - "controlName": "101-hooks:basic-hooks:use-effect" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "175", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "73", - "measuredH": "25", - "x": "51", - "y": "10", - "properties": { - "size": "17", - "text": "useEffect" - } - } - ] - } - } + "oldId": "FK59Zsm5ENA9g11XWCan_" + }, + "zIndex": 999, + "width": 135, + "height": 49, + "style": { + "width": 135, + "height": 49 + }, + "positionAbsolute": { + "x": 6.974674544294658, + "y": 282.44433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "8OnzX03hkZ9K9i__tjmFX", + "type": "subtopic", + "position": { + "x": 3.9746745442946576, + "y": 335.44433023898546 + }, + "selected": false, + "data": { + "label": "useEffect", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6109", - "typeID": "__group__", - "zOrder": "65", - "measuredW": "243", - "measuredH": "47", - "w": "243", - "h": "47", - "x": "871", - "y": "938", - "properties": { - "controlName": "101-hooks:writing-your-own-hooks" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "243", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "171", - "measuredH": "25", - "x": "36", - "y": "11", - "properties": { - "size": "17", - "text": "Writing Custom Hooks" - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 139, + "height": 49, + "style": { + "width": 139, + "height": 49 + }, + "positionAbsolute": { + "x": 3.9746745442946576, + "y": 335.44433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "HX75SExuzR5AP7TQ94qid", + "type": "subtopic", + "position": { + "x": -249.95515386471317, + "y": 532.9443302389855 + }, + "selected": false, + "data": { + "label": "Creating Custom Hooks", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6110", - "typeID": "__group__", - "zOrder": "66", - "measuredW": "243", - "measuredH": "248", - "w": "243", - "h": "248", - "x": "871", - "y": "992", - "properties": { - "controlName": "102-hooks:common-hooks" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "243", - "h": "248", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16777215" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "123", - "measuredH": "25", - "x": "60", - "y": "15", - "properties": { - "size": "17", - "text": "Common Hooks" - } - }, - { - "ID": "2", - "typeID": "TextArea", - "zOrder": "2", - "w": "93", - "h": "43", - "measuredW": "200", - "measuredH": "140", - "x": "139", - "y": "49", - "properties": { - "color": "16770457" - } - }, - { - "ID": "3", - "typeID": "Label", - "zOrder": "3", - "measuredW": "56", - "measuredH": "25", - "x": "157", - "y": "58", - "properties": { - "size": "17", - "text": "useRef" - } - }, - { - "ID": "4", - "typeID": "TextArea", - "zOrder": "4", - "w": "120", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "14", - "y": "48", - "properties": { - "color": "16770457" - } - }, - { - "ID": "5", - "typeID": "Label", - "zOrder": "5", - "measuredW": "94", - "measuredH": "25", - "x": "26", - "y": "58", - "properties": { - "size": "17", - "text": "useCallback" - } - }, - { - "ID": "6", - "typeID": "TextArea", - "zOrder": "6", - "w": "217", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "14", - "y": "96", - "properties": { - "color": "16770457" - } - }, - { - "ID": "7", - "typeID": "Label", - "zOrder": "7", - "measuredW": "77", - "measuredH": "25", - "x": "86", - "y": "106", - "properties": { - "size": "17", - "text": "useMemo" - } - }, - { - "ID": "8", - "typeID": "TextArea", - "zOrder": "8", - "w": "217", - "h": "43", - "measuredW": "200", - "measuredH": "140", - "x": "14", - "y": "145", - "properties": { - "color": "16770457" - } - }, - { - "ID": "9", - "typeID": "Label", - "zOrder": "9", - "measuredW": "95", - "measuredH": "25", - "x": "75", - "y": "154", - "properties": { - "size": "17", - "text": "useReducer" - } - }, - { - "ID": "10", - "typeID": "TextArea", - "zOrder": "10", - "w": "121", - "h": "43", - "measuredW": "200", - "measuredH": "140", - "x": "13", - "y": "193", - "properties": { - "color": "16770457" - } - }, - { - "ID": "11", - "typeID": "Label", - "zOrder": "11", - "measuredW": "88", - "measuredH": "25", - "x": "29", - "y": "202", - "properties": { - "size": "17", - "text": "useContext" - } - }, - { - "ID": "12", - "typeID": "TextArea", - "zOrder": "12", - "w": "92", - "h": "43", - "measuredW": "200", - "measuredH": "140", - "x": "139", - "y": "193", - "properties": { - "color": "16770457" - } - }, - { - "ID": "13", - "typeID": "Label", - "zOrder": "13", - "measuredW": "24", - "measuredH": "25", - "x": "173", - "y": "202", - "properties": { - "size": "17", - "text": "......." - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 248, + "height": 49, + "style": { + "width": 248, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -249.95515386471317, + "y": 532.9443302389855 + }, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "EyspErq0ByXTgkgk3SGUz", + "type": "label", + "position": { + "x": -195.52532545570534, + "y": 490 + }, + "selected": false, + "data": { + "label": "Common Hooks", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 139, + "height": 36, + "style": { + "width": 139, + "height": 36 + }, + "positionAbsolute": { + "x": -195.52532545570534, + "y": 490 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "dgoDNDtW2_q9R9yhkXrcz", + "type": "subtopic", + "position": { + "x": -241.52532545570534, + "y": 282.94433023898546 + }, + "selected": false, + "data": { + "label": "useCallback", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6111", - "typeID": "__group__", - "zOrder": "67", - "measuredW": "157", - "measuredH": "47", - "w": "157", - "h": "47", - "x": "639", - "y": "860", - "properties": { - "controlName": "105-routers" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "157", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "61", - "measuredH": "25", - "x": "48", - "y": "11", - "properties": { - "size": "17", - "text": "Routers" - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 128, + "height": 49, + "style": { + "width": 128, + "height": 49 + }, + "positionAbsolute": { + "x": -241.52532545570534, + "y": 282.94433023898546 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "id": "t_laNdMmdLApYszqXRdWg", + "type": "subtopic", + "position": { + "x": -110.52532545570534, + "y": 282.94433023898546 + }, + "selected": false, + "data": { + "label": "useRef", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6112", - "typeID": "__group__", - "zOrder": "68", - "measuredW": "167", - "measuredH": "47", - "w": "167", - "h": "47", - "x": "629", - "y": "934", - "properties": { - "controlName": "100-routers:react-router" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "158", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "9", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "104", - "measuredH": "25", - "x": "36", - "y": "11", - "properties": { - "size": "17", - "text": "React Router" - } - }, - { - "ID": "3", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "12", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "10027263", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": -110.52532545570534, + "y": 282.94433023898546 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "id": "w3bNp7OkehI1gjx8NzlC8", + "type": "subtopic", + "position": { + "x": -110.52532545570534, + "y": 334.94433023898546 + }, + "selected": false, + "data": { + "label": "useMemo", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6113", - "typeID": "__group__", - "zOrder": "69", - "measuredW": "168", - "measuredH": "47", - "w": "168", - "h": "47", - "x": "627", - "y": "986", - "properties": { - "controlName": "101-routers:reach-router" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "157", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "11", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "108", - "measuredH": "25", - "x": "37", - "y": "11", - "properties": { - "size": "17", - "text": "Reach Router" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "12", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "3700253", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": -110.52532545570534, + "y": 334.94433023898546 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "id": "v48Mv0wQqjXbvy8x6gDjQ", + "type": "subtopic", + "position": { + "x": -241.52532545570534, + "y": 334.94433023898546 + }, + "selected": false, + "data": { + "label": "useReducer", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6114", - "typeID": "__group__", - "zOrder": "70", - "measuredW": "230", - "measuredH": "47", - "w": "230", - "h": "47", - "x": "251", - "y": "861", - "properties": { - "controlName": "106-state-management" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "230", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "148", - "measuredH": "25", - "x": "41", - "y": "11", - "properties": { - "size": "17", - "text": "State Management" - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 128, + "height": 49, + "style": { + "width": 128, + "height": 49 + }, + "positionAbsolute": { + "x": -241.52532545570534, + "y": 334.94433023898546 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "id": "D5_O-uElftYGQr_bTU_se", + "type": "subtopic", + "position": { + "x": -240.52532545570534, + "y": 386.94433023898546 + }, + "selected": false, + "data": { + "label": "useContext", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6115", - "typeID": "__group__", - "zOrder": "71", - "measuredW": "175", - "measuredH": "44", - "w": "175", - "h": "44", - "x": "241", - "y": "775", - "properties": { - "controlName": "100-state-management:context" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "165", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "60", - "measuredH": "25", - "x": "63", - "y": "10", - "properties": { - "size": "17", - "text": "Context" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "10027263", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 230, + "height": 49, + "style": { + "width": 230, + "height": 49 + }, + "positionAbsolute": { + "x": -240.52532545570534, + "y": 386.94433023898546 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "id": "2zrN65JZhCyNimi33g78f", + "type": "subtopic", + "position": { + "x": -241.52532545570534, + "y": 438.44433023898546 + }, + "selected": false, + "data": { + "label": "useCallback", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6116", - "typeID": "__group__", - "zOrder": "72", - "measuredW": "174", - "measuredH": "44", - "w": "174", - "h": "44", - "x": "241", - "y": "727", - "properties": { - "controlName": "101-state-management:zustand" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "164", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "62", - "measuredH": "25", - "x": "61", - "y": "10", - "properties": { - "size": "17", - "text": "Zustand" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "10027263", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 231, + "height": 49, + "style": { + "width": 231, + "height": 49 + }, + "positionAbsolute": { + "x": -241.52532545570534, + "y": 438.44433023898546 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "id": "FK59Zsm5ENA9g11XWCan_", + "type": "subtopic", + "position": { + "x": 3.9746745442946576, + "y": 282.44433023898546 + }, + "selected": false, + "data": { + "label": "useState", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6117", - "typeID": "__group__", - "zOrder": "73", - "measuredW": "176", - "measuredH": "44", - "w": "176", - "h": "44", - "x": "241", - "y": "679", - "properties": { - "controlName": "102-state-management:redux-and-redux-toolkit" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "166", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "115", - "measuredH": "25", - "x": "35", - "y": "10", - "properties": { - "size": "17", - "text": "Redux / Toolkit" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "3700253", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 139, + "height": 49, + "style": { + "width": 139, + "height": 49 + }, + "positionAbsolute": { + "x": 3.9746745442946576, + "y": 282.44433023898546 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "mkyU0ug8MXxV4biHuOity", + "type": "subtopic", + "position": { + "x": -249.95515386471317, + "y": 585.9443302389855 + }, + "selected": false, + "data": { + "label": "Hooks Best Practices", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6118", - "typeID": "__group__", - "zOrder": "74", - "measuredW": "174", - "measuredH": "44", - "w": "174", - "h": "44", - "x": "242", - "y": "631", - "properties": { - "controlName": "103-state-management:mobx" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "164", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "44", - "measuredH": "25", - "x": "70", - "y": "10", - "properties": { - "size": "17", - "text": "MobX" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "3700253", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 248, + "height": 49, + "style": { + "width": 248, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -249.95515386471317, + "y": 585.9443302389855 + }, + "selectable": true, + "focusable": true + }, + { + "id": "NStw6bi_pPB49K41BFSgo", + "type": "topic", + "position": { + "x": 392.97467454429466, + "y": 686.2974386815656 + }, + "selected": false, + "data": { + "label": "Routers", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6119", - "typeID": "__group__", - "zOrder": "75", - "measuredW": "174", - "measuredH": "44", - "w": "174", - "h": "44", - "x": "242", - "y": "583", - "properties": { - "controlName": "104-state-management:recoil" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "164", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "10", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "49", - "measuredH": "25", - "x": "67", - "y": "10", - "properties": { - "size": "17", - "text": "Recoil" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } + "oldId": "thfnymb_UIiKxakKfiua5" + }, + "zIndex": 999, + "width": 117, + "height": 49, + "style": { + "width": 117, + "height": 49 + }, + "positionAbsolute": { + "x": 392.97467454429466, + "y": 686.2974386815656 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "zWL8VLx_g0SWubavJDs6i", + "type": "subtopic", + "position": { + "x": 363.97467454429466, + "y": 825.7974386815656 + }, + "selected": false, + "data": { + "label": "Tanstack Router", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6120", - "typeID": "__group__", - "zOrder": "76", - "measuredW": "227", - "measuredH": "47", - "w": "227", - "h": "47", - "x": "254", - "y": "1066", - "properties": { - "controlName": "107-styling" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "227", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "51", - "measuredH": "25", - "x": "88", - "y": "10", - "properties": { - "size": "17", - "text": "Styling" - } - } - ] - } - } + "oldId": "jvp43wFkKlGQX2y7IxkbM", + "legend": { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 175, + "height": 49, + "style": { + "width": 175, + "height": 49 + }, + "positionAbsolute": { + "x": 363.97467454429466, + "y": 825.7974386815656 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "jvp43wFkKlGQX2y7IxkbM", + "type": "subtopic", + "position": { + "x": 363.97467454429466, + "y": 772.7974386815656 + }, + "selected": false, + "data": { + "label": "React Router", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6121", - "typeID": "__group__", - "zOrder": "77", - "measuredW": "166", - "measuredH": "44", - "w": "166", - "h": "44", - "x": "608", - "y": "1205", - "properties": { - "controlName": "105-styling:chakra-ui" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "157", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "78", - "measuredH": "25", - "x": "40", - "y": "10", - "properties": { - "size": "17", - "text": "Chakra UI" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "142", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "3700253", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 175, + "height": 49, + "style": { + "width": 175, + "height": 49 + }, + "positionAbsolute": { + "x": 363.97467454429466, + "y": 772.7974386815656 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "I7_mX4h-Yywp1YyTJRKXI", + "type": "topic", + "position": { + "x": 49.693201050423, + "y": 867.4443302389855 + }, + "selected": false, + "data": { + "label": "State Management", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6122", - "typeID": "__group__", - "zOrder": "78", - "measuredW": "165", - "measuredH": "44", - "w": "165", - "h": "44", - "x": "607", - "y": "1109", - "properties": { - "controlName": "104-styling:material-ui" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "157", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "86", - "measuredH": "25", - "x": "36", - "y": "10", - "properties": { - "size": "17", - "text": "Material UI" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "141", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } + "oldId": "thfnymb_UIiKxakKfiua5" + }, + "zIndex": 999, + "width": 192, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 49.693201050423, + "y": 867.4443302389855 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "10uL0r388lKh8pWYWqRZD", + "type": "subtopic", + "position": { + "x": 82.693201050423, + "y": 685.9443302389855 + }, + "selected": false, + "data": { + "label": "Context", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6123", - "typeID": "__group__", - "zOrder": "79", - "measuredW": "167", - "measuredH": "44", - "w": "167", - "h": "44", - "x": "608", - "y": "1157", - "properties": { - "controlName": "102-styling:mantine" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "157", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "63", - "measuredH": "25", - "x": "47", - "y": "10", - "properties": { - "size": "17", - "text": "Mantine" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "143", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "3700253" - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 126, + "height": 49, + "style": { + "width": 126, + "height": 49 + }, + "positionAbsolute": { + "x": 82.693201050423, + "y": 685.9443302389855 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "nl5imPsdY2oEWlg-9TTuk", + "type": "subtopic", + "position": { + "x": 82.693201050423, + "y": 738.9443302389855 + }, + "selected": false, + "data": { + "label": "Zustand", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6124", - "typeID": "__group__", - "zOrder": "80", - "measuredW": "167", - "measuredH": "44", - "w": "167", - "h": "44", - "x": "607", - "y": "1062", - "properties": { - "controlName": "103-styling:tailwind" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "157", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "61", - "measuredH": "25", - "x": "48", - "y": "10", - "properties": { - "size": "17", - "text": "TailwindCSS" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "143", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "10027263", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 126, + "height": 49, + "style": { + "width": 126, + "height": 49 + }, + "positionAbsolute": { + "x": 82.693201050423, + "y": 738.9443302389855 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "yI6XiNW04EL78UL4lkVgd", + "type": "subtopic", + "position": { + "x": 82.693201050423, + "y": 791.9443302389855 + }, + "selected": false, + "data": { + "label": "Jotai", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6125", - "typeID": "__group__", - "zOrder": "81", - "measuredW": "210", - "measuredH": "44", - "w": "210", - "h": "44", - "x": "357", - "y": "989", - "properties": { - "controlName": "100-styling:styled-components" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "150", - "measuredH": "25", - "x": "24", - "y": "10", - "properties": { - "size": "17", - "text": "Styled Components" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "186", - "y": "9", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "3700253", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 126, + "height": 49, + "style": { + "width": 126, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 82.693201050423, + "y": 791.9443302389855 + }, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "DfrCkbD-HEHwLymv10zb5", + "type": "topic", + "position": { + "x": -194.02532545570534, + "y": 867.4443302389855 + }, + "selected": false, + "data": { + "label": "Writing CSS", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6126", - "typeID": "__group__", - "zOrder": "82", - "measuredW": "210", - "measuredH": "44", - "w": "210", - "h": "44", - "x": "357", - "y": "941", - "properties": { - "controlName": "101-styling:emotion" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "201", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "64", - "measuredH": "25", - "x": "69", - "y": "10", - "properties": { - "size": "17", - "text": "Emotion" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "186", - "y": "8", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "3700253", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "oldId": "thfnymb_UIiKxakKfiua5" + }, + "zIndex": 999, + "width": 136, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -194.02532545570534, + "y": 867.4443302389855 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "MnDgQq9Vcxsu3wDqv5uh2", + "type": "topic", + "position": { + "x": -519.0253254557053, + "y": 989.4443302389855 + }, + "selected": false, + "data": { + "label": "Headless Component Libraries", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 284, + "height": 49, + "style": {}, + "dragging": false, + "positionAbsolute": { + "x": -519.0253254557053, + "y": 989.4443302389855 + }, + "selectable": true, + "focusable": true + }, + { + "id": "KO3viVIJJREtxXxsocN7j", + "type": "subtopic", + "position": { + "x": -200.02532545570534, + "y": 789.9443302389855 + }, + "selected": false, + "data": { + "label": "Tailwind CSS", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6127", - "typeID": "__group__", - "zOrder": "83", - "measuredW": "214", - "measuredH": "47", - "w": "214", - "h": "47", - "x": "260", - "y": "1446", - "properties": { - "controlName": "108-api-calls" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "214", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "69", - "measuredH": "25", - "x": "72", - "y": "11", - "properties": { - "size": "17", - "text": "API Calls" - } - } - ] - } - } + "oldId": "akVNUPOqaTXaSHoQFlkP_", + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 148, + "height": 49, + "style": { + "width": 148 + }, + "positionAbsolute": { + "x": -200.02532545570534, + "y": 789.9443302389855 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "thfnymb_UIiKxakKfiua5", + "type": "topic", + "position": { + "x": -515.0253254557053, + "y": 867.4443302389855 + }, + "selected": false, + "data": { + "label": "Component / Libraries", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 219, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -515.0253254557053, + "y": 867.4443302389855 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "akVNUPOqaTXaSHoQFlkP_", + "type": "subtopic", + "position": { + "x": -200.02532545570534, + "y": 683.9443302389855 + }, + "selected": false, + "data": { + "label": "Panda CSS", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6128", - "typeID": "TextArea", - "zOrder": "84", - "w": "105", - "h": "200", - "measuredW": "200", - "measuredH": "140", - "x": "376", - "y": "1215", - "properties": { - "color": "16777215" - } + "legend": { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 148, + "height": 49, + "style": { + "width": 148 + }, + "positionAbsolute": { + "x": -200.02532545570534, + "y": 683.9443302389855 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "uqphqAnlcJOLnwHZs5jWu", + "type": "subtopic", + "position": { + "x": -453.52532545570534, + "y": 724.9443302389855 + }, + "selected": false, + "data": { + "label": "Chakra UI", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6129", - "typeID": "Label", - "zOrder": "85", - "measuredW": "71", - "measuredH": "25", - "x": "393", - "y": "1376", - "properties": { - "size": "17", - "text": "GraphQL" - } + "legend": { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 137, + "height": 49, + "style": { + "width": 137, + "height": 49 + }, + "positionAbsolute": { + "x": -453.52532545570534, + "y": 724.9443302389855 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "gy7eBxPOlwG8BvxHVLDQ9", + "type": "subtopic", + "position": { + "x": -453.52532545570534, + "y": 671.9443302389855 + }, + "selected": false, + "data": { + "label": "Material UI", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6130", - "typeID": "__group__", - "zOrder": "86", - "measuredW": "167", - "measuredH": "44", - "w": "167", - "h": "44", - "x": "351", - "y": "1230", - "properties": { - "controlName": "100-api-calls:apollo" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "156", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "48", - "measuredH": "25", - "x": "55", - "y": "10", - "properties": { - "size": "17", - "text": "Apollo" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "143", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "10027263", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 137, + "height": 49, + "style": { + "width": 137, + "height": 49 + }, + "positionAbsolute": { + "x": -453.52532545570534, + "y": 671.9443302389855 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "njKsYNkwTXPQ1NjlGKXab", + "type": "subtopic", + "position": { + "x": -453.52532545570534, + "y": 777.9443302389855 + }, + "selected": false, + "data": { + "label": "Shadcn UI", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6131", - "typeID": "__group__", - "zOrder": "87", - "measuredW": "165", - "measuredH": "44", - "w": "165", - "h": "44", - "x": "351", - "y": "1278", - "properties": { - "controlName": "101-api-calls:relay" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "156", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "44", - "measuredH": "25", - "x": "56", - "y": "10", - "properties": { - "size": "17", - "text": "Relay" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "141", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "3700253", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 137, + "height": 49, + "style": { + "width": 137, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -453.52532545570534, + "y": 777.9443302389855 + }, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "awoEhwPKjUcR84XGL6Som", + "type": "subtopic", + "position": { + "x": -200.02532545570534, + "y": 736.9443302389855 + }, + "selected": false, + "data": { + "label": "CSS Modules", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6132", - "typeID": "__group__", - "zOrder": "88", - "measuredW": "165", - "measuredH": "44", - "w": "165", - "h": "44", - "x": "351", - "y": "1325", - "properties": { - "controlName": "102-api-calls:urql" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "156", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "32", - "measuredH": "25", - "x": "62", - "y": "10", - "properties": { - "size": "17", - "text": "Urql" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "141", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "3700253", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "oldId": "akVNUPOqaTXaSHoQFlkP_", + "legend": { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 148, + "height": 49, + "style": { + "width": 148 + }, + "positionAbsolute": { + "x": -200.02532545570534, + "y": 736.9443302389855 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "XL9XOV2h0BAuA5cFcM5L_", + "type": "subtopic", + "position": { + "x": -153.52532545570534, + "y": 936.4443302389855 + }, + "selected": false, + "data": { + "label": "Radix UI", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6133", - "typeID": "TextArea", - "zOrder": "89", - "w": "105", - "h": "294", - "measuredW": "200", - "measuredH": "140", - "x": "376", - "y": "1535", - "properties": { - "color": "16777215" - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 174, + "height": 49, + "style": { + "width": 174 + }, + "positionAbsolute": { + "x": -153.52532545570534, + "y": 936.4443302389855 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "RvDfKoa_HIW3QDBfkPv3m", + "type": "subtopic", + "position": { + "x": -153.52532545570534, + "y": 989.4443302389855 + }, + "selected": false, + "data": { + "label": "React Aria", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6134", - "typeID": "Label", - "zOrder": "90", - "measuredW": "44", - "measuredH": "25", - "x": "407", - "y": "1549", - "properties": { - "size": "17", - "text": "REST" - } + "legend": { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 174, + "height": 49, + "style": { + "width": 174, + "height": 49 + }, + "positionAbsolute": { + "x": -153.52532545570534, + "y": 989.4443302389855 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "kiCTo0U6VgNON8rv_Ktlj", + "type": "subtopic", + "position": { + "x": -153.52532545570534, + "y": 1042.4443302389855 + }, + "selected": false, + "data": { + "label": "Ark UI", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6135", - "typeID": "__group__", - "zOrder": "91", - "measuredW": "165", - "measuredH": "44", - "w": "165", - "h": "44", - "x": "346", - "y": "1581", - "properties": { - "controlName": "103-api-calls:swr" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "156", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "38", - "measuredH": "25", - "x": "59", - "y": "10", - "properties": { - "size": "17", - "text": "SWR" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "141", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 174, + "height": 49, + "style": { + "width": 174 + }, + "positionAbsolute": { + "x": -153.52532545570534, + "y": 1042.4443302389855 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "b4AP2OggxFAwsQtUwiUJJ", + "type": "topic", + "position": { + "x": -215.60313927083638, + "y": 1129.476431006493 + }, + "selected": false, + "data": { + "label": "API Calls", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6136", - "typeID": "__group__", - "zOrder": "92", - "measuredW": "165", - "measuredH": "44", - "w": "165", - "h": "44", - "x": "347", - "y": "1677", - "properties": { - "controlName": "105-api-calls:axios" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "157", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "41", - "measuredH": "25", - "x": "57", - "y": "10", - "properties": { - "size": "17", - "text": "Axios" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "141", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "3700253", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "oldId": "nK1DhEXBKVhvSR1P_vzgj" + }, + "zIndex": 999, + "width": 114, + "height": 49, + "style": { + "width": 114, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -215.60313927083638, + "y": 1129.476431006493 + }, + "selectable": true, + "focusable": true + }, + { + "id": "8nMbfGxe3STMbrAVcqHHh", + "type": "subtopic", + "position": { + "x": -321.88461276470804, + "y": 1228.476431006493 + }, + "selected": false, + "data": { + "label": "Apollo", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6137", - "typeID": "__group__", - "zOrder": "93", - "measuredW": "165", - "measuredH": "44", - "w": "165", - "h": "44", - "x": "348", - "y": "1725", - "properties": { - "controlName": "106-api-calls:superagent" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "157", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "88", - "measuredH": "25", - "x": "35", - "y": "10", - "properties": { - "size": "17", - "text": "superagent" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "141", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "3700253", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 114, + "height": 49, + "style": { + "width": 114, + "height": 49 + }, + "positionAbsolute": { + "x": -321.88461276470804, + "y": 1228.476431006493 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "cLfM342sZfsCwmPPxQpEI", + "type": "subtopic", + "position": { + "x": -321.88461276470804, + "y": 1281.476431006493 + }, + "selected": false, + "data": { + "label": "Relay", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6138", - "typeID": "__group__", - "zOrder": "94", - "measuredW": "165", - "measuredH": "44", - "w": "165", - "h": "44", - "x": "345", - "y": "1629", - "properties": { - "controlName": "104-api-calls:react-query" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "157", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "90", - "measuredH": "25", - "x": "34", - "y": "9", - "properties": { - "size": "17", - "text": "react-query" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "141", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10027263" - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 114, + "height": 49, + "style": { + "width": 114, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -321.88461276470804, + "y": 1281.476431006493 + }, + "selectable": true, + "focusable": true + }, + { + "id": "9M5jRu0pj8KMvg9f-2oqZ", + "type": "subtopic", + "position": { + "x": -321.88461276470804, + "y": 1334.476431006493 + }, + "selected": false, + "data": { + "label": "urql", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6139", - "typeID": "__group__", - "zOrder": "95", - "measuredW": "202", - "measuredH": "47", - "w": "202", - "h": "47", - "x": "781", - "y": "1446", - "properties": { - "controlName": "109-testing" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "202", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "56", - "measuredH": "25", - "x": "73", - "y": "11", - "properties": { - "size": "17", - "text": "Testing" - } - } - ] - } - } + "legend": { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 114, + "height": 49, + "style": { + "width": 114, + "height": 49 + }, + "positionAbsolute": { + "x": -321.88461276470804, + "y": 1334.476431006493 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "zWcMFfyiWJddGbiIhmdKm", + "type": "label", + "position": { + "x": -307.88461276470804, + "y": 1390.476431006493 + }, + "selected": false, + "data": { + "label": "GraphQL", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 }, - { - "ID": "6140", - "typeID": "__group__", - "zOrder": "96", - "measuredW": "109", - "measuredH": "44", - "w": "109", - "h": "44", - "x": "743", - "y": "1300", - "properties": { - "controlName": "100-testing:jest" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "100", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "9", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "33", - "measuredH": "25", - "x": "42", - "y": "10", - "properties": { - "size": "17", - "text": "Jest" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "10027263", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "oldId": "KNAlIYCENB4VMuQGqJNk3" + }, + "zIndex": 999, + "width": 86, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": -307.88461276470804, + "y": 1390.476431006493 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "-ea1KsXEyz-4voHXklG_J", + "type": "subtopic", + "position": { + "x": -94.60313927083638, + "y": 1281.976431006493 + }, + "selected": false, + "data": { + "label": "swr", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6141", - "typeID": "__group__", - "zOrder": "97", - "measuredW": "123", - "measuredH": "44", - "w": "123", - "h": "44", - "x": "857", - "y": "1300", - "properties": { - "controlName": "101-testing:vitest" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "112", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "44", - "measuredH": "25", - "x": "34", - "y": "10", - "properties": { - "size": "17", - "text": "Vitest" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "99", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "3700253", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": -94.60313927083638, + "y": 1281.976431006493 + }, + "selectable": true, + "focusable": true, + "resizing": false, + "dragging": false + }, + { + "id": "5EPmbiNdP_vhIXclv_GjV", + "type": "subtopic", + "position": { + "x": -198.60313927083638, + "y": 1228.476431006493 + }, + "selected": false, + "data": { + "label": "react-query", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6142", - "typeID": "__group__", - "zOrder": "98", - "measuredW": "229", - "measuredH": "44", - "w": "229", - "h": "44", - "x": "740", - "y": "1349", - "properties": { - "controlName": "102-testing:react-testing-library" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "218", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "11", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "164", - "measuredH": "25", - "x": "36", - "y": "10", - "properties": { - "size": "17", - "text": "React Testing Library" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "10027263", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 204, + "height": 49, + "style": { + "width": 204, + "height": 49 + }, + "positionAbsolute": { + "x": -198.60313927083638, + "y": 1228.476431006493 + }, + "selectable": true, + "focusable": true, + "resizing": false, + "dragging": false + }, + { + "id": "ElqWQClryfSYdL7P_mgYK", + "type": "subtopic", + "position": { + "x": -198.60313927083638, + "y": 1281.976431006493 + }, + "selected": false, + "data": { + "label": "Axios", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6143", - "typeID": "__group__", - "zOrder": "99", - "measuredW": "161", - "measuredH": "44", - "w": "161", - "h": "44", - "x": "831", - "y": "1527", - "properties": { - "controlName": "103-testing:cypress" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "152", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "63", - "measuredH": "25", - "x": "44", - "y": "10", - "properties": { - "size": "17", - "text": "Cypress" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "137", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "3700253", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": -198.60313927083638, + "y": 1281.976431006493 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "id": "h49-tjEkKcq7d7ikRHIOx", + "type": "subtopic", + "position": { + "x": -198.60313927083638, + "y": 1334.976431006493 + }, + "selected": false, + "data": { + "label": "rtk-query", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6144", - "typeID": "__group__", - "zOrder": "100", - "measuredW": "162", - "measuredH": "44", - "w": "162", - "h": "44", - "x": "831", - "y": "1575", - "properties": { - "controlName": "104-testing:playwright" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "152", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "78", - "measuredH": "25", - "x": "37", - "y": "10", - "properties": { - "size": "17", - "text": "Playwright" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "138", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "10027263", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 205, + "height": 49, + "style": { + "width": 205, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": -198.60313927083638, + "y": 1334.976431006493 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "KNAlIYCENB4VMuQGqJNk3", + "type": "label", + "position": { + "x": -125.60313927083638, + "y": 1390.476431006493 + }, + "selected": false, + "data": { + "label": "REST", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 60, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": -125.60313927083638, + "y": 1390.476431006493 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "e_lwZ-a72-tAan2KDX6k3", + "type": "topic", + "position": { + "x": 162.47467454429466, + "y": 1129.476431006493 + }, + "selected": false, + "data": { + "label": "Testing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6145", - "typeID": "__group__", - "zOrder": "101", - "measuredW": "202", - "measuredH": "47", - "w": "202", - "h": "47", - "x": "1179", - "y": "1102", - "properties": { - "controlName": "110-frameworks" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "202", - "h": "47", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "94", - "measuredH": "25", - "x": "54", - "y": "11", - "properties": { - "size": "17", - "text": "Frameworks" - } - } - ] - } - } + "oldId": "nK1DhEXBKVhvSR1P_vzgj" + }, + "zIndex": 999, + "width": 142, + "height": 49, + "style": { + "width": 142, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 162.47467454429466, + "y": 1129.476431006493 + }, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "opa61u9gYgSpoPtxp58wu", + "type": "subtopic", + "position": { + "x": 231.97467454429466, + "y": 986.4443302389855 + }, + "selected": false, + "data": { + "label": "Jest", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6146", - "typeID": "__group__", - "zOrder": "102", - "measuredW": "167", - "measuredH": "44", - "w": "167", - "h": "44", - "x": "1223", - "y": "1024", - "properties": { - "controlName": "101-frameworks:next-js" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "158", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "52", - "measuredH": "25", - "x": "52", - "y": "10", - "properties": { - "size": "17", - "text": "Next.js" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "143", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "10027263", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": 231.97467454429466, + "y": 986.4443302389855 + }, + "selectable": true, + "focusable": true, + "resizing": false, + "dragging": false + }, + { + "id": "LULjhsPNONyI5912DKzPw", + "type": "subtopic", + "position": { + "x": 134.97467454429466, + "y": 986.4443302389855 + }, + "selected": false, + "data": { + "label": "Vitest", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6147", - "typeID": "__group__", - "zOrder": "103", - "measuredW": "169", - "measuredH": "44", - "w": "169", - "h": "44", - "x": "1222", - "y": "976", - "properties": { - "controlName": "100-frameworks:remix" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "158", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "49", - "measuredH": "25", - "x": "54", - "y": "10", - "properties": { - "size": "17", - "text": "Remix" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "145", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "3700253", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 93, + "height": 49, + "style": { + "width": 93, + "height": 49 + }, + "positionAbsolute": { + "x": 134.97467454429466, + "y": 986.4443302389855 + }, + "selectable": true, + "focusable": true, + "resizing": false, + "dragging": false + }, + { + "id": "cQllxv7qGbRtM9O5llgN6", + "type": "subtopic", + "position": { + "x": 134.97467454429466, + "y": 1039.4443302389855 + }, + "selected": false, + "data": { + "label": "react-testing-library", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6148", - "typeID": "__group__", - "zOrder": "104", - "measuredW": "202", - "measuredH": "44", - "w": "202", - "h": "44", - "x": "1179", - "y": "1430", - "properties": { - "controlName": "111-forms" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "202", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "48", - "measuredH": "25", - "x": "77", - "y": "10", - "properties": { - "size": "17", - "text": "Forms" - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 197, + "height": 49, + "style": { + "width": 197, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": 134.97467454429466, + "y": 1039.4443302389855 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "zN7Ps1puD-YpHbKi1pHH8", + "type": "subtopic", + "position": { + "x": 156.47467454429466, + "y": 1214.4443302389855 + }, + "selected": false, + "data": { + "label": "Cypress", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6149", - "typeID": "__group__", - "zOrder": "105", - "measuredW": "198", - "measuredH": "44", - "w": "198", - "h": "44", - "x": "1200", - "y": "1527", - "properties": { - "controlName": "100-forms:react-hook-form" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "186", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "135", - "measuredH": "25", - "x": "25", - "y": "10", - "properties": { - "size": "17", - "text": "React Hook Form" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "174", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "10027263", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 154, + "height": 49, + "style": { + "width": 154, + "height": 49 + }, + "positionAbsolute": { + "x": 156.47467454429466, + "y": 1214.4443302389855 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "g39P0c6M2sHNoUPs0m8tr", + "type": "subtopic", + "position": { + "x": 156.47467454429466, + "y": 1267.4443302389855 + }, + "selected": false, + "data": { + "label": "Playwright", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6150", - "typeID": "__group__", - "zOrder": "106", - "measuredW": "195", - "measuredH": "44", - "w": "195", - "h": "44", - "x": "1201", - "y": "1575", - "properties": { - "controlName": "101-forms:formik" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "185", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "52", - "measuredH": "25", - "x": "67", - "y": "10", - "properties": { - "size": "17", - "text": "Formik" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "171", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "3700253", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "left-center" + } + }, + "zIndex": 999, + "width": 154, + "height": 49, + "style": { + "width": 154 + }, + "positionAbsolute": { + "x": 156.47467454429466, + "y": 1267.4443302389855 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "W-atg_Msa9uPLr6RXAKSb", + "type": "topic", + "position": { + "x": 393.49469523818516, + "y": 1129.476431006493 + }, + "selected": false, + "data": { + "label": "Frameworks", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6151", - "typeID": "__group__", - "zOrder": "107", - "measuredW": "195", - "measuredH": "44", - "w": "195", - "h": "44", - "x": "1201", - "y": "1623", - "properties": { - "controlName": "102-forms:final-form" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "185", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "82", - "measuredH": "25", - "x": "52", - "y": "10", - "properties": { - "size": "17", - "text": "Final Form" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "171", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "3700253", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "oldId": "nK1DhEXBKVhvSR1P_vzgj" + }, + "zIndex": 999, + "width": 142, + "height": 49, + "style": { + "width": 142, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 393.49469523818516, + "y": 1129.476431006493 + }, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "HdWq9ue0JdwmwqSIN2OD_", + "type": "subtopic", + "position": { + "x": 395.49469523818516, + "y": 1036.4443302389855 + }, + "selected": false, + "data": { + "label": "Next.js", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6152", - "typeID": "Arrow", - "zOrder": "108", - "w": "1", - "h": "329", - "measuredW": "150", - "measuredH": "100", - "x": "1110", - "y": "1454", - "properties": { - "color": "2848996", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.20078475948139385, - "y": 328.45459981746376 - }, - "p1": { - "x": 0.46856302129091976, - "y": -0.0004822370830620469 - }, - "p2": { - "x": 0.20078475948128016, - "y": -0.11897394490631541 - } - } + "oldId": "-WjJBYCmRRj08n_9HxohY", + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 138, + "height": 49, + "style": { + "width": 138 + }, + "positionAbsolute": { + "x": 395.49469523818516, + "y": 1036.4443302389855 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "_HoZkE7FH-v3wI_722ZTF", + "type": "subtopic", + "position": { + "x": 395.49469523818516, + "y": 983.4443302389855 + }, + "selected": false, + "data": { + "label": "Astro", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6153", - "typeID": "TextArea", - "zOrder": "109", - "w": "253", - "h": "251", - "measuredW": "200", - "measuredH": "140", - "x": "904", - "y": "1672", - "properties": { - "color": "16777215" - } + "oldId": "-WjJBYCmRRj08n_9HxohY", + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 138, + "height": 49, + "style": { + "width": 138 + }, + "positionAbsolute": { + "x": 395.49469523818516, + "y": 983.4443302389855 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "-WjJBYCmRRj08n_9HxohY", + "type": "subtopic", + "position": { + "x": 395.49469523818516, + "y": 930.4443302389855 + }, + "selected": false, + "data": { + "label": "react-router", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6154", - "typeID": "__group__", - "zOrder": "110", - "measuredW": "224", - "measuredH": "44", - "w": "224", - "h": "44", - "x": "920", - "y": "1689", - "properties": { - "controlName": "112-suspense" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "224", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "77", - "measuredH": "25", - "x": "73", - "y": "10", - "properties": { - "size": "17", - "text": "Suspense" - } - } - ] - } - } + "legend": { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 138, + "height": 49, + "style": { + "width": 138, + "height": 49 + }, + "positionAbsolute": { + "x": 395.49469523818516, + "y": 930.4443302389855 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "KHcC5pFN3qLnsbPPKpYd2", + "type": "topic", + "position": { + "x": 393.49469523818516, + "y": 1382.9443302389855 + }, + "selected": false, + "data": { + "label": "Forms", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6155", - "typeID": "__group__", - "zOrder": "111", - "measuredW": "224", - "measuredH": "44", - "w": "224", - "h": "44", - "x": "920", - "y": "1737", - "properties": { - "controlName": "113-portals" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "224", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "53", - "measuredH": "25", - "x": "85", - "y": "10", - "properties": { - "size": "17", - "text": "Portals" - } - } - ] - } - } + "oldId": "nK1DhEXBKVhvSR1P_vzgj" + }, + "zIndex": 999, + "width": 142, + "height": 49, + "style": { + "width": 142, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 393.49469523818516, + "y": 1382.9443302389855 + }, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "_5ht0PAdVOJWPzTRS1mVg", + "type": "subtopic", + "position": { + "x": 374.49469523818516, + "y": 1474.1701814857588 + }, + "selected": false, + "data": { + "label": "React Hook Form", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6156", - "typeID": "__group__", - "zOrder": "112", - "measuredW": "224", - "measuredH": "44", - "w": "224", - "h": "44", - "x": "920", - "y": "1785", - "properties": { - "controlName": "114-error-boundaries" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "224", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "132", - "measuredH": "25", - "x": "47", - "y": "10", - "properties": { - "size": "17", - "text": "Error Boundaries" - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 180, + "height": 49, + "style": { + "width": 180, + "height": 49 + }, + "positionAbsolute": { + "x": 374.49469523818516, + "y": 1474.1701814857588 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "gr1CaLvL7tFOkIRywSsID", + "type": "subtopic", + "position": { + "x": 374.49469523818516, + "y": 1527.1701814857588 + }, + "selected": false, + "data": { + "label": "Formik", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6157", - "typeID": "__group__", - "zOrder": "113", - "measuredW": "224", - "measuredH": "44", - "w": "224", - "h": "44", - "x": "920", - "y": "1833", - "properties": { - "controlName": "115-fiber-architecture" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "224", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "138", - "measuredH": "25", - "x": "43", - "y": "10", - "properties": { - "size": "17", - "text": "Fiber Architecture" - } - } - ] - } - } + "legend": { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 180, + "height": 49, + "style": { + "width": 180, + "height": 49 + }, + "positionAbsolute": { + "x": 374.49469523818516, + "y": 1527.1701814857588 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "UNlvRp6k3_RDoTAAIEfJ1", + "type": "topic", + "position": { + "x": 82.693201050423, + "y": 1520.8287356248509 + }, + "selected": false, + "data": { + "label": "Types & Validation", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6158", - "typeID": "Label", - "zOrder": "114", - "measuredW": "130", - "measuredH": "25", - "x": "966", - "y": "1887", - "properties": { - "size": "17", - "text": "Advanced Topics" - } + "oldId": "nK1DhEXBKVhvSR1P_vzgj" + }, + "zIndex": 999, + "width": 185, + "height": 49, + "style": {}, + "dragging": false, + "positionAbsolute": { + "x": 82.693201050423, + "y": 1520.8287356248509 + }, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "ElgRwv5LSVg5FXGx-2K2s", + "type": "subtopic", + "position": { + "x": 100.193201050423, + "y": 1378.4581550365865 + }, + "selected": false, + "data": { + "label": "TypeScript", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6159", - "typeID": "__group__", - "zOrder": "115", - "measuredW": "159", - "measuredH": "44", - "w": "159", - "h": "44", - "x": "638", - "y": "1738", - "properties": { - "controlName": "116-mobile" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "159", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "52", - "measuredH": "25", - "x": "55", - "y": "10", - "properties": { - "size": "17", - "text": "Mobile" - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 149, + "height": 47, + "style": { + "width": 149, + "height": 47.4759521484375 + }, + "positionAbsolute": { + "x": 100.193201050423, + "y": 1378.4581550365865 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "K3RZ8ESxWCpLKHePF87Hy", + "type": "subtopic", + "position": { + "x": 100.193201050423, + "y": 1429.4581550365865 + }, + "selected": false, + "data": { + "label": "Zod", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6160", - "typeID": "__group__", - "zOrder": "116", - "measuredW": "159", - "measuredH": "44", - "w": "159", - "h": "44", - "x": "638", - "y": "1645", - "properties": { - "controlName": "100-mobile:react-native" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "159", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "100", - "measuredH": "25", - "x": "30", - "y": "10", - "properties": { - "size": "17", - "text": "React Native" - } - } - ] - } - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 149, + "height": 49, + "style": { + "width": 149 + }, + "positionAbsolute": { + "x": 100.193201050423, + "y": 1429.4581550365865 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "ydxyne6RzIDPHij1Z3CsN", + "type": "paragraph", + "position": { + "x": -288.02532545570534, + "y": 1511.8287356248509 + }, + "selected": false, + "data": { + "label": "Advanced Topics", + "style": { + "fontSize": 20, + "borderColor": "transparent", + "backgroundColor": "transparent", + "color": "#000000", + "textAlign": "center", + "justifyContent": "flex-start", + "padding": 16 + } + }, + "zIndex": 999, + "width": 203, + "height": 67, + "style": { + "width": 203, + "height": 67 + }, + "positionAbsolute": { + "x": -288.02532545570534, + "y": 1511.8287356248509 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "bRpeoo9zXrnZ2IHSI7JX4", + "type": "topic", + "position": { + "x": -517.08952699072, + "y": 1627.5845254232022 + }, + "selected": false, + "data": { + "label": "Animation", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6161", - "typeID": "Arrow", - "zOrder": "117", - "w": "1", - "h": "139", - "measuredW": "150", - "measuredH": "100", - "x": "717", - "y": "2088", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.4438624012549725, - "y": -0.00008403832147459167 - }, - "p2": { - "x": 0, - "y": 139 - }, - "stroke": "dotted" - } + "oldId": "_F3WMxhzaK9F8_-zHDDMF" + }, + "zIndex": 999, + "width": 169, + "height": 49, + "style": { + "width": 169, + "height": 49 + }, + "positionAbsolute": { + "x": -517.08952699072, + "y": 1627.5845254232022 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "SUeXDkmOLipdRP4fSrZOH", + "type": "topic", + "position": { + "x": -212.55356635764488, + "y": 1680.5845254232022 + }, + "selected": false, + "data": { + "label": "Server APIs", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6162", - "typeID": "TextArea", - "zOrder": "118", - "w": "425", - "h": "124", - "measuredW": "200", - "measuredH": "140", - "x": "504", - "y": "2019" + "oldId": "_F3WMxhzaK9F8_-zHDDMF" + }, + "zIndex": 999, + "width": 177, + "height": 49, + "style": { + "width": 177, + "height": 49 + }, + "positionAbsolute": { + "x": -212.55356635764488, + "y": 1680.5845254232022 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "H6-XGDjs4f-qbv13v5av0", + "type": "subtopic", + "position": { + "x": -517.08952699072, + "y": 1711.5475484484205 + }, + "selected": false, + "data": { + "label": "Framer Motion", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6163", - "typeID": "Label", - "zOrder": "119", - "measuredW": "369", - "measuredH": "25", - "x": "533", - "y": "2039", - "properties": { - "size": "17", - "text": "Visit the Frontend Developer Roadmap for more" - } + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 169, + "height": 49, + "style": { + "width": 169 + }, + "positionAbsolute": { + "x": -517.08952699072, + "y": 1711.5475484484205 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "WzoB5B6SdOI4Mzv6U51nY", + "type": "subtopic", + "position": { + "x": -517.08952699072, + "y": 1764.5475484484205 + }, + "selected": false, + "data": { + "label": "react spring", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6164", - "typeID": "__group__", - "zOrder": "120", - "measuredW": "370", - "measuredH": "44", - "w": "370", - "h": "44", - "x": "533", - "y": "2074", - "properties": { - "controlName": "ext_link:roadmap.sh/frontend" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "370", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "149", - "measuredH": "25", - "x": "110", - "y": "9", - "properties": { - "size": "17", - "text": "Frontend Roadmap" - } - } - ] - } - } + "oldId": "y2dI1DVLWKAkv6VRpgaQa", + "legend": { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 169, + "height": 47, + "style": { + "width": 169, + "height": 47.4759521484375 + }, + "positionAbsolute": { + "x": -517.08952699072, + "y": 1764.5475484484205 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "y2dI1DVLWKAkv6VRpgaQa", + "type": "subtopic", + "position": { + "x": -517.08952699072, + "y": 1815.5475484484205 + }, + "selected": false, + "data": { + "label": "GSock", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6165", - "typeID": "__group__", - "zOrder": "121", - "measuredW": "352", - "measuredH": "54", - "w": "352", - "h": "54", - "x": "1159", - "y": "276", - "properties": { - "controlName": "100-react-roadmap-note" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "352", - "h": "54", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "224", - "measuredH": "26", - "x": "50", - "y": "14", - "properties": { - "size": "18", - "text": "Important Note / Click here" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "18", - "y": "18", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "13576743" - } - } - ] - } - } - } - ] - } - } + "legend": { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 169, + "height": 47, + "style": { + "width": 169, + "height": 47.4759521484375 + }, + "positionAbsolute": { + "x": -517.08952699072, + "y": 1815.5475484484205 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "_F3WMxhzaK9F8_-zHDDMF", + "type": "topic", + "position": { + "x": -212.55356635764488, + "y": 1733.5845254232022 + }, + "selected": false, + "data": { + "label": "Suspense", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 177, + "height": 49, + "style": { + "width": 177, + "height": 49 + }, + "positionAbsolute": { + "x": -212.55356635764488, + "y": 1733.5845254232022 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "DcDggX4OmmwvJGHwuV86t", + "type": "topic", + "position": { + "x": -212.55356635764488, + "y": 1786.5845254232022 + }, + "selected": false, + "data": { + "label": "Portals", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6166", - "typeID": "__group__", - "zOrder": "122", - "measuredW": "408", - "measuredH": "162", - "w": "408", - "h": "162", - "x": "195", - "y": "95", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "408", - "h": "162", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "__group__", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "23", - "y": "21", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "10027263", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "269", - "measuredH": "24", - "x": "59", - "y": "21", - "properties": { - "size": "16", - "text": "Personal Recommendation / Opinion" - } - }, - { - "ID": "3", - "typeID": "Label", - "zOrder": "3", - "measuredW": "159", - "measuredH": "24", - "x": "59", - "y": "118", - "properties": { - "size": "16", - "text": "I wouldn't recommend" - } - }, - { - "ID": "4", - "typeID": "Icon", - "zOrder": "4", - "measuredW": "24", - "measuredH": "24", - "x": "23", - "y": "118", - "properties": { - "color": "10066329", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "5", - "typeID": "Label", - "zOrder": "5", - "w": "324", - "measuredW": "315", - "measuredH": "24", - "x": "60", - "y": "86", - "properties": { - "size": "16", - "text": "Order in roadmap not strict (Learn anytime)" - } - }, - { - "ID": "6", - "typeID": "__group__", - "zOrder": "6", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "23", - "y": "86", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "10066329", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - }, - { - "ID": "7", - "typeID": "Label", - "zOrder": "7", - "measuredW": "272", - "measuredH": "24", - "x": "59", - "y": "54", - "properties": { - "size": "16", - "text": "Alternative Option - Pick this or purple" - } - }, - { - "ID": "8", - "typeID": "__group__", - "zOrder": "8", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "23", - "y": "53", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "3700253", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } + "oldId": "txARr3lgTvy-vJCj5zAb1" + }, + "zIndex": 999, + "width": 177, + "height": 49, + "style": { + "width": 177 + }, + "positionAbsolute": { + "x": -212.55356635764488, + "y": 1786.5845254232022 + }, + "dragging": false, + "focusable": true + }, + { + "id": "gMHMjsh0i8paLZUH5mDX3", + "type": "topic", + "position": { + "x": -212.55356635764488, + "y": 1627.5845254232022 + }, + "selected": false, + "data": { + "label": "Error Boundaries", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 177, + "height": 49, + "style": { + "width": 177 + }, + "positionAbsolute": { + "x": -212.55356635764488, + "y": 1627.5845254232022 + }, + "dragging": false, + "focusable": true + }, + { + "id": "txARr3lgTvy-vJCj5zAb1", + "type": "topic", + "position": { + "x": 73.99706098308326, + "y": 1786.5845254232022 + }, + "selected": false, + "data": { + "label": "Mobile Applications", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 195, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 73.99706098308326, + "y": 1786.5845254232022 + }, + "dragging": false, + "focusable": true + }, + { + "id": "NvXAq1vN2wpncdW-yTL4c", + "type": "subtopic", + "position": { + "x": 98.99706098308327, + "y": 1665.4067151287932 + }, + "selected": false, + "data": { + "label": "React Native", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6167", - "typeID": "__group__", - "zOrder": "123", - "measuredW": "168", - "measuredH": "44", - "w": "168", - "h": "44", - "x": "352", - "y": "1143", - "properties": { - "controlName": "106-styling:css-modules" + "legend": { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)", + "position": "right-center" + } + }, + "zIndex": 999, + "width": 145, + "height": 49, + "style": {}, + "focusable": true, + "dragging": false, + "positionAbsolute": { + "x": 98.99706098308327, + "y": 1665.4067151287932 + } + }, + { + "id": "5xCbPG6RMI0OEAI4aXKC7", + "type": "legend", + "position": { + "x": -495.02532545570534, + "y": -210.78400721142515 + }, + "selected": false, + "data": { + "label": "", + "legends": [ + { + "id": "Z0WmUXWj-7draje3jE1WR", + "color": "#2d72d2", + "label": "Personal Recommendation (Opinion)" }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "158", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "103", - "measuredH": "25", - "x": "27", - "y": "10", - "properties": { - "size": "17", - "text": "CSS Modules" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "144", - "y": "11", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "3700253", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "6168", - "typeID": "__group__", - "zOrder": "124", - "measuredW": "165", - "measuredH": "44", - "w": "165", - "h": "44", - "x": "348", - "y": "1773", - "properties": { - "controlName": "107-api-calls:rtk-query" + { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323" }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "157", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "70", - "measuredH": "25", - "x": "44", - "y": "10", - "properties": { - "size": "17", - "text": "rtk-query" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "141", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "3700253", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } - } - } - ] - } + { + "id": "7RoFat0sGCLmWuZwuBpKm", + "label": "Order in Roadmap not strict (Learn anytime)", + "color": "#9e9e9e" } + ] + }, + "zIndex": 999, + "width": 399, + "height": 124, + "positionAbsolute": { + "x": -495.02532545570534, + "y": -210.78400721142515 + }, + "dragging": false, + "focusable": true + }, + { + "id": "1kbrCI5JS0c9wbzxXpgFU", + "type": "subtopic", + "position": { + "x": 82.693201050423, + "y": 632.9443302389855 + }, + "selected": false, + "data": { + "label": "MobX", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "6169", - "typeID": "__group__", - "zOrder": "41", - "measuredW": "350", - "measuredH": "141", - "w": "350", - "h": "141", - "x": "1160", - "y": "92", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "350", - "h": "141", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "314", - "measuredH": "25", - "x": "14", - "y": "17", - "properties": { - "size": "17", - "text": "Find the detailed version of this roadmap" - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "319", - "measuredH": "25", - "x": "14", - "y": "45", - "properties": { - "size": "17", - "text": "along with resources and other roadmaps" - } - }, - { - "ID": "3", - "typeID": "__group__", - "zOrder": "3", - "measuredW": "320", - "measuredH": "45", - "w": "320", - "h": "45", - "x": "15", - "y": "81", - "properties": { - "controlName": "ext_link:roadmap.sh" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "320", - "h": "45", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "borderColor": "4273622", - "color": "4273622" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "105", - "measuredH": "28", - "x": "141", - "y": "8", - "properties": { - "color": "16777215", - "size": "20", - "text": "roadmap.sh" - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "45", - "measuredH": "28", - "x": "66", - "y": "8", - "properties": { - "color": "16777215", - "size": "20", - "text": "https" - } - }, - { - "ID": "3", - "typeID": "Label", - "zOrder": "3", - "measuredW": "5", - "measuredH": "28", - "x": "113", - "y": "8", - "properties": { - "color": "16777215", - "size": "20", - "text": ":" - } - }, - { - "ID": "4", - "typeID": "Label", - "zOrder": "4", - "measuredW": "10", - "measuredH": "28", - "x": "120", - "y": "9", - "properties": { - "color": "16777215", - "size": "20", - "text": "/" - } - }, - { - "ID": "5", - "typeID": "Label", - "zOrder": "5", - "measuredW": "10", - "measuredH": "28", - "x": "128", - "y": "9", - "properties": { - "color": "16777215", - "size": "20", - "text": "/" - } - } - ] - } - } - } - ] - } - } + "oldId": "10uL0r388lKh8pWYWqRZD", + "legend": { + "id": "CRQCl3LvTj0sJWThSxjKu", + "label": "Alternative Option (Pick this or purple)", + "color": "#19a323", + "position": "left-center" } - ] - }, - "attributes": { - "name": "New Wireframe 1 copy", - "order": 1000010.2336643032, - "parentID": null, - "notes": "" - }, - "branchID": "Master", - "resourceID": "D5E1AC09-3023-4145-A52A-4D904363A065", - "mockupH": "2141", - "mockupW": "1316", - "measuredW": "1511", - "measuredH": "2227", - "version": "1.0" - }, - "groupOffset": { - "x": 0, - "y": 0 - }, - "dependencies": [], - "projectID": "file:///Users/kamrify/Desktop/New%20Roadmaps/New%20Project%201.bmpr" -} \ No newline at end of file + }, + "zIndex": 999, + "width": 126, + "height": 49, + "style": { + "width": 126, + "height": 49 + }, + "positionAbsolute": { + "x": 82.693201050423, + "y": 632.9443302389855 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + } + ], + "edges": [ + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "M0aRyhxjzTWUOW95D1g1y", + "selected": false, + "type": "smoothstep", + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "Xw4lLz2zWuTkNu8r4oheF", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "mbCXMk97_HKXG3d4TxBOC", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "iogwMmOvub2ZF4zgg6WyF", + "sourceHandle": "x2", + "target": "XDvH2t3AJGevS17uM8TO6", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-iogwMmOvub2ZF4zgg6WyFx2-XDvH2t3AJGevS17uM8TO6w1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tU4Umtnfu01t9gLlnlK6b", + "sourceHandle": "z2", + "target": "y9ToYDix-koRbR6FLydFw", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-tU4Umtnfu01t9gLlnlK6bz2-y9ToYDix-koRbR6FLydFwy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "XDvH2t3AJGevS17uM8TO6", + "sourceHandle": "x2", + "target": "tU4Umtnfu01t9gLlnlK6b", + "targetHandle": "w2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-XDvH2t3AJGevS17uM8TO6x2-tU4Umtnfu01t9gLlnlK6bw2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "79K4xgljcoSHkCYI1D55O", + "sourceHandle": "y2", + "target": "8mw4TxlLN4ZKAlLl-_NVV", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-0uiGsC5SWavNdlFqizkKey2-8mw4TxlLN4ZKAlLl-_NVVz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tU4Umtnfu01t9gLlnlK6b", + "sourceHandle": "x2", + "target": "79K4xgljcoSHkCYI1D55O", + "targetHandle": "w2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-tU4Umtnfu01t9gLlnlK6bx2-0uiGsC5SWavNdlFqizkKew2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "79K4xgljcoSHkCYI1D55O", + "sourceHandle": "z2", + "target": "0uiGsC5SWavNdlFqizkKe", + "targetHandle": "y2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-79K4xgljcoSHkCYI1D55Oz2-0uiGsC5SWavNdlFqizkKey2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "0uiGsC5SWavNdlFqizkKe", + "sourceHandle": "y2", + "target": "LbLQhonBqzxHU6B-L--Vq", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "selected": false, + "selectable": true, + "focusable": true, + "id": "reactflow__edge-0uiGsC5SWavNdlFqizkKey2-thfnymb_UIiKxakKfiua5z1" + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "LbLQhonBqzxHU6B-L--Vq", + "sourceHandle": "y2", + "target": "HX75SExuzR5AP7TQ94qid", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-thfnymb_UIiKxakKfiua5y2-HX75SExuzR5AP7TQ94qidz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "LbLQhonBqzxHU6B-L--Vq", + "sourceHandle": "y2", + "target": "mkyU0ug8MXxV4biHuOity", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-thfnymb_UIiKxakKfiua5y2-mkyU0ug8MXxV4biHuOityz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "LbLQhonBqzxHU6B-L--Vq", + "sourceHandle": "z2", + "target": "NStw6bi_pPB49K41BFSgo", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-LbLQhonBqzxHU6B-L--Vqz2-thfnymb_UIiKxakKfiua5y1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "NStw6bi_pPB49K41BFSgo", + "sourceHandle": "x2", + "target": "jvp43wFkKlGQX2y7IxkbM", + "targetHandle": "w2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-thfnymb_UIiKxakKfiua5x2-jvp43wFkKlGQX2y7IxkbMw2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "NStw6bi_pPB49K41BFSgo", + "sourceHandle": "y2", + "target": "I7_mX4h-Yywp1YyTJRKXI", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-NStw6bi_pPB49K41BFSgoy2-thfnymb_UIiKxakKfiua5z1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "I7_mX4h-Yywp1YyTJRKXI", + "sourceHandle": "w2", + "target": "yI6XiNW04EL78UL4lkVgd", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-thfnymb_UIiKxakKfiua5w2-yI6XiNW04EL78UL4lkVgdx1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "KO3viVIJJREtxXxsocN7j", + "sourceHandle": "x2", + "target": "DfrCkbD-HEHwLymv10zb5", + "targetHandle": "w2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-akVNUPOqaTXaSHoQFlkP_x2-DfrCkbD-HEHwLymv10zb5w2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "I7_mX4h-Yywp1YyTJRKXI", + "sourceHandle": "y2", + "target": "DfrCkbD-HEHwLymv10zb5", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-I7_mX4h-Yywp1YyTJRKXIy2-DfrCkbD-HEHwLymv10zb5z1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "DfrCkbD-HEHwLymv10zb5", + "sourceHandle": "y2", + "target": "thfnymb_UIiKxakKfiua5", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-DfrCkbD-HEHwLymv10zb5y2-thfnymb_UIiKxakKfiua5z1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "MnDgQq9Vcxsu3wDqv5uh2", + "sourceHandle": "z2", + "target": "XL9XOV2h0BAuA5cFcM5L_", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-MnDgQq9Vcxsu3wDqv5uh2z2-XL9XOV2h0BAuA5cFcM5L_y1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "MnDgQq9Vcxsu3wDqv5uh2", + "sourceHandle": "z2", + "target": "RvDfKoa_HIW3QDBfkPv3m", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-MnDgQq9Vcxsu3wDqv5uh2z2-RvDfKoa_HIW3QDBfkPv3my1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "MnDgQq9Vcxsu3wDqv5uh2", + "sourceHandle": "z2", + "target": "kiCTo0U6VgNON8rv_Ktlj", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-MnDgQq9Vcxsu3wDqv5uh2z2-kiCTo0U6VgNON8rv_Ktljy2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "MnDgQq9Vcxsu3wDqv5uh2", + "sourceHandle": "x2", + "target": "b4AP2OggxFAwsQtUwiUJJ", + "targetHandle": "y2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-MnDgQq9Vcxsu3wDqv5uh2x2-nK1DhEXBKVhvSR1P_vzgjy2", + "selected": false, + "type": "smoothstep", + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "b4AP2OggxFAwsQtUwiUJJ", + "sourceHandle": "x2", + "target": "-AKmITUmSGIflJG-eGkm5", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-nK1DhEXBKVhvSR1P_vzgjx2--AKmITUmSGIflJG-eGkm5w1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "b4AP2OggxFAwsQtUwiUJJ", + "sourceHandle": "z2", + "target": "e_lwZ-a72-tAan2KDX6k3", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-b4AP2OggxFAwsQtUwiUJJz2-nK1DhEXBKVhvSR1P_vzgjy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "e_lwZ-a72-tAan2KDX6k3", + "sourceHandle": "w2", + "target": "cQllxv7qGbRtM9O5llgN6", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-nK1DhEXBKVhvSR1P_vzgjw2-cQllxv7qGbRtM9O5llgN6x1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "e_lwZ-a72-tAan2KDX6k3", + "sourceHandle": "x2", + "target": "zN7Ps1puD-YpHbKi1pHH8", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-nK1DhEXBKVhvSR1P_vzgjx2-zN7Ps1puD-YpHbKi1pHH8w1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "W-atg_Msa9uPLr6RXAKSb", + "sourceHandle": "w2", + "target": "HdWq9ue0JdwmwqSIN2OD_", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-nK1DhEXBKVhvSR1P_vzgjw2-HdWq9ue0JdwmwqSIN2OD_x1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "e_lwZ-a72-tAan2KDX6k3", + "sourceHandle": "z2", + "target": "W-atg_Msa9uPLr6RXAKSb", + "targetHandle": "y2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-e_lwZ-a72-tAan2KDX6k3z2-nK1DhEXBKVhvSR1P_vzgjy2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "W-atg_Msa9uPLr6RXAKSb", + "sourceHandle": "x2", + "target": "KHcC5pFN3qLnsbPPKpYd2", + "targetHandle": "w2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-W-atg_Msa9uPLr6RXAKSbx2-nK1DhEXBKVhvSR1P_vzgjw2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "KHcC5pFN3qLnsbPPKpYd2", + "sourceHandle": "x2", + "target": "_5ht0PAdVOJWPzTRS1mVg", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-nK1DhEXBKVhvSR1P_vzgjx2-_5ht0PAdVOJWPzTRS1mVgw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "KHcC5pFN3qLnsbPPKpYd2", + "sourceHandle": "y2", + "target": "UNlvRp6k3_RDoTAAIEfJ1", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-KHcC5pFN3qLnsbPPKpYd2y2-nK1DhEXBKVhvSR1P_vzgjz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "UNlvRp6k3_RDoTAAIEfJ1", + "sourceHandle": "w2", + "target": "K3RZ8ESxWCpLKHePF87Hy", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-nK1DhEXBKVhvSR1P_vzgjw2-K3RZ8ESxWCpLKHePF87Hyx1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "UNlvRp6k3_RDoTAAIEfJ1", + "sourceHandle": "y2", + "target": "ydxyne6RzIDPHij1Z3CsN", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-UNlvRp6k3_RDoTAAIEfJ1y2-ydxyne6RzIDPHij1Z3CsNz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "ydxyne6RzIDPHij1Z3CsN", + "sourceHandle": "y2", + "target": "bRpeoo9zXrnZ2IHSI7JX4", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-ydxyne6RzIDPHij1Z3CsNy2-bRpeoo9zXrnZ2IHSI7JX4w1", + "selected": false, + "type": "smoothstep", + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "bRpeoo9zXrnZ2IHSI7JX4", + "sourceHandle": "x2", + "target": "H6-XGDjs4f-qbv13v5av0", + "targetHandle": "w2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-bRpeoo9zXrnZ2IHSI7JX4x2-H6-XGDjs4f-qbv13v5av0w2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "bRpeoo9zXrnZ2IHSI7JX4", + "sourceHandle": "z2", + "target": "gMHMjsh0i8paLZUH5mDX3", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "selected": false, + "selectable": true, + "focusable": true, + "id": "reactflow__edge-bRpeoo9zXrnZ2IHSI7JX4z2-gMHMjsh0i8paLZUH5mDX3y1" + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "DcDggX4OmmwvJGHwuV86t", + "sourceHandle": "z2", + "target": "txARr3lgTvy-vJCj5zAb1", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-DcDggX4OmmwvJGHwuV86tz2-txARr3lgTvy-vJCj5zAb1y1", + "selected": false, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "txARr3lgTvy-vJCj5zAb1", + "sourceHandle": "w2", + "target": "NvXAq1vN2wpncdW-yTL4c", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-txARr3lgTvy-vJCj5zAb1w2-NvXAq1vN2wpncdW-yTL4cx1", + "selected": false, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "txARr3lgTvy-vJCj5zAb1", + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-txARr3lgTvy-vJCj5zAb1x2-GV_zWF6rSWg5bqgiXhOEfw1", + "selected": false, + "focusable": true + } + ] +} diff --git a/src/data/roadmaps/react/react.md b/src/data/roadmaps/react/react.md index 53123fb01..e89c2251b 100644 --- a/src/data/roadmaps/react/react.md +++ b/src/data/roadmaps/react/react.md @@ -1,6 +1,7 @@ --- jsonUrl: '/jsons/roadmaps/react.json' pdfUrl: '/pdfs/roadmaps/react.pdf' +renderer: 'editor' order: 2 briefTitle: 'React' briefDescription: 'Step by step guide to become a React Developer in 2024' @@ -9,7 +10,7 @@ description: 'Everything that is there to learn about React and the ecosystem in hasTopics: true dimensions: width: 968 - height: 1570.26 + height: 2140 schema: headline: 'React Developer Roadmap' description: 'Learn to become a React developer with this interactive step by step guide in 2024. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' diff --git a/src/data/roadmaps/server-side-game-developer/content/100-roadmap-note.md b/src/data/roadmaps/server-side-game-developer/content/100-roadmap-note.md deleted file mode 100644 index 08cce0bcf..000000000 --- a/src/data/roadmaps/server-side-game-developer/content/100-roadmap-note.md +++ /dev/null @@ -1,3 +0,0 @@ -# Note - -These roadmaps cover everything that is there to learn for the paths listed below. Don't feel overwhelmed, you don't need to learn it all in the beginning if you are just getting started. \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/102-data-transfer/congestion-control.md b/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/102-data-transfer/congestion-control.md deleted file mode 100644 index 40cfa1d81..000000000 --- a/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/102-data-transfer/congestion-control.md +++ /dev/null @@ -1,3 +0,0 @@ -# Congestion Control - -`Congestion Control` is a critical aspect of any network, particularly in server-side game development where real-time data transfer is a must. It refers to techniques and mechanisms that can prevent too much data from filling the network. This excessive data, also known as network congestion, can lead to packet loss, delay in data transfer, and ultimately a poor gaming experience. Congestion control algorithms, such as TCP congestion control algorithms, are implemented to avoid such situations. They adjust the data packet transmission rate based on the perceived network congestion, reducing the rate when congestion is detected and increasing it when the network is less congested. \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/102-data-transfer/flow-control/error-detection.md b/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/102-data-transfer/flow-control/error-detection.md deleted file mode 100644 index e4036175b..000000000 --- a/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/102-data-transfer/flow-control/error-detection.md +++ /dev/null @@ -1,3 +0,0 @@ -# Error Detection - -Error detection is a mechanism that checks the integrity of data that is being delivered or stored. In the context of server-side game development, errors can occur due to reasons like network inconsistencies, corrupted data, or server overload. To ensure smooth operation, these errors need to be detected and handled. Some common types of error detection methods include parity check, checksum, and cyclic redundancy check (CRC). Parity check adds an extra bit to the data to make the number of 1’s either even or odd. Checksum involves the sender adding up all the bits in the data and sending the sum along with data. CRC is a more complex and robust method involving binary division. These methods help detect errors but can't fix them. Once detected, errors are typically dealt with through retransmission or by using forward error correction codes. \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/102-data-transfer/flow-control/index.md b/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/102-data-transfer/flow-control/index.md deleted file mode 100644 index 3f0111cac..000000000 --- a/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/102-data-transfer/flow-control/index.md +++ /dev/null @@ -1,3 +0,0 @@ -# Flow Control - -Flow control, often referred to as stream control transmission protocol (SCTP), is essential in server-side game development, particularly in data transfer. Flow control is basically a technique used to manage the rate of data transmission between two nodes to prevent a fast sender from overwhelming a slow receiver. It provides an effective way to manage the amount of data that can be sent before having to receive an acknowledgment. There are two main types of flow control: window-based and rate-based. Window-based flow control allows the receiver to process a fixed set of packets before sending the acknowledgement, whereas rate-based control allows for data transfer at a specified rate. These methods make flow control indispensable in network communications. \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/102-data-transfer/reliable-transmission.md b/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/102-data-transfer/reliable-transmission.md deleted file mode 100644 index 2641fd32c..000000000 --- a/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/102-data-transfer/reliable-transmission.md +++ /dev/null @@ -1,3 +0,0 @@ -# Reliable Transmission - -Reliable Transmission is a service that ensures data is delivered from the source to the destination without any errors. This includes mechanisms that provide accurate, on-time delivery of all packets while managing packet loss, duplication, or out-of-order delivery. In server-side game development, protocols like TCP (Transmission Control Protocol) are often used to accomplish reliable transmission. Reliable transmission is particularly necessary for critical data where all transmitted information must arrive at the destination correctly and in the right order. TCP accomplishes this by establishing a connection before data transfer begins and using sequence numbers to track delivery and reassemble pieces in the correct order. TCP also sends acknowledgements back to the source confirming packet delivery, and implements re-transmission of lost or corrupted data. Despite its overhead and slower speed compared to other methods, such as the User Datagram Protocol (UDP), reliable transmission is vital when data integrity is a priority over speed. \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/index.md b/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/index.md deleted file mode 100644 index d825cf607..000000000 --- a/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/index.md +++ /dev/null @@ -1,3 +0,0 @@ -# Operations - -TCP (Transmission Control Protocol) is a connection-oriented protocol that ensures reliable, ordered, and error-checked delivery of data between systems over an IP network. Some of the primary operations include "Connection Establishment" that initializes a connection using a 3-way handshake, "Data Transfer" where packets of data are sent from sender to receiver, "Connection Termination" that closes the connection when transmission is complete, and "Error Control" which handles retransmission of lost data or corrupted packets. Additionally, TCP handles "Flow Control" to prevent a sender from overwhelming a receiver with data, and "Congestion Control" to manage network congestion and avoid packet loss. \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/102-mutex/semaphore.md b/src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/102-mutex/semaphore.md deleted file mode 100644 index 46a398e2c..000000000 --- a/src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/102-mutex/semaphore.md +++ /dev/null @@ -1,3 +0,0 @@ -# Semaphore - -A **semaphore** is a more advanced type of synchronization tool compared to mutexes. While a mutex is either locked or unlocked, a semaphore has a count associated with it and can allow multiple threads to access a resource up to a specified count. Semaphores can be used to control access to a pool of resources, not just a singular resource like a mutex. A semaphore count represents the number of resources available. Each time a thread acquires the semaphore, the count decreases. When the count hits zero, any further threads that attempt to acquire the semaphore are blocked until the count becomes positive again. Release operation increments the count, and possibly unblocks waiting threads. The key detail is that semaphores allow multiple threads to access a resource concurrently, but with a defined maximum number of concurrent threads. \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/104-future-promises/channel.md b/src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/104-future-promises/channel.md deleted file mode 100644 index d1ed3cf10..000000000 --- a/src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/104-future-promises/channel.md +++ /dev/null @@ -1,5 +0,0 @@ -# Channel - -### Channel - -In server-side game development, a **Channel** is used to simplify network coding by providing an efficient and reusable way to send and receive data. Essentially, a channel is a communication pipeline between a client and a server. They are often used in real-time multiplayer games where fast and frequent data transfer is essential. These channels can be implemented using different protocols, the choice of which usually depends on specific game requirements and usage scenarios. For example, TCP channels may be used for reliable data transfer, while UDP channels may be more applicable for fast, unordered data delivery. \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/104-future-promises/coroutine.md b/src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/104-future-promises/coroutine.md deleted file mode 100644 index 2237bc50a..000000000 --- a/src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/104-future-promises/coroutine.md +++ /dev/null @@ -1,3 +0,0 @@ -# Coroutine - -A **Coroutine** is a special kind of function that has the ability to pause its execution while saving its local state. Unlike standard functions which start at their beginning when called and run to completion, coroutine can start, pause at any point of its execution, and then resume from the same point later. This pause and resume functionality, makes coroutines a great tool for writing asynchronous code and managing activities that are typically difficult to deal with in procedural programming such as time-dependent or event-driven operations. Coroutines are commonly used in server-side development for tasks like handling concurrent requests without the need for creating multiple threads or processes. \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/110-databases/100-rdbms/index.md b/src/data/roadmaps/server-side-game-developer/content/110-databases/100-rdbms/index.md deleted file mode 100644 index 7c0c87d5b..000000000 --- a/src/data/roadmaps/server-side-game-developer/content/110-databases/100-rdbms/index.md +++ /dev/null @@ -1,3 +0,0 @@ -# RDBMS - -**RDBMS** or **Relational Database Management System** is a type of database management system that stores data in the form of related tables. These tables are interconnected via relational operators. Each row in these tables has an unique identifier known as its **Primary Key**, and the data can be accessed or reorganized in many different ways without needing to reorganize the tables themselves. **Structured Query Language (SQL)** is the standard language used for interfacing with RDBMS. Notable RDBMS examples include Oracle Database, MySQL, Microsoft SQL Server, and PostgreSQL. \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/110-databases/101-nosql/index.md b/src/data/roadmaps/server-side-game-developer/content/110-databases/101-nosql/index.md deleted file mode 100644 index 8f768df0c..000000000 --- a/src/data/roadmaps/server-side-game-developer/content/110-databases/101-nosql/index.md +++ /dev/null @@ -1,3 +0,0 @@ -# NoSQL - -**NoSQL** is a type of database that provides a mechanism for storage and retrieval of data which is modeled using means other than the tabular relations used in relational databases. NoSQL databases are ideal for big data and real-time web applications. They are flexible as they allow rapid development from changes. Some popular NoSQL databases include MongoDB, Apache Cassandra, Redis, Couchbase and HBase. While they may all be classified as NoSQL, they are all different in terms of their data model, with some being document-oriented, others key-value stores, wide-column stores, or graph databases. It's important to consider each one's data model when choosing a database for your application. \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/110-databases/104-key-value/index.md b/src/data/roadmaps/server-side-game-developer/content/110-databases/104-key-value/index.md deleted file mode 100644 index 4654cb83d..000000000 --- a/src/data/roadmaps/server-side-game-developer/content/110-databases/104-key-value/index.md +++ /dev/null @@ -1,3 +0,0 @@ -# Key-Value - -In server-side game development, a **key-value** database is a type of non-relational database that uses a simple key-value method to store data. A key-value database stores data as a collection of key-value pairs in which a key serves as a unique identifier. Both keys and values can be anything, ranging from simple objects to complex compound objects. `Key` uniquely identifies a pair within the database; `Value` holds the data and is directly associated with its key. Different types of key-value databases offer different types of ways to deal with data, like handling data types, manipulating arrays, and more. Unlike relational databases, key-value databases do not require a fixed data model and are schema-free. \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/100-proactor/iocp/index.md b/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/100-proactor/iocp/index.md deleted file mode 100644 index 09c545037..000000000 --- a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/100-proactor/iocp/index.md +++ /dev/null @@ -1,3 +0,0 @@ -# IOCP - -The **IOCP**, which stands for **Input/Output Completion Ports**, is a mechanism provided by Microsoft Windows to handle asynchronous I/O operations. It effectively handles the incoming and outgoing operations from the server side utilizing a specific number of threads. Its operation works in a way that whenever an I/O request is initiated, the system will create a packet of information related to the I/O operation, then when the operation completes, it pushes the packet to an IOCP. A pool of threads waits for these operations to complete. As soon as an operation completes, one of the threads from the pool picks up the complete I/O operation from the IOCP and starts processing it. It acts as a multiplexer that routes completed I/O operations to the thread pool, which is an efficient way to handle server-side game development tasks. \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/100-proactor/iocp/io-uring.md b/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/100-proactor/iocp/io-uring.md deleted file mode 100644 index b74688494..000000000 --- a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/100-proactor/iocp/io-uring.md +++ /dev/null @@ -1,3 +0,0 @@ -# io_uring - -`IO_uring` is a high-performance I/O interface in the Linux kernel, which was introduced in version 5.1. It provides a scalable and efficient I/O submission and completion model, surpassing the traditional POSIX interfaces. Unlike the older mechanisms like `select`, `poll`, and `epoll`, or `IOCP` in Windows, `IO_uring` uses ring buffers that are shared between the application and the kernel. This minimizes the need for system calls, thus enhancing performance. The interface allows for queueing up I/O operations (reads, writes, syncs, and others), as well as submissions of multiple operations at once. Furthermore, `IO_uring` supports both buffered and direct I/O, and includes support for I/O priorities. \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/100-proactor/iocp/registered-io.md b/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/100-proactor/iocp/registered-io.md deleted file mode 100644 index be241e0ee..000000000 --- a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/100-proactor/iocp/registered-io.md +++ /dev/null @@ -1,3 +0,0 @@ -# Registered IO - -`Registered I/O (RIO)` is an advanced Windows technology which is used to increase the performance of network applications. It offers a registered I/O buffer design that is designed for high volume, low latency networking applications. This programming model allows more efficient buffer usage by restricting dynamism and enabling more driver and hardware offloads. RIO's API can be used with any Winsock supported protocol, although its efficiency is greatest with protocols that can leverage offloads (like TCP and UDP). It requires Windows Server 2012, Windows 8, or newer versions. It should be noted that it requires significant program modifications as well as in depth understanding of IOCP and how it’s used by Windows networking APIs usually involving complex, low level programming. \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/101-reactor/epoll.md b/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/101-reactor/epoll.md deleted file mode 100644 index de373ca80..000000000 --- a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/101-reactor/epoll.md +++ /dev/null @@ -1,3 +0,0 @@ -# epoll - -`epoll` is a Linux kernel system call introduced in version 2.5.44 that provides a scalable I/O event notification mechanism. It was designed to replace the less scalable `poll` and `select` system calls when handling a large number of file descriptors. `epoll` uses an event-driven programming approach. Instead of frequently asking the operating system to check every file descriptor, the application tells the operating system what to track and goes to sleep. Then, the operating system wakes up the app when an event occurs on one of the tracked descriptors. This mechanism significantly reduces resource usage and latency, which is critical for server-side game development that involves real-time communication and high-performance needs. \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/101-reactor/kqueue.md b/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/101-reactor/kqueue.md deleted file mode 100644 index 51803a51b..000000000 --- a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/101-reactor/kqueue.md +++ /dev/null @@ -1,3 +0,0 @@ -# kqueue - -`kqueue` is a scalable event notification interface introduced in FreeBSD 4.1 and later adopted in NetBSD, OpenBSD, and Mac OS X. It provides a mechanism that allows you to track many kernel events with a single system call. `kqueue` can detect changes to files and directories, handle signals, process termination, and network I/O. For a server-side game developer, getting notifications about network I/O can be essential, and `kqueue` provides a means to efficiently do this. However, not all Unix-based and POSIX-compliant operating systems support `kqueue`, so alternatives such as `epoll` might be necessary depending on your platform. For instance, `kqueue` is not natively supported in Linux but is available through certain libraries. \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/101-reactor/select.md b/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/101-reactor/select.md deleted file mode 100644 index cf53db355..000000000 --- a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/101-reactor/select.md +++ /dev/null @@ -1,3 +0,0 @@ -# select - -`Select` is an important system call that can handle multiple I/O operations concurrently. It comes in very handy when dealing with server-side programming due to its capacity to handle multiple connections at a time. `Select` resides in the operating system, awaiting for one or more of the I/O conditions it is monitoring to occur. Its main function is to monitor multiple file descriptors to see if they are ready for reading, writing or if an exceptional condition has occurred. It is ideally used in server-based games where the system has to deal with multiple clients simultaneously. It is quite crucial in applications where the extent of I/O activities is not determinable in advance. \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/101-reactor/wsa-poll.md b/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/101-reactor/wsa-poll.md deleted file mode 100644 index c4d19a38c..000000000 --- a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/101-reactor/wsa-poll.md +++ /dev/null @@ -1,3 +0,0 @@ -# WSA Poll - -`WSAPoll` is a method utilized in server side game development, specifically within the Windows Sockets 2 (Winsock) API. `WSAPoll` is designed to determine the status of one or more sockets, allowing the application to monitor multiple sockets in a single function call. Simply put, `WSAPoll` allows sockets to reside in collections, also known as Pollfd arrays. At runtime, the status of these sockets can be checked without blocking the application's execution. Therefore, it is commonly used in network applications where multiple sockets need to be monitored simultaneously. \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/102-actor-model/index.md b/src/data/roadmaps/server-side-game-developer/content/actor-model@KUQEgHldZPOLwFoXqQ2vM.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/102-actor-model/index.md rename to src/data/roadmaps/server-side-game-developer/content/actor-model@KUQEgHldZPOLwFoXqQ2vM.md diff --git a/src/data/roadmaps/server-side-game-developer/content/106-socket-programming/101-address-conversion.md b/src/data/roadmaps/server-side-game-developer/content/address-conversion@SBA7pa9o0AM0ZEBepd7UM.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/106-socket-programming/101-address-conversion.md rename to src/data/roadmaps/server-side-game-developer/content/address-conversion@SBA7pa9o0AM0ZEBepd7UM.md diff --git a/src/data/roadmaps/server-side-game-developer/content/118-ai/index.md b/src/data/roadmaps/server-side-game-developer/content/ai@dkCVwuy8GKeEi3VJar_Zo.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/118-ai/index.md rename to src/data/roadmaps/server-side-game-developer/content/ai@dkCVwuy8GKeEi3VJar_Zo.md diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/102-actor-model/101-akka.md b/src/data/roadmaps/server-side-game-developer/content/akka-java@eAEpEUVZcSKO9uCIlMN5y.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/102-actor-model/101-akka.md rename to src/data/roadmaps/server-side-game-developer/content/akka-java@eAEpEUVZcSKO9uCIlMN5y.md diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/102-actor-model/100-akka-net.md b/src/data/roadmaps/server-side-game-developer/content/akknet-c@SsOz9Pj6Jc_55PgpmziL6.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/102-actor-model/100-akka-net.md rename to src/data/roadmaps/server-side-game-developer/content/akknet-c@SsOz9Pj6Jc_55PgpmziL6.md diff --git a/src/data/roadmaps/server-side-game-developer/content/118-ai/101-cloud-ml/100-amazon-ml.md b/src/data/roadmaps/server-side-game-developer/content/amazon-ml@U0RlO_puezQPZP0-iBXgW.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/118-ai/101-cloud-ml/100-amazon-ml.md rename to src/data/roadmaps/server-side-game-developer/content/amazon-ml@U0RlO_puezQPZP0-iBXgW.md diff --git a/src/data/roadmaps/server-side-game-developer/content/113-message-queues/100-kafka.md b/src/data/roadmaps/server-side-game-developer/content/apache-kafka@gL7hubTh3qiMyUWeAZNwI.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/113-message-queues/100-kafka.md rename to src/data/roadmaps/server-side-game-developer/content/apache-kafka@gL7hubTh3qiMyUWeAZNwI.md diff --git a/src/data/roadmaps/server-side-game-developer/content/116-data-clustering/100-apache-spark.md b/src/data/roadmaps/server-side-game-developer/content/apache-spark@yrWiWJMSyTWxDakJbqacu.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/116-data-clustering/100-apache-spark.md rename to src/data/roadmaps/server-side-game-developer/content/apache-spark@yrWiWJMSyTWxDakJbqacu.md diff --git a/src/data/roadmaps/server-side-game-developer/content/106-socket-programming/103-api/index.md b/src/data/roadmaps/server-side-game-developer/content/api@a2pcxVTGdAPw8aLvdr19M.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/106-socket-programming/103-api/index.md rename to src/data/roadmaps/server-side-game-developer/content/api@a2pcxVTGdAPw8aLvdr19M.md diff --git a/src/data/roadmaps/server-side-game-developer/content/104-ip/104-transactions/100-arp.md b/src/data/roadmaps/server-side-game-developer/content/arp@JI_wUdT2hjsrvbIhLvHcT.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/104-ip/104-transactions/100-arp.md rename to src/data/roadmaps/server-side-game-developer/content/arp@JI_wUdT2hjsrvbIhLvHcT.md diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/100-task-based/101-async-await.md b/src/data/roadmaps/server-side-game-developer/content/asnc-await-c@mAXMpUDmhGOncnCRrENJv.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/100-task-based/101-async-await.md rename to src/data/roadmaps/server-side-game-developer/content/asnc-await-c@mAXMpUDmhGOncnCRrENJv.md diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/index.md b/src/data/roadmaps/server-side-game-developer/content/asynchronous@ThBxS9xIMt9OrXfnto3rW.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/index.md rename to src/data/roadmaps/server-side-game-developer/content/asynchronous@ThBxS9xIMt9OrXfnto3rW.md diff --git a/src/data/roadmaps/server-side-game-developer/content/115-cloud/102-aws.md b/src/data/roadmaps/server-side-game-developer/content/aws@Rkx2A6oWsddlCTseZlpRU.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/115-cloud/102-aws.md rename to src/data/roadmaps/server-side-game-developer/content/aws@Rkx2A6oWsddlCTseZlpRU.md diff --git a/src/data/roadmaps/server-side-game-developer/content/118-ai/101-cloud-ml/101-azure-ml.md b/src/data/roadmaps/server-side-game-developer/content/azure-ml@vBqwmlzoT5XVEhV9IeGso.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/118-ai/101-cloud-ml/101-azure-ml.md rename to src/data/roadmaps/server-side-game-developer/content/azure-ml@vBqwmlzoT5XVEhV9IeGso.md diff --git a/src/data/roadmaps/server-side-game-developer/content/115-cloud/100-azure.md b/src/data/roadmaps/server-side-game-developer/content/azure@73uoFNGcCALxIuRNbebav.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/115-cloud/100-azure.md rename to src/data/roadmaps/server-side-game-developer/content/azure@73uoFNGcCALxIuRNbebav.md diff --git a/src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/100-barrier.md b/src/data/roadmaps/server-side-game-developer/content/barrier@6k25amPkU9lnZ7FMNn_T6.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/100-barrier.md rename to src/data/roadmaps/server-side-game-developer/content/barrier@6k25amPkU9lnZ7FMNn_T6.md diff --git a/src/data/roadmaps/server-side-game-developer/content/106-socket-programming/103-api/100-bsd-socket.md b/src/data/roadmaps/server-side-game-developer/content/bsd-socket@U_tZFM80W3xJx8jj4skCr.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/106-socket-programming/103-api/100-bsd-socket.md rename to src/data/roadmaps/server-side-game-developer/content/bsd-socket@U_tZFM80W3xJx8jj4skCr.md diff --git a/src/data/roadmaps/server-side-game-developer/content/106-socket-programming/100-byte-manipulation.md b/src/data/roadmaps/server-side-game-developer/content/byte-manipulation@H21PanCggDfQt34-JzgfO.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/106-socket-programming/100-byte-manipulation.md rename to src/data/roadmaps/server-side-game-developer/content/byte-manipulation@H21PanCggDfQt34-JzgfO.md diff --git a/src/data/roadmaps/server-side-game-developer/content/105-programming-languages/101-c-sharp.md b/src/data/roadmaps/server-side-game-developer/content/c@DuyUc9a-47Uz03yr4aeyg.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/105-programming-languages/101-c-sharp.md rename to src/data/roadmaps/server-side-game-developer/content/c@DuyUc9a-47Uz03yr4aeyg.md diff --git a/src/data/roadmaps/server-side-game-developer/content/104-ip/100-capability.md b/src/data/roadmaps/server-side-game-developer/content/capability@5kF1fqr-mn5-15e3aMa9k.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/104-ip/100-capability.md rename to src/data/roadmaps/server-side-game-developer/content/capability@5kF1fqr-mn5-15e3aMa9k.md diff --git a/src/data/roadmaps/server-side-game-developer/content/110-databases/101-nosql/102-cassandra.md b/src/data/roadmaps/server-side-game-developer/content/cassandra@1jqSxk1nwByiQa1De81F3.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/110-databases/101-nosql/102-cassandra.md rename to src/data/roadmaps/server-side-game-developer/content/cassandra@1jqSxk1nwByiQa1De81F3.md diff --git a/src/data/roadmaps/server-side-game-developer/content/104-ip/105-categories/index.md b/src/data/roadmaps/server-side-game-developer/content/category@NH2eQ1_nij1icTgoO027b.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/104-ip/105-categories/index.md rename to src/data/roadmaps/server-side-game-developer/content/category@NH2eQ1_nij1icTgoO027b.md diff --git a/src/data/roadmaps/server-side-game-developer/content/105-programming-languages/100-c-cpp.md b/src/data/roadmaps/server-side-game-developer/content/cc@E4H3hniIW6hKpH3Qr--N5.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/105-programming-languages/100-c-cpp.md rename to src/data/roadmaps/server-side-game-developer/content/cc@E4H3hniIW6hKpH3Qr--N5.md diff --git a/src/data/roadmaps/server-side-game-developer/content/channel@SXOEMkcVYBsRza6BPmmwy.md b/src/data/roadmaps/server-side-game-developer/content/channel@SXOEMkcVYBsRza6BPmmwy.md new file mode 100644 index 000000000..e69de29bb diff --git a/src/data/roadmaps/server-side-game-developer/content/101-tcp/100-checksum.md b/src/data/roadmaps/server-side-game-developer/content/checksum@XxBl-zO7CF6DpOZ2bMDxJ.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/101-tcp/100-checksum.md rename to src/data/roadmaps/server-side-game-developer/content/checksum@XxBl-zO7CF6DpOZ2bMDxJ.md diff --git a/src/data/roadmaps/server-side-game-developer/content/102-udp/103-checksum.md b/src/data/roadmaps/server-side-game-developer/content/checksum@tBOvBpDi3SOKZjAmkxdM0.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/102-udp/103-checksum.md rename to src/data/roadmaps/server-side-game-developer/content/checksum@tBOvBpDi3SOKZjAmkxdM0.md diff --git a/src/data/roadmaps/server-side-game-developer/content/111-cipher/index.md b/src/data/roadmaps/server-side-game-developer/content/cipher@1788KFqsQBkYARqA0T5GX.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/111-cipher/index.md rename to src/data/roadmaps/server-side-game-developer/content/cipher@1788KFqsQBkYARqA0T5GX.md diff --git a/src/data/roadmaps/server-side-game-developer/content/118-ai/101-cloud-ml/index.md b/src/data/roadmaps/server-side-game-developer/content/cloud-ml@XvvlvDKfYRCcYtTdWohsd.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/118-ai/101-cloud-ml/index.md rename to src/data/roadmaps/server-side-game-developer/content/cloud-ml@XvvlvDKfYRCcYtTdWohsd.md diff --git a/src/data/roadmaps/server-side-game-developer/content/115-cloud/index.md b/src/data/roadmaps/server-side-game-developer/content/cloud@hhtqvFfTCuVPT0OPu4Y1a.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/115-cloud/index.md rename to src/data/roadmaps/server-side-game-developer/content/cloud@hhtqvFfTCuVPT0OPu4Y1a.md diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/100-task-based/102-concurrency.md b/src/data/roadmaps/server-side-game-developer/content/concurrency-java@RT9XvlxvIM_hHTtNmbva3.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/100-task-based/102-concurrency.md rename to src/data/roadmaps/server-side-game-developer/content/concurrency-java@RT9XvlxvIM_hHTtNmbva3.md diff --git a/src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/103-condition-variable.md b/src/data/roadmaps/server-side-game-developer/content/condition-variable@xR6pERldq4wPl9GVLHAhT.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/103-condition-variable.md rename to src/data/roadmaps/server-side-game-developer/content/condition-variable@xR6pERldq4wPl9GVLHAhT.md diff --git a/src/data/roadmaps/server-side-game-developer/content/congestion-control@1GML0Jsfdb1Fn-0PNryiQ.md b/src/data/roadmaps/server-side-game-developer/content/congestion-control@1GML0Jsfdb1Fn-0PNryiQ.md new file mode 100644 index 000000000..e69de29bb diff --git a/src/data/roadmaps/server-side-game-developer/content/102-udp/102-congestion-control.md b/src/data/roadmaps/server-side-game-developer/content/congestion-control@jsNsyrGzegVnjIF2l52vI.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/102-udp/102-congestion-control.md rename to src/data/roadmaps/server-side-game-developer/content/congestion-control@jsNsyrGzegVnjIF2l52vI.md diff --git a/src/data/roadmaps/server-side-game-developer/content/101-tcp/103-vulnerability/101-connection-hijacking.md b/src/data/roadmaps/server-side-game-developer/content/connection-hijacking@ubRiY3jdh3iS3diN482IU.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/101-tcp/103-vulnerability/101-connection-hijacking.md rename to src/data/roadmaps/server-side-game-developer/content/connection-hijacking@ubRiY3jdh3iS3diN482IU.md diff --git a/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/100-connection.md b/src/data/roadmaps/server-side-game-developer/content/connection@5sI3RHaLudq4TfpjoYeOp.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/100-connection.md rename to src/data/roadmaps/server-side-game-developer/content/connection@5sI3RHaLudq4TfpjoYeOp.md diff --git a/src/data/roadmaps/server-side-game-developer/content/117-containerization/index.md b/src/data/roadmaps/server-side-game-developer/content/containerization@k3FJY26SVxdZx4MLLE25h.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/117-containerization/index.md rename to src/data/roadmaps/server-side-game-developer/content/containerization@k3FJY26SVxdZx4MLLE25h.md diff --git a/src/data/roadmaps/server-side-game-developer/content/coroutine@o0Y_hM0KXUApfsXG4PvOY.md b/src/data/roadmaps/server-side-game-developer/content/coroutine@o0Y_hM0KXUApfsXG4PvOY.md new file mode 100644 index 000000000..e69de29bb diff --git a/src/data/roadmaps/server-side-game-developer/content/110-databases/101-nosql/103-couchbase.md b/src/data/roadmaps/server-side-game-developer/content/couchbase@6KTj_giX2k9l2lPd_Fp-d.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/110-databases/101-nosql/103-couchbase.md rename to src/data/roadmaps/server-side-game-developer/content/couchbase@6KTj_giX2k9l2lPd_Fp-d.md diff --git a/src/data/roadmaps/server-side-game-developer/content/110-databases/103-dal.md b/src/data/roadmaps/server-side-game-developer/content/dal@dt_SmZuwklLimhupvjxC1.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/110-databases/103-dal.md rename to src/data/roadmaps/server-side-game-developer/content/dal@dt_SmZuwklLimhupvjxC1.md diff --git a/src/data/roadmaps/server-side-game-developer/content/116-data-clustering/index.md b/src/data/roadmaps/server-side-game-developer/content/data-clustering@XCJvgUSS7-oDR-XGdDY33.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/116-data-clustering/index.md rename to src/data/roadmaps/server-side-game-developer/content/data-clustering@XCJvgUSS7-oDR-XGdDY33.md diff --git a/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/102-data-transfer/index.md b/src/data/roadmaps/server-side-game-developer/content/data-transfer@5bJUcx3v4dpdlIsx7bFvK.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/102-data-transfer/index.md rename to src/data/roadmaps/server-side-game-developer/content/data-transfer@5bJUcx3v4dpdlIsx7bFvK.md diff --git a/src/data/roadmaps/server-side-game-developer/content/110-databases/index.md b/src/data/roadmaps/server-side-game-developer/content/databases@FLFaGZDg2MSG6_YHnWETM.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/110-databases/index.md rename to src/data/roadmaps/server-side-game-developer/content/databases@FLFaGZDg2MSG6_YHnWETM.md diff --git a/src/data/roadmaps/server-side-game-developer/content/104-ip/103-functions/100-datagram-construction.md b/src/data/roadmaps/server-side-game-developer/content/datagram-construction@jnQAzUUnwpJgoRuRIFtSe.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/104-ip/103-functions/100-datagram-construction.md rename to src/data/roadmaps/server-side-game-developer/content/datagram-construction@jnQAzUUnwpJgoRuRIFtSe.md diff --git a/src/data/roadmaps/server-side-game-developer/content/102-udp/101-datagram.md b/src/data/roadmaps/server-side-game-developer/content/datagram@wD_HWc9YxPhlkilt585pg.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/102-udp/101-datagram.md rename to src/data/roadmaps/server-side-game-developer/content/datagram@wD_HWc9YxPhlkilt585pg.md diff --git a/src/data/roadmaps/server-side-game-developer/content/118-ai/100-deep-learning/index.md b/src/data/roadmaps/server-side-game-developer/content/deep-learning@jkWvfp4GqckYPQ48GtjlR.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/118-ai/100-deep-learning/index.md rename to src/data/roadmaps/server-side-game-developer/content/deep-learning@jkWvfp4GqckYPQ48GtjlR.md diff --git a/src/data/roadmaps/server-side-game-developer/content/101-tcp/103-vulnerability/100-denial-of-service.md b/src/data/roadmaps/server-side-game-developer/content/denial-of-service@TbXJO__4xSnzK1fvvJK86.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/101-tcp/103-vulnerability/100-denial-of-service.md rename to src/data/roadmaps/server-side-game-developer/content/denial-of-service@TbXJO__4xSnzK1fvvJK86.md diff --git a/src/data/roadmaps/server-side-game-developer/content/109-programming-techniques/102-dependency-injection.md b/src/data/roadmaps/server-side-game-developer/content/dependency-injection@uTlxyDOtvt_Qp0gXLWO-j.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/109-programming-techniques/102-dependency-injection.md rename to src/data/roadmaps/server-side-game-developer/content/dependency-injection@uTlxyDOtvt_Qp0gXLWO-j.md diff --git a/src/data/roadmaps/server-side-game-developer/content/106-socket-programming/102-descriptor.md b/src/data/roadmaps/server-side-game-developer/content/descriptor@OAyMj6uLSv1yJ87YAjyZu.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/106-socket-programming/102-descriptor.md rename to src/data/roadmaps/server-side-game-developer/content/descriptor@OAyMj6uLSv1yJ87YAjyZu.md diff --git a/src/data/roadmaps/server-side-game-developer/content/109-programming-techniques/100-design-patterns.md b/src/data/roadmaps/server-side-game-developer/content/design-patterns@gB-TYpgUDV47bxznNJhYn.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/109-programming-techniques/100-design-patterns.md rename to src/data/roadmaps/server-side-game-developer/content/design-patterns@gB-TYpgUDV47bxznNJhYn.md diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/104-reactive-model/101-determinism.md b/src/data/roadmaps/server-side-game-developer/content/determinism@zFx1jjt1hKgCpYHFTzbZZ.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/104-reactive-model/101-determinism.md rename to src/data/roadmaps/server-side-game-developer/content/determinism@zFx1jjt1hKgCpYHFTzbZZ.md diff --git a/src/data/roadmaps/server-side-game-developer/content/104-ip/104-transactions/102-dhcp.md b/src/data/roadmaps/server-side-game-developer/content/dhcp@aTHJh-xw8soCxC1bIDdXm.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/104-ip/104-transactions/102-dhcp.md rename to src/data/roadmaps/server-side-game-developer/content/dhcp@aTHJh-xw8soCxC1bIDdXm.md diff --git a/src/data/roadmaps/server-side-game-developer/content/104-ip/104-transactions/101-dns.md b/src/data/roadmaps/server-side-game-developer/content/dns@yNytLrQAMKBw4t73YRL3J.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/104-ip/104-transactions/101-dns.md rename to src/data/roadmaps/server-side-game-developer/content/dns@yNytLrQAMKBw4t73YRL3J.md diff --git a/src/data/roadmaps/server-side-game-developer/content/117-containerization/100-docker/100-docker-compose.md b/src/data/roadmaps/server-side-game-developer/content/docker-compose@yAf7VDX7dyaT5AdlNnuKD.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/117-containerization/100-docker/100-docker-compose.md rename to src/data/roadmaps/server-side-game-developer/content/docker-compose@yAf7VDX7dyaT5AdlNnuKD.md diff --git a/src/data/roadmaps/server-side-game-developer/content/117-containerization/100-docker/index.md b/src/data/roadmaps/server-side-game-developer/content/docker@zW_7VLeEHQp8fp_f5N__0.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/117-containerization/100-docker/index.md rename to src/data/roadmaps/server-side-game-developer/content/docker@zW_7VLeEHQp8fp_f5N__0.md diff --git a/src/data/roadmaps/server-side-game-developer/content/109-programming-techniques/103-dump-analysis.md b/src/data/roadmaps/server-side-game-developer/content/dump-analysis@1c6EqGv1g-d8M1i0vKImb.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/109-programming-techniques/103-dump-analysis.md rename to src/data/roadmaps/server-side-game-developer/content/dump-analysis@1c6EqGv1g-d8M1i0vKImb.md diff --git a/src/data/roadmaps/server-side-game-developer/content/110-databases/101-nosql/100-dynamo-db.md b/src/data/roadmaps/server-side-game-developer/content/dynamodb@9vc7sFE_XakYXtKRMxLXi.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/110-databases/101-nosql/100-dynamo-db.md rename to src/data/roadmaps/server-side-game-developer/content/dynamodb@9vc7sFE_XakYXtKRMxLXi.md diff --git a/src/data/roadmaps/server-side-game-developer/content/epoll@qaWv4gxnnj3uX8lEm9KQ4.md b/src/data/roadmaps/server-side-game-developer/content/epoll@qaWv4gxnnj3uX8lEm9KQ4.md new file mode 100644 index 000000000..e69de29bb diff --git a/src/data/roadmaps/server-side-game-developer/content/105-programming-languages/103-erlang.md b/src/data/roadmaps/server-side-game-developer/content/erlang@QGtGx5LBEWa1DD3Y7ztUy.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/105-programming-languages/103-erlang.md rename to src/data/roadmaps/server-side-game-developer/content/erlang@QGtGx5LBEWa1DD3Y7ztUy.md diff --git a/src/data/roadmaps/server-side-game-developer/content/error-detection@vFM311xSa5OqNVove2f6j.md b/src/data/roadmaps/server-side-game-developer/content/error-detection@vFM311xSa5OqNVove2f6j.md new file mode 100644 index 000000000..e69de29bb diff --git a/src/data/roadmaps/server-side-game-developer/content/108-multithreading/102-fiber.md b/src/data/roadmaps/server-side-game-developer/content/fiber@TVJrlUsg30YIM1yjsZfJI.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/108-multithreading/102-fiber.md rename to src/data/roadmaps/server-side-game-developer/content/fiber@TVJrlUsg30YIM1yjsZfJI.md diff --git a/src/data/roadmaps/server-side-game-developer/content/flow-control@lDVD-3i64Mk7-KPJrXmFH.md b/src/data/roadmaps/server-side-game-developer/content/flow-control@lDVD-3i64Mk7-KPJrXmFH.md new file mode 100644 index 000000000..e69de29bb diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/103-reactive-approach/101-frp.md b/src/data/roadmaps/server-side-game-developer/content/frp@xDYOvIbXc-iJ2zOKqe0YL.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/103-reactive-approach/101-frp.md rename to src/data/roadmaps/server-side-game-developer/content/frp@xDYOvIbXc-iJ2zOKqe0YL.md diff --git a/src/data/roadmaps/server-side-game-developer/content/104-ip/103-functions/index.md b/src/data/roadmaps/server-side-game-developer/content/function@YPvm8XD_FaFYCQ-b7-KsH.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/104-ip/103-functions/index.md rename to src/data/roadmaps/server-side-game-developer/content/function@YPvm8XD_FaFYCQ-b7-KsH.md diff --git a/src/data/roadmaps/server-side-game-developer/content/109-programming-techniques/104-functional-programming.md b/src/data/roadmaps/server-side-game-developer/content/functional-programming@HXSWvhgT4L5w6xgOO-3kj.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/109-programming-techniques/104-functional-programming.md rename to src/data/roadmaps/server-side-game-developer/content/functional-programming@HXSWvhgT4L5w6xgOO-3kj.md diff --git a/src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/104-future-promises/index.md b/src/data/roadmaps/server-side-game-developer/content/future--promises@zbIbPlqTNSbJUkqH9iLQv.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/104-future-promises/index.md rename to src/data/roadmaps/server-side-game-developer/content/future--promises@zbIbPlqTNSbJUkqH9iLQv.md diff --git a/src/data/roadmaps/server-side-game-developer/content/115-cloud/101-gcp.md b/src/data/roadmaps/server-side-game-developer/content/gcp@wD6dUrS-tP2gpCHPghFp5.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/115-cloud/101-gcp.md rename to src/data/roadmaps/server-side-game-developer/content/gcp@wD6dUrS-tP2gpCHPghFp5.md diff --git a/src/data/roadmaps/server-side-game-developer/content/go@d5iQYn97vuoxJnCFGPdOa.md b/src/data/roadmaps/server-side-game-developer/content/go@d5iQYn97vuoxJnCFGPdOa.md new file mode 100644 index 000000000..59448b216 --- /dev/null +++ b/src/data/roadmaps/server-side-game-developer/content/go@d5iQYn97vuoxJnCFGPdOa.md @@ -0,0 +1 @@ +# Go \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/100-task-based/103-goroutine.md b/src/data/roadmaps/server-side-game-developer/content/goroutine-go@f-L_eaZd0EjBW9-n9Pllt.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/100-task-based/103-goroutine.md rename to src/data/roadmaps/server-side-game-developer/content/goroutine-go@f-L_eaZd0EjBW9-n9Pllt.md diff --git a/src/data/roadmaps/server-side-game-developer/content/112-rpc-rest/101-grpc.md b/src/data/roadmaps/server-side-game-developer/content/grpc@_uqTTBUYAzDHbEUkDzmzg.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/112-rpc-rest/101-grpc.md rename to src/data/roadmaps/server-side-game-developer/content/grpc@_uqTTBUYAzDHbEUkDzmzg.md diff --git a/src/data/roadmaps/server-side-game-developer/content/103-tcp-vs-udp/102-heavyweight-vs-lightweight.md b/src/data/roadmaps/server-side-game-developer/content/heavy-vs-lightweight@OYXKtl4A-vaK6yGO6hS6n.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/103-tcp-vs-udp/102-heavyweight-vs-lightweight.md rename to src/data/roadmaps/server-side-game-developer/content/heavy-vs-lightweight@OYXKtl4A-vaK6yGO6hS6n.md diff --git a/src/data/roadmaps/server-side-game-developer/content/index.md b/src/data/roadmaps/server-side-game-developer/content/index.md deleted file mode 100644 index 4e768b56d..000000000 --- a/src/data/roadmaps/server-side-game-developer/content/index.md +++ /dev/null @@ -1 +0,0 @@ -# \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/io_uring@YH7u1FKh85wz78J0stuzS.md b/src/data/roadmaps/server-side-game-developer/content/io_uring@YH7u1FKh85wz78J0stuzS.md new file mode 100644 index 000000000..e69de29bb diff --git a/src/data/roadmaps/server-side-game-developer/content/iocp@7pgdOZomhGilBTwfJLMbm.md b/src/data/roadmaps/server-side-game-developer/content/iocp@7pgdOZomhGilBTwfJLMbm.md new file mode 100644 index 000000000..e69de29bb diff --git a/src/data/roadmaps/server-side-game-developer/content/104-ip/103-functions/101-ip-addressing.md b/src/data/roadmaps/server-side-game-developer/content/ip-addressing@3ZcJNDCHw2pFzewmoB-03.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/104-ip/103-functions/101-ip-addressing.md rename to src/data/roadmaps/server-side-game-developer/content/ip-addressing@3ZcJNDCHw2pFzewmoB-03.md diff --git a/src/data/roadmaps/server-side-game-developer/content/104-ip/index.md b/src/data/roadmaps/server-side-game-developer/content/ip@tg94V7K0mgYhpkUMp_Scv.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/104-ip/index.md rename to src/data/roadmaps/server-side-game-developer/content/ip@tg94V7K0mgYhpkUMp_Scv.md diff --git a/src/data/roadmaps/server-side-game-developer/content/104-ip/105-categories/100-ipv4.md b/src/data/roadmaps/server-side-game-developer/content/ipv4@pHVB0K8Vtk3ToD6n_f1wv.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/104-ip/105-categories/100-ipv4.md rename to src/data/roadmaps/server-side-game-developer/content/ipv4@pHVB0K8Vtk3ToD6n_f1wv.md diff --git a/src/data/roadmaps/server-side-game-developer/content/104-ip/105-categories/101-ipv6.md b/src/data/roadmaps/server-side-game-developer/content/ipv6@TqBlAMfhARhlJed6xD7eg.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/104-ip/105-categories/101-ipv6.md rename to src/data/roadmaps/server-side-game-developer/content/ipv6@TqBlAMfhARhlJed6xD7eg.md diff --git a/src/data/roadmaps/server-side-game-developer/content/105-programming-languages/102-java.md b/src/data/roadmaps/server-side-game-developer/content/java@LG8JPL1po-gEs1V5JyC8F.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/105-programming-languages/102-java.md rename to src/data/roadmaps/server-side-game-developer/content/java@LG8JPL1po-gEs1V5JyC8F.md diff --git a/src/data/roadmaps/server-side-game-developer/content/105-programming-languages/104-javascript.md b/src/data/roadmaps/server-side-game-developer/content/javascript@ufufnULqsglE5VhEIAdSI.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/105-programming-languages/104-javascript.md rename to src/data/roadmaps/server-side-game-developer/content/javascript@ufufnULqsglE5VhEIAdSI.md diff --git a/src/data/roadmaps/server-side-game-developer/content/107-serialization/100-json.md b/src/data/roadmaps/server-side-game-developer/content/json@y0ZJQQfi8Qx6sB4WnZlP5.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/107-serialization/100-json.md rename to src/data/roadmaps/server-side-game-developer/content/json@y0ZJQQfi8Qx6sB4WnZlP5.md diff --git a/src/data/roadmaps/server-side-game-developer/content/kqueue@caK32NMMrn-3BGAXZoPPr.md b/src/data/roadmaps/server-side-game-developer/content/kqueue@caK32NMMrn-3BGAXZoPPr.md new file mode 100644 index 000000000..e69de29bb diff --git a/src/data/roadmaps/server-side-game-developer/content/117-containerization/100-docker/101-kubernetes.md b/src/data/roadmaps/server-side-game-developer/content/kubernetes@lUBUUoETjfADmM4OPtwwX.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/117-containerization/100-docker/101-kubernetes.md rename to src/data/roadmaps/server-side-game-developer/content/kubernetes@lUBUUoETjfADmM4OPtwwX.md diff --git a/src/data/roadmaps/server-side-game-developer/content/104-ip/102-link-capacity.md b/src/data/roadmaps/server-side-game-developer/content/link-capacity@OzY-LPcfj1sBm_0F0WbIJ.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/104-ip/102-link-capacity.md rename to src/data/roadmaps/server-side-game-developer/content/link-capacity@OzY-LPcfj1sBm_0F0WbIJ.md diff --git a/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/103-max-segment-scaling.md b/src/data/roadmaps/server-side-game-developer/content/max-segment-scaling@1l5dhQWYPhUSg-cy5pSlK.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/103-max-segment-scaling.md rename to src/data/roadmaps/server-side-game-developer/content/max-segment-scaling@1l5dhQWYPhUSg-cy5pSlK.md diff --git a/src/data/roadmaps/server-side-game-developer/content/max-segment-size@w6ysmcsBn9jJ8xMvg7hcD.md b/src/data/roadmaps/server-side-game-developer/content/max-segment-size@w6ysmcsBn9jJ8xMvg7hcD.md new file mode 100644 index 000000000..d938409cd --- /dev/null +++ b/src/data/roadmaps/server-side-game-developer/content/max-segment-size@w6ysmcsBn9jJ8xMvg7hcD.md @@ -0,0 +1 @@ +# Max Segment Size \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/110-databases/104-key-value/101-memcached.md b/src/data/roadmaps/server-side-game-developer/content/memcached@ayeezKxQkXAPJMTShsOBU.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/110-databases/104-key-value/101-memcached.md rename to src/data/roadmaps/server-side-game-developer/content/memcached@ayeezKxQkXAPJMTShsOBU.md diff --git a/src/data/roadmaps/server-side-game-developer/content/113-message-queues/index.md b/src/data/roadmaps/server-side-game-developer/content/message-queues@cw7WdFfL5HpeZ_n8wYk2t.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/113-message-queues/index.md rename to src/data/roadmaps/server-side-game-developer/content/message-queues@cw7WdFfL5HpeZ_n8wYk2t.md diff --git a/src/data/roadmaps/server-side-game-developer/content/110-databases/101-nosql/101-mongodb.md b/src/data/roadmaps/server-side-game-developer/content/mongodb@HYxtPW401-J6aYcTuiGnx.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/110-databases/101-nosql/101-mongodb.md rename to src/data/roadmaps/server-side-game-developer/content/mongodb@HYxtPW401-J6aYcTuiGnx.md diff --git a/src/data/roadmaps/server-side-game-developer/content/110-databases/100-rdbms/100-mssql.md b/src/data/roadmaps/server-side-game-developer/content/ms-sql@QMNUAKAuRI9lyf2_jUPsj.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/110-databases/100-rdbms/100-mssql.md rename to src/data/roadmaps/server-side-game-developer/content/ms-sql@QMNUAKAuRI9lyf2_jUPsj.md diff --git a/src/data/roadmaps/server-side-game-developer/content/108-multithreading/index.md b/src/data/roadmaps/server-side-game-developer/content/multithreading@3QSLUMKD0G08N3MIb1cG7.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/108-multithreading/index.md rename to src/data/roadmaps/server-side-game-developer/content/multithreading@3QSLUMKD0G08N3MIb1cG7.md diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/index.md b/src/data/roadmaps/server-side-game-developer/content/multithreading@_jd91rrAXGbJI9RhXlSx8.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/index.md rename to src/data/roadmaps/server-side-game-developer/content/multithreading@_jd91rrAXGbJI9RhXlSx8.md diff --git a/src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/102-mutex/index.md b/src/data/roadmaps/server-side-game-developer/content/mutex@G_BEJKkJ1_Nc43aosy_iS.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/102-mutex/index.md rename to src/data/roadmaps/server-side-game-developer/content/mutex@G_BEJKkJ1_Nc43aosy_iS.md diff --git a/src/data/roadmaps/server-side-game-developer/content/110-databases/100-rdbms/101-mysql.md b/src/data/roadmaps/server-side-game-developer/content/mysql@HsBqd08Ro0VJnx0FlumMQ.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/110-databases/100-rdbms/101-mysql.md rename to src/data/roadmaps/server-side-game-developer/content/mysql@HsBqd08Ro0VJnx0FlumMQ.md diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/103-reactive-approach/100-oorp.md b/src/data/roadmaps/server-side-game-developer/content/oorp@yWj70LpF4LKB8J6GbYvsq.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/103-reactive-approach/100-oorp.md rename to src/data/roadmaps/server-side-game-developer/content/oorp@yWj70LpF4LKB8J6GbYvsq.md diff --git a/src/data/roadmaps/server-side-game-developer/content/103-tcp-vs-udp/101-ordered-vs-not-ordered.md b/src/data/roadmaps/server-side-game-developer/content/ordered-vs-unordered@WMdCDmFsytsF2AWQXfzC8.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/103-tcp-vs-udp/101-ordered-vs-not-ordered.md rename to src/data/roadmaps/server-side-game-developer/content/ordered-vs-unordered@WMdCDmFsytsF2AWQXfzC8.md diff --git a/src/data/roadmaps/server-side-game-developer/content/110-databases/102-orm.md b/src/data/roadmaps/server-side-game-developer/content/orm@OyxWMFy8s7Lxko_K89fjo.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/110-databases/102-orm.md rename to src/data/roadmaps/server-side-game-developer/content/orm@OyxWMFy8s7Lxko_K89fjo.md diff --git a/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/106-out-of-band-data.md b/src/data/roadmaps/server-side-game-developer/content/out-of-band-data@3OMu3RM-6pMjqY1jAmC2-.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/106-out-of-band-data.md rename to src/data/roadmaps/server-side-game-developer/content/out-of-band-data@3OMu3RM-6pMjqY1jAmC2-.md diff --git a/src/data/roadmaps/server-side-game-developer/content/102-udp/104-packet-structure.md b/src/data/roadmaps/server-side-game-developer/content/packet-structure@CCxVnrGDKa1EROXgF_OAm.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/102-udp/104-packet-structure.md rename to src/data/roadmaps/server-side-game-developer/content/packet-structure@CCxVnrGDKa1EROXgF_OAm.md diff --git a/src/data/roadmaps/server-side-game-developer/content/103-tcp-vs-udp/103-packet-vs-datagram.md b/src/data/roadmaps/server-side-game-developer/content/packet-vs-datagram@JE3uZ5U6oe6dVzsmglTl2.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/103-tcp-vs-udp/103-packet-vs-datagram.md rename to src/data/roadmaps/server-side-game-developer/content/packet-vs-datagram@JE3uZ5U6oe6dVzsmglTl2.md diff --git a/src/data/roadmaps/server-side-game-developer/content/110-databases/100-rdbms/102-postgresql.md b/src/data/roadmaps/server-side-game-developer/content/postgresql@dAiEwN7phwMyaitvM5kRl.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/110-databases/100-rdbms/102-postgresql.md rename to src/data/roadmaps/server-side-game-developer/content/postgresql@dAiEwN7phwMyaitvM5kRl.md diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/100-proactor/index.md b/src/data/roadmaps/server-side-game-developer/content/proactor@Tvxe2NemcH21y-eB4bosv.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/100-proactor/index.md rename to src/data/roadmaps/server-side-game-developer/content/proactor@Tvxe2NemcH21y-eB4bosv.md diff --git a/src/data/roadmaps/server-side-game-developer/content/105-programming-languages/index.md b/src/data/roadmaps/server-side-game-developer/content/programming-languages@6ilqzjvI4J1pUCmTJ33PA.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/105-programming-languages/index.md rename to src/data/roadmaps/server-side-game-developer/content/programming-languages@6ilqzjvI4J1pUCmTJ33PA.md diff --git a/src/data/roadmaps/server-side-game-developer/content/109-programming-techniques/index.md b/src/data/roadmaps/server-side-game-developer/content/programming-techniques@tGQu18PWDatW7HvkTP-uh.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/109-programming-techniques/index.md rename to src/data/roadmaps/server-side-game-developer/content/programming-techniques@tGQu18PWDatW7HvkTP-uh.md diff --git a/src/data/roadmaps/server-side-game-developer/content/107-serialization/104-protobuf.md b/src/data/roadmaps/server-side-game-developer/content/protobuf@w2zbab_6Gxw6AWS0N759U.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/107-serialization/104-protobuf.md rename to src/data/roadmaps/server-side-game-developer/content/protobuf@w2zbab_6Gxw6AWS0N759U.md diff --git a/src/data/roadmaps/server-side-game-developer/content/108-multithreading/100-thread-localstorage/101-pthread.md b/src/data/roadmaps/server-side-game-developer/content/pthread@HU0yUyl89WD8WnR9PJn7l.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/108-multithreading/100-thread-localstorage/101-pthread.md rename to src/data/roadmaps/server-side-game-developer/content/pthread@HU0yUyl89WD8WnR9PJn7l.md diff --git a/src/data/roadmaps/server-side-game-developer/content/118-ai/100-deep-learning/101-pytorch.md b/src/data/roadmaps/server-side-game-developer/content/pytorch@LTSIfq10qDJMTCnIIyqvb.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/118-ai/100-deep-learning/101-pytorch.md rename to src/data/roadmaps/server-side-game-developer/content/pytorch@LTSIfq10qDJMTCnIIyqvb.md diff --git a/src/data/roadmaps/server-side-game-developer/content/113-message-queues/101-rabbitmq.md b/src/data/roadmaps/server-side-game-developer/content/rabbitmq@UESjGrFyUbNf4pQamaBoy.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/113-message-queues/101-rabbitmq.md rename to src/data/roadmaps/server-side-game-developer/content/rabbitmq@UESjGrFyUbNf4pQamaBoy.md diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/103-reactive-approach/index.md b/src/data/roadmaps/server-side-game-developer/content/reactive-approach@LVwGXmZhMewGQy61qwNyu.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/103-reactive-approach/index.md rename to src/data/roadmaps/server-side-game-developer/content/reactive-approach@LVwGXmZhMewGQy61qwNyu.md diff --git a/src/data/roadmaps/server-side-game-developer/content/reactive-approach@Vl-WW0LThrQTOO_tFl51B.md b/src/data/roadmaps/server-side-game-developer/content/reactive-approach@Vl-WW0LThrQTOO_tFl51B.md new file mode 100644 index 000000000..19e971698 --- /dev/null +++ b/src/data/roadmaps/server-side-game-developer/content/reactive-approach@Vl-WW0LThrQTOO_tFl51B.md @@ -0,0 +1 @@ +# Reactive Approach \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/104-reactive-model/index.md b/src/data/roadmaps/server-side-game-developer/content/reactive-model@p0P3ZGq_QTCop0vMwe7P3.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/104-reactive-model/index.md rename to src/data/roadmaps/server-side-game-developer/content/reactive-model@p0P3ZGq_QTCop0vMwe7P3.md diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/101-reactor/index.md b/src/data/roadmaps/server-side-game-developer/content/reactor@7mYpgn2gr-5vAYW-UR7_x.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/101-asynchronous/101-reactor/index.md rename to src/data/roadmaps/server-side-game-developer/content/reactor@7mYpgn2gr-5vAYW-UR7_x.md diff --git a/src/data/roadmaps/server-side-game-developer/content/110-databases/104-key-value/100-redis.md b/src/data/roadmaps/server-side-game-developer/content/redis@7YNaELVcoV7DV1Fa06USi.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/110-databases/104-key-value/100-redis.md rename to src/data/roadmaps/server-side-game-developer/content/redis@7YNaELVcoV7DV1Fa06USi.md diff --git a/src/data/roadmaps/server-side-game-developer/content/registered-io@94hJX1iGifDzIuaU3zU5j.md b/src/data/roadmaps/server-side-game-developer/content/registered-io@94hJX1iGifDzIuaU3zU5j.md new file mode 100644 index 000000000..e69de29bb diff --git a/src/data/roadmaps/server-side-game-developer/content/104-ip/101-reliability.md b/src/data/roadmaps/server-side-game-developer/content/reliability@2jDV-ovvrkBbTTLk5VbR9.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/104-ip/101-reliability.md rename to src/data/roadmaps/server-side-game-developer/content/reliability@2jDV-ovvrkBbTTLk5VbR9.md diff --git a/src/data/roadmaps/server-side-game-developer/content/102-udp/100-reliability.md b/src/data/roadmaps/server-side-game-developer/content/reliability@Vh81GnOUOZvDOlOyI5PwT.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/102-udp/100-reliability.md rename to src/data/roadmaps/server-side-game-developer/content/reliability@Vh81GnOUOZvDOlOyI5PwT.md diff --git a/src/data/roadmaps/server-side-game-developer/content/reliable-transmission@X2KHWgQZDHSVDsTRMUwSj.md b/src/data/roadmaps/server-side-game-developer/content/reliable-transmission@X2KHWgQZDHSVDsTRMUwSj.md new file mode 100644 index 000000000..e69de29bb diff --git a/src/data/roadmaps/server-side-game-developer/content/103-tcp-vs-udp/100-reliable-vs-unreliable.md b/src/data/roadmaps/server-side-game-developer/content/reliable-vs-unreliable@MoyBGT9bscUe8vMN4J0bG.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/103-tcp-vs-udp/100-reliable-vs-unreliable.md rename to src/data/roadmaps/server-side-game-developer/content/reliable-vs-unreliable@MoyBGT9bscUe8vMN4J0bG.md diff --git a/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/101-resource-usage.md b/src/data/roadmaps/server-side-game-developer/content/resource-usage@LkGI0VpJ3WkpPHkJhJgWk.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/101-resource-usage.md rename to src/data/roadmaps/server-side-game-developer/content/resource-usage@LkGI0VpJ3WkpPHkJhJgWk.md diff --git a/src/data/roadmaps/server-side-game-developer/content/112-rpc-rest/100-rest.md b/src/data/roadmaps/server-side-game-developer/content/rest@Oq3GQ5gBUxIl1Qe8NB3LB.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/112-rpc-rest/100-rest.md rename to src/data/roadmaps/server-side-game-developer/content/rest@Oq3GQ5gBUxIl1Qe8NB3LB.md diff --git a/src/data/roadmaps/server-side-game-developer/content/104-ip/103-functions/102-routing.md b/src/data/roadmaps/server-side-game-developer/content/routing@bYb7nA-Vn9e6VtdbUT3tq.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/104-ip/103-functions/102-routing.md rename to src/data/roadmaps/server-side-game-developer/content/routing@bYb7nA-Vn9e6VtdbUT3tq.md diff --git a/src/data/roadmaps/server-side-game-developer/content/112-rpc-rest/index.md b/src/data/roadmaps/server-side-game-developer/content/rpc--rest@YxaroYL_Az0vKRCeu2jsp.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/112-rpc-rest/index.md rename to src/data/roadmaps/server-side-game-developer/content/rpc--rest@YxaroYL_Az0vKRCeu2jsp.md diff --git a/src/data/roadmaps/server-side-game-developer/content/104-ip/106-security/index.md b/src/data/roadmaps/server-side-game-developer/content/security@qkO0s9zR0sAnjTRWcrLQY.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/104-ip/106-security/index.md rename to src/data/roadmaps/server-side-game-developer/content/security@qkO0s9zR0sAnjTRWcrLQY.md diff --git a/src/data/roadmaps/server-side-game-developer/content/101-tcp/101-segment-structure.md b/src/data/roadmaps/server-side-game-developer/content/segment-structure@zTCmPUp9j5P1wpGgiboMa.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/101-tcp/101-segment-structure.md rename to src/data/roadmaps/server-side-game-developer/content/segment-structure@zTCmPUp9j5P1wpGgiboMa.md diff --git a/src/data/roadmaps/server-side-game-developer/content/select@5-5toy2CblZPCV9d5QPEo.md b/src/data/roadmaps/server-side-game-developer/content/select@5-5toy2CblZPCV9d5QPEo.md new file mode 100644 index 000000000..e69de29bb diff --git a/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/107-selective-acknowledgement.md b/src/data/roadmaps/server-side-game-developer/content/selective-ack@SPpOO25b7wpajWDIrKi1u.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/107-selective-acknowledgement.md rename to src/data/roadmaps/server-side-game-developer/content/selective-ack@SPpOO25b7wpajWDIrKi1u.md diff --git a/src/data/roadmaps/server-side-game-developer/content/semaphore@DYvzGc_r0SlOArPPc1gNI.md b/src/data/roadmaps/server-side-game-developer/content/semaphore@DYvzGc_r0SlOArPPc1gNI.md new file mode 100644 index 000000000..e69de29bb diff --git a/src/data/roadmaps/server-side-game-developer/content/107-serialization/index.md b/src/data/roadmaps/server-side-game-developer/content/serialization@TS6dz61rUSxm-SqmK6JKe.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/107-serialization/index.md rename to src/data/roadmaps/server-side-game-developer/content/serialization@TS6dz61rUSxm-SqmK6JKe.md diff --git a/src/data/roadmaps/server-side-game-developer/content/100-server-side.md b/src/data/roadmaps/server-side-game-developer/content/server-side-development@rQArtuVKGVgLn_fw9yO3b.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/100-server-side.md rename to src/data/roadmaps/server-side-game-developer/content/server-side-development@rQArtuVKGVgLn_fw9yO3b.md diff --git a/src/data/roadmaps/server-side-game-developer/content/115-cloud/103-serverless.md b/src/data/roadmaps/server-side-game-developer/content/serverless@DOmbRRK_RRPElOuTB7AAK.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/115-cloud/103-serverless.md rename to src/data/roadmaps/server-side-game-developer/content/serverless@DOmbRRK_RRPElOuTB7AAK.md diff --git a/src/data/roadmaps/server-side-game-developer/content/108-multithreading/101-sharding.md b/src/data/roadmaps/server-side-game-developer/content/sharding@3use5vuLBJTk40wOg9S-X.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/108-multithreading/101-sharding.md rename to src/data/roadmaps/server-side-game-developer/content/sharding@3use5vuLBJTk40wOg9S-X.md diff --git a/src/data/roadmaps/server-side-game-developer/content/106-socket-programming/index.md b/src/data/roadmaps/server-side-game-developer/content/socket-programming@HvpuFTCknHPhnFkhmhRc4.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/106-socket-programming/index.md rename to src/data/roadmaps/server-side-game-developer/content/socket-programming@HvpuFTCknHPhnFkhmhRc4.md diff --git a/src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/101-spinlock.md b/src/data/roadmaps/server-side-game-developer/content/spinlock@lVXfA_oZr82mFfBvLnnRK.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/101-spinlock.md rename to src/data/roadmaps/server-side-game-developer/content/spinlock@lVXfA_oZr82mFfBvLnnRK.md diff --git a/src/data/roadmaps/server-side-game-developer/content/111-cipher/100-ssl.md b/src/data/roadmaps/server-side-game-developer/content/ssl@PSvPjaVtko71BeIA-hYqf.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/111-cipher/100-ssl.md rename to src/data/roadmaps/server-side-game-developer/content/ssl@PSvPjaVtko71BeIA-hYqf.md diff --git a/src/data/roadmaps/server-side-game-developer/content/103-tcp-vs-udp/104-streaming-vs-broadcast.md b/src/data/roadmaps/server-side-game-developer/content/streaming-vs-broadcast@pJw8fN1dt3BABtZVz7wGE.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/103-tcp-vs-udp/104-streaming-vs-broadcast.md rename to src/data/roadmaps/server-side-game-developer/content/streaming-vs-broadcast@pJw8fN1dt3BABtZVz7wGE.md diff --git a/src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/index.md b/src/data/roadmaps/server-side-game-developer/content/synchronization@idmrgKgVWVLZYANbXiZnS.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/108-multithreading/103-synchronization/index.md rename to src/data/roadmaps/server-side-game-developer/content/synchronization@idmrgKgVWVLZYANbXiZnS.md diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/104-reactive-model/100-synchrony.md b/src/data/roadmaps/server-side-game-developer/content/synchrony@l5QTk408Ubagw8XzRAfoZ.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/104-reactive-model/100-synchrony.md rename to src/data/roadmaps/server-side-game-developer/content/synchrony@l5QTk408Ubagw8XzRAfoZ.md diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/100-task-based/index.md b/src/data/roadmaps/server-side-game-developer/content/task-based@LKPcEeqBOPhQOztD3cM3T.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/100-task-based/index.md rename to src/data/roadmaps/server-side-game-developer/content/task-based@LKPcEeqBOPhQOztD3cM3T.md diff --git a/src/data/roadmaps/server-side-game-developer/content/103-tcp-vs-udp/index.md b/src/data/roadmaps/server-side-game-developer/content/tcp-vs-udp@RfTcTUjaXyp49FnUf44MK.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/103-tcp-vs-udp/index.md rename to src/data/roadmaps/server-side-game-developer/content/tcp-vs-udp@RfTcTUjaXyp49FnUf44MK.md diff --git a/src/data/roadmaps/server-side-game-developer/content/101-tcp/index.md b/src/data/roadmaps/server-side-game-developer/content/tcp@mUCidjOsVLMAVDf2jmV5F.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/101-tcp/index.md rename to src/data/roadmaps/server-side-game-developer/content/tcp@mUCidjOsVLMAVDf2jmV5F.md diff --git a/src/data/roadmaps/server-side-game-developer/content/109-programming-techniques/101-tdd.md b/src/data/roadmaps/server-side-game-developer/content/tdd@FKOhe21PVlaKIoZI4hd49.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/109-programming-techniques/101-tdd.md rename to src/data/roadmaps/server-side-game-developer/content/tdd@FKOhe21PVlaKIoZI4hd49.md diff --git a/src/data/roadmaps/server-side-game-developer/content/118-ai/100-deep-learning/100-tensor-flow.md b/src/data/roadmaps/server-side-game-developer/content/tensorflow@iJE9RnKC8QjPnsFeZAbtl.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/118-ai/100-deep-learning/100-tensor-flow.md rename to src/data/roadmaps/server-side-game-developer/content/tensorflow@iJE9RnKC8QjPnsFeZAbtl.md diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/100-task-based/100-thread-building-block.md b/src/data/roadmaps/server-side-game-developer/content/thread-building-block-c@tiG0mZpLJ2zUr2IPYyhnv.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/100-task-based/100-thread-building-block.md rename to src/data/roadmaps/server-side-game-developer/content/thread-building-block-c@tiG0mZpLJ2zUr2IPYyhnv.md diff --git a/src/data/roadmaps/server-side-game-developer/content/108-multithreading/100-thread-localstorage/index.md b/src/data/roadmaps/server-side-game-developer/content/thread-local-storage@IeD-oQ1bkwlKNC-R0lJjZ.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/108-multithreading/100-thread-localstorage/index.md rename to src/data/roadmaps/server-side-game-developer/content/thread-local-storage@IeD-oQ1bkwlKNC-R0lJjZ.md diff --git a/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/105-timestamp.md b/src/data/roadmaps/server-side-game-developer/content/timestamp@6KAYNPLEFMp6Jha8FLMAU.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/105-timestamp.md rename to src/data/roadmaps/server-side-game-developer/content/timestamp@6KAYNPLEFMp6Jha8FLMAU.md diff --git a/src/data/roadmaps/server-side-game-developer/content/104-ip/106-security/100-tls.md b/src/data/roadmaps/server-side-game-developer/content/tls@FX8ASd-QzTUFDHzBB93WK.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/104-ip/106-security/100-tls.md rename to src/data/roadmaps/server-side-game-developer/content/tls@FX8ASd-QzTUFDHzBB93WK.md diff --git a/src/data/roadmaps/server-side-game-developer/content/107-serialization/103-toml.md b/src/data/roadmaps/server-side-game-developer/content/toml@l8iEC3g0ICSfmIE1MxcUl.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/107-serialization/103-toml.md rename to src/data/roadmaps/server-side-game-developer/content/toml@l8iEC3g0ICSfmIE1MxcUl.md diff --git a/src/data/roadmaps/server-side-game-developer/content/104-ip/104-transactions/index.md b/src/data/roadmaps/server-side-game-developer/content/transactions@r2OeI7YC1BLLfctC8q69W.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/104-ip/104-transactions/index.md rename to src/data/roadmaps/server-side-game-developer/content/transactions@r2OeI7YC1BLLfctC8q69W.md diff --git a/src/data/roadmaps/server-side-game-developer/content/102-udp/index.md b/src/data/roadmaps/server-side-game-developer/content/udp@IMyHwnXxJK6oFxzOMLxjS.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/102-udp/index.md rename to src/data/roadmaps/server-side-game-developer/content/udp@IMyHwnXxJK6oFxzOMLxjS.md diff --git a/src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/104-reactive-model/102-update-process.md b/src/data/roadmaps/server-side-game-developer/content/update-process@3Eat22rFjUl4eTtGz8u4N.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/114-mutlithreading-2/104-reactive-model/102-update-process.md rename to src/data/roadmaps/server-side-game-developer/content/update-process@3Eat22rFjUl4eTtGz8u4N.md diff --git a/src/data/roadmaps/server-side-game-developer/content/101-tcp/103-vulnerability/102-veto.md b/src/data/roadmaps/server-side-game-developer/content/veto@ZLTfpRZ0rF-mtd7Z0R2WF.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/101-tcp/103-vulnerability/102-veto.md rename to src/data/roadmaps/server-side-game-developer/content/veto@ZLTfpRZ0rF-mtd7Z0R2WF.md diff --git a/src/data/roadmaps/server-side-game-developer/content/101-tcp/103-vulnerability/index.md b/src/data/roadmaps/server-side-game-developer/content/vulnerability@MwLWDlciJOq_0n5S3GoF-.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/101-tcp/103-vulnerability/index.md rename to src/data/roadmaps/server-side-game-developer/content/vulnerability@MwLWDlciJOq_0n5S3GoF-.md diff --git a/src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/104-window-scaling.md b/src/data/roadmaps/server-side-game-developer/content/window-scaling@zvBKjceXRSfEe_3MDCEL5.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/101-tcp/102-operations/104-window-scaling.md rename to src/data/roadmaps/server-side-game-developer/content/window-scaling@zvBKjceXRSfEe_3MDCEL5.md diff --git a/src/data/roadmaps/server-side-game-developer/content/108-multithreading/100-thread-localstorage/100-windows.md b/src/data/roadmaps/server-side-game-developer/content/windows@mW2L_9NckgPRH7g5W9NHq.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/108-multithreading/100-thread-localstorage/100-windows.md rename to src/data/roadmaps/server-side-game-developer/content/windows@mW2L_9NckgPRH7g5W9NHq.md diff --git a/src/data/roadmaps/server-side-game-developer/content/106-socket-programming/103-api/101-winsock.md b/src/data/roadmaps/server-side-game-developer/content/winsock@GfTXffisLyQgp66zcQ7Py.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/106-socket-programming/103-api/101-winsock.md rename to src/data/roadmaps/server-side-game-developer/content/winsock@GfTXffisLyQgp66zcQ7Py.md diff --git a/src/data/roadmaps/server-side-game-developer/content/wsa-poll@D9Yeyn8phDhB1ohMWccgr.md b/src/data/roadmaps/server-side-game-developer/content/wsa-poll@D9Yeyn8phDhB1ohMWccgr.md new file mode 100644 index 000000000..e69de29bb diff --git a/src/data/roadmaps/server-side-game-developer/content/107-serialization/101-xml.md b/src/data/roadmaps/server-side-game-developer/content/xml@v43K6srds7m5SQFqNaY0T.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/107-serialization/101-xml.md rename to src/data/roadmaps/server-side-game-developer/content/xml@v43K6srds7m5SQFqNaY0T.md diff --git a/src/data/roadmaps/server-side-game-developer/content/107-serialization/102-yaml.md b/src/data/roadmaps/server-side-game-developer/content/yaml@uHcUSVLz_2-Usk6ckSvwr.md similarity index 100% rename from src/data/roadmaps/server-side-game-developer/content/107-serialization/102-yaml.md rename to src/data/roadmaps/server-side-game-developer/content/yaml@uHcUSVLz_2-Usk6ckSvwr.md diff --git a/src/data/roadmaps/server-side-game-developer/migration-mapping.json b/src/data/roadmaps/server-side-game-developer/migration-mapping.json new file mode 100644 index 000000000..ded3b942e --- /dev/null +++ b/src/data/roadmaps/server-side-game-developer/migration-mapping.json @@ -0,0 +1,155 @@ +{ + "server-side": "rQArtuVKGVgLn_fw9yO3b", + "tcp": "mUCidjOsVLMAVDf2jmV5F", + "tcp:checksum": "XxBl-zO7CF6DpOZ2bMDxJ", + "tcp:segment-structure": "zTCmPUp9j5P1wpGgiboMa", + "tcp:operations:connection": "5sI3RHaLudq4TfpjoYeOp", + "tcp:operations:resource-usage": "LkGI0VpJ3WkpPHkJhJgWk", + "tcp:operations:data-transfer": "5bJUcx3v4dpdlIsx7bFvK", + "tcp:operations:max-segment-scaling": "1l5dhQWYPhUSg-cy5pSlK", + "tcp:operations:window-scaling": "zvBKjceXRSfEe_3MDCEL5", + "tcp:operations:timestamp": "6KAYNPLEFMp6Jha8FLMAU", + "tcp:operations:out-of-band-data": "3OMu3RM-6pMjqY1jAmC2-", + "tcp:operations:selective-acknowledgement": "SPpOO25b7wpajWDIrKi1u", + "tcp:operations:data-transfer:flow-control:error-detection": "vFM311xSa5OqNVove2f6j", + "tcp:operations:data-transfer:flow-control": "lDVD-3i64Mk7-KPJrXmFH", + "tcp:operations:data-transfer:congestion-control": "1GML0Jsfdb1Fn-0PNryiQ", + "tcp:operations:data-transfer:reliable-transmission": "X2KHWgQZDHSVDsTRMUwSj", + "tcp:vulnerability": "MwLWDlciJOq_0n5S3GoF-", + "tcp:vulnerability:denial-of-service": "TbXJO__4xSnzK1fvvJK86", + "tcp:vulnerability:connection-hijacking": "ubRiY3jdh3iS3diN482IU", + "tcp:vulnerability:veto": "ZLTfpRZ0rF-mtd7Z0R2WF", + "udp": "IMyHwnXxJK6oFxzOMLxjS", + "udp:reliability": "Vh81GnOUOZvDOlOyI5PwT", + "udp:datagram": "wD_HWc9YxPhlkilt585pg", + "udp:congestion-control": "jsNsyrGzegVnjIF2l52vI", + "udp:checksum": "tBOvBpDi3SOKZjAmkxdM0", + "udp:packet-structure": "CCxVnrGDKa1EROXgF_OAm", + "tcp-vs-udp": "RfTcTUjaXyp49FnUf44MK", + "tcp-vs-udp:reliable-vs-unreliable": "MoyBGT9bscUe8vMN4J0bG", + "tcp-vs-udp:ordered-vs-not-ordered": "WMdCDmFsytsF2AWQXfzC8", + "tcp-vs-udp:heavyweight-vs-lightweight": "OYXKtl4A-vaK6yGO6hS6n", + "tcp-vs-udp:packet-vs-datagram": "JE3uZ5U6oe6dVzsmglTl2", + "tcp-vs-udp:streaming-vs-broadcast": "pJw8fN1dt3BABtZVz7wGE", + "ip": "tg94V7K0mgYhpkUMp_Scv", + "ip:capability": "5kF1fqr-mn5-15e3aMa9k", + "ip:reliability": "2jDV-ovvrkBbTTLk5VbR9", + "ip:link-capacity": "OzY-LPcfj1sBm_0F0WbIJ", + "ip:functions": "YPvm8XD_FaFYCQ-b7-KsH", + "ip:functions:datagram-construction": "jnQAzUUnwpJgoRuRIFtSe", + "ip:functions:ip-addressing": "3ZcJNDCHw2pFzewmoB-03", + "ip:functions:routing": "bYb7nA-Vn9e6VtdbUT3tq", + "ip:transactions": "r2OeI7YC1BLLfctC8q69W", + "ip:categories": "NH2eQ1_nij1icTgoO027b", + "ip:security": "qkO0s9zR0sAnjTRWcrLQY", + "programming-languages": "6ilqzjvI4J1pUCmTJ33PA", + "programming-languages:javascript": "ufufnULqsglE5VhEIAdSI", + "programming-languages:java": "LG8JPL1po-gEs1V5JyC8F", + "programming-languages:c-cpp": "E4H3hniIW6hKpH3Qr--N5", + "programming-languages:c-sharp": "DuyUc9a-47Uz03yr4aeyg", + "programming-languages:erlang": "QGtGx5LBEWa1DD3Y7ztUy", + "socket-programming": "HvpuFTCknHPhnFkhmhRc4", + "socket-programming:byte-manipulation": "H21PanCggDfQt34-JzgfO", + "socket-programming:address-conversion": "SBA7pa9o0AM0ZEBepd7UM", + "socket-programming:descriptor": "OAyMj6uLSv1yJ87YAjyZu", + "socket-programming:api:bsd-socket": "U_tZFM80W3xJx8jj4skCr", + "socket-programming:api": "a2pcxVTGdAPw8aLvdr19M", + "socket-programming:api:winsock": "GfTXffisLyQgp66zcQ7Py", + "ip:transactions:arp": "JI_wUdT2hjsrvbIhLvHcT", + "ip:transactions:dns": "yNytLrQAMKBw4t73YRL3J", + "ip:transactions:dhcp": "aTHJh-xw8soCxC1bIDdXm", + "ip:categories:ipv4": "pHVB0K8Vtk3ToD6n_f1wv", + "ip:categories:ipv6": "TqBlAMfhARhlJed6xD7eg", + "ip:security:tls": "FX8ASd-QzTUFDHzBB93WK", + "serialization": "TS6dz61rUSxm-SqmK6JKe", + "serialization:json": "y0ZJQQfi8Qx6sB4WnZlP5", + "serialization:xml": "v43K6srds7m5SQFqNaY0T", + "serialization:yaml": "uHcUSVLz_2-Usk6ckSvwr", + "serialization:toml": "l8iEC3g0ICSfmIE1MxcUl", + "serialization:protobuf": "w2zbab_6Gxw6AWS0N759U", + "multithreading": "3QSLUMKD0G08N3MIb1cG7", + "multithreading:fiber": "TVJrlUsg30YIM1yjsZfJI", + "multithreading:sharding": "3use5vuLBJTk40wOg9S-X", + "multithreading:thread-localstorage": "IeD-oQ1bkwlKNC-R0lJjZ", + "multithreading:thread-localstorage:windows": "mW2L_9NckgPRH7g5W9NHq", + "multithreading:thread-localstorage:pthread": "HU0yUyl89WD8WnR9PJn7l", + "programming-techniques:design-patterns": "gB-TYpgUDV47bxznNJhYn", + "programming-techniques:tdd": "FKOhe21PVlaKIoZI4hd49", + "programming-techniques:dependency-injection": "uTlxyDOtvt_Qp0gXLWO-j", + "programming-techniques:dump-analysis": "1c6EqGv1g-d8M1i0vKImb", + "programming-techniques:functional-programming": "HXSWvhgT4L5w6xgOO-3kj", + "programming-techniques": "tGQu18PWDatW7HvkTP-uh", + "multithreading:synchronization:barrier": "6k25amPkU9lnZ7FMNn_T6", + "multithreading:synchronization:spinlock": "lVXfA_oZr82mFfBvLnnRK", + "multithreading:synchronization:condition-variable": "xR6pERldq4wPl9GVLHAhT", + "multithreading:synchronization": "idmrgKgVWVLZYANbXiZnS", + "multithreading:synchronization:mutex": "G_BEJKkJ1_Nc43aosy_iS", + "multithreading:synchronization:mutex:semaphore": "DYvzGc_r0SlOArPPc1gNI", + "multithreading:synchronization:future-promises:coroutine": "o0Y_hM0KXUApfsXG4PvOY", + "multithreading:synchronization:future-promises:channel": "SXOEMkcVYBsRza6BPmmwy", + "multithreading:synchronization:future-promises": "zbIbPlqTNSbJUkqH9iLQv", + "databases": "FLFaGZDg2MSG6_YHnWETM", + "databases:orm": "OyxWMFy8s7Lxko_K89fjo", + "databases:dal": "dt_SmZuwklLimhupvjxC1", + "databases:rdbms:mysql": "HsBqd08Ro0VJnx0FlumMQ", + "databases:rdbms:postgresql": "dAiEwN7phwMyaitvM5kRl", + "databases:rdbms:mssql": "QMNUAKAuRI9lyf2_jUPsj", + "databases:nosql:dynamo-db": "9vc7sFE_XakYXtKRMxLXi", + "databases:nosql:mongodb": "HYxtPW401-J6aYcTuiGnx", + "databases:nosql:cassandra": "1jqSxk1nwByiQa1De81F3", + "databases:nosql:couchbase": "6KTj_giX2k9l2lPd_Fp-d", + "cipher": "1788KFqsQBkYARqA0T5GX", + "cipher:ssl": "PSvPjaVtko71BeIA-hYqf", + "databases:key-value:redis": "7YNaELVcoV7DV1Fa06USi", + "databases:key-value:memcached": "ayeezKxQkXAPJMTShsOBU", + "rpc-rest": "YxaroYL_Az0vKRCeu2jsp", + "rpc-rest:grpc": "_uqTTBUYAzDHbEUkDzmzg", + "rpc-rest:rest": "Oq3GQ5gBUxIl1Qe8NB3LB", + "message-queues:kafka": "gL7hubTh3qiMyUWeAZNwI", + "message-queues:rabbitmq": "UESjGrFyUbNf4pQamaBoy", + "message-queues": "cw7WdFfL5HpeZ_n8wYk2t", + "mutlithreading-2": "_jd91rrAXGbJI9RhXlSx8", + "mutlithreading-2:reactive-approach:oorp": "yWj70LpF4LKB8J6GbYvsq", + "mutlithreading-2:reactive-approach:frp": "xDYOvIbXc-iJ2zOKqe0YL", + "mutlithreading-2:reactive-approach": "LVwGXmZhMewGQy61qwNyu", + "mutlithreading-2:reactive-model": "p0P3ZGq_QTCop0vMwe7P3", + "mutlithreading-2:reactive-model:synchrony": "l5QTk408Ubagw8XzRAfoZ", + "mutlithreading-2:reactive-model:determinism": "zFx1jjt1hKgCpYHFTzbZZ", + "mutlithreading-2:reactive-model:update-process": "3Eat22rFjUl4eTtGz8u4N", + "cloud": "hhtqvFfTCuVPT0OPu4Y1a", + "mutlithreading-2:task-based:goroutine": "f-L_eaZd0EjBW9-n9Pllt", + "mutlithreading-2:task-based:concurrency": "RT9XvlxvIM_hHTtNmbva3", + "mutlithreading-2:task-based:async-await": "mAXMpUDmhGOncnCRrENJv", + "mutlithreading-2:task-based:thread-building-block": "tiG0mZpLJ2zUr2IPYyhnv", + "mutlithreading-2:task-based": "LKPcEeqBOPhQOztD3cM3T", + "mutlithreading-2:asynchronous:proactor:iocp:registered-io": "94hJX1iGifDzIuaU3zU5j", + "mutlithreading-2:asynchronous:proactor:iocp:io-uring": "YH7u1FKh85wz78J0stuzS", + "mutlithreading-2:asynchronous:proactor:iocp": "7pgdOZomhGilBTwfJLMbm", + "mutlithreading-2:asynchronous:proactor": "Tvxe2NemcH21y-eB4bosv", + "mutlithreading-2:asynchronous": "ThBxS9xIMt9OrXfnto3rW", + "mutlithreading-2:asynchronous:reactor": "7mYpgn2gr-5vAYW-UR7_x", + "mutlithreading-2:asynchronous:reactor:select": "5-5toy2CblZPCV9d5QPEo", + "mutlithreading-2:asynchronous:reactor:wsa-poll": "D9Yeyn8phDhB1ohMWccgr", + "mutlithreading-2:asynchronous:reactor:epoll": "qaWv4gxnnj3uX8lEm9KQ4", + "mutlithreading-2:asynchronous:reactor:kqueue": "caK32NMMrn-3BGAXZoPPr", + "mutlithreading-2:actor-model": "KUQEgHldZPOLwFoXqQ2vM", + "mutlithreading-2:actor-model:akka-net": "SsOz9Pj6Jc_55PgpmziL6", + "mutlithreading-2:actor-model:akka": "eAEpEUVZcSKO9uCIlMN5y", + "cloud:azure": "73uoFNGcCALxIuRNbebav", + "cloud:gcp": "wD6dUrS-tP2gpCHPghFp5", + "cloud:aws": "Rkx2A6oWsddlCTseZlpRU", + "cloud:serverless": "DOmbRRK_RRPElOuTB7AAK", + "data-clustering": "XCJvgUSS7-oDR-XGdDY33", + "data-clustering:apache-spark": "yrWiWJMSyTWxDakJbqacu", + "containerization:docker": "zW_7VLeEHQp8fp_f5N__0", + "containerization": "k3FJY26SVxdZx4MLLE25h", + "containerization:docker:docker-compose": "yAf7VDX7dyaT5AdlNnuKD", + "containerization:docker:kubernetes": "lUBUUoETjfADmM4OPtwwX", + "ai": "dkCVwuy8GKeEi3VJar_Zo", + "ai:deep-learning": "jkWvfp4GqckYPQ48GtjlR", + "ai:deep-learning:tensor-flow": "iJE9RnKC8QjPnsFeZAbtl", + "ai:deep-learning:pytorch": "LTSIfq10qDJMTCnIIyqvb", + "ai:cloud-ml": "XvvlvDKfYRCcYtTdWohsd", + "ai:cloud-ml:amazon-ml": "U0RlO_puezQPZP0-iBXgW", + "ai:cloud-ml:azure-ml": "vBqwmlzoT5XVEhV9IeGso" +} \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/server-side-game-developer.json b/src/data/roadmaps/server-side-game-developer/server-side-game-developer.json index 3d5cb6b8b..8a88971d4 100644 --- a/src/data/roadmaps/server-side-game-developer/server-side-game-developer.json +++ b/src/data/roadmaps/server-side-game-developer/server-side-game-developer.json @@ -1,10572 +1,7518 @@ { - "mockup": { - "controls": { - "control": [ - { - "ID": "3697", - "typeID": "Arrow", - "zOrder": "1", - "w": "1", - "h": "104", - "measuredW": "150", - "measuredH": "100", - "x": "654", - "y": "3263", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.3998635160280628, - "y": 104 - }, - "p1": { - "x": 0.4438624012549723, - "y": -0.00008403832147458859 - }, - "p2": { - "x": -0.39986351602811965, - "y": 0.21840009892230228 - } - } - }, - { - "ID": "3698", - "typeID": "Arrow", - "zOrder": "2", - "w": "198", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "426", - "y": "3263", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.5, - "y": 0.21840009892230228 - }, - "p1": { - "x": 0.4438624012549724, - "y": -0.0000840383214745883 - }, - "p2": { - "x": 197.60013648397188, - "y": 0.21840009892230228 - } - } - }, - { - "ID": "3699", - "typeID": "Arrow", - "zOrder": "3", - "w": "304", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "629", - "y": "3262", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 303.3181420669464, - "y": 0 - }, - "p1": { - "x": 0.4438624012549723, - "y": -0.00008403832147459161 - }, - "p2": { - "x": -0.3315520184180514, - "y": 0 - } - } - }, - { - "ID": "3700", - "typeID": "Arrow", - "zOrder": "4", - "w": "1", - "h": "76", - "measuredW": "150", - "measuredH": "100", - "x": "1221", - "y": "3272", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.4513569068005836, - "y": 76.5417125339145 - }, - "p1": { - "x": 0.4438624012549722, - "y": -0.00008403832147458252 - }, - "p2": { - "x": -0.4513569068005836, - "y": 0.49126098040687793 - } - } - }, - { - "ID": "3701", - "typeID": "Arrow", - "zOrder": "5", - "w": "119", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "1029", - "y": "3262", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.3288797498864824, - "y": 1.223219785578749 - }, - "p1": { - "x": 0.4438624012549724, - "y": -0.0000840383214745828 - }, - "p2": { - "x": 118.54864309319942, - "y": 0.49126098040687793 - } - } - }, - { - "ID": "3702", - "typeID": "Arrow", - "zOrder": "6", - "w": "119", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "1029", - "y": "3157", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.3288797498864824, - "y": 1.223219785578749 - }, - "p1": { - "x": 0.4438624012549724, - "y": -0.0000840383214745828 - }, - "p2": { - "x": 118.54864309319942, - "y": 0.49126098040687793 - } - } - }, - { - "ID": "3703", - "typeID": "Arrow", - "zOrder": "7", - "w": "134", - "h": "95", - "measuredW": "150", - "measuredH": "100", - "x": "1013", - "y": "2957", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.3288797498864824, - "y": 0.223219785578749 - }, - "p1": { - "x": 0.4605743877436221, - "y": 0.1408734452891088 - }, - "p2": { - "x": 133.2237422873834, - "y": 95.69045230275606 - } - } - }, - { - "ID": "3704", - "typeID": "Arrow", - "zOrder": "8", - "w": "134", - "h": "95", - "measuredW": "150", - "measuredH": "100", - "x": "997", - "y": "2830", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.1881704452852091, - "y": 95.25087967783338 - }, - "p1": { - "x": 0.49308252005822, - "y": -0.07652602762453595 - }, - "p2": { - "x": 133.60013648397188, - "y": 0.21840009892230228 - } - } - }, - { - "ID": "3705", - "typeID": "Arrow", - "zOrder": "9", - "w": "120", - "h": "53", - "measuredW": "150", - "measuredH": "100", - "x": "1010", - "y": "2880", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.004766380637988732, - "y": 52.574993047081534 - }, - "p1": { - "x": 0.4465354477217628, - "y": -0.07550685511576347 - }, - "p2": { - "x": 120.11069287503665, - "y": -0.15862321150734715 - } - } - }, - { - "ID": "3706", - "typeID": "Arrow", - "zOrder": "10", - "w": "122", - "h": "7", - "measuredW": "150", - "measuredH": "100", - "x": "1003", - "y": "2940", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.3288797498864824, - "y": 7.223219785578749 - }, - "p1": { - "x": 0.4438624012549724, - "y": -0.00008403832147458286 - }, - "p2": { - "x": 121.60013648397188, - "y": 0.21840009892230228 - } - } - }, - { - "ID": "3707", - "typeID": "Arrow", - "zOrder": "11", - "w": "1", - "h": "738", - "measuredW": "150", - "measuredH": "100", - "x": "968", - "y": "2818", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0.20577507445932497 - }, - "p1": { - "x": 0.4438624012549725, - "y": -0.00008403832147459167 - }, - "p2": { - "x": 0, - "y": 738.6460139022329 - } - } - }, - { - "ID": "3708", - "typeID": "Arrow", - "zOrder": "12", - "w": "1", - "h": "120", - "measuredW": "150", - "measuredH": "100", - "x": "455", - "y": "2819", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0.20577507445932497 - }, - "p1": { - "x": 0.44386240125497234, - "y": -0.00008403832147459165 - }, - "p2": { - "x": 0, - "y": 120.09152074044869 - } - } - }, - { - "ID": "3709", - "typeID": "Arrow", - "zOrder": "13", - "w": "69", - "h": "17", - "measuredW": "150", - "measuredH": "100", - "x": "518", - "y": "2919", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.46780832500070346, - "y": 16.504638394781068 - }, - "p1": { - "x": 0.5793581960104075, - "y": -0.11014744145706871 - }, - "p2": { - "x": 68.37885734593476, - "y": 0.39158898243431395 - } - } - }, - { - "ID": "3710", - "typeID": "Arrow", - "zOrder": "14", - "w": "57", - "h": "32", - "measuredW": "150", - "measuredH": "100", - "x": "523", - "y": "2951", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.3914823703980801, - "y": 0.6176878071278225 - }, - "p1": { - "x": 0.44277653439857434, - "y": 0.16511884196937845 - }, - "p2": { - "x": 57.519566650536035, - "y": 31.378963957971337 - } - } - }, - { - "ID": "3715", - "typeID": "Arrow", - "zOrder": "17", - "w": "1", - "h": "396", - "measuredW": "150", - "measuredH": "100", - "x": "327", - "y": "2644", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.3158515046735033, - "y": 395.50704823810884 - }, - "p1": { - "x": 0.44386240125497217, - "y": -0.00008403832147458805 - }, - "p2": { - "x": -0.3158515046735033, - "y": 0.004926298692680575 - } - } - }, - { - "ID": "3722", - "typeID": "Arrow", - "zOrder": "21", - "w": "125", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "246", - "y": "2940", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.0902092067481135, - "y": 0.21840009892230228 - }, - "p1": { - "x": 0.44386240125497234, - "y": -0.00008403832147458827 - }, - "p2": { - "x": 124.60013648397188, - "y": 0.21840009892230228 - } - } - }, - { - "ID": "3737", - "typeID": "Arrow", - "zOrder": "29", - "w": "1", - "h": "182", - "measuredW": "150", - "measuredH": "100", - "x": "191", - "y": "2833", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.3158515046735033, - "y": 181.2184000989223 - }, - "p1": { - "x": 0.4438624012549722, - "y": -0.00008403832147458817 - }, - "p2": { - "x": -0.3158515046735033, - "y": -0.34443711948233613 - } - } - }, - { - "ID": "3740", - "typeID": "Arrow", - "zOrder": "31", - "w": "1", - "h": "483", - "measuredW": "150", - "measuredH": "100", - "x": "421", - "y": "2445", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.44386240125497245, - "y": -0.00008403832147459167 - }, - "p2": { - "x": 0, - "y": 483.18052502553246 - } - } - }, - { - "ID": "3741", - "typeID": "Arrow", - "zOrder": "32", - "w": "1", - "h": "290", - "measuredW": "150", - "measuredH": "100", - "x": "455", - "y": "2444", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.4438624012549724, - "y": -0.00008403832147459167 - }, - "p2": { - "x": 0, - "y": 290.0915207404487 - } - } - }, - { - "ID": "3742", - "typeID": "Arrow", - "zOrder": "33", - "w": "80", - "h": "19", - "measuredW": "150", - "measuredH": "100", - "x": "530", - "y": "2440", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.26580793358823485, - "y": 0.3945746335853073 - }, - "p1": { - "x": 0.5278457059192934, - "y": 0.08797337450983438 - }, - "p2": { - "x": 80.36864216479955, - "y": 19.295101569663984 - } - } - }, - { - "ID": "3743", - "typeID": "Arrow", - "zOrder": "34", - "w": "80", - "h": "20", - "measuredW": "150", - "measuredH": "100", - "x": "530", - "y": "2403", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.26580793358823485, - "y": 15.42223452583994 - }, - "p1": { - "x": 0.3861716448730038, - "y": -0.11529813886095087 - }, - "p2": { - "x": 80.36864216479955, - "y": 0.29510156966398426 - } - } - }, - { - "ID": "3744", - "typeID": "Arrow", - "zOrder": "35", - "w": "1", - "h": "111", - "measuredW": "150", - "measuredH": "100", - "x": "595", - "y": "2628", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.5, - "y": 111.29510156966398 - }, - "p1": { - "x": 0.44386240125497217, - "y": -0.00008403832147459117 - }, - "p2": { - "x": -0.5, - "y": -0.10812311365407368 - } - } - }, - { - "ID": "3745", - "typeID": "Arrow", - "zOrder": "36", - "w": "121", - "h": "77", - "measuredW": "150", - "measuredH": "100", - "x": "887", - "y": "2318", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 120.56298935443715, - "y": 0 - }, - "p1": { - "x": 0.47121626522371307, - "y": -0.14568179573641857 - }, - "p2": { - "x": -0.04987098401204548, - "y": 76.98507174424503 - } - } - }, - { - "ID": "3746", - "typeID": "Arrow", - "zOrder": "37", - "w": "83", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "1239", - "y": "2656", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 83.56298935443715, - "y": 0 - }, - "p1": { - "x": 0.44386240125497234, - "y": -0.0000840383214745917 - }, - "p2": { - "x": 0.13377730956335654, - "y": 0 - } - } - }, - { - "ID": "3747", - "typeID": "Arrow", - "zOrder": "38", - "w": "121", - "h": "156", - "measuredW": "150", - "measuredH": "100", - "x": "1063", - "y": "2416", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 121.53255369021213, - "y": 155.63047426858293 - }, - "p1": { - "x": 0.5637674628210914, - "y": -0.12663361874718426 - }, - "p2": { - "x": 0.4306756687176403, - "y": -0.28819368409085655 - } - } - }, - { - "ID": "3748", - "typeID": "Arrow", - "zOrder": "39", - "w": "105", - "h": "48", - "measuredW": "150", - "measuredH": "100", - "x": "1086", - "y": "2413", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 105.56298935443715, - "y": 48 - }, - "p1": { - "x": 0.42893560297283234, - "y": -0.1324860682349415 - }, - "p2": { - "x": 0.1372777977478563, - "y": -0.3157406346285825 - } - } - }, - { - "ID": "3749", - "typeID": "Arrow", - "zOrder": "40", - "w": "106", - "measuredW": "150", - "measuredH": "100", - "x": "1079", - "y": "2416", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 105.53255369021213, - "y": 99.62085568364182 - }, - "p1": { - "x": 0.5012106943431768, - "y": -0.13929419564160406 - }, - "p2": { - "x": -0.43158957859554903, - "y": -0.28819368409085655 - } - } - }, - { - "ID": "3750", - "typeID": "Arrow", - "zOrder": "41", - "w": "118", - "h": "3", - "measuredW": "150", - "measuredH": "100", - "x": "1086", - "y": "2402", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 118.56298935443715, - "y": 3 - }, - "p1": { - "x": 0.44386240125497234, - "y": -0.00008403832147459454 - }, - "p2": { - "x": 0.1372777977478563, - "y": 0.08784503849074099 - } - } - }, - { - "ID": "3751", - "typeID": "Arrow", - "zOrder": "42", - "w": "1", - "h": "358", - "measuredW": "150", - "measuredH": "100", - "x": "1062", - "y": "2149", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.5, - "y": 358.295101569664 - }, - "p1": { - "x": 0.44386240125497217, - "y": -0.00008403832147459114 - }, - "p2": { - "x": -0.5, - "y": 0.28767466862154834 - } - } - }, - { - "ID": "3752", - "typeID": "Arrow", - "zOrder": "43", - "w": "118", - "h": "44", - "measuredW": "150", - "measuredH": "100", - "x": "1084", - "y": "2160", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 118.56298935443715, - "y": 44 - }, - "p1": { - "x": 0.47121626522371307, - "y": -0.1456817957364185 - }, - "p2": { - "x": 0.2282952147127162, - "y": 2.447857492994899 - } - } - }, - { - "ID": "3753", - "typeID": "Arrow", - "zOrder": "44", - "w": "111", - "h": "50", - "measuredW": "150", - "measuredH": "100", - "x": "1093", - "y": "2091", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 110.73367587076177, - "y": 0.45456205375830905 - }, - "p1": { - "x": 0.5037403745240178, - "y": 0.10492492495154662 - }, - "p2": { - "x": -0.48915365070956796, - "y": 50.14986886122415 - } - } - }, - { - "ID": "3754", - "typeID": "Arrow", - "zOrder": "45", - "w": "120", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "1084", - "y": "2148", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 120.56298935443715, - "y": 0 - }, - "p1": { - "x": 0.4438624012549723, - "y": -0.00008403832147459171 - }, - "p2": { - "x": 0.2282952147127162, - "y": 0 - } - } - }, - { - "ID": "3755", - "typeID": "Arrow", - "zOrder": "46", - "w": "782", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "580", - "y": "2304", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 782.3961277418114, - "y": 0 - }, - "p1": { - "x": 0.4438624012549723, - "y": -0.00008403832147459163 - }, - "p2": { - "x": 0.25448923561577885, - "y": 0 - } - } - }, - { - "ID": "3756", - "typeID": "Arrow", - "zOrder": "47", - "w": "86", - "h": "41", - "measuredW": "150", - "measuredH": "100", - "x": "328", - "y": "2252", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 85.66930318634473, - "y": 40.90985194716768 - }, - "p1": { - "x": 0.500943658722096, - "y": 0.13752886064943207 - }, - "p2": { - "x": -0.3158515046735033, - "y": -0.39176392982790276 - } - } - }, - { - "ID": "3757", - "typeID": "Arrow", - "zOrder": "48", - "w": "96", - "h": "85", - "measuredW": "150", - "measuredH": "100", - "x": "327", - "y": "2197", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 95.53364539748065, - "y": 84.09072899898638 - }, - "p1": { - "x": 0.41373730244684637, - "y": 0.19512115638640418 - }, - "p2": { - "x": -0.3158515046735033, - "y": -0.39176392982790276 - } - } - }, - { - "ID": "3758", - "typeID": "Arrow", - "zOrder": "49", - "w": "108", - "h": "151", - "measuredW": "150", - "measuredH": "100", - "x": "331", - "y": "2135", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 107.78493945122995, - "y": 150.52290010455454 - }, - "p1": { - "x": 0.41005529513603317, - "y": 0.12373818481375697 - }, - "p2": { - "x": -0.06455745092421239, - "y": -0.17091748475650093 - } - } - }, - { - "ID": "3759", - "typeID": "Arrow", - "zOrder": "50", - "w": "137", - "h": "202", - "measuredW": "150", - "measuredH": "100", - "x": "329", - "y": "2083", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 137.85535645316048, - "y": 202.52290010455454 - }, - "p1": { - "x": 0.4143829049095589, - "y": 0.10267659628073787 - }, - "p2": { - "x": 0.4580521805531248, - "y": 0.12041961695013015 - } - } - }, - { - "ID": "3760", - "typeID": "Arrow", - "zOrder": "51", - "w": "92", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "315", - "y": "2305", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 92.07627655293686, - "y": -0.39176392982790276 - }, - "p1": { - "x": 0.4438624012549723, - "y": -0.00008403832147458795 - }, - "p2": { - "x": -0.3158515046735033, - "y": -0.39176392982790276 - } - } - }, - { - "ID": "3761", - "typeID": "Arrow", - "zOrder": "52", - "w": "94", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "562", - "y": "1912", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 93.89220477541858, - "y": 0 - }, - "p1": { - "x": 0.44386240125497206, - "y": -0.00008403832147458896 - }, - "p2": { - "x": -0.337838768126403, - "y": 0 - } - } - }, - { - "ID": "3762", - "typeID": "Arrow", - "zOrder": "53", - "w": "198", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "307", - "y": "1911", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 197.89220477541858, - "y": 1 - }, - "p1": { - "x": 0.44386240125497217, - "y": -0.00008403832147458896 - }, - "p2": { - "x": 0.0013944911901830892, - "y": -0.3917639298276754 - } - } - }, - { - "ID": "3763", - "typeID": "Arrow", - "zOrder": "54", - "w": "72", - "h": "45", - "measuredW": "150", - "measuredH": "100", - "x": "785", - "y": "2155", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 72.11704309839502, - "y": 44.95025831186922 - }, - "p1": { - "x": 0.41841699551470907, - "y": -0.11902322903648196 - }, - "p2": { - "x": 0.12114085046107448, - "y": 0.12262106315574783 - } - } - }, - { - "ID": "3764", - "typeID": "Arrow", - "zOrder": "55", - "w": "78", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "791", - "y": "2145", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 77.56298935443715, - "y": 0 - }, - "p1": { - "x": 0.4438624012549723, - "y": -0.00008403832147459171 - }, - "p2": { - "x": -0.5, - "y": 0 - } - } - }, - { - "ID": "3771", - "typeID": "Arrow", - "zOrder": "59", - "w": "78", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "791", - "y": "2050", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 77.56298935443715, - "y": 0 - }, - "p1": { - "x": 0.4438624012549723, - "y": -0.00008403832147459171 - }, - "p2": { - "x": -0.5, - "y": 0 - } - } - }, - { - "ID": "3782", - "typeID": "Arrow", - "zOrder": "65", - "w": "96", - "h": "47", - "measuredW": "150", - "measuredH": "100", - "x": "542", - "y": "1744", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 96.41250985467104, - "y": 46.76486219803746 - }, - "p1": { - "x": 0.37769243613291037, - "y": -0.1648021372516285 - }, - "p2": { - "x": -0.0348308925612173, - "y": 0.2026129499477065 - } - } - }, - { - "ID": "3783", - "typeID": "Arrow", - "zOrder": "66", - "w": "91", - "h": "45", - "measuredW": "150", - "measuredH": "100", - "x": "550", - "y": "1678", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 91.12933635459308, - "y": 0.016562451272875478 - }, - "p1": { - "x": 0.4865402995652062, - "y": 0.18128439939384913 - }, - "p2": { - "x": 0.11564860720488923, - "y": 43.10958770061029 - } - } - }, - { - "ID": "3784", - "typeID": "Arrow", - "zOrder": "67", - "w": "78", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "569", - "y": "1735", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 77.56298935443715, - "y": 0 - }, - "p1": { - "x": 0.4438624012549723, - "y": -0.00008403832147459171 - }, - "p2": { - "x": -0.5, - "y": 0 - } - } - }, - { - "ID": "3785", - "typeID": "Arrow", - "zOrder": "68", - "w": "665", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "501", - "y": "1599", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 665.2844159686654, - "y": 0 - }, - "p1": { - "x": 0.4438624012549723, - "y": -0.00008403832147459164 - }, - "p2": { - "x": 0.25448923561577885, - "y": 0 - } - } - }, - { - "ID": "3786", - "typeID": "Arrow", - "zOrder": "69", - "w": "1", - "h": "84", - "measuredW": "150", - "measuredH": "100", - "x": "1293", - "y": "1608", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.25689465937102796, - "y": 83.83704029986916 - }, - "p1": { - "x": 0.44386240125497234, - "y": -0.00008403832147466577 - }, - "p2": { - "x": 0.25689465937102796, - "y": 0.2839543487633591 - } - } - }, - { - "ID": "3790", - "typeID": "Arrow", - "zOrder": "72", - "w": "1", - "h": "188", - "measuredW": "150", - "measuredH": "100", - "x": "1294", - "y": "1411", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.4438624012549725, - "y": -0.00008403832147459165 - }, - "p2": { - "x": 0, - "y": 187.7783753239521 - } - } - }, - { - "ID": "3791", - "typeID": "Arrow", - "zOrder": "73", - "w": "1", - "h": "116", - "measuredW": "150", - "measuredH": "100", - "x": "1296", - "y": "1290", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.25689465937102796, - "y": 116.5588378327136 - }, - "p1": { - "x": 0.4438624012549724, - "y": -0.00008403832147466621 - }, - "p2": { - "x": 0.25689465937102796, - "y": 0.2839543487633591 - } - } - }, - { - "ID": "3792", - "typeID": "Arrow", - "zOrder": "74", - "w": "1", - "h": "83", - "measuredW": "150", - "measuredH": "100", - "x": "1263", - "y": "1425", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": -0.1345395490732244 - }, - "p1": { - "x": 0.44386240125497245, - "y": -0.00008403832147459165 - }, - "p2": { - "x": 0, - "y": 83.00803817531164 - } - } - }, - { - "ID": "3793", - "typeID": "Arrow", - "zOrder": "75", - "w": "1", - "h": "218", - "measuredW": "150", - "measuredH": "100", - "x": "574", - "y": "1290", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.44386240125497245, - "y": -0.00008403832147459165 - }, - "p2": { - "x": 0, - "y": 218.00803817531164 - } - } - }, - { - "ID": "3794", - "typeID": "Arrow", - "zOrder": "76", - "w": "227", - "h": "386", - "measuredW": "150", - "measuredH": "100", - "x": "317", - "y": "1294", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 226.09647100699135, - "y": -0.3320016462678268 - }, - "p1": { - "x": 0.4395771553572771, - "y": -0.08966881744206251 - }, - "p2": { - "x": -0.5, - "y": 386 - } - } - }, - { - "ID": "3795", - "typeID": "Arrow", - "zOrder": "77", - "w": "212", - "h": "294", - "measuredW": "150", - "measuredH": "100", - "x": "316", - "y": "1286", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 211.84095215848038, - "y": 0.040238929476572594 - }, - "p1": { - "x": 0.4380698289987812, - "y": -0.08068988697953883 - }, - "p2": { - "x": -0.21075983582244362, - "y": 294.47175270573894 - } - } - }, - { - "ID": "3796", - "typeID": "Arrow", - "zOrder": "78", - "w": "186", - "h": "185", - "measuredW": "150", - "measuredH": "100", - "x": "320", - "y": "1291", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 186.48322577056496, - "y": -0.38310541597002157 - }, - "p1": { - "x": 0.45590994371482163, - "y": -0.08630393996247669 - }, - "p2": { - "x": 0.36589581873084853, - "y": 184.2086726510131 - } - } - }, - { - "ID": "3797", - "typeID": "Arrow", - "zOrder": "79", - "w": "118", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "315", - "y": "1277", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 117.89220477541858, - "y": 0 - }, - "p1": { - "x": 0.44386240125497234, - "y": -0.0000840383214745917 - }, - "p2": { - "x": -0.5, - "y": 0 - } - } - }, - { - "ID": "3798", - "typeID": "Arrow", - "zOrder": "80", - "w": "98", - "h": "45", - "measuredW": "150", - "measuredH": "100", - "x": "316", - "y": "1219", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 97.4245607946479, - "y": 44.156960656710226 - }, - "p1": { - "x": 0.4324812244734664, - "y": 0.12619913264492683 - }, - "p2": { - "x": -0.21075983582244362, - "y": -0.0840440039717123 - } - } - }, - { - "ID": "3799", - "typeID": "Arrow", - "zOrder": "81", - "w": "117", - "h": "93", - "measuredW": "150", - "measuredH": "100", - "x": "316", - "y": "1166", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 117.25673529771217, - "y": 92.58030500215682 - }, - "p1": { - "x": 0.44347842881508887, - "y": 0.10776507879035985 - }, - "p2": { - "x": -0.21075983582244362, - "y": -0.4783599737602344 - } - } - }, - { - "ID": "3800", - "typeID": "Arrow", - "zOrder": "82", - "w": "145", - "h": "150", - "measuredW": "150", - "measuredH": "100", - "x": "317", - "y": "1109", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 145.24222110988308, - "y": 149.58030500215682 - }, - "p1": { - "x": 0.4659812116631927, - "y": 0.1003288191202847 - }, - "p2": { - "x": 0.31479204902865376, - "y": 0.07622028674927606 - } - } - }, - { - "ID": "3807", - "typeID": "Arrow", - "zOrder": "86", - "w": "1", - "h": "204", - "measuredW": "150", - "measuredH": "100", - "x": "855", - "y": "1192", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.25689465937091427, - "y": 203.69724823368188 - }, - "p1": { - "x": 0.4438624012549724, - "y": -0.00008403832147459163 - }, - "p2": { - "x": 0.25689465937091427, - "y": -0.15337575277499127 - } - } - }, - { - "ID": "3808", - "typeID": "Arrow", - "zOrder": "87", - "w": "191", - "h": "291", - "measuredW": "150", - "measuredH": "100", - "x": "943", - "y": "992", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.02379596089883762, - "y": 291.130738766469 - }, - "p1": { - "x": 0.391284366953843, - "y": -0.20347946562546068 - }, - "p2": { - "x": 190.7599581747637, - "y": 0 - } - } - }, - { - "ID": "3809", - "typeID": "Arrow", - "zOrder": "88", - "w": "1", - "h": "84", - "measuredW": "150", - "measuredH": "100", - "x": "1232", - "y": "889", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.25689465937091427, - "y": 84.69724823368188 - }, - "p1": { - "x": 0.4438624012549724, - "y": -0.00008403832147459144 - }, - "p2": { - "x": 0.25689465937102796, - "y": 0.2839543487633591 - } - } - }, - { - "ID": "3810", - "typeID": "Arrow", - "zOrder": "89", - "w": "200", - "h": "225", - "measuredW": "150", - "measuredH": "100", - "x": "939", - "y": "739", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 199.10678263508953, - "y": 225.37250016298015 - }, - "p1": { - "x": 0.48624417241666074, - "y": -0.24026011966692973 - }, - "p2": { - "x": -0.2400418252362897, - "y": 0 - } - } - }, - { - "ID": "3811", - "typeID": "Arrow", - "zOrder": "90", - "w": "1", - "h": "110", - "measuredW": "150", - "measuredH": "100", - "x": "861", - "y": "740", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.25689465937091427, - "y": 110.69724823368188 - }, - "p1": { - "x": 0.4438624012549723, - "y": -0.00008403832147459171 - }, - "p2": { - "x": 0.25689465937091427, - "y": 0.2729161539513143 - } - } - }, - { - "ID": "3812", - "typeID": "Arrow", - "zOrder": "91", - "w": "127", - "h": "25", - "measuredW": "150", - "measuredH": "100", - "x": "635", - "y": "745", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 127.36514136643882, - "y": 1.1622138648702958 - }, - "p1": { - "x": 0.5189223328370163, - "y": -0.07415184285543132 - }, - "p2": { - "x": 0.25689465937091427, - "y": 25 - } - } - }, - { - "ID": "3813", - "typeID": "Arrow", - "zOrder": "92", - "w": "136", - "h": "23", - "measuredW": "150", - "measuredH": "100", - "x": "635", - "y": "709", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 136.19908793281718, - "y": 22.438969587572842 - }, - "p1": { - "x": 0.45684079135455363, - "y": 0.0537462843005 - }, - "p2": { - "x": 0.25689465937091427, - "y": 0 - } - } - }, - { - "ID": "3814", - "typeID": "Arrow", - "zOrder": "93", - "w": "130", - "h": "69", - "measuredW": "150", - "measuredH": "100", - "x": "639", - "y": "652", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 130.72676350508743, - "y": 69.13269859346474 - }, - "p1": { - "x": 0.4613284413495615, - "y": 0.1090289051526259 - }, - "p2": { - "x": 0.25689465937091427, - "y": 0 - } - } - }, - { - "ID": "3831", - "typeID": "Arrow", - "zOrder": "102", - "w": "111", - "h": "46", - "measuredW": "150", - "measuredH": "100", - "x": "328", - "y": "921", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 110.89220477541858, - "y": 0 - }, - "p1": { - "x": 0.5503615520865505, - "y": -0.11056995793209477 - }, - "p2": { - "x": -0.5, - "y": 46 - } - } - }, - { - "ID": "3832", - "typeID": "Arrow", - "zOrder": "103", - "w": "118", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "325", - "y": "911", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 117.89220477541858, - "y": 0 - }, - "p1": { - "x": 0.44386240125497234, - "y": -0.0000840383214745917 - }, - "p2": { - "x": -0.5, - "y": 0 - } - } - }, - { - "ID": "3833", - "typeID": "Arrow", - "zOrder": "104", - "w": "110", - "h": "50", - "measuredW": "150", - "measuredH": "100", - "x": "328", - "y": "849", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 109.5, - "y": 50 - }, - "p1": { - "x": 0.4997781798834965, - "y": 0.09863467964741622 - }, - "p2": { - "x": -0.5, - "y": 0 - } - } - }, - { - "ID": "3839", - "typeID": "Arrow", - "zOrder": "108", - "w": "238", - "h": "218", - "measuredW": "150", - "measuredH": "100", - "x": "931", - "y": "507", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 238, - "y": 0 - }, - "p1": { - "x": 0.4830716337108562, - "y": 0.27447343734126733 - }, - "p2": { - "x": 0.2452005390608747, - "y": 217.38361844303233 - } - } - }, - { - "ID": "3840", - "typeID": "Arrow", - "zOrder": "109", - "w": "331", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "192", - "y": "501", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 330.8922047754186, - "y": 0 - }, - "p1": { - "x": 0.4438624012549723, - "y": -0.0000840383214745917 - }, - "p2": { - "x": 0.25689465937091427, - "y": 0 - }, - "stroke": "dotted" - } - }, - { - "ID": "3841", - "typeID": "Label", - "zOrder": "110", - "measuredW": "247", - "measuredH": "40", - "x": "680", - "y": "324", - "properties": { - "size": "32", - "text": "Game Developer" - } - }, - { - "ID": "3842", - "typeID": "__group__", - "zOrder": "111", - "measuredW": "373", - "measuredH": "151", - "w": "373", - "h": "151", - "x": "1069", - "y": "216", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "373", - "h": "151", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "333", - "measuredH": "26", - "x": "18", - "y": "19", - "properties": { - "text": "Find the detailed version of this roadmap", - "size": "18" - } - }, - { - "ID": "3", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "339", - "measuredH": "47", - "w": "339", - "h": "47", - "x": "18", - "y": "88", - "properties": { - "controlName": "ext_link:roadmap.sh" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "339", - "h": "47", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "borderColor": "4273622", - "color": "4273622" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "155", - "measuredH": "26", - "x": "92", - "y": "11", - "properties": { - "color": "16777215", - "text": "https://roadmap.sh", - "size": "18" - } - } - ] - } - } - }, - { - "ID": "5", - "typeID": "Label", - "zOrder": "3", - "measuredW": "337", - "measuredH": "26", - "x": "18", - "y": "48", - "properties": { - "size": "18", - "text": "Along with resources and more roadmaps" - } - } - ] - } - } - }, - { - "ID": "3843", - "typeID": "Arrow", - "zOrder": "112", - "w": "1", - "h": "74", - "measuredW": "150", - "measuredH": "100", - "x": "805", - "y": "233", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.4438624012549725, - "y": -0.00008403832147459165 - }, - "p2": { - "x": 0, - "y": 74.15918378573792 - }, - "stroke": "dotted" - } - }, - { - "ID": "3844", - "typeID": "Arrow", - "zOrder": "113", - "w": "1", - "h": "115", - "measuredW": "150", - "measuredH": "100", - "x": "805", - "y": "385", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.44386240125497245, - "y": -0.00008403832147459165 - }, - "p2": { - "x": 0, - "y": 114.87761494930675 - } - } - }, - { - "ID": "3845", - "typeID": "__group__", - "zOrder": "114", - "measuredW": "394", - "measuredH": "198", - "w": "394", - "h": "198", - "x": "131", - "y": "211", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "394", - "h": "198", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "5", - "typeID": "Label", - "zOrder": "1", - "measuredW": "338", - "measuredH": "26", - "x": "26", - "y": "72", - "properties": { - "size": "18", - "text": "Original roadmap was made by Chris Ohk." - } - }, - { - "ID": "7", - "typeID": "Label", - "zOrder": "2", - "measuredW": "308", - "measuredH": "26", - "x": "26", - "y": "102", - "properties": { - "size": "18", - "text": "You can find him using the links below:" - } - }, - { - "ID": "11", - "typeID": "Label", - "zOrder": "3", - "measuredW": "169", - "measuredH": "32", - "x": "26", - "y": "29", - "properties": { - "size": "24", - "text": "Special Thanks!" - } - }, - { - "ID": "16", - "typeID": "Label", - "zOrder": "5", - "measuredW": "13", - "measuredH": "26", - "x": "148", - "y": "144", - "properties": { - "size": "18", - "text": "+" - } - }, - { - "ID": "18", - "typeID": "__group__", - "zOrder": "4", - "measuredW": "113", - "measuredH": "26", - "w": "113", - "h": "26", - "x": "26", - "y": "144", - "properties": { - "controlName": "ext_link:github.com/utilForever" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Label", - "zOrder": "0", - "measuredW": "113", - "measuredH": "26", - "x": "0", - "y": "0", - "properties": { - "size": "18", - "text": "GitHub Profile", - "color": "10027263" - } - } - ] - } - } - }, - { - "ID": "19", - "typeID": "__group__", - "zOrder": "6", - "measuredW": "110", - "measuredH": "26", - "w": "110", - "h": "26", - "x": "176", - "y": "144", - "properties": { - "controlName": "ext_link:twitter.com/utilForever" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Label", - "zOrder": "0", - "measuredW": "110", - "measuredH": "26", - "x": "0", - "y": "0", - "properties": { - "size": "18", - "text": "Twitter Profile", - "color": "10027263" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "3846", - "typeID": "Arrow", - "zOrder": "115", - "w": "101", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "754", - "y": "204", - "properties": { - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "16777215", - "p0": { - "x": 100.57841492806233, - "y": 0.15918378573792324 - }, - "p1": { - "x": 0.4438624012549726, - "y": -0.00008403832147459165 - }, - "p2": { - "x": 0, - "y": 0.15918378573792324 - } - } - }, - { - "ID": "3847", - "typeID": "Arrow", - "zOrder": "116", - "w": "594", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "539", - "y": "502", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 594.0697673807772, - "y": 0 - }, - "p1": { - "x": 0.4438624012549723, - "y": -0.00008403832147459167 - }, - "p2": { - "x": 0.25689465937091427, - "y": 0 - } - } - }, - { - "ID": "3848", - "typeID": "__group__", - "zOrder": "117", - "measuredW": "375", - "measuredH": "54", - "w": "375", - "h": "54", - "x": "1068", - "y": "387", - "properties": { - "controlName": "100-roadmap-note" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "375", - "h": "54", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "224", - "measuredH": "26", - "x": "50", - "y": "14", - "properties": { - "size": "18", - "text": "Important Note / Click here" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "18", - "y": "18", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "13576743" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "3849", - "typeID": "__group__", - "zOrder": "118", - "measuredW": "305", - "measuredH": "50", - "w": "305", - "h": "50", - "x": "341", - "y": "477", - "properties": { - "controlName": "ext_link:roadmap.sh/game-developer" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "305", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "84", - "measuredH": "25", - "x": "114", - "y": "13", - "properties": { - "size": "17", - "text": "Client Side" - } - } - ] - } - } - }, - { - "ID": "3850", - "typeID": "Label", - "zOrder": "119", - "measuredW": "303", - "measuredH": "25", - "x": "339", - "y": "540", - "properties": { - "size": "17", - "text": "Click to navigate to client side roadmap" - } - }, - { - "ID": "3851", - "typeID": "__group__", - "zOrder": "120", - "measuredW": "204", - "measuredH": "50", - "w": "204", - "h": "50", - "x": "1068", - "y": "478", - "properties": { - "controlName": "100-server-side" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "204", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "90", - "measuredH": "25", - "x": "57", - "y": "13", - "properties": { - "size": "17", - "text": "Server Side" - } - } - ] - } - } - }, - { - "ID": "3893", - "typeID": "Arrow", - "zOrder": "141", - "w": "270", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "508", - "y": "1281", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 270.0697673807772, - "y": 0 - }, - "p1": { - "x": 0.4438624012549724, - "y": -0.0000840383214745917 - }, - "p2": { - "x": 0.008777655416054131, - "y": 0 - } - } - }, - { - "ID": "3924", - "typeID": "Arrow", - "zOrder": "157", - "w": "688", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "575", - "y": "1507", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 687.3941847142846, - "y": 0 - }, - "p1": { - "x": 0.4438624012549723, - "y": -0.00008403832147459165 - }, - "p2": { - "x": -0.1520948599053895, - "y": 0 - } - } - }, - { - "ID": "3948", - "typeID": "Arrow", - "zOrder": "169", - "w": "1", - "h": "206", - "measuredW": "150", - "measuredH": "100", - "x": "945", - "y": "1583", - "properties": { - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 206.01221488520832 - }, - "p1": { - "x": 0.4438624012549725, - "y": -0.00008403832147455508 - }, - "p2": { - "x": 0, - "y": 0.11860965287360159 - } - } - }, - { - "ID": "3949", - "typeID": "Arrow", - "zOrder": "170", - "w": "1", - "h": "27", - "measuredW": "150", - "measuredH": "100", - "x": "949", - "y": "1583", - "properties": { - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 27.012214885208323 - }, - "p1": { - "x": 0.44386240125497256, - "y": -0.0000840383214745551 - }, - "p2": { - "x": 0, - "y": -0.3404268200670231 - } - } - }, - { - "ID": "3950", - "typeID": "Arrow", - "zOrder": "171", - "w": "1", - "h": "27", - "measuredW": "150", - "measuredH": "100", - "x": "953", - "y": "1583", - "properties": { - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 27.012214885208323 - }, - "p1": { - "x": 0.44386240125497256, - "y": -0.0000840383214745551 - }, - "p2": { - "x": 0, - "y": -0.3404268200670231 - } - } - }, - { - "ID": "3951", - "typeID": "Label", - "zOrder": "172", - "measuredW": "141", - "measuredH": "28", - "x": "978", - "y": "1693", - "properties": { - "size": "20", - "text": "Getting Deeper" - } - }, - { - "ID": "3952", - "typeID": "Arrow", - "zOrder": "173", - "w": "1", - "h": "707", - "measuredW": "150", - "measuredH": "100", - "x": "501", - "y": "1599", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.44386240125497256, - "y": -0.00008403832147459164 - }, - "p2": { - "x": 0, - "y": 707.2063652638717 - } - } - }, - { - "ID": "4017", - "typeID": "Arrow", - "zOrder": "206", - "w": "1", - "h": "431", - "measuredW": "150", - "measuredH": "100", - "x": "1362", - "y": "2303", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.4438624012549725, - "y": -0.00008403832147459165 - }, - "p2": { - "x": 0, - "y": 430.87489633523455 - } - } - }, - { - "ID": "4022", - "typeID": "Arrow", - "zOrder": "209", - "w": "907", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "456", - "y": "2733", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 906.3961277418114, - "y": 0 - }, - "p1": { - "x": 0.44386240125497234, - "y": -0.00008403832147459163 - }, - "p2": { - "x": -0.44014843274607074, - "y": 0 - } - } - }, - { - "ID": "4027", - "typeID": "Arrow", - "zOrder": "212", - "w": "1", - "h": "206", - "measuredW": "150", - "measuredH": "100", - "x": "761", - "y": "2540", - "properties": { - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 206.01221488520832 - }, - "p1": { - "x": 0.4438624012549725, - "y": -0.00008403832147455508 - }, - "p2": { - "x": 0, - "y": 0.11860965287360159 - } - } - }, - { - "ID": "4028", - "typeID": "Arrow", - "zOrder": "213", - "w": "1", - "h": "27", - "measuredW": "150", - "measuredH": "100", - "x": "765", - "y": "2718", - "properties": { - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 27.012214885208323 - }, - "p1": { - "x": 0.44386240125497256, - "y": -0.0000840383214745551 - }, - "p2": { - "x": 0, - "y": -0.3404268200670231 - } - } - }, - { - "ID": "4029", - "typeID": "Arrow", - "zOrder": "214", - "w": "1", - "h": "27", - "measuredW": "150", - "measuredH": "100", - "x": "769", - "y": "2718", - "properties": { - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 27.012214885208323 - }, - "p1": { - "x": 0.44386240125497256, - "y": -0.0000840383214745551 - }, - "p2": { - "x": 0, - "y": -0.3404268200670231 - } - } - }, - { - "ID": "4030", - "typeID": "Label", - "zOrder": "215", - "measuredW": "179", - "measuredH": "28", - "x": "783", - "y": "2616", - "properties": { - "size": "20", - "text": "Maximise your Skills" - } - }, - { - "ID": "4069", - "typeID": "Arrow", - "zOrder": "235", - "w": "511", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "455", - "y": "2817", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 510.3181420669464, - "y": 0 - }, - "p1": { - "x": 0.4438624012549723, - "y": -0.00008403832147459163 - }, - "p2": { - "x": -0.44014843274607074, - "y": 0 - } - } - }, - { - "ID": "4104", - "typeID": "Arrow", - "zOrder": "253", - "w": "306", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "661", - "y": "3561", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 306.3181420669464, - "y": 0 - }, - "p1": { - "x": 0.44386240125497217, - "y": -0.00008403832147459163 - }, - "p2": { - "x": 0.0807426500193742, - "y": 0 - } - } - }, - { - "ID": "4105", - "typeID": "Arrow", - "zOrder": "254", - "w": "1", - "h": "107", - "measuredW": "150", - "measuredH": "100", - "x": "661", - "y": "3562", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0.20577507445932497 - }, - "p1": { - "x": 0.4438624012549724, - "y": -0.00008403832147459167 - }, - "p2": { - "x": 0, - "y": 106.8764086870865 - } - } - }, - { - "ID": "4106", - "typeID": "Label", - "zOrder": "255", - "measuredW": "161", - "measuredH": "32", - "x": "583", - "y": "3685", - "properties": { - "size": "24", - "text": "Keep Learning" - } - }, - { - "ID": "4107", - "typeID": "Arrow", - "zOrder": "256", - "w": "1", - "h": "77", - "measuredW": "150", - "measuredH": "100", - "x": "661", - "y": "3733", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0.20577507445932497 - }, - "p1": { - "x": 0.4438624012549724, - "y": -0.00008403832147459167 - }, - "p2": { - "x": 0, - "y": 77.12930368014167 - }, - "stroke": "dotted" - } - }, - { - "ID": "4108", - "typeID": "__group__", - "zOrder": "121", - "measuredW": "204", - "measuredH": "50", - "w": "204", - "h": "50", - "x": "759", - "y": "709", - "properties": { - "controlName": "101-tcp" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "204", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "32", - "measuredH": "25", - "x": "87", - "y": "13", - "properties": { - "size": "17", - "text": "TCP" - } - } - ] - } - } - }, - { - "ID": "4109", - "typeID": "__group__", - "zOrder": "130", - "measuredW": "204", - "measuredH": "50", - "w": "204", - "h": "50", - "x": "1048", - "y": "954", - "properties": { - "controlName": "102-udp" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "204", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "36", - "measuredH": "25", - "x": "87", - "y": "13", - "properties": { - "size": "17", - "text": "UDP" - } - } - ] - } - } - }, - { - "ID": "4110", - "typeID": "__group__", - "zOrder": "142", - "measuredW": "204", - "measuredH": "50", - "w": "204", - "h": "50", - "x": "759", - "y": "1256", - "properties": { - "controlName": "103-tcp-vs-udp" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "204", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "94", - "measuredH": "25", - "x": "55", - "y": "13", - "properties": { - "size": "17", - "text": "TCP vs UDP" - } - } - ] - } - } - }, - { - "ID": "4111", - "typeID": "__group__", - "zOrder": "143", - "measuredW": "204", - "measuredH": "50", - "w": "204", - "h": "50", - "x": "403", - "y": "1253", - "properties": { - "controlName": "104-ip" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "204", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "16", - "measuredH": "25", - "x": "94", - "y": "13", - "properties": { - "size": "17", - "text": "IP" - } - } - ] - } - } - }, - { - "ID": "4112", - "typeID": "__group__", - "zOrder": "158", - "measuredW": "244", - "measuredH": "50", - "w": "244", - "h": "50", - "x": "1124", - "y": "1373", - "properties": { - "controlName": "105-programming-languages" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "244", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "194", - "measuredH": "25", - "x": "25", - "y": "12", - "properties": { - "size": "17", - "text": "Programming Languages" - } - } - ] - } - } - }, - { - "ID": "4113", - "typeID": "__group__", - "zOrder": "164", - "measuredW": "244", - "measuredH": "50", - "w": "244", - "h": "50", - "x": "1136", - "y": "1574", - "properties": { - "controlName": "106-socket-programming" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "244", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "160", - "measuredH": "25", - "x": "39", - "y": "12", - "properties": { - "size": "17", - "text": "Socket Programming" - } - } - ] - } - } - }, - { - "ID": "4114", - "typeID": "__group__", - "zOrder": "174", - "measuredW": "182", - "measuredH": "50", - "w": "182", - "h": "50", - "x": "395", - "y": "1710", - "properties": { - "controlName": "107-serialization" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "182", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "94", - "measuredH": "25", - "x": "44", - "y": "13", - "properties": { - "size": "17", - "text": "Serialization" - } - } - ] - } - } - }, - { - "ID": "4115", - "typeID": "__group__", - "zOrder": "180", - "measuredW": "182", - "measuredH": "50", - "w": "182", - "h": "50", - "x": "395", - "y": "1887", - "properties": { - "controlName": "108-multithreading" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "182", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "111", - "measuredH": "25", - "x": "35", - "y": "13", - "properties": { - "size": "17", - "text": "Multithreading" - } - } - ] - } - } - }, - { - "ID": "4116", - "typeID": "__group__", - "zOrder": "187", - "measuredW": "260", - "measuredH": "50", - "w": "260", - "h": "50", - "x": "395", - "y": "2278", - "properties": { - "controlName": "109-programming-techniques" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "260", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "196", - "measuredH": "25", - "x": "32", - "y": "13", - "properties": { - "size": "17", - "text": "Programming Techniques" - } - } - ] - } - } - }, - { - "ID": "4117", - "typeID": "__group__", - "zOrder": "193", - "measuredW": "128", - "measuredH": "50", - "w": "128", - "h": "50", - "x": "999", - "y": "2281", - "properties": { - "controlName": "110-databases" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "128", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "83", - "measuredH": "25", - "x": "22", - "y": "13", - "properties": { - "size": "17", - "text": "Databases" - } - } - ] - } - } - }, - { - "ID": "4118", - "typeID": "__group__", - "zOrder": "207", - "measuredW": "128", - "measuredH": "50", - "w": "128", - "h": "50", - "x": "1301", - "y": "2632", - "properties": { - "controlName": "111-cipher" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "128", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "52", - "measuredH": "25", - "x": "35", - "y": "12", - "properties": { - "size": "17", - "text": "Cipher" - } - } - ] - } - } - }, - { - "ID": "4119", - "typeID": "__group__", - "zOrder": "216", - "measuredW": "169", - "measuredH": "50", - "w": "169", - "h": "50", - "x": "511", - "y": "2707", - "properties": { - "controlName": "112-rpc-rest" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "169", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "96", - "measuredH": "25", - "x": "39", - "y": "13", - "properties": { - "size": "17", - "text": "RPC / REST" - } - } - ] - } - } - }, - { - "ID": "4120", - "typeID": "__group__", - "zOrder": "219", - "measuredW": "185", - "measuredH": "50", - "w": "185", - "h": "50", - "x": "358", - "y": "2405", - "properties": { - "controlName": "113-message-queues" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "185", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "137", - "measuredH": "25", - "x": "24", - "y": "13", - "properties": { - "size": "17", - "text": "Message Queues" - } - } - ] - } - } - }, - { - "ID": "4121", - "typeID": "__group__", - "zOrder": "222", - "measuredW": "229", - "measuredH": "50", - "w": "229", - "h": "50", - "x": "304", - "y": "2915", - "properties": { - "controlName": "114-mutlithreading-2" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "229", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "111", - "measuredH": "25", - "x": "59", - "y": "13", - "properties": { - "size": "17", - "text": "Multithreading" - } - } - ] - } - } - }, - { - "ID": "4122", - "typeID": "__group__", - "zOrder": "236", - "measuredW": "123", - "measuredH": "50", - "w": "123", - "h": "50", - "x": "907", - "y": "2916", - "properties": { - "controlName": "115-cloud" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "123", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "45", - "measuredH": "25", - "x": "38", - "y": "13", - "properties": { - "size": "17", - "text": "Cloud" - } - } - ] - } - } - }, - { - "ID": "4123", - "typeID": "__group__", - "zOrder": "241", - "measuredW": "175", - "measuredH": "50", - "w": "175", - "h": "50", - "x": "881", - "y": "3132", - "properties": { - "controlName": "116-data-clustering" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "175", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "120", - "measuredH": "25", - "x": "28", - "y": "13", - "properties": { - "size": "17", - "text": "Data Clustering" - } - } - ] - } - } - }, - { - "ID": "4124", - "typeID": "__group__", - "zOrder": "243", - "measuredW": "175", - "measuredH": "50", - "w": "175", - "h": "50", - "x": "881", - "y": "3236", - "properties": { - "controlName": "117-containerization" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "175", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "126", - "measuredH": "25", - "x": "26", - "y": "13", - "properties": { - "size": "17", - "text": "Containerization" - } - } - ] - } - } - }, - { - "ID": "4125", - "typeID": "__group__", - "zOrder": "247", - "measuredW": "95", - "measuredH": "50", - "w": "95", - "h": "50", - "x": "607", - "y": "3237", - "properties": { - "controlName": "118-ai" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "95", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "16", - "measuredH": "25", - "x": "40", - "y": "13", - "properties": { - "size": "17", - "text": "AI" - } - } - ] - } - } - }, - { - "ID": "4126", - "typeID": "__group__", - "zOrder": "124", - "measuredW": "241", - "measuredH": "50", - "w": "241", - "h": "50", - "x": "403", - "y": "628", - "properties": { - "controlName": "100-tcp:checksum" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "241", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "w": "81", - "measuredW": "81", - "measuredH": "25", - "x": "80", - "y": "12", - "properties": { - "text": "Checksum", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "4127", - "typeID": "__group__", - "zOrder": "122", - "measuredW": "239", - "measuredH": "50", - "w": "239", - "h": "50", - "x": "404", - "y": "684", - "properties": { - "controlName": "101-tcp:segment-structure" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "239", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "w": "144", - "measuredW": "144", - "measuredH": "25", - "x": "48", - "y": "12", - "properties": { - "text": "Segment Structure", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "4128", - "typeID": "__group__", - "zOrder": "123", - "measuredW": "240", - "measuredH": "50", - "w": "240", - "h": "50", - "x": "403", - "y": "745", - "properties": { - "controlName": "102-tcp:operations" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "240", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "86", - "measuredH": "25", - "x": "77", - "y": "12", - "properties": { - "size": "17", - "text": "Operations" - } - } - ] - } - } - }, - { - "ID": "4129", - "typeID": "__group__", - "zOrder": "125", - "measuredW": "204", - "measuredH": "50", - "w": "204", - "h": "50", - "x": "760", - "y": "813", - "properties": { - "controlName": "103-tcp:vulnerability" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "204", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "93", - "measuredH": "25", - "x": "55", - "y": "12", - "properties": { - "size": "17", - "text": "Vulnerability" - } - } - ] - } - } - }, - { - "ID": "4130", - "typeID": "__group__", - "zOrder": "107", - "measuredW": "240", - "measuredH": "50", - "w": "240", - "h": "50", - "x": "403", - "y": "791", - "properties": { - "controlName": "100-tcp:operations:connection" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "240", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "89", - "measuredH": "25", - "x": "75", - "y": "12", - "properties": { - "size": "17", - "text": "Connection" - } - } - ] - } - } - }, - { - "ID": "4131", - "typeID": "__group__", - "zOrder": "106", - "measuredW": "240", - "measuredH": "50", - "w": "240", - "h": "50", - "x": "403", - "y": "838", - "properties": { - "controlName": "101-tcp:operations:resource-usage" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "240", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "130", - "measuredH": "25", - "x": "55", - "y": "12", - "properties": { - "size": "17", - "text": "Resource Usage" - } - } - ] - } - } - }, - { - "ID": "4132", - "typeID": "__group__", - "zOrder": "105", - "measuredW": "240", - "measuredH": "50", - "w": "240", - "h": "50", - "x": "403", - "y": "884", - "properties": { - "controlName": "102-tcp:operations:data-transfer" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "240", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "105", - "measuredH": "25", - "x": "67", - "y": "12", - "properties": { - "size": "17", - "text": "Data Transfer" - } - } - ] - } - } - }, - { - "ID": "4133", - "typeID": "__group__", - "zOrder": "101", - "measuredW": "240", - "measuredH": "50", - "w": "240", - "h": "50", - "x": "403", - "y": "930", - "properties": { - "controlName": "103-tcp:operations:max-segment-scaling" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "240", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "166", - "measuredH": "25", - "x": "37", - "y": "12", - "properties": { - "size": "17", - "text": "Max Segment Scaling" - } - } - ] - } - } - }, - { - "ID": "4134", - "typeID": "__group__", - "zOrder": "100", - "measuredW": "240", - "measuredH": "50", - "w": "240", - "h": "50", - "x": "403", - "y": "977", - "properties": { - "controlName": "104-tcp:operations:window-scaling" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "240", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "120", - "measuredH": "25", - "x": "60", - "y": "12", - "properties": { - "size": "17", - "text": "Window Scaling" - } - } - ] - } - } - }, - { - "ID": "4135", - "typeID": "__group__", - "zOrder": "99", - "measuredW": "240", - "measuredH": "50", - "w": "240", - "h": "50", - "x": "403", - "y": "1024", - "properties": { - "controlName": "105-tcp:operations:timestamp" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "240", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "85", - "measuredH": "25", - "x": "77", - "y": "12", - "properties": { - "size": "17", - "text": "Timestamp" - } - } - ] - } - } - }, - { - "ID": "4136", - "typeID": "__group__", - "zOrder": "98", - "measuredW": "240", - "measuredH": "50", - "w": "240", - "h": "50", - "x": "403", - "y": "1070", - "properties": { - "controlName": "106-tcp:operations:out-of-band-data" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "240", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "137", - "measuredH": "25", - "x": "51", - "y": "12", - "properties": { - "size": "17", - "text": "Out-of-Band Data" - } - } - ] - } - } - }, - { - "ID": "4137", - "typeID": "__group__", - "zOrder": "97", - "measuredW": "242", - "measuredH": "50", - "w": "242", - "h": "50", - "x": "402", - "y": "1116", - "properties": { - "controlName": "107-tcp:operations:selective-acknowledgement" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "242", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "215", - "measuredH": "25", - "x": "13", - "y": "12", - "properties": { - "size": "17", - "text": "Selective Acknowledgement" - } - } - ] - } - } - }, - { - "ID": "4138", - "typeID": "__group__", - "zOrder": "126", - "measuredW": "202", - "measuredH": "50", - "w": "202", - "h": "50", - "x": "131", - "y": "828", - "properties": { - "controlName": "100-tcp:operations:data-transfer:flow-control" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "202", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "96", - "measuredH": "25", - "x": "53", - "y": "12", - "properties": { - "size": "17", - "text": "Flow Control" - } - } - ] - } - } - }, - { - "ID": "4139", - "typeID": "__group__", - "zOrder": "127", - "measuredW": "202", - "measuredH": "50", - "w": "202", - "h": "50", - "x": "131", - "y": "883", - "properties": { - "controlName": "101-tcp:operations:data-transfer:congestion-control" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "202", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "149", - "measuredH": "25", - "x": "33", - "y": "12", - "properties": { - "size": "17", - "text": "Congestion Control" - } - } - ] - } - } - }, - { - "ID": "4140", - "typeID": "__group__", - "zOrder": "128", - "measuredW": "202", - "measuredH": "50", - "w": "202", - "h": "50", - "x": "131", - "y": "936", - "properties": { - "controlName": "102-tcp:operations:data-transfer:reliable-transmission" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "202", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "168", - "measuredH": "25", - "x": "21", - "y": "12", - "properties": { - "size": "17", - "text": "Reliable Transmission" - } - } - ] - } - } - }, - { - "ID": "4141", - "typeID": "__group__", - "zOrder": "129", - "measuredW": "202", - "measuredH": "50", - "w": "202", - "h": "50", - "x": "131", - "y": "781", - "properties": { - "controlName": "100-tcp:operations:data-transfer:flow-control:error-detection" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "202", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "119", - "measuredH": "25", - "x": "41", - "y": "12", - "properties": { - "size": "17", - "text": "Error Detection" - } - } - ] - } - } - }, - { - "ID": "4142", - "typeID": "__group__", - "zOrder": "96", - "measuredW": "204", - "measuredH": "50", - "w": "204", - "h": "50", - "x": "760", - "y": "860", - "properties": { - "controlName": "100-tcp:vulnerability:denial-of-service" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "204", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "131", - "measuredH": "25", - "x": "36", - "y": "12", - "properties": { - "size": "17", - "text": "Denial of Service" - } - } - ] - } - } - }, - { - "ID": "4143", - "typeID": "__group__", - "zOrder": "95", - "measuredW": "204", - "measuredH": "50", - "w": "204", - "h": "50", - "x": "760", - "y": "906", - "properties": { - "controlName": "101-tcp:vulnerability:connection-hijacking" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "204", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "164", - "measuredH": "25", - "x": "22", - "y": "12", - "properties": { - "size": "17", - "text": "Connection Hijacking" - } - } - ] - } - } - }, - { - "ID": "4144", - "typeID": "__group__", - "zOrder": "94", - "measuredW": "204", - "measuredH": "50", - "w": "204", - "h": "50", - "x": "760", - "y": "951", - "properties": { - "controlName": "102-tcp:vulnerability:veto" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "204", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "34", - "measuredH": "25", - "x": "85", - "y": "12", - "properties": { - "size": "17", - "text": "Veto" - } - } - ] - } - } - }, - { - "ID": "4145", - "typeID": "__group__", - "zOrder": "135", - "measuredW": "196", - "measuredH": "50", - "w": "196", - "h": "50", - "x": "1186", - "y": "655", - "properties": { - "controlName": "100-udp:reliability" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "196", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "74", - "measuredH": "25", - "x": "61", - "y": "12", - "properties": { - "size": "17", - "text": "Reliability" - } - } - ] - } - } - }, - { - "ID": "4146", - "typeID": "__group__", - "zOrder": "134", - "measuredW": "196", - "measuredH": "50", - "w": "196", - "h": "50", - "x": "1186", - "y": "708", - "properties": { - "controlName": "101-udp:datagram" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "196", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "76", - "measuredH": "25", - "x": "60", - "y": "12", - "properties": { - "size": "17", - "text": "Datagram" - } - } - ] - } - } - }, - { - "ID": "4147", - "typeID": "__group__", - "zOrder": "133", - "measuredW": "196", - "measuredH": "50", - "w": "196", - "h": "50", - "x": "1186", - "y": "762", - "properties": { - "controlName": "102-udp:congestion-control" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "196", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "149", - "measuredH": "25", - "x": "23", - "y": "12", - "properties": { - "size": "17", - "text": "Congestion Control" - } - } - ] - } - } - }, - { - "ID": "4148", - "typeID": "__group__", - "zOrder": "132", - "measuredW": "196", - "measuredH": "50", - "w": "196", - "h": "50", - "x": "1186", - "y": "816", - "properties": { - "controlName": "103-udp:checksum" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "196", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "81", - "measuredH": "25", - "x": "57", - "y": "12", - "properties": { - "size": "17", - "text": "Checksum" - } - } - ] - } - } - }, - { - "ID": "4149", - "typeID": "__group__", - "zOrder": "131", - "measuredW": "196", - "measuredH": "50", - "w": "196", - "h": "50", - "x": "1186", - "y": "870", - "properties": { - "controlName": "104-udp:packet-structure" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "196", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "127", - "measuredH": "25", - "x": "34", - "y": "12", - "properties": { - "text": "Packet Structure", - "size": "17" - } - } - ] - } - } - }, - { - "ID": "4150", - "typeID": "__group__", - "zOrder": "138", - "measuredW": "244", - "measuredH": "50", - "w": "244", - "h": "50", - "x": "720", - "y": "1055", - "properties": { - "controlName": "100-tcp-vs-udp:reliable-vs-unreliable" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "244", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "168", - "measuredH": "25", - "x": "38", - "y": "12", - "properties": { - "size": "17", - "text": "Reliable vs Unreliable" - } - } - ] - } - } - }, - { - "ID": "4151", - "typeID": "__group__", - "zOrder": "137", - "measuredW": "244", - "measuredH": "50", - "w": "244", - "h": "50", - "x": "720", - "y": "1110", - "properties": { - "controlName": "101-tcp-vs-udp:ordered-vs-not-ordered" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "244", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "187", - "measuredH": "25", - "x": "28", - "y": "12", - "properties": { - "size": "17", - "text": "Ordered vs Not Ordered" - } - } - ] - } - } - }, - { - "ID": "4152", - "typeID": "__group__", - "zOrder": "136", - "measuredW": "244", - "measuredH": "50", - "w": "244", - "h": "50", - "x": "720", - "y": "1164", - "properties": { - "controlName": "102-tcp-vs-udp:heavyweight-vs-lightweight" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "244", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "212", - "measuredH": "25", - "x": "16", - "y": "12", - "properties": { - "size": "17", - "text": "Heavyweight vs Lightweight" - } - } - ] - } - } - }, - { - "ID": "4153", - "typeID": "__group__", - "zOrder": "139", - "measuredW": "244", - "measuredH": "50", - "w": "244", - "h": "50", - "x": "720", - "y": "1349", - "properties": { - "controlName": "103-tcp-vs-udp:packet-vs-datagram" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "244", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "154", - "measuredH": "25", - "x": "36", - "y": "12", - "properties": { - "size": "17", - "text": "Packet vs Datagram" - } - } - ] - } - } - }, - { - "ID": "4154", - "typeID": "__group__", - "zOrder": "140", - "measuredW": "244", - "measuredH": "50", - "w": "244", - "h": "50", - "x": "720", - "y": "1403", - "properties": { - "controlName": "104-tcp-vs-udp:streaming-vs-broadcast" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "244", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "183", - "measuredH": "25", - "x": "30", - "y": "12", - "properties": { - "size": "17", - "text": "Streaming vs Broadcast" - } - } - ] - } - } - }, - { - "ID": "4155", - "typeID": "__group__", - "zOrder": "144", - "measuredW": "207", - "measuredH": "50", - "w": "207", - "h": "50", - "x": "118", - "y": "1090", - "properties": { - "controlName": "100-ip:capability" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "207", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "76", - "measuredH": "25", - "x": "66", - "y": "12", - "properties": { - "size": "17", - "text": "Capability" - } - } - ] - } - } - }, - { - "ID": "4156", - "typeID": "__group__", - "zOrder": "145", - "measuredW": "207", - "measuredH": "50", - "w": "207", - "h": "50", - "x": "118", - "y": "1144", - "properties": { - "controlName": "101-ip:reliability" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "207", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "74", - "measuredH": "25", - "x": "67", - "y": "12", - "properties": { - "size": "17", - "text": "Reliability" - } - } - ] - } - } - }, - { - "ID": "4157", - "typeID": "__group__", - "zOrder": "147", - "measuredW": "207", - "measuredH": "50", - "w": "207", - "h": "50", - "x": "118", - "y": "1198", - "properties": { - "controlName": "102-ip:link-capacity" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "207", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "104", - "measuredH": "25", - "x": "52", - "y": "12", - "properties": { - "size": "17", - "text": "Link Capacity" - } - } - ] - } - } - }, - { - "ID": "4158", - "typeID": "__group__", - "zOrder": "146", - "measuredW": "207", - "measuredH": "50", - "w": "207", - "h": "50", - "x": "118", - "y": "1253", - "properties": { - "controlName": "103-ip:functions" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "207", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "67", - "measuredH": "25", - "x": "70", - "y": "12", - "properties": { - "size": "17", - "text": "Function" - } - } - ] - } - } - }, - { - "ID": "4159", - "typeID": "__group__", - "zOrder": "149", - "measuredW": "207", - "measuredH": "50", - "w": "207", - "h": "50", - "x": "118", - "y": "1449", - "properties": { - "controlName": "104-ip:transactions" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "207", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "99", - "measuredH": "25", - "x": "54", - "y": "12", - "properties": { - "size": "17", - "text": "Transactions" - } - } - ] - } - } - }, - { - "ID": "4160", - "typeID": "__group__", - "zOrder": "153", - "measuredW": "207", - "measuredH": "50", - "w": "207", - "h": "50", - "x": "118", - "y": "1550", - "properties": { - "controlName": "105-ip:categories" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "207", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "71", - "measuredH": "25", - "x": "54", - "y": "12", - "properties": { - "size": "17", - "text": "Category" - } - } - ] - } - } - }, - { - "ID": "4161", - "typeID": "__group__", - "zOrder": "156", - "measuredW": "207", - "measuredH": "50", - "w": "207", - "h": "50", - "x": "118", - "y": "1654", - "properties": { - "controlName": "106-ip:security" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "207", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "62", - "measuredH": "25", - "x": "73", - "y": "12", - "properties": { - "size": "17", - "text": "Security" - } - } - ] - } - } - }, - { - "ID": "4162", - "typeID": "__group__", - "zOrder": "85", - "measuredW": "207", - "measuredH": "50", - "w": "207", - "h": "50", - "x": "118", - "y": "1299", - "properties": { - "controlName": "100-ip:functions:datagram-construction" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "207", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "179", - "measuredH": "25", - "x": "14", - "y": "12", - "properties": { - "size": "17", - "text": "Datagram Construction" - } - } - ] - } - } - }, - { - "ID": "4163", - "typeID": "__group__", - "zOrder": "84", - "measuredW": "207", - "measuredH": "50", - "w": "207", - "h": "50", - "x": "118", - "y": "1346", - "properties": { - "controlName": "101-ip:functions:ip-addressing" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "207", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "107", - "measuredH": "25", - "x": "50", - "y": "12", - "properties": { - "size": "17", - "text": "IP Addressing" - } - } - ] - } - } - }, - { - "ID": "4164", - "typeID": "__group__", - "zOrder": "83", - "measuredW": "207", - "measuredH": "50", - "w": "207", - "h": "50", - "x": "118", - "y": "1392", - "properties": { - "controlName": "102-ip:functions:routing" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "207", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "60", - "measuredH": "25", - "x": "74", - "y": "12", - "properties": { - "size": "17", - "text": "Routing" - } - } - ] - } - } - }, - { - "ID": "4165", - "typeID": "__group__", - "zOrder": "148", - "measuredW": "67", - "measuredH": "50", - "w": "67", - "h": "50", - "x": "118", - "y": "1495", - "properties": { - "controlName": "100-ip:transactions:arp" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "67", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "34", - "measuredH": "25", - "x": "17", - "y": "12", - "properties": { - "size": "17", - "text": "ARP" - } - } - ] - } - } - }, - { - "ID": "4166", - "typeID": "__group__", - "zOrder": "150", - "measuredW": "67", - "measuredH": "50", - "w": "67", - "h": "50", - "x": "182", - "y": "1495", - "properties": { - "controlName": "101-ip:transactions:dns" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "67", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "36", - "measuredH": "25", - "x": "14", - "y": "12", - "properties": { - "size": "17", - "text": "DNS" - } - } - ] - } - } - }, - { - "ID": "4167", - "typeID": "__group__", - "zOrder": "151", - "measuredW": "80", - "measuredH": "50", - "w": "80", - "h": "50", - "x": "245", - "y": "1495", - "properties": { - "controlName": "102-ip:transactions:dhcp" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "80", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "48", - "measuredH": "25", - "x": "16", - "y": "12", - "properties": { - "size": "17", - "text": "DHCP" - } - } - ] - } - } - }, - { - "ID": "4168", - "typeID": "__group__", - "zOrder": "152", - "measuredW": "111", - "measuredH": "50", - "w": "111", - "h": "50", - "x": "118", - "y": "1596", - "properties": { - "controlName": "100-ip:categories:ipv4" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "111", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "35", - "measuredH": "25", - "x": "38", - "y": "12", - "properties": { - "size": "17", - "text": "IPv4" - } - } - ] - } - } - }, - { - "ID": "4170", - "typeID": "__group__", - "zOrder": "154", - "measuredW": "102", - "measuredH": "50", - "w": "102", - "h": "50", - "x": "223", - "y": "1596", - "properties": { - "controlName": "101-ip:categories:ipv6" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "102", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "35", - "measuredH": "25", - "x": "33", - "y": "12", - "properties": { - "size": "17", - "text": "IPv6" - } - } - ] - } - } - }, - { - "ID": "4171", - "typeID": "__group__", - "zOrder": "155", - "measuredW": "207", - "measuredH": "50", - "w": "207", - "h": "50", - "x": "118", - "y": "1700", - "properties": { - "controlName": "100-ip:security:tls" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "207", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "31", - "measuredH": "25", - "x": "88", - "y": "12", - "properties": { - "size": "17", - "text": "TLS" - } - } - ] - } - } - }, - { - "ID": "4172", - "typeID": "__group__", - "zOrder": "159", - "measuredW": "104", - "measuredH": "50", - "w": "104", - "h": "50", - "x": "1186", - "y": "1166", - "properties": { - "controlName": "100-programming-languages:c-cpp" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "104", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "64", - "measuredH": "25", - "x": "21", - "y": "12", - "properties": { - "size": "17", - "text": "C / C++" - } - } - ] - } - } - }, - { - "ID": "4173", - "typeID": "__group__", - "zOrder": "160", - "measuredW": "87", - "measuredH": "50", - "w": "87", - "h": "50", - "x": "1295", - "y": "1166", - "properties": { - "controlName": "101-programming-languages:c-sharp" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "87", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "24", - "measuredH": "25", - "x": "32", - "y": "12", - "properties": { - "size": "17", - "text": "C#" - } - } - ] - } - } - }, - { - "ID": "4174", - "typeID": "__group__", - "zOrder": "161", - "measuredW": "104", - "measuredH": "50", - "w": "104", - "h": "50", - "x": "1186", - "y": "1220", - "properties": { - "controlName": "102-programming-languages:java" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "104", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "36", - "measuredH": "25", - "x": "34", - "y": "12", - "properties": { - "size": "17", - "text": "Java" - } - } - ] - } - } - }, - { - "ID": "4175", - "typeID": "__group__", - "zOrder": "162", - "measuredW": "88", - "measuredH": "50", - "w": "88", - "h": "50", - "x": "1294", - "y": "1221", - "properties": { - "controlName": "103-programming-languages:erlang" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "88", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "51", - "measuredH": "25", - "x": "19", - "y": "12", - "properties": { - "size": "17", - "text": "Erlang" - } - } - ] - } - } - }, - { - "ID": "4176", - "typeID": "__group__", - "zOrder": "163", - "measuredW": "196", - "measuredH": "50", - "w": "196", - "h": "50", - "x": "1186", - "y": "1274", - "properties": { - "controlName": "104-programming-languages:javascript" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "196", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "81", - "measuredH": "25", - "x": "57", - "y": "12", - "properties": { - "size": "17", - "text": "JavaScript" - } - } - ] - } - } - }, - { - "ID": "4177", - "typeID": "__group__", - "zOrder": "165", - "measuredW": "196", - "measuredH": "50", - "w": "196", - "h": "50", - "x": "1186", - "y": "1664", - "properties": { - "controlName": "100-socket-programming:byte-manipulation" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "196", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "138", - "measuredH": "25", - "x": "29", - "y": "12", - "properties": { - "size": "17", - "text": "Byte Manipulation" - } - } - ] - } - } - }, - { - "ID": "4178", - "typeID": "__group__", - "zOrder": "166", - "measuredW": "196", - "measuredH": "50", - "w": "196", - "h": "50", - "x": "1186", - "y": "1717", - "properties": { - "controlName": "101-socket-programming:address-conversion" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "196", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "154", - "measuredH": "25", - "x": "21", - "y": "12", - "properties": { - "size": "17", - "text": "Address Conversion" - } - } - ] - } - } - }, - { - "ID": "4179", - "typeID": "__group__", - "zOrder": "167", - "measuredW": "196", - "measuredH": "50", - "w": "196", - "h": "50", - "x": "1186", - "y": "1770", - "properties": { - "controlName": "102-socket-programming:descriptor" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "196", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "81", - "measuredH": "25", - "x": "57", - "y": "12", - "properties": { - "size": "17", - "text": "Descriptor" - } - } - ] - } - } - }, - { - "ID": "4180", - "typeID": "__group__", - "zOrder": "70", - "measuredW": "196", - "measuredH": "50", - "w": "196", - "h": "50", - "x": "1187", - "y": "1829", - "properties": { - "controlName": "103-socket-programming:api" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "196", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "27", - "measuredH": "25", - "x": "84", - "y": "12", - "properties": { - "size": "17", - "text": "API" - } - } - ] - } - } - }, - { - "ID": "4181", - "typeID": "__group__", - "zOrder": "168", - "measuredW": "196", - "measuredH": "50", - "w": "196", - "h": "50", - "x": "1187", - "y": "1876", - "properties": { - "controlName": "100-socket-programming:api:bsd-socket" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "196", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "91", - "measuredH": "25", - "x": "52", - "y": "12", - "properties": { - "size": "17", - "text": "BSD Socket" - } - } - ] - } - } - }, - { - "ID": "4182", - "typeID": "__group__", - "zOrder": "71", - "measuredW": "196", - "measuredH": "50", - "w": "196", - "h": "50", - "x": "1187", - "y": "1922", - "properties": { - "controlName": "101-socket-programming:api:winsock" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "196", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "64", - "measuredH": "25", - "x": "66", - "y": "12", - "properties": { - "size": "17", - "text": "Winsock" - } - } - ] - } - } - }, - { - "ID": "4184", - "typeID": "__group__", - "zOrder": "175", - "measuredW": "79", - "measuredH": "50", - "w": "79", - "h": "50", - "x": "633", - "y": "1658", - "properties": { - "controlName": "100-serialization:json" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "79", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "46", - "measuredH": "25", - "x": "17", - "y": "12", - "properties": { - "size": "17", - "text": "JSON" - } - } - ] - } - } - }, - { - "ID": "4185", - "typeID": "__group__", - "zOrder": "177", - "measuredW": "79", - "measuredH": "50", - "w": "79", - "h": "50", - "x": "715", - "y": "1658", - "properties": { - "controlName": "101-serialization:xml" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "79", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "35", - "measuredH": "25", - "x": "22", - "y": "12", - "properties": { - "size": "17", - "text": "XML" - } - } - ] - } - } - }, - { - "ID": "4186", - "typeID": "__group__", - "zOrder": "176", - "measuredW": "77", - "measuredH": "50", - "w": "77", - "h": "50", - "x": "634", - "y": "1711", - "properties": { - "controlName": "102-serialization:yaml" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "77", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "44", - "measuredH": "25", - "x": "17", - "y": "12", - "properties": { - "size": "17", - "text": "YAML" - } - } - ] - } - } - }, - { - "ID": "4187", - "typeID": "__group__", - "zOrder": "178", - "measuredW": "79", - "measuredH": "50", - "w": "79", - "h": "50", - "x": "715", - "y": "1711", - "properties": { - "controlName": "103-serialization:toml" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "79", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "47", - "measuredH": "25", - "x": "16", - "y": "12", - "properties": { - "size": "17", - "text": "TOML" - } - } - ] - } - } - }, - { - "ID": "4188", - "typeID": "__group__", - "zOrder": "179", - "measuredW": "161", - "measuredH": "50", - "w": "161", - "h": "50", - "x": "634", - "y": "1765", - "properties": { - "controlName": "104-serialization:protobuf" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "161", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "65", - "measuredH": "25", - "x": "48", - "y": "12", - "properties": { - "size": "17", - "text": "Protobuf" - } - } - ] - } - } - }, - { - "ID": "4189", - "typeID": "__group__", - "zOrder": "181", - "measuredW": "207", - "measuredH": "50", - "w": "207", - "h": "50", - "x": "116", - "y": "1891", - "properties": { - "controlName": "100-multithreading:thread-localstorage" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "207", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "165", - "measuredH": "25", - "x": "24", - "y": "12", - "properties": { - "size": "17", - "text": "Thread Local Storage" - } - } - ] - } - } - }, - { - "ID": "4190", - "typeID": "__group__", - "zOrder": "182", - "measuredW": "101", - "measuredH": "50", - "w": "101", - "h": "50", - "x": "116", - "y": "1946", - "properties": { - "controlName": "101-multithreading:sharding" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "101", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "69", - "measuredH": "25", - "x": "16", - "y": "12", - "properties": { - "size": "17", - "text": "Sharding" - } - } - ] - } - } - }, - { - "ID": "4191", - "typeID": "__group__", - "zOrder": "183", - "measuredW": "102", - "measuredH": "50", - "w": "102", - "h": "50", - "x": "221", - "y": "1946", - "properties": { - "controlName": "102-multithreading:fiber" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "102", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "40", - "measuredH": "25", - "x": "31", - "y": "12", - "properties": { - "size": "17", - "text": "Fiber" - } - } - ] - } - } - }, - { - "ID": "4192", - "typeID": "__group__", - "zOrder": "184", - "measuredW": "165", - "measuredH": "50", - "w": "165", - "h": "50", - "x": "634", - "y": "1887", - "properties": { - "controlName": "103-multithreading:synchronization" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "165", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "122", - "measuredH": "25", - "x": "23", - "y": "12", - "properties": { - "size": "17", - "text": "Synchronization" - } - } - ] - } - } - }, - { - "ID": "4193", - "typeID": "__group__", - "zOrder": "64", - "measuredW": "101", - "measuredH": "50", - "w": "101", - "h": "50", - "x": "116", - "y": "1845", - "properties": { - "controlName": "100-multithreading:thread-localstorage:windows" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "101", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "68", - "measuredH": "25", - "x": "16", - "y": "12", - "properties": { - "size": "17", - "text": "Windows" - } - } - ] - } - } - }, - { - "ID": "4194", - "typeID": "__group__", - "zOrder": "63", - "measuredW": "111", - "measuredH": "50", - "w": "111", - "h": "50", - "x": "212", - "y": "1845", - "properties": { - "controlName": "101-multithreading:thread-localstorage:pthread" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "111", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "60", - "measuredH": "25", - "x": "30", - "y": "12", - "properties": { - "size": "17", - "text": "pthread" - } - } - ] - } - } - }, - { - "ID": "4195", - "typeID": "__group__", - "zOrder": "62", - "measuredW": "165", - "measuredH": "50", - "w": "165", - "h": "50", - "x": "634", - "y": "1933", - "properties": { - "controlName": "100-multithreading:synchronization:barrier" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "165", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "54", - "measuredH": "25", - "x": "53", - "y": "12", - "properties": { - "size": "17", - "text": "Barrier" - } - } - ] - } - } - }, - { - "ID": "4196", - "typeID": "__group__", - "zOrder": "61", - "measuredW": "165", - "measuredH": "50", - "w": "165", - "h": "50", - "x": "634", - "y": "1979", - "properties": { - "controlName": "101-multithreading:synchronization:spinlock" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "165", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "65", - "measuredH": "25", - "x": "54", - "y": "12", - "properties": { - "size": "17", - "text": "Spinlock" - } - } - ] - } - } - }, - { - "ID": "4197", - "typeID": "__group__", - "zOrder": "60", - "measuredW": "165", - "measuredH": "50", - "w": "165", - "h": "50", - "x": "634", - "y": "2026", - "properties": { - "controlName": "102-multithreading:synchronization:mutex" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "165", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "48", - "measuredH": "25", - "x": "55", - "y": "12", - "properties": { - "size": "17", - "text": "Mutex" - } - } - ] - } - } - }, - { - "ID": "4198", - "typeID": "__group__", - "zOrder": "58", - "measuredW": "165", - "measuredH": "50", - "w": "165", - "h": "50", - "x": "634", - "y": "2072", - "properties": { - "controlName": "103-multithreading:synchronization:condition-variable" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "165", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "140", - "measuredH": "25", - "x": "14", - "y": "12", - "properties": { - "size": "17", - "text": "Condition Variable" - } - } - ] - } - } - }, - { - "ID": "4199", - "typeID": "__group__", - "zOrder": "57", - "measuredW": "165", - "measuredH": "50", - "w": "165", - "h": "50", - "x": "634", - "y": "2118", - "properties": { - "controlName": "104-multithreading:synchronization:future-promises" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "165", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "142", - "measuredH": "25", - "x": "12", - "y": "12", - "properties": { - "size": "17", - "text": "Future & Promises" - } - } - ] - } - } - }, - { - "ID": "4200", - "typeID": "__group__", - "zOrder": "185", - "measuredW": "117", - "measuredH": "50", - "w": "117", - "h": "50", - "x": "850", - "y": "2026", - "properties": { - "controlName": "100-multithreading:synchronization:mutex:semaphore" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "117", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "89", - "measuredH": "25", - "x": "14", - "y": "12", - "properties": { - "size": "17", - "text": "Semaphore" - } - } - ] - } - } - }, - { - "ID": "4201", - "typeID": "__group__", - "zOrder": "56", - "measuredW": "117", - "measuredH": "50", - "w": "117", - "h": "50", - "x": "850", - "y": "2121", - "properties": { - "controlName": "100-multithreading:synchronization:future-promises:coroutine" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "117", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "76", - "measuredH": "25", - "x": "21", - "y": "12", - "properties": { - "size": "17", - "text": "Coroutine" - } - } - ] - } - } - }, - { - "ID": "4202", - "typeID": "__group__", - "zOrder": "186", - "measuredW": "117", - "measuredH": "50", - "w": "117", - "h": "50", - "x": "850", - "y": "2174", - "properties": { - "controlName": "101-multithreading:synchronization:future-promises:channel" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "117", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "65", - "measuredH": "25", - "x": "26", - "y": "12", - "properties": { - "size": "17", - "text": "Channel" - } - } - ] - } - } - }, - { - "ID": "4203", - "typeID": "__group__", - "zOrder": "188", - "measuredW": "218", - "measuredH": "50", - "w": "218", - "h": "50", - "x": "117", - "y": "2066", - "properties": { - "controlName": "100-programming-techniques:design-patterns" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "218", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "123", - "measuredH": "25", - "x": "47", - "y": "12", - "properties": { - "size": "17", - "text": "Design Patterns" - } - } - ] - } - } - }, - { - "ID": "4204", - "typeID": "__group__", - "zOrder": "189", - "measuredW": "218", - "measuredH": "50", - "w": "218", - "h": "50", - "x": "117", - "y": "2119", - "properties": { - "controlName": "101-programming-techniques:tdd" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "218", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "36", - "measuredH": "25", - "x": "91", - "y": "12", - "properties": { - "size": "17", - "text": "TDD" - } - } - ] - } - } - }, - { - "ID": "4205", - "typeID": "__group__", - "zOrder": "190", - "measuredW": "218", - "measuredH": "50", - "w": "218", - "h": "50", - "x": "117", - "y": "2172", - "properties": { - "controlName": "102-programming-techniques:dependency-injection" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "218", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "168", - "measuredH": "25", - "x": "25", - "y": "12", - "properties": { - "size": "17", - "text": "Dependency Injection" - } - } - ] - } - } - }, - { - "ID": "4206", - "typeID": "__group__", - "zOrder": "191", - "measuredW": "218", - "measuredH": "50", - "w": "218", - "h": "50", - "x": "117", - "y": "2225", - "properties": { - "controlName": "103-programming-techniques:dump-analysis" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "218", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "w": "113", - "measuredW": "113", - "measuredH": "25", - "x": "52", - "y": "12", - "properties": { - "size": "17", - "text": "Dump Analysis" - } - } - ] - } - } - }, - { - "ID": "4207", - "typeID": "__group__", - "zOrder": "192", - "measuredW": "218", - "measuredH": "50", - "w": "218", - "h": "50", - "x": "117", - "y": "2279", - "properties": { - "controlName": "104-programming-techniques:functional-programming" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "218", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "188", - "measuredH": "25", - "x": "15", - "y": "12", - "properties": { - "size": "17", - "text": "Functional Programming" - } - } - ] - } - } - }, - { - "ID": "4208", - "typeID": "__group__", - "zOrder": "194", - "measuredW": "104", - "measuredH": "50", - "w": "104", - "h": "50", - "x": "1011", - "y": "2125", - "properties": { - "controlName": "100-databases:rdbms" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "104", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "62", - "measuredH": "25", - "x": "21", - "y": "12", - "properties": { - "size": "17", - "text": "RDBMS" - } - } - ] - } - } - }, - { - "ID": "4209", - "typeID": "__group__", - "zOrder": "198", - "measuredW": "120", - "measuredH": "50", - "w": "120", - "h": "50", - "x": "1001", - "y": "2380", - "properties": { - "controlName": "101-databases:nosql" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "120", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "56", - "measuredH": "25", - "x": "32", - "y": "12", - "properties": { - "size": "17", - "text": "NoSQL" - } - } - ] - } - } - }, - { - "ID": "4210", - "typeID": "__group__", - "zOrder": "210", - "measuredW": "98", - "measuredH": "50", - "w": "98", - "h": "50", - "x": "831", - "y": "2381", - "properties": { - "controlName": "102-databases:orm" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "98", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "40", - "measuredH": "25", - "x": "31", - "y": "12", - "properties": { - "size": "17", - "text": "ORM" - } - } - ] - } - } - }, - { - "ID": "4211", - "typeID": "__group__", - "zOrder": "211", - "measuredW": "98", - "measuredH": "50", - "w": "98", - "h": "50", - "x": "831", - "y": "2435", - "properties": { - "controlName": "103-databases:dal" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "98", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "33", - "measuredH": "25", - "x": "34", - "y": "12", - "properties": { - "size": "17", - "text": "DAL" - } - } - ] - } - } - }, - { - "ID": "4212", - "typeID": "__group__", - "zOrder": "195", - "measuredW": "158", - "measuredH": "50", - "w": "158", - "h": "50", - "x": "1195", - "y": "2071", - "properties": { - "controlName": "100-databases:rdbms:mssql" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "158", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "118", - "measuredH": "25", - "x": "20", - "y": "12", - "properties": { - "size": "17", - "text": "MS SQL Server" - } - } - ] - } - } - }, - { - "ID": "4213", - "typeID": "__group__", - "zOrder": "196", - "measuredW": "158", - "measuredH": "50", - "w": "158", - "h": "50", - "x": "1195", - "y": "2124", - "properties": { - "controlName": "101-databases:rdbms:mysql" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "158", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "56", - "measuredH": "25", - "x": "51", - "y": "12", - "properties": { - "size": "17", - "text": "MySQL" - } - } - ] - } - } - }, - { - "ID": "4214", - "typeID": "__group__", - "zOrder": "197", - "measuredW": "158", - "measuredH": "50", - "w": "158", - "h": "50", - "x": "1195", - "y": "2177", - "properties": { - "controlName": "102-databases:rdbms:postgresql" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "158", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "93", - "measuredH": "25", - "x": "32", - "y": "12", - "properties": { - "size": "17", - "text": "PostgreSQL" - } - } - ] - } - } - }, - { - "ID": "4215", - "typeID": "__group__", - "zOrder": "199", - "measuredW": "135", - "measuredH": "50", - "w": "135", - "h": "50", - "x": "1178", - "y": "2381", - "properties": { - "controlName": "100-databases:nosql:dynamo-db" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "135", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "92", - "measuredH": "25", - "x": "22", - "y": "12", - "properties": { - "size": "17", - "text": "Dynamo DB" - } - } - ] - } - } - }, - { - "ID": "4216", - "typeID": "__group__", - "zOrder": "200", - "measuredW": "135", - "measuredH": "50", - "w": "135", - "h": "50", - "x": "1178", - "y": "2434", - "properties": { - "controlName": "101-databases:nosql:mongodb" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "135", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "78", - "measuredH": "25", - "x": "29", - "y": "12", - "properties": { - "size": "17", - "text": "MongoDB" - } - } - ] - } - } - }, - { - "ID": "4217", - "typeID": "__group__", - "zOrder": "201", - "measuredW": "135", - "measuredH": "50", - "w": "135", - "h": "50", - "x": "1178", - "y": "2487", - "properties": { - "controlName": "102-databases:nosql:cassandra" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "135", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "83", - "measuredH": "25", - "x": "26", - "y": "12", - "properties": { - "size": "17", - "text": "Cassandra" - } - } - ] - } - } - }, - { - "ID": "4218", - "typeID": "__group__", - "zOrder": "202", - "measuredW": "135", - "measuredH": "50", - "w": "135", - "h": "50", - "x": "1178", - "y": "2540", - "properties": { - "controlName": "103-databases:nosql:couchbase" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "135", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "88", - "measuredH": "25", - "x": "24", - "y": "12", - "properties": { - "size": "17", - "text": "Couchbase" - } - } - ] - } - } - }, - { - "ID": "4219", - "typeID": "__group__", - "zOrder": "203", - "measuredW": "120", - "measuredH": "50", - "w": "120", - "h": "50", - "x": "1001", - "y": "2499", - "properties": { - "controlName": "104-databases:key-value" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "120", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "76", - "measuredH": "25", - "x": "22", - "y": "12", - "properties": { - "size": "17", - "text": "Key-Value" - } - } - ] - } - } - }, - { - "ID": "4220", - "typeID": "__group__", - "zOrder": "204", - "measuredW": "120", - "measuredH": "50", - "w": "120", - "h": "50", - "x": "1001", - "y": "2552", - "properties": { - "controlName": "100-databases:key-value:redis" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "120", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "45", - "measuredH": "25", - "x": "37", - "y": "12", - "properties": { - "size": "17", - "text": "Redis" - } - } - ] - } - } - }, - { - "ID": "4221", - "typeID": "__group__", - "zOrder": "205", - "measuredW": "120", - "measuredH": "50", - "w": "120", - "h": "50", - "x": "1001", - "y": "2604", - "properties": { - "controlName": "101-databases:key-value:memcached" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "120", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "96", - "measuredH": "25", - "x": "12", - "y": "12", - "properties": { - "size": "17", - "text": "Memcached" - } - } - ] - } - } - }, - { - "ID": "4222", - "typeID": "__group__", - "zOrder": "208", - "measuredW": "80", - "measuredH": "50", - "w": "80", - "h": "50", - "x": "1175", - "y": "2632", - "properties": { - "controlName": "100-cipher:ssl" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "80", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "31", - "measuredH": "25", - "x": "24", - "y": "12", - "properties": { - "size": "17", - "text": "SSL" - } - } - ] - } - } - }, - { - "ID": "4223", - "typeID": "__group__", - "zOrder": "217", - "measuredW": "120", - "measuredH": "50", - "w": "120", - "h": "50", - "x": "536", - "y": "2549", - "properties": { - "controlName": "100-rpc-rest:rest" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "120", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "44", - "measuredH": "25", - "x": "38", - "y": "12", - "properties": { - "size": "17", - "text": "REST" - } - } - ] - } - } - }, - { - "ID": "4224", - "typeID": "__group__", - "zOrder": "218", - "measuredW": "120", - "measuredH": "50", - "w": "120", - "h": "50", - "x": "536", - "y": "2604", - "properties": { - "controlName": "101-rpc-rest:grpc" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "120", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "45", - "measuredH": "25", - "x": "37", - "y": "12", - "properties": { - "size": "17", - "text": "gRPC" - } - } - ] - } - } - }, - { - "ID": "4225", - "typeID": "__group__", - "zOrder": "220", - "measuredW": "149", - "measuredH": "50", - "w": "149", - "h": "50", - "x": "603", - "y": "2378", - "properties": { - "controlName": "100-message-queues:kafka" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "149", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "107", - "measuredH": "25", - "x": "21", - "y": "12", - "properties": { - "size": "17", - "text": "Apache Kafka" - } - } - ] - } - } - }, - { - "ID": "4226", - "typeID": "__group__", - "zOrder": "221", - "measuredW": "149", - "measuredH": "50", - "w": "149", - "h": "50", - "x": "603", - "y": "2433", - "properties": { - "controlName": "101-message-queues:rabbitmq" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "149", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "78", - "measuredH": "25", - "x": "36", - "y": "12", - "properties": { - "size": "17", - "text": "RabbitMQ" - } - } - ] - } - } - }, - { - "ID": "4227", - "typeID": "__group__", - "zOrder": "228", - "measuredW": "241", - "measuredH": "50", - "w": "241", - "h": "50", - "x": "116", - "y": "2615", - "properties": { - "controlName": "100-mutlithreading-2:task-based" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "241", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "91", - "measuredH": "25", - "x": "75", - "y": "12", - "properties": { - "size": "17", - "text": "Task-Based" - } - } - ] - } - } - }, - { - "ID": "4228", - "typeID": "__group__", - "zOrder": "225", - "measuredW": "148", - "measuredH": "50", - "w": "148", - "h": "50", - "x": "116", - "y": "2916", - "properties": { - "controlName": "101-mutlithreading-2:asynchronous" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "148", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "107", - "measuredH": "25", - "x": "20", - "y": "12", - "properties": { - "size": "17", - "text": "Asynchronous" - } - } - ] - } - } - }, - { - "ID": "4229", - "typeID": "__group__", - "zOrder": "223", - "measuredW": "167", - "measuredH": "50", - "w": "167", - "h": "50", - "x": "303", - "y": "3001", - "properties": { - "controlName": "102-mutlithreading-2:actor-model" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "167", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "93", - "measuredH": "25", - "x": "37", - "y": "12", - "properties": { - "size": "17", - "text": "Actor Model" - } - } - ] - } - } - }, - { - "ID": "4230", - "typeID": "__group__", - "zOrder": "230", - "measuredW": "185", - "measuredH": "50", - "w": "185", - "h": "50", - "x": "578", - "y": "2896", - "properties": { - "controlName": "103-mutlithreading-2:reactive-approach" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "185", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "146", - "measuredH": "25", - "x": "20", - "y": "13", - "properties": { - "size": "17", - "text": "Reactive Approach" - } - } - ] - } - } - }, - { - "ID": "4231", - "typeID": "__group__", - "zOrder": "232", - "measuredW": "185", - "measuredH": "50", - "w": "185", - "h": "50", - "x": "578", - "y": "2956", - "properties": { - "controlName": "104-mutlithreading-2:reactive-model" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "185", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "121", - "measuredH": "25", - "x": "32", - "y": "13", - "properties": { - "size": "17", - "text": "Reactive Model" - } - } - ] - } - } - }, - { - "ID": "4232", - "typeID": "__group__", - "zOrder": "20", - "measuredW": "241", - "measuredH": "50", - "w": "241", - "h": "50", - "x": "116", - "y": "2569", - "properties": { - "controlName": "100-mutlithreading-2:task-based:thread-building-block" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "241", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "220", - "measuredH": "25", - "x": "12", - "y": "12", - "properties": { - "size": "17", - "text": "Thread Building Block (C++)" - } - } - ] - } - } - }, - { - "ID": "4233", - "typeID": "__group__", - "zOrder": "19", - "measuredW": "181", - "measuredH": "50", - "w": "181", - "h": "50", - "x": "116", - "y": "2522", - "properties": { - "controlName": "101-mutlithreading-2:task-based:async-await" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "181", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "131", - "measuredH": "25", - "x": "25", - "y": "12", - "properties": { - "size": "17", - "text": "Async-await (C#)" - } - } - ] - } - } - }, - { - "ID": "4234", - "typeID": "__group__", - "zOrder": "18", - "measuredW": "181", - "measuredH": "50", - "w": "181", - "h": "50", - "x": "116", - "y": "2475", - "properties": { - "controlName": "102-mutlithreading-2:task-based:concurrency" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "181", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "150", - "measuredH": "25", - "x": "16", - "y": "12", - "properties": { - "size": "17", - "text": "Concurrency (Java)" - } - } - ] - } - } - }, - { - "ID": "4235", - "typeID": "__group__", - "zOrder": "229", - "measuredW": "181", - "measuredH": "50", - "w": "181", - "h": "50", - "x": "116", - "y": "2427", - "properties": { - "controlName": "103-mutlithreading-2:task-based:goroutine" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "181", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "113", - "measuredH": "25", - "x": "34", - "y": "12", - "properties": { - "size": "17", - "text": "goroutine (Go)" - } - } - ] - } - } - }, - { - "ID": "4236", - "typeID": "__group__", - "zOrder": "226", - "measuredW": "147", - "measuredH": "50", - "w": "147", - "h": "50", - "x": "117", - "y": "2829", - "properties": { - "controlName": "100-mutlithreading-2:asynchronous:proactor" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "147", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "66", - "measuredH": "25", - "x": "42", - "y": "12", - "properties": { - "size": "17", - "text": "Proactor" - } - } - ] - } - } - }, - { - "ID": "4237", - "typeID": "__group__", - "zOrder": "227", - "measuredW": "148", - "measuredH": "50", - "w": "148", - "h": "50", - "x": "116", - "y": "3000", - "properties": { - "controlName": "101-mutlithreading-2:asynchronous:reactor" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "148", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "62", - "measuredH": "25", - "x": "43", - "y": "12", - "properties": { - "size": "17", - "text": "Reactor" - } - } - ] - } - } - }, - { - "ID": "4238", - "typeID": "__group__", - "zOrder": "28", - "measuredW": "147", - "measuredH": "50", - "w": "147", - "h": "50", - "x": "117", - "y": "2782", - "properties": { - "controlName": "100-mutlithreading-2:asynchronous:proactor:iocp" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "147", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "41", - "measuredH": "25", - "x": "54", - "y": "12", - "properties": { - "size": "17", - "text": "IOCP" - } - } - ] - } - } - }, - { - "ID": "4239", - "typeID": "__group__", - "zOrder": "27", - "measuredW": "147", - "measuredH": "50", - "w": "147", - "h": "50", - "x": "117", - "y": "2735", - "properties": { - "controlName": "101-mutlithreading-2:asynchronous:proactor:iocp:io-uring" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "147", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "64", - "measuredH": "25", - "x": "43", - "y": "12", - "properties": { - "size": "17", - "text": "io_uring" - } - } - ] - } - } - }, - { - "ID": "4240", - "typeID": "__group__", - "zOrder": "26", - "measuredW": "147", - "measuredH": "50", - "w": "147", - "h": "50", - "x": "117", - "y": "2688", - "properties": { - "controlName": "102-mutlithreading-2:asynchronous:proactor:iocp:registered-io" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "147", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "108", - "measuredH": "25", - "x": "21", - "y": "12", - "properties": { - "size": "17", - "text": "Registered IO" - } - } - ] - } - } - }, - { - "ID": "4241", - "typeID": "__group__", - "zOrder": "22", - "measuredW": "147", - "measuredH": "50", - "w": "147", - "h": "50", - "x": "116", - "y": "3046", - "properties": { - "controlName": "100-mutlithreading-2:asynchronous:reactor:select" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "147", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "47", - "measuredH": "25", - "x": "50", - "y": "12", - "properties": { - "size": "17", - "text": "select" - } - } - ] - } - } - }, - { - "ID": "4242", - "typeID": "__group__", - "zOrder": "23", - "measuredW": "147", - "measuredH": "50", - "w": "147", - "h": "50", - "x": "116", - "y": "3093", - "properties": { - "controlName": "101-mutlithreading-2:asynchronous:reactor:wsa-poll" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "147", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "68", - "measuredH": "25", - "x": "40", - "y": "12", - "properties": { - "size": "17", - "text": "WSA Poll" - } - } - ] - } - } - }, - { - "ID": "4243", - "typeID": "__group__", - "zOrder": "24", - "measuredW": "147", - "measuredH": "50", - "w": "147", - "h": "50", - "x": "116", - "y": "3140", - "properties": { - "controlName": "102-mutlithreading-2:asynchronous:reactor:epoll" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "147", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "38", - "measuredH": "25", - "x": "55", - "y": "12", - "properties": { - "size": "17", - "text": "epoll" - } - } - ] - } - } - }, - { - "ID": "4244", - "typeID": "__group__", - "zOrder": "25", - "measuredW": "147", - "measuredH": "50", - "w": "147", - "h": "50", - "x": "116", - "y": "3186", - "properties": { - "controlName": "103-mutlithreading-2:asynchronous:reactor:kqueue" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "147", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "58", - "measuredH": "25", - "x": "45", - "y": "12", - "properties": { - "size": "17", - "text": "kqueue" - } - } - ] - } - } - }, - { - "ID": "4245", - "typeID": "__group__", - "zOrder": "224", - "measuredW": "167", - "measuredH": "50", - "w": "167", - "h": "50", - "x": "303", - "y": "3047", - "properties": { - "controlName": "100-mutlithreading-2:actor-model:akka-net" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "167", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "105", - "measuredH": "25", - "x": "31", - "y": "12", - "properties": { - "size": "17", - "text": "Akka.net (C#)" - } - } - ] - } - } - }, - { - "ID": "4246", - "typeID": "__group__", - "zOrder": "30", - "measuredW": "167", - "measuredH": "50", - "w": "167", - "h": "50", - "x": "303", - "y": "3094", - "properties": { - "controlName": "101-mutlithreading-2:actor-model:akka" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "167", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "90", - "measuredH": "25", - "x": "39", - "y": "12", - "properties": { - "size": "17", - "text": "Akka (Java)" - } - } - ] - } - } - }, - { - "ID": "4247", - "typeID": "__group__", - "zOrder": "16", - "measuredW": "95", - "measuredH": "50", - "w": "95", - "h": "50", - "x": "579", - "y": "2849", - "properties": { - "controlName": "100-mutlithreading-2:reactive-approach:oorp" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "95", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "49", - "measuredH": "25", - "x": "23", - "y": "12", - "properties": { - "size": "17", - "text": "OORP" - } - } - ] - } - } - }, - { - "ID": "4248", - "typeID": "__group__", - "zOrder": "15", - "measuredW": "95", - "measuredH": "50", - "w": "95", - "h": "50", - "x": "668", - "y": "2849", - "properties": { - "controlName": "101-mutlithreading-2:reactive-approach:frp" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "95", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "33", - "measuredH": "25", - "x": "31", - "y": "12", - "properties": { - "size": "17", - "text": "FRP" - } - } - ] - } - } - }, - { - "ID": "4249", - "typeID": "__group__", - "zOrder": "231", - "measuredW": "185", - "measuredH": "50", - "w": "185", - "h": "50", - "x": "578", - "y": "3000", - "properties": { - "controlName": "100-mutlithreading-2:reactive-model:synchrony" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "185", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "79", - "measuredH": "25", - "x": "53", - "y": "13", - "properties": { - "size": "17", - "text": "Synchrony" - } - } - ] - } - } - }, - { - "ID": "4250", - "typeID": "__group__", - "zOrder": "233", - "measuredW": "185", - "measuredH": "50", - "w": "185", - "h": "50", - "x": "578", - "y": "3047", - "properties": { - "controlName": "101-mutlithreading-2:reactive-model:determinism" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "185", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "98", - "measuredH": "25", - "x": "44", - "y": "13", - "properties": { - "size": "17", - "text": "Determinism" - } - } - ] - } - } - }, - { - "ID": "4251", - "typeID": "__group__", - "zOrder": "234", - "measuredW": "185", - "measuredH": "50", - "w": "185", - "h": "50", - "x": "578", - "y": "3094", - "properties": { - "controlName": "102-mutlithreading-2:reactive-model:update-process" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "185", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "124", - "measuredH": "25", - "x": "31", - "y": "13", - "properties": { - "size": "17", - "text": "Update Process" - } - } - ] - } - } - }, - { - "ID": "4252", - "typeID": "__group__", - "zOrder": "237", - "measuredW": "220", - "measuredH": "50", - "w": "220", - "h": "50", - "x": "1122", - "y": "2806", - "properties": { - "controlName": "100-cloud:azure" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "220", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "121", - "measuredH": "25", - "x": "34", - "y": "13", - "properties": { - "size": "17", - "text": "Microsoft Azure" - } - } - ] - } - } - }, - { - "ID": "4253", - "typeID": "__group__", - "zOrder": "238", - "measuredW": "220", - "measuredH": "50", - "w": "220", - "h": "50", - "x": "1122", - "y": "2861", - "properties": { - "controlName": "101-cloud:gcp" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "220", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "174", - "measuredH": "25", - "x": "24", - "y": "13", - "properties": { - "size": "17", - "text": "Google Cloud Platform" - } - } - ] - } - } - }, - { - "ID": "4254", - "typeID": "__group__", - "zOrder": "239", - "measuredW": "220", - "measuredH": "50", - "w": "220", - "h": "50", - "x": "1122", - "y": "2915", - "properties": { - "controlName": "102-cloud:aws" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "220", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "170", - "measuredH": "25", - "x": "24", - "y": "13", - "properties": { - "size": "17", - "text": "Amazon Web Services" - } - } - ] - } - } - }, - { - "ID": "4255", - "typeID": "__group__", - "zOrder": "240", - "measuredW": "220", - "measuredH": "50", - "w": "220", - "h": "50", - "x": "1121", - "y": "3031", - "properties": { - "controlName": "103-cloud:serverless" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "220", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "82", - "measuredH": "25", - "x": "69", - "y": "13", - "properties": { - "size": "17", - "text": "Serverless" - } - } - ] - } - } - }, - { - "ID": "4256", - "typeID": "__group__", - "zOrder": "242", - "measuredW": "220", - "measuredH": "50", - "w": "220", - "h": "50", - "x": "1118", - "y": "3133", - "properties": { - "controlName": "100-data-clustering:apache-spark" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "220", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "107", - "measuredH": "25", - "x": "56", - "y": "13", - "properties": { - "size": "17", - "text": "Apache Spark" - } - } - ] - } - } - }, - { - "ID": "4257", - "typeID": "__group__", - "zOrder": "244", - "measuredW": "220", - "measuredH": "50", - "w": "220", - "h": "50", - "x": "1118", - "y": "3237", - "properties": { - "controlName": "100-containerization:docker" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "220", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "56", - "measuredH": "25", - "x": "76", - "y": "13", - "properties": { - "size": "17", - "text": "Docker" - } - } - ] - } - } - }, - { - "ID": "4258", - "typeID": "__group__", - "zOrder": "245", - "measuredW": "220", - "measuredH": "50", - "w": "220", - "h": "50", - "x": "1118", - "y": "3335", - "properties": { - "controlName": "100-containerization:docker:docker-compose" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "220", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "134", - "measuredH": "25", - "x": "43", - "y": "13", - "properties": { - "size": "17", - "text": "Docker Compose" - } - } - ] - } - } - }, - { - "ID": "4259", - "typeID": "__group__", - "zOrder": "246", - "measuredW": "220", - "measuredH": "50", - "w": "220", - "h": "50", - "x": "1118", - "y": "3389", - "properties": { - "controlName": "101-containerization:docker:kubernetes" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "220", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "90", - "measuredH": "25", - "x": "65", - "y": "13", - "properties": { - "size": "17", - "text": "Kubernetes" - } - } - ] - } - } - }, - { - "ID": "4260", - "typeID": "__group__", - "zOrder": "249", - "measuredW": "167", - "measuredH": "50", - "w": "167", - "h": "50", - "x": "303", - "y": "3238", - "properties": { - "controlName": "100-ai:deep-learning" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "167", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "115", - "measuredH": "25", - "x": "26", - "y": "13", - "properties": { - "size": "17", - "text": "Deep Learning" - } - } - ] - } - } - }, - { - "ID": "4262", - "typeID": "__group__", - "zOrder": "252", - "measuredW": "167", - "measuredH": "50", - "w": "167", - "h": "50", - "x": "571", - "y": "3332", - "properties": { - "controlName": "101-ai:cloud-ml" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "167", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "74", - "measuredH": "25", - "x": "47", - "y": "13", - "properties": { - "size": "17", - "text": "Cloud ML" - } - } - ] - } - } - }, - { - "ID": "4265", - "typeID": "__group__", - "zOrder": "248", - "measuredW": "167", - "measuredH": "50", - "w": "167", - "h": "50", - "x": "303", - "y": "3282", - "properties": { - "controlName": "100-ai:deep-learning:tensor-flow" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "167", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "92", - "measuredH": "25", - "x": "38", - "y": "13", - "properties": { - "size": "17", - "text": "Tensor Flow" - } - } - ] - } - } - }, - { - "ID": "4266", - "typeID": "__group__", - "zOrder": "250", - "measuredW": "167", - "measuredH": "50", - "w": "167", - "h": "50", - "x": "303", - "y": "3329", - "properties": { - "controlName": "101-ai:deep-learning:pytorch" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "167", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "58", - "measuredH": "25", - "x": "55", - "y": "13", - "properties": { - "size": "17", - "text": "Pytorch" - } - } - ] - } - } - }, - { - "ID": "4267", - "typeID": "__group__", - "zOrder": "251", - "measuredW": "167", - "measuredH": "50", - "w": "167", - "h": "50", - "x": "571", - "y": "3376", - "properties": { - "controlName": "100-ai:cloud-ml:amazon-ml" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "167", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "91", - "measuredH": "25", - "x": "38", - "y": "13", - "properties": { - "size": "17", - "text": "Amazon ML" - } - } - ] - } - } - }, - { - "ID": "4268", - "typeID": "__group__", - "zOrder": "0", - "measuredW": "167", - "measuredH": "50", - "w": "167", - "h": "50", - "x": "571", - "y": "3422", - "properties": { - "controlName": "101-ai:cloud-ml:azure-ml" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "167", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "73", - "measuredH": "25", - "x": "47", - "y": "13", - "properties": { - "size": "17", - "text": "Azure ML" - } - } - ] - } - } - } - ] - }, - "attributes": { - "name": "New Wireframe 1 copy 3", - "order": 1000028.1748414688, - "parentID": null, - "notes": "" - }, - "branchID": "Master", - "resourceID": "2051BFE1-BFFD-4915-958E-EDD3CF7E402D", - "mockupH": "3606", - "mockupW": "1327", - "measuredW": "1443", - "measuredH": "3810", - "version": "1.0" - }, - "groupOffset": { - "x": 0, - "y": 0 - }, - "dependencies": [], - "projectID": "file:///Users/kamrify/Desktop/New%20Roadmaps/Android%20Roadmap.bmpr" + "nodes": [ + { + "id": "9Rf_ESmrOhmLgeiAmo2aE", + "type": "vertical", + "position": { + "x": -14.150757605772469, + "y": 1529.1065060656979 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 145, + "positionAbsolute": { + "x": -14.150757605772469, + "y": 1529.1065060656979 + }, + "dragging": false, + "style": { + "width": 20, + "height": 145 + }, + "resizing": false + }, + { + "id": "MyM7wSUeqDXwWqq497EIb", + "type": "vertical", + "position": { + "x": 346.8414717224867, + "y": 2326.8720132492394 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.5, + "strokeDasharray": "0.8 8", + "strokeLinecap": "round" + } + }, + "zIndex": 999, + "width": 20, + "height": 116, + "style": { + "width": 20, + "height": 116 + }, + "positionAbsolute": { + "x": 346.8414717224867, + "y": 2326.8720132492394 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "i5G_vqW3djl1tMFlHhzGi", + "type": "horizontal", + "position": { + "x": -219.23195037554086, + "y": 1607.8976823971498 + }, + "selected": false, + "data": { + "label": "horizontal node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 66, + "height": 20, + "style": { + "width": 66, + "height": 20 + }, + "positionAbsolute": { + "x": -219.23195037554086, + "y": 1607.8976823971498 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "ax0zKGmEcWhEyfTLVL_q_", + "type": "vertical", + "position": { + "x": -146.95654296875, + "y": 1812.4564918532815 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 100, + "style": { + "width": 20, + "height": 100 + }, + "positionAbsolute": { + "x": -146.95654296875, + "y": 1812.4564918532815 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "4UzHjUtWQExUbCApQZrb1", + "type": "section", + "position": { + "x": -51.14448607509672, + "y": 1482.4027065582582 + }, + "width": 122, + "height": 49, + "style": { + "width": 122, + "height": 49 + }, + "selected": false, + "data": { + "style": { + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "positionAbsolute": { + "x": -51.14448607509672, + "y": 1482.4027065582582 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "vQOg2sH4mRdekP8fu2l2y", + "type": "section", + "position": { + "x": -368.31301933317815, + "y": 1567.4564918532815 + }, + "width": 149, + "height": 270, + "style": { + "width": 149, + "height": 270 + }, + "selected": false, + "data": { + "style": { + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "positionAbsolute": { + "x": -368.31301933317815, + "y": 1567.4564918532815 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "xCBr001bGOe6pG2cBV5P2", + "type": "section", + "position": { + "x": -518.6327630325113, + "y": 1566.8976823971498 + }, + "width": 153, + "height": 217, + "style": { + "width": 153, + "height": 217 + }, + "selected": false, + "data": { + "style": { + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "positionAbsolute": { + "x": -518.6327630325113, + "y": 1566.8976823971498 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "p5tPgBIMsADIgyDPwrXds", + "type": "horizontal", + "position": { + "x": -53.23195037554086, + "y": 1398.1810870203947 + }, + "selected": false, + "data": { + "label": "horizontal node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.5 + } + }, + "zIndex": 999, + "width": 390, + "height": 20, + "style": { + "width": 390, + "height": 20 + }, + "positionAbsolute": { + "x": -53.23195037554086, + "y": 1398.1810870203947 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "RpnDZAlSAM9gzffuCmIvY", + "type": "vertical", + "position": { + "x": 467.0153285883124, + "y": 1254.3347138997447 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "O-vqKtOMAgcQL26Fief8r" + }, + "zIndex": 999, + "width": 20, + "height": 76, + "style": { + "width": 20, + "height": 76 + }, + "positionAbsolute": { + "x": 467.0153285883124, + "y": 1254.3347138997447 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "QxCHUdHvPE1PYSROlwaaP", + "type": "vertical", + "position": { + "x": 359.0153285883124, + "y": 1254.3347138997447 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "RpnDZAlSAM9gzffuCmIvY" + }, + "zIndex": 999, + "width": 20, + "height": 76, + "style": { + "width": 20, + "height": 76 + }, + "positionAbsolute": { + "x": 359.0153285883124, + "y": 1254.3347138997447 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "abe6O92f_d1pFu0RLF6_Z", + "type": "vertical", + "position": { + "x": 172.08476767833992, + "y": 1149.9443302389855 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "O-vqKtOMAgcQL26Fief8r" + }, + "zIndex": 999, + "width": 20, + "height": 93, + "style": { + "width": 20, + "height": 93 + }, + "positionAbsolute": { + "x": 172.08476767833992, + "y": 1149.9443302389855 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "kYNHe3y8YOfT2lLP1I8xw", + "type": "vertical", + "position": { + "x": 79.04348787605068, + "y": 1106.9443302389855 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.5 + } + }, + "zIndex": 999, + "width": 20, + "height": 301, + "style": { + "width": 20, + "height": 301 + }, + "positionAbsolute": { + "x": 79.04348787605068, + "y": 1106.9443302389855 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "dlmGJViN_PpdZRXgvcNI1", + "type": "horizontal", + "position": { + "x": -37.73195037554086, + "y": 1096.4443359375 + }, + "selected": false, + "data": { + "label": "horizontal node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.5 + }, + "oldId": "p5tPgBIMsADIgyDPwrXds" + }, + "zIndex": 999, + "width": 130, + "height": 20, + "style": { + "width": 130, + "height": 20 + }, + "positionAbsolute": { + "x": -37.73195037554086, + "y": 1096.4443359375 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "IDoNrKeTKP31kG61rgsuc", + "type": "vertical", + "position": { + "x": -72.45654296875, + "y": 1114.0579118246837 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "ob2dlN-wIVcQOFVbSE9UD" + }, + "zIndex": 999, + "width": 20, + "height": 65, + "style": { + "width": 20, + "height": 65 + }, + "positionAbsolute": { + "x": -72.45654296875, + "y": 1114.0579118246837 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "EuUyOm_J0Uo5qt9e2OtI_", + "type": "vertical", + "position": { + "x": -176.95654296875, + "y": 1114.0579118246837 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "PzcDztjPaUEHW9Y7JXM-z" + }, + "zIndex": 999, + "width": 20, + "height": 71, + "style": { + "width": 20, + "height": 71 + }, + "positionAbsolute": { + "x": -176.95654296875, + "y": 1114.0579118246837 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "ob2dlN-wIVcQOFVbSE9UD", + "type": "vertical", + "position": { + "x": -52.73195037554086, + "y": 830.4443302389855 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 97, + "style": { + "width": 20, + "height": 97 + }, + "positionAbsolute": { + "x": -52.73195037554086, + "y": 830.4443302389855 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "0Ofr6cpaEUbohbp71donO", + "type": "vertical", + "position": { + "x": -168.73195037554086, + "y": 830.4443302389855 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "IDoNrKeTKP31kG61rgsuc" + }, + "zIndex": 999, + "width": 20, + "height": 97, + "style": { + "width": 20, + "height": 97 + }, + "positionAbsolute": { + "x": -168.73195037554086, + "y": 830.4443302389855 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "zr_KATtAVmEKpBT4WUoNh", + "type": "horizontal", + "position": { + "x": 229.08476767833986, + "y": 937.4443302389855 + }, + "selected": false, + "data": { + "label": "horizontal node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 92, + "height": 20, + "style": { + "width": 92, + "height": 20 + }, + "positionAbsolute": { + "x": 229.08476767833986, + "y": 937.4443302389855 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "2wJP9uXId9I4I04dbgOwF", + "type": "horizontal", + "position": { + "x": 229.08476767833986, + "y": 884.4443302389855 + }, + "selected": false, + "data": { + "label": "horizontal node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "zr_KATtAVmEKpBT4WUoNh" + }, + "zIndex": 999, + "width": 92, + "height": 20, + "style": { + "width": 92, + "height": 20 + }, + "positionAbsolute": { + "x": 229.08476767833986, + "y": 884.4443302389855 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "eVEId_Ty9xOlo5JySxS-_", + "type": "horizontal", + "position": { + "x": 229.08476767833986, + "y": 832.4443302389855 + }, + "selected": false, + "data": { + "label": "horizontal node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "zr_KATtAVmEKpBT4WUoNh" + }, + "zIndex": 999, + "width": 92, + "height": 20, + "style": { + "width": 92, + "height": 20 + }, + "positionAbsolute": { + "x": 229.08476767833986, + "y": 832.4443302389855 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "oo5RSmzBY8EIEhZUo7Kd-", + "type": "vertical", + "position": { + "x": 9.584767678339915, + "y": -20.82399710033968 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.5 + }, + "oldId": "QLA2IXBTDNrPyKGgxhfX1" + }, + "zIndex": 999, + "width": 20, + "height": 139, + "style": { + "width": 20, + "height": 139 + }, + "positionAbsolute": { + "x": 9.584767678339915, + "y": -20.82399710033968 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "XkHpamC32buckstAh-FKp", + "type": "horizontal", + "position": { + "x": -82.73195037554086, + "y": 108.55791182468352 + }, + "selected": false, + "data": { + "label": "horizontal node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.5 + } + }, + "zIndex": 999, + "width": 251, + "height": 20, + "style": { + "width": 251, + "height": 20 + }, + "positionAbsolute": { + "x": -82.73195037554086, + "y": 108.55791182468352 + }, + "dragging": false, + "resizing": true, + "focusable": true, + "selectable": true + }, + { + "id": "OYUf0l4D8S8JcQx_YIPNj", + "type": "section", + "position": { + "x": -513.7045658739704, + "y": 147.05791182468352 + }, + "width": 227, + "height": 538, + "style": { + "width": 227, + "height": 538 + }, + "selected": false, + "data": { + "style": { + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "dragging": false, + "resizing": false, + "positionAbsolute": { + "x": -513.7045658739704, + "y": 147.05791182468352 + }, + "selectable": true, + "focusable": true + }, + { + "id": "yxUTaHSb98G-cApFPb7tu", + "type": "horizontal", + "position": { + "x": -520.9565121239493, + "y": -40.82399710033968 + }, + "selected": false, + "data": { + "label": "horizontal node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 73, + "height": 20, + "style": { + "width": 73, + "height": 20 + }, + "positionAbsolute": { + "x": -520.9565121239493, + "y": -40.82399710033968 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "width": 255, + "height": 68, + "id": "iogwMmOvub2ZF4zgg6WyF", + "type": "title", + "position": { + "x": -108.73195037554086, + "y": -184.83998521803062 + }, + "selected": false, + "data": { + "label": "Game Developer", + "style": { + "fontSize": 28, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "9nxw2PEl-_eQPW0FHNPq2" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -108.73195037554086, + "y": -184.83998521803062 + }, + "focusable": true, + "selectable": true + }, + { + "width": 20, + "height": 64, + "id": "LEijbLyxg4RyutKEM2Y5g", + "type": "vertical", + "position": { + "x": 8.768049624459138, + "y": -243.55566976101449 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#0A33FF" + }, + "oldId": "xD07fJ1NmNeAarVCEfubU" + }, + "zIndex": 999, + "positionAbsolute": { + "x": 8.768049624459138, + "y": -243.55566976101449 + }, + "dragging": false, + "focusable": true, + "style": { + "width": 20, + "height": 64 + }, + "resizing": true, + "selectable": true + }, + { + "id": "yHmHXymPNWwu8p1vvqD3o", + "type": "paragraph", + "position": { + "x": 179.8414717224867, + "y": -232.76957062917046 + }, + "selected": false, + "data": { + "label": "Find the detailed version of this roadmap along with other similar roadmaps", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "left", + "borderColor": "#000000", + "backgroundColor": "#FFFFFf" + } + }, + "zIndex": 999, + "width": 354, + "height": 143, + "positionAbsolute": { + "x": 179.8414717224867, + "y": -232.76957062917046 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 354, + "height": 143 + }, + "resizing": false + }, + { + "id": "R_Fs6rdl2XtQ9aLOubMqL", + "type": "button", + "position": { + "x": 193.04484613528683, + "y": -150.78400721142515 + }, + "selected": false, + "data": { + "label": "roadmap.sh", + "href": "https://roadmap.sh", + "color": "#ffffff", + "backgroundColor": "#4136D6", + "style": { + "fontSize": 17 + }, + "oldId": "2zqZkyVgigifcRS1H7F_b" + }, + "zIndex": 999, + "width": 329, + "height": 49, + "dragging": false, + "style": { + "width": 329, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": 193.04484613528683, + "y": -150.78400721142515 + }, + "selectable": true, + "focusable": true + }, + { + "id": "xwpc_KxehAruFM0pCQnie", + "type": "vertical", + "position": { + "x": 191.40964679943443, + "y": 2884.376596918144 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#4136D4" + }, + "oldId": "Ju00mr0KLGN2BV6yEQGPt" + }, + "zIndex": 999, + "width": 20, + "height": 104, + "positionAbsolute": { + "x": 191.40964679943443, + "y": 2884.376596918144 + }, + "dragging": false, + "style": { + "width": 20, + "height": 104 + }, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "width": 443, + "height": 119, + "id": "GV_zWF6rSWg5bqgiXhOEf", + "type": "paragraph", + "position": { + "x": -20.090353200565573, + "y": 2793.7858464012675 + }, + "selected": false, + "data": { + "label": "Visit the following relevant roadmaps", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "borderColor": "#000000", + "backgroundColor": "#ffffff" + }, + "oldId": "sVXZrBCsiSzWBBYWTm-nQ" + }, + "zIndex": 999, + "positionAbsolute": { + "x": -20.090353200565573, + "y": 2793.7858464012675 + }, + "dragging": false, + "style": { + "width": 443, + "height": 119 + }, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "SIvQYH0q1H29NgbtLq3L8", + "type": "button", + "position": { + "x": -446.07124610794176, + "y": -55.32399710033968 + }, + "selected": false, + "data": { + "label": "Client Side", + "href": "https://roadmap.sh/game-developer", + "color": "#000000", + "backgroundColor": "#DEDEDE", + "style": { + "fontSize": 17 + }, + "borderColor": "#DEDEDE" + }, + "zIndex": 999, + "width": 212, + "height": 49, + "style": { + "width": 212, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": -446.07124610794176, + "y": -55.32399710033968 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "rQArtuVKGVgLn_fw9yO3b", + "type": "topic", + "position": { + "x": -115.91523232166008, + "y": -55.32399710033968 + }, + "selected": false, + "data": { + "label": "Server-Side Development", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "m1wX27XBWKXZcTMH2U1xp" + }, + "zIndex": 999, + "width": 271, + "height": 49, + "style": { + "width": 271, + "height": 49 + }, + "positionAbsolute": { + "x": -115.91523232166008, + "y": -55.32399710033968 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "FbfHP9hFBuISrGzKaX-qm", + "type": "paragraph", + "position": { + "x": -520.8639110926986, + "y": -233.1028359109968 + }, + "selected": false, + "data": { + "label": "Shout out to Chris Ohk who helped make the initial version of this roadmap.", + "style": { + "fontSize": 17, + "borderColor": "#000000", + "backgroundColor": "#ffffff", + "color": "#000000", + "textAlign": "left", + "justifyContent": "flex-start", + "padding": 16 + } + }, + "zIndex": 999, + "width": 347, + "height": 148, + "style": { + "width": 347, + "height": 148 + }, + "dragging": false, + "positionAbsolute": { + "x": -520.8639110926986, + "y": -233.1028359109968 + }, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "2zqZkyVgigifcRS1H7F_b", + "type": "button", + "position": { + "x": -505.86391109269846, + "y": -152.09530466580176 + }, + "selected": false, + "data": { + "label": "Visit his GitHub", + "href": "https://github.com/utilForever", + "color": "#000000", + "backgroundColor": "#dedede", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 317, + "height": 49, + "dragging": false, + "style": { + "width": 317, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": -505.86391109269846, + "y": -152.09530466580176 + }, + "selectable": true, + "focusable": true + }, + { + "width": 134, + "height": 49, + "id": "ZSrQoNGKiR484uALMWO9F", + "type": "button", + "position": { + "x": 277.25676028036133, + "y": 2851.475128312919 + }, + "selected": false, + "data": { + "label": "API Design", + "href": "https://roadmap.sh/api-design", + "color": "#FFFFFf", + "backgroundColor": "#4136D4", + "style": { + "fontSize": 17 + }, + "borderColor": "#4136D4", + "oldId": "dlGf3ZdFXYx0Z6Viu2x-l" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": 277.25676028036133, + "y": 2851.475128312919 + }, + "style": { + "width": 134, + "height": 49 + }, + "focusable": true, + "resizing": false, + "selectable": true + }, + { + "id": "mUCidjOsVLMAVDf2jmV5F", + "type": "topic", + "position": { + "x": -163.23195037554086, + "y": 94.05791182468352 + }, + "selected": false, + "data": { + "label": "TCP", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "6ilqzjvI4J1pUCmTJ33PA" + }, + "zIndex": 999, + "width": 112, + "height": 49, + "style": { + "width": 112, + "height": 49 + }, + "positionAbsolute": { + "x": -163.23195037554086, + "y": 94.05791182468352 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "XxBl-zO7CF6DpOZ2bMDxJ", + "type": "subtopic", + "position": { + "x": -514.7045658739704, + "y": 44.057911824683515 + }, + "selected": false, + "data": { + "label": "Checksum", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 228, + "height": 46, + "style": { + "width": 228, + "height": 46 + }, + "positionAbsolute": { + "x": -514.7045658739704, + "y": 44.057911824683515 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "zTCmPUp9j5P1wpGgiboMa", + "type": "subtopic", + "position": { + "x": -514.7045658739704, + "y": 94.05791182468352 + }, + "selected": false, + "data": { + "label": "Segment Structure", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 228, + "height": 49, + "style": { + "width": 228, + "height": 49 + }, + "positionAbsolute": { + "x": -514.7045658739704, + "y": 94.05791182468352 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "5sI3RHaLudq4TfpjoYeOp", + "type": "subtopic", + "position": { + "x": -505.86391109269846, + "y": 303.0579118246835 + }, + "selected": false, + "data": { + "label": "Connection", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 211, + "height": 49, + "style": { + "width": 211, + "height": 49 + }, + "positionAbsolute": { + "x": -505.86391109269846, + "y": 303.0579118246835 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "LkGI0VpJ3WkpPHkJhJgWk", + "type": "subtopic", + "position": { + "x": -505.86391109269846, + "y": 356.0579118246835 + }, + "selected": false, + "data": { + "label": "Resource Usage", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 211, + "height": 49, + "style": { + "width": 211, + "height": 49 + }, + "positionAbsolute": { + "x": -505.86391109269846, + "y": 356.0579118246835 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "5bJUcx3v4dpdlIsx7bFvK", + "type": "subtopic", + "position": { + "x": -505.86391109269846, + "y": 515.0579118246835 + }, + "selected": false, + "data": { + "label": "Data Transfer", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 211, + "height": 49, + "style": { + "width": 211, + "height": 49 + }, + "positionAbsolute": { + "x": -505.86391109269846, + "y": 515.0579118246835 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "1l5dhQWYPhUSg-cy5pSlK", + "type": "subtopic", + "position": { + "x": -505.86391109269846, + "y": 409.0579118246835 + }, + "selected": false, + "data": { + "label": "Max Segment Scaling", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 212, + "height": 49, + "style": { + "width": 212, + "height": 49 + }, + "positionAbsolute": { + "x": -505.86391109269846, + "y": 409.0579118246835 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "zvBKjceXRSfEe_3MDCEL5", + "type": "subtopic", + "position": { + "x": -505.86391109269846, + "y": 250.05791182468352 + }, + "selected": false, + "data": { + "label": "Window Scaling", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 211, + "height": 49, + "style": { + "width": 211, + "height": 49 + }, + "positionAbsolute": { + "x": -505.86391109269846, + "y": 250.05791182468352 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "6KAYNPLEFMp6Jha8FLMAU", + "type": "subtopic", + "position": { + "x": -505.86391109269846, + "y": 462.0579118246835 + }, + "selected": false, + "data": { + "label": "Timestamp", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 211, + "height": 49, + "style": { + "width": 211, + "height": 49 + }, + "positionAbsolute": { + "x": -505.86391109269846, + "y": 462.0579118246835 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "3OMu3RM-6pMjqY1jAmC2-", + "type": "subtopic", + "position": { + "x": -505.86391109269846, + "y": 568.0579118246835 + }, + "selected": false, + "data": { + "label": "Out-of-Band Data", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 211, + "height": 49, + "style": { + "width": 211, + "height": 49 + }, + "positionAbsolute": { + "x": -505.86391109269846, + "y": 568.0579118246835 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "SPpOO25b7wpajWDIrKi1u", + "type": "subtopic", + "position": { + "x": -505.86391109269846, + "y": 621.0579118246835 + }, + "selected": false, + "data": { + "label": "Selective Ack.", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 211, + "height": 49, + "style": { + "width": 211, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -505.86391109269846, + "y": 621.0579118246835 + }, + "selectable": true, + "focusable": true + }, + { + "id": "1GML0Jsfdb1Fn-0PNryiQ", + "type": "subtopic", + "position": { + "x": -213.73195037554086, + "y": 462.0579118246835 + }, + "selected": false, + "data": { + "label": "Congestion Control", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 213, + "height": 49, + "style": { + "width": 213 + }, + "positionAbsolute": { + "x": -213.73195037554086, + "y": 462.0579118246835 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "X2KHWgQZDHSVDsTRMUwSj", + "type": "subtopic", + "position": { + "x": -213.73195037554086, + "y": 515.0579118246835 + }, + "selected": false, + "data": { + "label": "Reliable Transmission", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "vFM311xSa5OqNVove2f6j" + }, + "zIndex": 999, + "width": 214, + "height": 49, + "style": { + "width": 214, + "height": 49 + }, + "positionAbsolute": { + "x": -213.73195037554086, + "y": 515.0579118246835 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "lDVD-3i64Mk7-KPJrXmFH", + "type": "subtopic", + "position": { + "x": -213.73195037554086, + "y": 568.0579118246835 + }, + "selected": false, + "data": { + "label": "Flow Control", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 213, + "height": 49, + "style": { + "width": 213 + }, + "positionAbsolute": { + "x": -213.73195037554086, + "y": 568.0579118246835 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "vFM311xSa5OqNVove2f6j", + "type": "subtopic", + "position": { + "x": -213.73195037554086, + "y": 638.0579118246835 + }, + "selected": false, + "data": { + "label": "Error Detection", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "lDVD-3i64Mk7-KPJrXmFH" + }, + "zIndex": 999, + "width": 213, + "height": 49, + "style": { + "width": 213 + }, + "positionAbsolute": { + "x": -213.73195037554086, + "y": 638.0579118246835 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "w6ysmcsBn9jJ8xMvg7hcD", + "type": "subtopic", + "position": { + "x": -505.86391109269846, + "y": 197.05791182468352 + }, + "selected": false, + "data": { + "label": "Max Segment Size", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 211, + "height": 49, + "style": { + "width": 211, + "height": 49 + }, + "positionAbsolute": { + "x": -505.86391109269846, + "y": 197.05791182468352 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "MwLWDlciJOq_0n5S3GoF-", + "type": "subtopic", + "position": { + "x": -211.73195037554086, + "y": 194.05791182468346 + }, + "selected": false, + "data": { + "label": "Vulnerability", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 209, + "height": 49, + "style": { + "width": 209, + "height": 49 + }, + "positionAbsolute": { + "x": -211.73195037554086, + "y": 194.05791182468346 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "TbXJO__4xSnzK1fvvJK86", + "type": "subtopic", + "position": { + "x": -211.73195037554086, + "y": 280.05791182468346 + }, + "selected": false, + "data": { + "label": "Denial of Service", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 209, + "height": 49, + "style": { + "width": 209, + "height": 49 + }, + "positionAbsolute": { + "x": -211.73195037554086, + "y": 280.05791182468346 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "ubRiY3jdh3iS3diN482IU", + "type": "subtopic", + "position": { + "x": -211.73195037554086, + "y": 333.05791182468346 + }, + "selected": false, + "data": { + "label": "Connection Hijacking", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 209, + "height": 49, + "style": { + "width": 209, + "height": 49 + }, + "positionAbsolute": { + "x": -211.73195037554086, + "y": 333.05791182468346 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "ZLTfpRZ0rF-mtd7Z0R2WF", + "type": "subtopic", + "position": { + "x": -211.73195037554086, + "y": 386.05791182468346 + }, + "selected": false, + "data": { + "label": "Veto", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 209, + "height": 49, + "style": { + "width": 209, + "height": 49 + }, + "positionAbsolute": { + "x": -211.73195037554086, + "y": 386.05791182468346 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "ALNR_uSq6ByPUrt6lXkhZ", + "type": "paragraph", + "position": { + "x": -510.2045658739704, + "y": 147.05791182468352 + }, + "selected": false, + "data": { + "label": "Operations", + "style": { + "fontSize": 17, + "borderColor": "transparent", + "backgroundColor": "transparent", + "color": "#000000", + "textAlign": "center", + "justifyContent": "center", + "padding": 16 + } + }, + "zIndex": 999, + "width": 219, + "height": 50, + "style": { + "width": 219, + "height": 50 + }, + "positionAbsolute": { + "x": -510.2045658739704, + "y": 147.05791182468352 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "IMyHwnXxJK6oFxzOMLxjS", + "type": "topic", + "position": { + "x": 80.08476767833992, + "y": 94.05791182468352 + }, + "selected": false, + "data": { + "label": "UDP", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "6ilqzjvI4J1pUCmTJ33PA" + }, + "zIndex": 999, + "width": 112, + "height": 49, + "style": { + "width": 112, + "height": 49 + }, + "positionAbsolute": { + "x": 80.08476767833992, + "y": 94.05791182468352 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "Vh81GnOUOZvDOlOyI5PwT", + "type": "subtopic", + "position": { + "x": 307.0434878760507, + "y": -12.055669761014485 + }, + "selected": false, + "data": { + "label": "Reliability", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 233, + "height": 49, + "style": { + "width": 233, + "height": 49 + }, + "positionAbsolute": { + "x": 307.0434878760507, + "y": -12.055669761014485 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "wD_HWc9YxPhlkilt585pg", + "type": "subtopic", + "position": { + "x": 307.0434878760507, + "y": 40.944330238985515 + }, + "selected": false, + "data": { + "label": "Datagram", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 233, + "height": 49, + "style": { + "width": 233, + "height": 49 + }, + "positionAbsolute": { + "x": 307.0434878760507, + "y": 40.944330238985515 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "jsNsyrGzegVnjIF2l52vI", + "type": "subtopic", + "position": { + "x": 307.0434878760507, + "y": 93.94433023898551 + }, + "selected": false, + "data": { + "label": "Congestion Control", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 233, + "height": 49, + "style": { + "width": 233, + "height": 49 + }, + "positionAbsolute": { + "x": 307.0434878760507, + "y": 93.94433023898551 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "tBOvBpDi3SOKZjAmkxdM0", + "type": "subtopic", + "position": { + "x": 307.0434878760507, + "y": 146.94433023898551 + }, + "selected": false, + "data": { + "label": "Checksum", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 233, + "height": 49, + "style": { + "width": 233, + "height": 49 + }, + "positionAbsolute": { + "x": 307.0434878760507, + "y": 146.94433023898551 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "CCxVnrGDKa1EROXgF_OAm", + "type": "subtopic", + "position": { + "x": 307.0434878760507, + "y": 199.94433023898551 + }, + "selected": false, + "data": { + "label": "Packet Structure", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 233, + "height": 49, + "style": { + "width": 233, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 307.0434878760507, + "y": 199.94433023898551 + }, + "focusable": true, + "selectable": true + }, + { + "id": "RfTcTUjaXyp49FnUf44MK", + "type": "topic", + "position": { + "x": 67.08476767833992, + "y": 434.4443302389856 + }, + "selected": false, + "data": { + "label": "TCP vs UDP", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "6ilqzjvI4J1pUCmTJ33PA" + }, + "zIndex": 999, + "width": 138, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 67.08476767833992, + "y": 434.4443302389856 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "MoyBGT9bscUe8vMN4J0bG", + "type": "subtopic", + "position": { + "x": 307.0434878760507, + "y": 487.4443302389856 + }, + "selected": false, + "data": { + "label": "Reliable vs Unreliable", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 233, + "height": 49, + "style": { + "width": 233, + "height": 49 + }, + "positionAbsolute": { + "x": 307.0434878760507, + "y": 487.4443302389856 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "WMdCDmFsytsF2AWQXfzC8", + "type": "subtopic", + "position": { + "x": 307.0434878760507, + "y": 328.4443302389856 + }, + "selected": false, + "data": { + "label": "Ordered vs Unordered", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 233, + "height": 49, + "style": { + "width": 233, + "height": 49 + }, + "positionAbsolute": { + "x": 307.0434878760507, + "y": 328.4443302389856 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "OYXKtl4A-vaK6yGO6hS6n", + "type": "subtopic", + "position": { + "x": 307.0434878760507, + "y": 381.4443302389856 + }, + "selected": false, + "data": { + "label": "Heavy vs Lightweight", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 233, + "height": 49, + "style": { + "width": 233, + "height": 49 + }, + "positionAbsolute": { + "x": 307.0434878760507, + "y": 381.4443302389856 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "JE3uZ5U6oe6dVzsmglTl2", + "type": "subtopic", + "position": { + "x": 307.0434878760507, + "y": 434.4443302389856 + }, + "selected": false, + "data": { + "label": "Packet vs Datagram", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 233, + "height": 49, + "style": { + "width": 233, + "height": 49 + }, + "positionAbsolute": { + "x": 307.0434878760507, + "y": 434.4443302389856 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "pJw8fN1dt3BABtZVz7wGE", + "type": "subtopic", + "position": { + "x": 307.0434878760507, + "y": 540.4443302389856 + }, + "selected": false, + "data": { + "label": "Streaming vs Broadcast", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 233, + "height": 49, + "style": { + "width": 233, + "height": 49 + }, + "positionAbsolute": { + "x": 307.0434878760507, + "y": 540.4443302389856 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "tg94V7K0mgYhpkUMp_Scv", + "type": "topic", + "position": { + "x": 86.08476767833992, + "y": 709.9443302389855 + }, + "selected": false, + "data": { + "label": "IP", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "6ilqzjvI4J1pUCmTJ33PA" + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": 86.08476767833992, + "y": 709.9443302389855 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "5kF1fqr-mn5-15e3aMa9k", + "type": "subtopic", + "position": { + "x": 293.0434878760507, + "y": 656.9443302389855 + }, + "selected": false, + "data": { + "label": "Capability", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 244, + "height": 49, + "style": { + "width": 244, + "height": 49 + }, + "positionAbsolute": { + "x": 293.0434878760507, + "y": 656.9443302389855 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "2jDV-ovvrkBbTTLk5VbR9", + "type": "subtopic", + "position": { + "x": 293.0434878760507, + "y": 709.9443302389855 + }, + "selected": false, + "data": { + "label": "Reliability", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 244, + "height": 49, + "style": { + "width": 244, + "height": 49 + }, + "positionAbsolute": { + "x": 293.0434878760507, + "y": 709.9443302389855 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "OzY-LPcfj1sBm_0F0WbIJ", + "type": "subtopic", + "position": { + "x": 293.0434878760507, + "y": 762.9443302389855 + }, + "selected": false, + "data": { + "label": "Link Capacity", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 244, + "height": 49, + "style": { + "width": 244, + "height": 49 + }, + "positionAbsolute": { + "x": 293.0434878760507, + "y": 762.9443302389855 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "YPvm8XD_FaFYCQ-b7-KsH", + "type": "topic", + "position": { + "x": 293.0434878760507, + "y": 975.9443302389855 + }, + "selected": false, + "data": { + "label": "Function", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 244, + "height": 49, + "style": { + "width": 244, + "height": 49 + }, + "positionAbsolute": { + "x": 293.0434878760507, + "y": 975.9443302389855 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "jnQAzUUnwpJgoRuRIFtSe", + "type": "subtopic", + "position": { + "x": 294.5434878760507, + "y": 1061.0579118246837 + }, + "selected": false, + "data": { + "label": "Datagram Construction", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 241, + "height": 49, + "style": { + "width": 241, + "height": 49 + }, + "resizing": false, + "dragging": false, + "positionAbsolute": { + "x": 294.5434878760507, + "y": 1061.0579118246837 + }, + "focusable": true, + "selectable": true + }, + { + "id": "3ZcJNDCHw2pFzewmoB-03", + "type": "subtopic", + "position": { + "x": 294.5434878760507, + "y": 1112.9443359375 + }, + "selected": false, + "data": { + "label": "IP Addressing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 152, + "height": 49, + "style": { + "width": 152, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 294.5434878760507, + "y": 1112.9443359375 + }, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "bYb7nA-Vn9e6VtdbUT3tq", + "type": "subtopic", + "position": { + "x": 451.5434878760507, + "y": 1112.9443359375 + }, + "selected": false, + "data": { + "label": "Routing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 85, + "height": 49, + "style": { + "width": 85, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 451.5434878760507, + "y": 1112.9443359375 + }, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "r2OeI7YC1BLLfctC8q69W", + "type": "topic", + "position": { + "x": 293.0434878760507, + "y": 816.9443302389855 + }, + "selected": false, + "data": { + "label": "Transactions", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 244, + "height": 49, + "style": { + "width": 244, + "height": 49 + }, + "positionAbsolute": { + "x": 293.0434878760507, + "y": 816.9443302389855 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "JI_wUdT2hjsrvbIhLvHcT", + "type": "subtopic", + "position": { + "x": 35.043487876050676, + "y": 817.9443302389855 + }, + "selected": false, + "data": { + "label": "ARP", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 65, + "height": 49, + "style": { + "width": 65, + "height": 49 + }, + "positionAbsolute": { + "x": 35.043487876050676, + "y": 817.9443302389855 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "yNytLrQAMKBw4t73YRL3J", + "type": "subtopic", + "position": { + "x": 104.04348787605068, + "y": 817.9443302389855 + }, + "selected": false, + "data": { + "label": "DNS", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 60, + "height": 49, + "style": { + "width": 60, + "height": 49 + }, + "positionAbsolute": { + "x": 104.04348787605068, + "y": 817.9443302389855 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "aTHJh-xw8soCxC1bIDdXm", + "type": "subtopic", + "position": { + "x": 168.04348787605068, + "y": 817.9443302389855 + }, + "selected": false, + "data": { + "label": "DHCP", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 90, + "height": 49, + "style": { + "width": 90, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": 168.04348787605068, + "y": 817.9443302389855 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "NH2eQ1_nij1icTgoO027b", + "type": "topic", + "position": { + "x": 293.0434878760507, + "y": 869.9443302389855 + }, + "selected": false, + "data": { + "label": "Category", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + }, + "oldId": "qkO0s9zR0sAnjTRWcrLQY" + }, + "zIndex": 999, + "width": 244, + "height": 49, + "style": { + "width": 244, + "height": 49 + }, + "positionAbsolute": { + "x": 293.0434878760507, + "y": 869.9443302389855 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "pHVB0K8Vtk3ToD6n_f1wv", + "type": "subtopic", + "position": { + "x": 168.04348787605068, + "y": 870.9443302389855 + }, + "selected": false, + "data": { + "label": "IPv4", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 90, + "height": 49, + "style": { + "width": 90, + "height": 49 + }, + "positionAbsolute": { + "x": 168.04348787605068, + "y": 870.9443302389855 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "TqBlAMfhARhlJed6xD7eg", + "type": "subtopic", + "position": { + "x": 104.04348787605068, + "y": 870.9443302389855 + }, + "selected": false, + "data": { + "label": "IPv6", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "FX8ASd-QzTUFDHzBB93WK" + }, + "zIndex": 999, + "width": 60, + "height": 49, + "style": { + "width": 60, + "height": 49 + }, + "positionAbsolute": { + "x": 104.04348787605068, + "y": 870.9443302389855 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "qkO0s9zR0sAnjTRWcrLQY", + "type": "topic", + "position": { + "x": 293.0434878760507, + "y": 922.9443302389855 + }, + "selected": false, + "data": { + "label": "Security", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 244, + "height": 49, + "style": { + "width": 244, + "height": 49 + }, + "positionAbsolute": { + "x": 293.0434878760507, + "y": 922.9443302389855 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "FX8ASd-QzTUFDHzBB93WK", + "type": "subtopic", + "position": { + "x": 168.04348787605068, + "y": 922.9443302389855 + }, + "selected": false, + "data": { + "label": "TLS", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 90, + "height": 49, + "style": { + "width": 90, + "height": 49 + }, + "positionAbsolute": { + "x": 168.04348787605068, + "y": 922.9443302389855 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "6ilqzjvI4J1pUCmTJ33PA", + "type": "topic", + "position": { + "x": -219.23195037554086, + "y": 817.9443302389855 + }, + "selected": false, + "data": { + "label": "Programming Languages", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 238, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -219.23195037554086, + "y": 817.9443302389855 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "E4H3hniIW6hKpH3Qr--N5", + "type": "subtopic", + "position": { + "x": -216.23195037554086, + "y": 952.4443302389858 + }, + "selected": false, + "data": { + "label": "C/C++", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 115, + "height": 49, + "style": { + "width": 115, + "height": 49 + }, + "positionAbsolute": { + "x": -216.23195037554086, + "y": 952.4443302389858 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "DuyUc9a-47Uz03yr4aeyg", + "type": "subtopic", + "position": { + "x": -95.23195037554086, + "y": 899.4443302389858 + }, + "selected": false, + "data": { + "label": "C#", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 114, + "height": 49, + "style": { + "width": 114, + "height": 49 + }, + "positionAbsolute": { + "x": -95.23195037554086, + "y": 899.4443302389858 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "LG8JPL1po-gEs1V5JyC8F", + "type": "subtopic", + "position": { + "x": -216.23195037554086, + "y": 899.4443302389858 + }, + "selected": false, + "data": { + "label": "Java", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 115, + "height": 49, + "style": { + "width": 115, + "height": 49 + }, + "positionAbsolute": { + "x": -216.23195037554086, + "y": 899.4443302389858 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "QGtGx5LBEWa1DD3Y7ztUy", + "type": "subtopic", + "position": { + "x": -95.23195037554086, + "y": 952.4443302389858 + }, + "selected": false, + "data": { + "label": "Erlang", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "d5iQYn97vuoxJnCFGPdOa" + }, + "zIndex": 999, + "width": 114, + "height": 49, + "style": { + "width": 114, + "height": 49 + }, + "positionAbsolute": { + "x": -95.23195037554086, + "y": 952.4443302389858 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "ufufnULqsglE5VhEIAdSI", + "type": "subtopic", + "position": { + "x": -216.23195037554086, + "y": 1005.4443302389858 + }, + "selected": false, + "data": { + "label": "JavaScript", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 115, + "height": 49, + "style": { + "width": 115, + "height": 49 + }, + "positionAbsolute": { + "x": -216.23195037554086, + "y": 1005.4443302389858 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "d5iQYn97vuoxJnCFGPdOa", + "type": "subtopic", + "position": { + "x": -95.23195037554086, + "y": 1005.4443302389859 + }, + "selected": false, + "data": { + "label": "Go", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 114, + "height": 49, + "style": { + "width": 114, + "height": 49 + }, + "positionAbsolute": { + "x": -95.23195037554086, + "y": 1005.4443302389859 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "HvpuFTCknHPhnFkhmhRc4", + "type": "topic", + "position": { + "x": -515.95654296875, + "y": 971.9443302389855 + }, + "selected": false, + "data": { + "label": "Socket Programming", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "3QSLUMKD0G08N3MIb1cG7" + }, + "zIndex": 999, + "width": 205, + "height": 49, + "style": { + "width": 205, + "height": 49 + }, + "positionAbsolute": { + "x": -515.95654296875, + "y": 971.9443302389855 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "H21PanCggDfQt34-JzgfO", + "type": "subtopic", + "position": { + "x": -515.95654296875, + "y": 763.9443359375 + }, + "selected": false, + "data": { + "label": "Byte Manipulation", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 205, + "height": 49, + "style": { + "width": 205, + "height": 49 + }, + "positionAbsolute": { + "x": -515.95654296875, + "y": 763.9443359375 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "SBA7pa9o0AM0ZEBepd7UM", + "type": "subtopic", + "position": { + "x": -515.95654296875, + "y": 816.9443359375 + }, + "selected": false, + "data": { + "label": "Address Conversion", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 205, + "height": 49, + "style": { + "width": 205, + "height": 49 + }, + "positionAbsolute": { + "x": -515.95654296875, + "y": 816.9443359375 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "OAyMj6uLSv1yJ87YAjyZu", + "type": "subtopic", + "position": { + "x": -515.95654296875, + "y": 869.9443359375 + }, + "selected": false, + "data": { + "label": "Descriptor", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 205, + "height": 49, + "style": { + "width": 205, + "height": 49 + }, + "positionAbsolute": { + "x": -515.95654296875, + "y": 869.9443359375 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "a2pcxVTGdAPw8aLvdr19M", + "type": "subtopic", + "position": { + "x": -481.45654296875, + "y": 1078.9443359375 + }, + "selected": false, + "data": { + "label": "API", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 138, + "height": 49, + "style": { + "width": 138, + "height": 49 + }, + "positionAbsolute": { + "x": -481.45654296875, + "y": 1078.9443359375 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "U_tZFM80W3xJx8jj4skCr", + "type": "subtopic", + "position": { + "x": -481.45654296875, + "y": 1131.9443359375 + }, + "selected": false, + "data": { + "label": "BSD Socket", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 138, + "height": 49, + "style": { + "width": 138, + "height": 49 + }, + "positionAbsolute": { + "x": -481.45654296875, + "y": 1131.9443359375 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "GfTXffisLyQgp66zcQ7Py", + "type": "subtopic", + "position": { + "x": -481.45654296875, + "y": 1184.9443359375 + }, + "selected": false, + "data": { + "label": "Winsock", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 138, + "height": 49, + "style": { + "width": 138, + "height": 49 + }, + "positionAbsolute": { + "x": -481.45654296875, + "y": 1184.9443359375 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "TS6dz61rUSxm-SqmK6JKe", + "type": "topic", + "position": { + "x": -217.23195037554086, + "y": 1081.9443359375 + }, + "selected": false, + "data": { + "label": "Serialization", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "3QSLUMKD0G08N3MIb1cG7" + }, + "zIndex": 999, + "width": 205, + "height": 49, + "style": { + "width": 205, + "height": 49 + }, + "positionAbsolute": { + "x": -217.23195037554086, + "y": 1081.9443359375 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "y0ZJQQfi8Qx6sB4WnZlP5", + "type": "subtopic", + "position": { + "x": -216.95654296875, + "y": 1166.9443359375 + }, + "selected": false, + "data": { + "label": "JSON", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": -216.95654296875, + "y": 1166.9443359375 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "v43K6srds7m5SQFqNaY0T", + "type": "subtopic", + "position": { + "x": -216.95654296875, + "y": 1219.9443359375 + }, + "selected": false, + "data": { + "label": "XML", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": -216.95654296875, + "y": 1219.9443359375 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "uHcUSVLz_2-Usk6ckSvwr", + "type": "subtopic", + "position": { + "x": -112.95654296875, + "y": 1219.9443359375 + }, + "selected": false, + "data": { + "label": "YAML", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 101, + "height": 49, + "style": { + "width": 101, + "height": 49 + }, + "positionAbsolute": { + "x": -112.95654296875, + "y": 1219.9443359375 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "l8iEC3g0ICSfmIE1MxcUl", + "type": "subtopic", + "position": { + "x": -112.95654296875, + "y": 1166.9443359375 + }, + "selected": false, + "data": { + "label": "TOML", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 101, + "height": 49, + "style": { + "width": 101, + "height": 49 + }, + "positionAbsolute": { + "x": -112.95654296875, + "y": 1166.9443359375 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "w2zbab_6Gxw6AWS0N759U", + "type": "subtopic", + "position": { + "x": -217.23195037554086, + "y": 1274.9443359375 + }, + "selected": false, + "data": { + "label": "Protobuf", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 205, + "height": 49, + "style": { + "width": 205, + "height": 49 + }, + "positionAbsolute": { + "x": -217.23195037554086, + "y": 1274.9443359375 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "3QSLUMKD0G08N3MIb1cG7", + "type": "topic", + "position": { + "x": 53.084767678339915, + "y": 1224.9719487880939 + }, + "selected": false, + "data": { + "label": "Multithreading", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 196, + "height": 49, + "style": { + "width": 196, + "height": 49 + }, + "positionAbsolute": { + "x": 53.084767678339915, + "y": 1224.9719487880939 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "idmrgKgVWVLZYANbXiZnS", + "type": "topic", + "position": { + "x": 321.20614329103375, + "y": 1383.6810870203947 + }, + "selected": false, + "data": { + "label": "Synchronization", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "b" + }, + "oldId": "cw7WdFfL5HpeZ_n8wYk2t" + }, + "zIndex": 999, + "width": 205, + "height": 49, + "style": { + "width": 205, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 321.20614329103375, + "y": 1383.6810870203947 + }, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "6k25amPkU9lnZ7FMNn_T6", + "type": "subtopic", + "position": { + "x": 321.20614329103375, + "y": 1542.6810870203947 + }, + "selected": false, + "data": { + "label": "Barrier", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 205, + "height": 49, + "style": { + "width": 205, + "height": 49 + }, + "positionAbsolute": { + "x": 321.20614329103375, + "y": 1542.6810870203947 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "lVXfA_oZr82mFfBvLnnRK", + "type": "subtopic", + "position": { + "x": 321.20614329103375, + "y": 1489.6810870203947 + }, + "selected": false, + "data": { + "label": "Spinlock", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "xR6pERldq4wPl9GVLHAhT" + }, + "zIndex": 999, + "width": 205, + "height": 49, + "style": { + "width": 205, + "height": 49 + }, + "positionAbsolute": { + "x": 321.20614329103375, + "y": 1489.6810870203947 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "G_BEJKkJ1_Nc43aosy_iS", + "type": "subtopic", + "position": { + "x": 321.20614329103375, + "y": 1648.6810870203947 + }, + "selected": false, + "data": { + "label": "Mutex", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "c" + }, + "oldId": "zbIbPlqTNSbJUkqH9iLQv" + }, + "zIndex": 999, + "width": 205, + "height": 49, + "style": { + "width": 205, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 321.20614329103375, + "y": 1648.6810870203947 + }, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "DYvzGc_r0SlOArPPc1gNI", + "type": "subtopic", + "position": { + "x": 172.56275416291476, + "y": 1648.6810870203947 + }, + "selected": false, + "data": { + "label": "Semaphore", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "Yw2wS2ZcJNeApH7LqNMv3" + }, + "zIndex": 999, + "width": 117, + "height": 49, + "style": { + "width": 117, + "height": 49 + }, + "positionAbsolute": { + "x": 172.56275416291476, + "y": 1648.6810870203947 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "zbIbPlqTNSbJUkqH9iLQv", + "type": "subtopic", + "position": { + "x": 321.20614329103375, + "y": 1595.6810870203947 + }, + "selected": false, + "data": { + "label": "Future & Promises", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "c" + } + }, + "zIndex": 999, + "width": 205, + "height": 49, + "style": { + "width": 205, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 321.20614329103375, + "y": 1595.6810870203947 + }, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "o0Y_hM0KXUApfsXG4PvOY", + "type": "subtopic", + "position": { + "x": 61.56275416291476, + "y": 1595.6841808369861 + }, + "selected": false, + "data": { + "label": "Coroutine", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 106, + "height": 49, + "style": { + "width": 106, + "height": 49 + }, + "positionAbsolute": { + "x": 61.56275416291476, + "y": 1595.6841808369861 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "SXOEMkcVYBsRza6BPmmwy", + "type": "subtopic", + "position": { + "x": 172.56275416291476, + "y": 1595.6841808369861 + }, + "selected": false, + "data": { + "label": "Channel", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 117, + "height": 49, + "style": { + "width": 117, + "height": 49 + }, + "positionAbsolute": { + "x": 172.56275416291476, + "y": 1595.6841808369861 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "xR6pERldq4wPl9GVLHAhT", + "type": "subtopic", + "position": { + "x": 321.20614329103375, + "y": 1436.6810870203947 + }, + "selected": false, + "data": { + "label": "Condition Variable", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 205, + "height": 49, + "style": { + "width": 205, + "height": 49 + }, + "positionAbsolute": { + "x": 321.20614329103375, + "y": 1436.6810870203947 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "IeD-oQ1bkwlKNC-R0lJjZ", + "type": "subtopic", + "position": { + "x": 316.0434878760507, + "y": 1225.9443359375 + }, + "selected": false, + "data": { + "label": "Thread Local Storage", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + }, + "oldId": "TVJrlUsg30YIM1yjsZfJI" + }, + "zIndex": 999, + "width": 215, + "height": 49, + "style": { + "width": 215, + "height": 49 + }, + "positionAbsolute": { + "x": 316.0434878760507, + "y": 1225.9443359375 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "mW2L_9NckgPRH7g5W9NHq", + "type": "subtopic", + "position": { + "x": 317.0153285883124, + "y": 1299.158346006392 + }, + "selected": false, + "data": { + "label": "Windows", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 104, + "height": 50, + "style": { + "width": 104, + "height": 50 + }, + "positionAbsolute": { + "x": 317.0153285883124, + "y": 1299.158346006392 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "HU0yUyl89WD8WnR9PJn7l", + "type": "subtopic", + "position": { + "x": 427.0153285883124, + "y": 1299.158346006392 + }, + "selected": false, + "data": { + "label": "pthread", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": 427.0153285883124, + "y": 1299.158346006392 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "3use5vuLBJTk40wOg9S-X", + "type": "subtopic", + "position": { + "x": 118.69747266236539, + "y": 1062.3595644355564 + }, + "selected": false, + "data": { + "label": "Sharding", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "c" + }, + "oldId": "TVJrlUsg30YIM1yjsZfJI" + }, + "zIndex": 999, + "width": 130, + "height": 49, + "style": { + "width": 130, + "height": 49 + }, + "positionAbsolute": { + "x": 118.69747266236539, + "y": 1062.3595644355564 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "TVJrlUsg30YIM1yjsZfJI", + "type": "subtopic", + "position": { + "x": 118.69747266236539, + "y": 1115.3595644355564 + }, + "selected": false, + "data": { + "label": "Fiber", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "c" + } + }, + "zIndex": 999, + "width": 130, + "height": 49, + "style": { + "width": 130, + "height": 49 + }, + "positionAbsolute": { + "x": 118.69747266236539, + "y": 1115.3595644355564 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "tGQu18PWDatW7HvkTP-uh", + "type": "topic", + "position": { + "x": -194.95651212394932, + "y": 1384.2630950364517 + }, + "selected": false, + "data": { + "label": "Programming Techniques", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "b" + }, + "oldId": "cw7WdFfL5HpeZ_n8wYk2t" + }, + "zIndex": 999, + "width": 244, + "height": 49, + "style": { + "width": 244, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -194.95651212394932, + "y": 1384.2630950364517 + }, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "gB-TYpgUDV47bxznNJhYn", + "type": "subtopic", + "position": { + "x": -520.3091914009053, + "y": 1278.2630950364517 + }, + "selected": false, + "data": { + "label": "Design Patterns", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 236, + "height": 49, + "style": { + "width": 236 + }, + "positionAbsolute": { + "x": -520.3091914009053, + "y": 1278.2630950364517 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "FKOhe21PVlaKIoZI4hd49", + "type": "subtopic", + "position": { + "x": -520.3091914009053, + "y": 1331.2630950364517 + }, + "selected": false, + "data": { + "label": "TDD", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 236, + "height": 49, + "style": { + "width": 236 + }, + "positionAbsolute": { + "x": -520.3091914009053, + "y": 1331.2630950364517 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "uTlxyDOtvt_Qp0gXLWO-j", + "type": "subtopic", + "position": { + "x": -520.3091914009053, + "y": 1384.2630950364517 + }, + "selected": false, + "data": { + "label": "Dependency Injection", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 236, + "height": 49, + "style": { + "width": 236 + }, + "positionAbsolute": { + "x": -520.3091914009053, + "y": 1384.2630950364517 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "1c6EqGv1g-d8M1i0vKImb", + "type": "subtopic", + "position": { + "x": -520.3091914009053, + "y": 1437.2630950364517 + }, + "selected": false, + "data": { + "label": "Dump Analysis", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 236, + "height": 49, + "style": { + "width": 236 + }, + "positionAbsolute": { + "x": -520.3091914009053, + "y": 1437.2630950364517 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "HXSWvhgT4L5w6xgOO-3kj", + "type": "subtopic", + "position": { + "x": -520.3091914009053, + "y": 1490.2630950364517 + }, + "selected": false, + "data": { + "label": "Functional Programming", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 236, + "height": 49, + "style": { + "width": 236, + "height": 49 + }, + "positionAbsolute": { + "x": -520.3091914009053, + "y": 1490.2630950364517 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "FLFaGZDg2MSG6_YHnWETM", + "type": "topic", + "position": { + "x": -171.45651212394932, + "y": 1595.6841808369861 + }, + "selected": false, + "data": { + "label": "Databases", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "b" + }, + "oldId": "cw7WdFfL5HpeZ_n8wYk2t" + }, + "zIndex": 999, + "width": 197, + "height": 49, + "style": { + "width": 197, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -171.45651212394932, + "y": 1595.6841808369861 + }, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "tBAjat7nEbjD7idiFwLf3", + "type": "label", + "position": { + "x": -480.6327630325113, + "y": 1740.8976823971498 + }, + "selected": false, + "data": { + "label": "RDBMS", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 77, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": -480.6327630325113, + "y": 1740.8976823971498 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "QMNUAKAuRI9lyf2_jUPsj", + "type": "subtopic", + "position": { + "x": -510.6327630325113, + "y": 1574.8976823971498 + }, + "selected": false, + "data": { + "label": "MS SQL", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 137, + "height": 49, + "style": { + "width": 137, + "height": 49 + }, + "positionAbsolute": { + "x": -510.6327630325113, + "y": 1574.8976823971498 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "HsBqd08Ro0VJnx0FlumMQ", + "type": "subtopic", + "position": { + "x": -510.6327630325113, + "y": 1627.8976823971498 + }, + "selected": false, + "data": { + "label": "MySQL", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 137, + "height": 49, + "style": { + "width": 137, + "height": 49 + }, + "positionAbsolute": { + "x": -510.6327630325113, + "y": 1627.8976823971498 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "dAiEwN7phwMyaitvM5kRl", + "type": "subtopic", + "position": { + "x": -510.6327630325113, + "y": 1680.8976823971498 + }, + "selected": false, + "data": { + "label": "PostgreSQL", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 137, + "height": 49, + "style": { + "width": 137, + "height": 49 + }, + "positionAbsolute": { + "x": -510.6327630325113, + "y": 1680.8976823971498 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "6lpRonYBRRFycpjhYkeB9", + "type": "label", + "position": { + "x": -329.81301933317815, + "y": 1794.4564918532815 + }, + "selected": false, + "data": { + "label": "NoSQL", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 72, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": -329.81301933317815, + "y": 1794.4564918532815 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "9vc7sFE_XakYXtKRMxLXi", + "type": "subtopic", + "position": { + "x": -360.31301933317815, + "y": 1575.4564918532815 + }, + "selected": false, + "data": { + "label": "DynamoDB", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 133, + "height": 49, + "style": { + "width": 133, + "height": 49 + }, + "positionAbsolute": { + "x": -360.31301933317815, + "y": 1575.4564918532815 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "HYxtPW401-J6aYcTuiGnx", + "type": "subtopic", + "position": { + "x": -360.31301933317815, + "y": 1628.4564918532815 + }, + "selected": false, + "data": { + "label": "MongoDB", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 133, + "height": 49, + "style": { + "width": 133, + "height": 49 + }, + "positionAbsolute": { + "x": -360.31301933317815, + "y": 1628.4564918532815 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "1jqSxk1nwByiQa1De81F3", + "type": "subtopic", + "position": { + "x": -360.31301933317815, + "y": 1681.4564918532815 + }, + "selected": false, + "data": { + "label": "Cassandra", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 133, + "height": 49, + "style": { + "width": 133, + "height": 49 + }, + "positionAbsolute": { + "x": -360.31301933317815, + "y": 1681.4564918532815 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "6KTj_giX2k9l2lPd_Fp-d", + "type": "subtopic", + "position": { + "x": -360.31301933317815, + "y": 1734.4564918532815 + }, + "selected": false, + "data": { + "label": "Couchbase", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 133, + "height": 49, + "style": { + "width": 133, + "height": 49 + }, + "positionAbsolute": { + "x": -360.31301933317815, + "y": 1734.4564918532815 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "7YNaELVcoV7DV1Fa06USi", + "type": "subtopic", + "position": { + "x": 128.08644532562175, + "y": 1458.1065060656979 + }, + "selected": false, + "data": { + "label": "Redis", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 141, + "height": 49, + "style": { + "width": 141, + "height": 49 + }, + "positionAbsolute": { + "x": 128.08644532562175, + "y": 1458.1065060656979 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "ayeezKxQkXAPJMTShsOBU", + "type": "subtopic", + "position": { + "x": 128.08644532562175, + "y": 1511.1065060656979 + }, + "selected": false, + "data": { + "label": "Memcached", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 141, + "height": 49, + "style": { + "width": 141, + "height": 49 + }, + "positionAbsolute": { + "x": 128.08644532562175, + "y": 1511.1065060656979 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "CA1pvQw00EF2G_UtqenAZ", + "type": "label", + "position": { + "x": -36.14448607509672, + "y": 1488.9027065582582 + }, + "selected": false, + "data": { + "label": "Key-Value", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 93, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": -36.14448607509672, + "y": 1488.9027065582582 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "OyxWMFy8s7Lxko_K89fjo", + "type": "subtopic", + "position": { + "x": -45.32115368925781, + "y": 1671.5717183078734 + }, + "selected": false, + "data": { + "label": "ORM", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 85, + "height": 49, + "style": { + "width": 85 + }, + "positionAbsolute": { + "x": -45.32115368925781, + "y": 1671.5717183078734 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "dt_SmZuwklLimhupvjxC1", + "type": "subtopic", + "position": { + "x": -45.32115368925781, + "y": 1724.5717183078734 + }, + "selected": false, + "data": { + "label": "DAL", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 85, + "height": 49, + "style": { + "width": 85 + }, + "positionAbsolute": { + "x": -45.32115368925781, + "y": 1724.5717183078734 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "1788KFqsQBkYARqA0T5GX", + "type": "topic", + "position": { + "x": -171.45651212394932, + "y": 1880.4564918532815 + }, + "selected": false, + "data": { + "label": "Cipher", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "b" + }, + "oldId": "cw7WdFfL5HpeZ_n8wYk2t" + }, + "zIndex": 999, + "width": 197, + "height": 49, + "style": { + "width": 197, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -171.45651212394932, + "y": 1880.4564918532815 + }, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "PSvPjaVtko71BeIA-hYqf", + "type": "subtopic", + "position": { + "x": -174.45654296875, + "y": 1795.4564918532815 + }, + "selected": false, + "data": { + "label": "SSL", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 75, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -174.45654296875, + "y": 1795.4564918532815 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "YxaroYL_Az0vKRCeu2jsp", + "type": "topic", + "position": { + "x": 101.04348787605068, + "y": 1880.4564918532815 + }, + "selected": false, + "data": { + "label": "RPC / REST", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "b" + }, + "oldId": "cw7WdFfL5HpeZ_n8wYk2t" + }, + "zIndex": 999, + "width": 145, + "height": 49, + "style": { + "width": 145, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 101.04348787605068, + "y": 1880.4564918532815 + }, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "Oq3GQ5gBUxIl1Qe8NB3LB", + "type": "subtopic", + "position": { + "x": 123.54348787605068, + "y": 1740.7176653422498 + }, + "selected": false, + "data": { + "label": "REST", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": 123.54348787605068, + "y": 1740.7176653422498 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "_uqTTBUYAzDHbEUkDzmzg", + "type": "subtopic", + "position": { + "x": 123.54348787605068, + "y": 1793.7176653422498 + }, + "selected": false, + "data": { + "label": "gRPC", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100 + }, + "positionAbsolute": { + "x": 123.54348787605068, + "y": 1793.7176653422498 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "cw7WdFfL5HpeZ_n8wYk2t", + "type": "topic", + "position": { + "x": 343.9628452691828, + "y": 1880.4564918532815 + }, + "selected": false, + "data": { + "label": "Message Queues", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "b" + }, + "oldId": "zbIbPlqTNSbJUkqH9iLQv" + }, + "zIndex": 999, + "width": 187, + "height": 49, + "style": { + "width": 187, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 343.9628452691828, + "y": 1880.4564918532815 + }, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "gL7hubTh3qiMyUWeAZNwI", + "type": "subtopic", + "position": { + "x": 359.4628452691828, + "y": 1741.422900324292 + }, + "selected": false, + "data": { + "label": "Apache Kafka", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 156, + "height": 49, + "style": { + "width": 156, + "height": 49 + }, + "positionAbsolute": { + "x": 359.4628452691828, + "y": 1741.422900324292 + }, + "dragging": false, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "UESjGrFyUbNf4pQamaBoy", + "type": "subtopic", + "position": { + "x": 359.4628452691828, + "y": 1794.422900324292 + }, + "selected": false, + "data": { + "label": "RabbitMQ", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 156, + "height": 49, + "style": { + "width": 156 + }, + "positionAbsolute": { + "x": 359.4628452691828, + "y": 1794.422900324292 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "_jd91rrAXGbJI9RhXlSx8", + "type": "topic", + "position": { + "x": 225.0153285883124, + "y": 2142.5580874612947 + }, + "selected": false, + "data": { + "label": "Multithreading", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "dkCVwuy8GKeEi3VJar_Zo" + }, + "zIndex": 999, + "width": 154, + "height": 49, + "style": { + "width": 154, + "height": 49 + }, + "positionAbsolute": { + "x": 225.0153285883124, + "y": 2142.5580874612947 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "KUQEgHldZPOLwFoXqQ2vM", + "type": "topic", + "position": { + "x": -450.0418767866893, + "y": 2175.8720132492394 + }, + "selected": false, + "data": { + "label": "Actor Model", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 203, + "height": 49, + "style": { + "width": 203, + "height": 49 + }, + "positionAbsolute": { + "x": -450.0418767866893, + "y": 2175.8720132492394 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "SsOz9Pj6Jc_55PgpmziL6", + "type": "subtopic", + "position": { + "x": -450.0418767866893, + "y": 2228.8720132492394 + }, + "selected": false, + "data": { + "label": "Akk.net (C#)", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 203, + "height": 49, + "style": { + "width": 203, + "height": 49 + }, + "positionAbsolute": { + "x": -450.0418767866893, + "y": 2228.8720132492394 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "eAEpEUVZcSKO9uCIlMN5y", + "type": "subtopic", + "position": { + "x": -450.0418767866893, + "y": 2281.8720132492394 + }, + "selected": false, + "data": { + "label": "Akka (Java)", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 203, + "height": 49, + "style": { + "width": 203, + "height": 49 + }, + "positionAbsolute": { + "x": -450.0418767866893, + "y": 2281.8720132492394 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "ThBxS9xIMt9OrXfnto3rW", + "type": "topic", + "position": { + "x": -241.6297467693716, + "y": 2175.1037781746063 + }, + "selected": false, + "data": { + "label": "Asynchronous", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 378, + "height": 49, + "style": { + "width": 378, + "height": 49 + }, + "positionAbsolute": { + "x": -241.6297467693716, + "y": 2175.1037781746063 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "7mYpgn2gr-5vAYW-UR7_x", + "type": "topic", + "position": { + "x": -242.3281242098539, + "y": 2230.1582943435765 + }, + "selected": false, + "data": { + "label": "Reactor", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 198, + "height": 49, + "style": { + "width": 198, + "height": 49 + }, + "positionAbsolute": { + "x": -242.3281242098539, + "y": 2230.1582943435765 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "5-5toy2CblZPCV9d5QPEo", + "type": "subtopic", + "position": { + "x": -114.32812420985391, + "y": 2283.00220976664 + }, + "selected": false, + "data": { + "label": "select", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 70, + "height": 49, + "style": { + "width": 70, + "height": 49 + }, + "positionAbsolute": { + "x": -114.32812420985391, + "y": 2283.00220976664 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "D9Yeyn8phDhB1ohMWccgr", + "type": "subtopic", + "position": { + "x": -241.97272423589692, + "y": 2283.00220976664 + }, + "selected": false, + "data": { + "label": "WSA Poll", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 123, + "height": 49, + "style": { + "width": 123, + "height": 49 + }, + "positionAbsolute": { + "x": -241.97272423589692, + "y": 2283.00220976664 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "qaWv4gxnnj3uX8lEm9KQ4", + "type": "subtopic", + "position": { + "x": -114.32812420985391, + "y": 2336.00220976664 + }, + "selected": false, + "data": { + "label": "epoll", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 70, + "height": 49, + "style": { + "width": 70, + "height": 49 + }, + "positionAbsolute": { + "x": -114.32812420985391, + "y": 2336.00220976664 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "caK32NMMrn-3BGAXZoPPr", + "type": "subtopic", + "position": { + "x": -241.97272423589692, + "y": 2336.00220976664 + }, + "selected": false, + "data": { + "label": "kqueue", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 123, + "height": 49, + "style": { + "width": 123, + "height": 49 + }, + "positionAbsolute": { + "x": -241.97272423589692, + "y": 2336.00220976664 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "Tvxe2NemcH21y-eB4bosv", + "type": "topic", + "position": { + "x": -39.15075760577247, + "y": 2229.7990729507064 + }, + "selected": false, + "data": { + "label": "Proactor", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 175, + "height": 49, + "style": { + "width": 175, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": -39.15075760577247, + "y": 2229.7990729507064 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "7pgdOZomhGilBTwfJLMbm", + "type": "subtopic", + "position": { + "x": -39.15075760577247, + "y": 2282.7990729507064 + }, + "selected": false, + "data": { + "label": "IOCP", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 70, + "height": 49, + "style": { + "width": 70, + "height": 49 + }, + "positionAbsolute": { + "x": -39.15075760577247, + "y": 2282.7990729507064 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "YH7u1FKh85wz78J0stuzS", + "type": "subtopic", + "position": { + "x": 35.731589762047406, + "y": 2282.7990729507064 + }, + "selected": false, + "data": { + "label": "io_uring", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": 35.731589762047406, + "y": 2282.7990729507064 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "94hJX1iGifDzIuaU3zU5j", + "type": "subtopic", + "position": { + "x": -39.15075760577247, + "y": 2336.1582943435765 + }, + "selected": false, + "data": { + "label": "Registered IO", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 175, + "height": 49, + "style": { + "width": 175, + "height": 49 + }, + "positionAbsolute": { + "x": -39.15075760577247, + "y": 2336.1582943435765 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "dDu4oytShaxvnwjmDnbKI", + "type": "vertical", + "position": { + "x": 287.0434878760507, + "y": 1880.4564918532815 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#000000" + } + }, + "zIndex": 999, + "width": 20, + "height": 150, + "style": {}, + "positionAbsolute": { + "x": 287.0434878760507, + "y": 1880.4564918532815 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "tnzfWmELaFPOM6J847iPD", + "type": "label", + "position": { + "x": 118.69747266236539, + "y": 1994.4564918532815 + }, + "selected": false, + "data": { + "label": "Maximise your skills", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 167, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": 118.69747266236539, + "y": 1994.4564918532815 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "LKPcEeqBOPhQOztD3cM3T", + "type": "topic", + "position": { + "x": -450.0418767866893, + "y": 2119.16296890674 + }, + "selected": false, + "data": { + "label": "Task-Based", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 203, + "height": 49, + "style": { + "width": 203, + "height": 49 + }, + "positionAbsolute": { + "x": -450.0418767866893, + "y": 2119.16296890674 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "f-L_eaZd0EjBW9-n9Pllt", + "type": "subtopic", + "position": { + "x": -450.0418767866893, + "y": 2066.16296890674 + }, + "selected": false, + "data": { + "label": "goroutine (Go)", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 203, + "height": 49, + "style": { + "width": 203, + "height": 49 + }, + "positionAbsolute": { + "x": -450.0418767866893, + "y": 2066.16296890674 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "RT9XvlxvIM_hHTtNmbva3", + "type": "subtopic", + "position": { + "x": -450.0418767866893, + "y": 1960.1629689067397 + }, + "selected": false, + "data": { + "label": "Concurrency (Java)", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 203, + "height": 49, + "style": { + "width": 203, + "height": 49 + }, + "positionAbsolute": { + "x": -450.0418767866893, + "y": 1960.1629689067397 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "mAXMpUDmhGOncnCRrENJv", + "type": "subtopic", + "position": { + "x": -450.0418767866893, + "y": 2013.1629689067397 + }, + "selected": false, + "data": { + "label": "Asnc-await (C#)", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 203, + "height": 49, + "style": { + "width": 203, + "height": 49 + }, + "positionAbsolute": { + "x": -450.0418767866893, + "y": 2013.1629689067397 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "tiG0mZpLJ2zUr2IPYyhnv", + "type": "subtopic", + "position": { + "x": -515.95654296875, + "y": 1907.1629689067397 + }, + "selected": false, + "data": { + "label": "Thread Building Block (C++)", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 268, + "height": 49, + "style": { + "width": 268 + }, + "positionAbsolute": { + "x": -515.95654296875, + "y": 1907.1629689067397 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Vl-WW0LThrQTOO_tFl51B", + "type": "topic", + "position": { + "x": -55.160436004402584, + "y": 2119.258520296198 + }, + "selected": false, + "data": { + "label": "Reactive Approach", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "LVwGXmZhMewGQy61qwNyu" + }, + "zIndex": 999, + "width": 191, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -55.160436004402584, + "y": 2119.258520296198 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "yWj70LpF4LKB8J6GbYvsq", + "type": "subtopic", + "position": { + "x": -55.160436004402584, + "y": 2066.258520296198 + }, + "selected": false, + "data": { + "label": "OORP", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 109, + "height": 49, + "style": { + "width": 109, + "height": 49 + }, + "positionAbsolute": { + "x": -55.160436004402584, + "y": 2066.258520296198 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "xDYOvIbXc-iJ2zOKqe0YL", + "type": "subtopic", + "position": { + "x": 57.839563995597416, + "y": 2066.258520296198 + }, + "selected": false, + "data": { + "label": "FRP", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 78, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 57.839563995597416, + "y": 2066.258520296198 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "p0P3ZGq_QTCop0vMwe7P3", + "type": "topic", + "position": { + "x": -240.22731202160702, + "y": 2119.258520296198 + }, + "selected": false, + "data": { + "label": "Reactive Model", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 177, + "height": 49, + "style": { + "width": 177 + }, + "positionAbsolute": { + "x": -240.22731202160702, + "y": 2119.258520296198 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "l5QTk408Ubagw8XzRAfoZ", + "type": "subtopic", + "position": { + "x": -240.22731202160713, + "y": 2066.258520296198 + }, + "selected": false, + "data": { + "label": "Synchrony", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 177, + "height": 49, + "style": { + "width": 177 + }, + "positionAbsolute": { + "x": -240.22731202160713, + "y": 2066.258520296198 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "zFx1jjt1hKgCpYHFTzbZZ", + "type": "subtopic", + "position": { + "x": -240.22731202160713, + "y": 2013.2585202961982 + }, + "selected": false, + "data": { + "label": "Determinism", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 177, + "height": 49, + "style": { + "width": 177 + }, + "positionAbsolute": { + "x": -240.22731202160713, + "y": 2013.2585202961982 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "3Eat22rFjUl4eTtGz8u4N", + "type": "subtopic", + "position": { + "x": -240.22731202160713, + "y": 1960.2585202961982 + }, + "selected": false, + "data": { + "label": "Update Process", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 177, + "height": 49, + "style": { + "width": 177, + "height": 49 + }, + "positionAbsolute": { + "x": -240.22731202160713, + "y": 1960.2585202961982 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "LVwGXmZhMewGQy61qwNyu", + "type": "topic", + "position": { + "x": -55.160436004402584, + "y": 2119.258520296198 + }, + "selected": false, + "data": { + "label": "Reactive Approach", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 191, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -55.160436004402584, + "y": 2119.258520296198 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "hhtqvFfTCuVPT0OPu4Y1a", + "type": "topic", + "position": { + "x": 225.0153285883124, + "y": 2421.8743750593535 + }, + "selected": false, + "data": { + "label": "Cloud", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "dkCVwuy8GKeEi3VJar_Zo" + }, + "zIndex": 999, + "width": 154, + "height": 49, + "style": { + "width": 154, + "height": 49 + }, + "positionAbsolute": { + "x": 225.0153285883124, + "y": 2421.8743750593535 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "73uoFNGcCALxIuRNbebav", + "type": "subtopic", + "position": { + "x": 445.6095025654899, + "y": 2368.8743750593535 + }, + "selected": false, + "data": { + "label": "Azure", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 89, + "height": 49, + "style": { + "width": 89 + }, + "positionAbsolute": { + "x": 445.6095025654899, + "y": 2368.8743750593535 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "wD6dUrS-tP2gpCHPghFp5", + "type": "subtopic", + "position": { + "x": 445.6095025654899, + "y": 2421.8743750593535 + }, + "selected": false, + "data": { + "label": "GCP", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 89, + "height": 49, + "style": { + "width": 89 + }, + "positionAbsolute": { + "x": 445.6095025654899, + "y": 2421.8743750593535 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Rkx2A6oWsddlCTseZlpRU", + "type": "subtopic", + "position": { + "x": 445.6095025654899, + "y": 2474.8743750593535 + }, + "selected": false, + "data": { + "label": "AWS", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 89, + "height": 49, + "style": { + "width": 89 + }, + "positionAbsolute": { + "x": 445.6095025654899, + "y": 2474.8743750593535 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "DOmbRRK_RRPElOuTB7AAK", + "type": "subtopic", + "position": { + "x": 325.5434878760507, + "y": 2287.1582943435765 + }, + "selected": false, + "data": { + "label": "Serverless", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 126, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 325.5434878760507, + "y": 2287.1582943435765 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "XCJvgUSS7-oDR-XGdDY33", + "type": "topic", + "position": { + "x": -60.62974676937159, + "y": 2421.8743750593535 + }, + "selected": false, + "data": { + "label": "Data Clustering", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "dkCVwuy8GKeEi3VJar_Zo" + }, + "zIndex": 999, + "width": 197, + "height": 49, + "style": { + "width": 197, + "height": 49 + }, + "positionAbsolute": { + "x": -60.62974676937159, + "y": 2421.8743750593535 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "yrWiWJMSyTWxDakJbqacu", + "type": "subtopic", + "position": { + "x": -60.62974676937159, + "y": 2508.94211112394 + }, + "selected": false, + "data": { + "label": "Apache Spark", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 197, + "height": 49, + "style": { + "width": 197, + "height": 49 + }, + "positionAbsolute": { + "x": -60.62974676937159, + "y": 2508.94211112394 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "k3FJY26SVxdZx4MLLE25h", + "type": "topic", + "position": { + "x": -295.2045658739704, + "y": 2421.759476497276 + }, + "selected": false, + "data": { + "label": "Containerization", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "dkCVwuy8GKeEi3VJar_Zo" + }, + "zIndex": 999, + "width": 165, + "height": 49, + "style": { + "width": 165, + "height": 49 + }, + "positionAbsolute": { + "x": -295.2045658739704, + "y": 2421.759476497276 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "zW_7VLeEHQp8fp_f5N__0", + "type": "subtopic", + "position": { + "x": -513.7884552848205, + "y": 2421.759476497276 + }, + "selected": false, + "data": { + "label": "Docker", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 179, + "height": 49, + "style": { + "width": 179 + }, + "positionAbsolute": { + "x": -513.7884552848205, + "y": 2421.759476497276 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "yAf7VDX7dyaT5AdlNnuKD", + "type": "subtopic", + "position": { + "x": -513.7884552848205, + "y": 2522.044978959418 + }, + "selected": false, + "data": { + "label": "Docker Compose", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 179, + "height": 49, + "style": { + "width": 179 + }, + "positionAbsolute": { + "x": -513.7884552848205, + "y": 2522.044978959418 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "lUBUUoETjfADmM4OPtwwX", + "type": "subtopic", + "position": { + "x": -513.7884552848205, + "y": 2575.044978959418 + }, + "selected": false, + "data": { + "label": "Kubernetes", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 179, + "height": 49, + "style": { + "width": 179 + }, + "positionAbsolute": { + "x": -513.7884552848205, + "y": 2575.044978959418 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "dkCVwuy8GKeEi3VJar_Zo", + "type": "topic", + "position": { + "x": -295.78755730968635, + "y": 2672.4970750794264 + }, + "selected": false, + "data": { + "label": "AI", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 165, + "height": 49, + "style": { + "width": 165, + "height": 49 + }, + "positionAbsolute": { + "x": -295.78755730968635, + "y": 2672.4970750794264 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "XvvlvDKfYRCcYtTdWohsd", + "type": "topic", + "position": { + "x": -501.9670796692851, + "y": 2672.4970750794264 + }, + "selected": false, + "data": { + "label": "Cloud ML", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 138, + "height": 49, + "style": { + "width": 138 + }, + "positionAbsolute": { + "x": -501.9670796692851, + "y": 2672.4970750794264 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "U0RlO_puezQPZP0-iBXgW", + "type": "subtopic", + "position": { + "x": -501.9670796692851, + "y": 2725.4970750794264 + }, + "selected": false, + "data": { + "label": "Amazon ML", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 138, + "height": 49, + "style": { + "width": 138, + "height": 49 + }, + "positionAbsolute": { + "x": -501.9670796692851, + "y": 2725.4970750794264 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "vBqwmlzoT5XVEhV9IeGso", + "type": "subtopic", + "position": { + "x": -501.9670796692851, + "y": 2778.4970750794264 + }, + "selected": false, + "data": { + "label": "Azure ML", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 138, + "height": 49, + "style": { + "width": 138 + }, + "positionAbsolute": { + "x": -501.9670796692851, + "y": 2778.4970750794264 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "jkWvfp4GqckYPQ48GtjlR", + "type": "topic", + "position": { + "x": -293.28755730968635, + "y": 2764.5116332832217 + }, + "selected": false, + "data": { + "label": "Deep Learning", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 160, + "height": 49, + "style": { + "width": 160 + }, + "positionAbsolute": { + "x": -293.28755730968635, + "y": 2764.5116332832217 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "iJE9RnKC8QjPnsFeZAbtl", + "type": "subtopic", + "position": { + "x": -293.28755730968635, + "y": 2817.5116332832217 + }, + "selected": false, + "data": { + "label": "TensorFlow", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 160, + "height": 49, + "style": { + "width": 160 + }, + "positionAbsolute": { + "x": -293.28755730968635, + "y": 2817.5116332832217 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "LTSIfq10qDJMTCnIIyqvb", + "type": "subtopic", + "position": { + "x": -293.28755730968635, + "y": 2870.5116332832217 + }, + "selected": false, + "data": { + "label": "Pytorch", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 160, + "height": 49, + "style": { + "width": 160 + }, + "positionAbsolute": { + "x": -293.28755730968635, + "y": 2870.5116332832217 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "width": 283, + "height": 49, + "id": "P5IZjP0g1_fnvHy3YTR4q", + "type": "button", + "position": { + "x": -9.74323971963861, + "y": 2851.475128312919 + }, + "selected": false, + "data": { + "label": "Client-side game Development", + "href": "https://roadmap.sh/backend", + "color": "#FFFFFf", + "backgroundColor": "#4136D4", + "style": { + "fontSize": 17 + }, + "borderColor": "#4136D4", + "oldId": "dlGf3ZdFXYx0Z6Viu2x-l" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -9.74323971963861, + "y": 2851.475128312919 + }, + "style": {}, + "focusable": true, + "resizing": false, + "selectable": true + } + ], + "edges": [ + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "M0aRyhxjzTWUOW95D1g1y", + "selected": false, + "type": "smoothstep", + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "Xw4lLz2zWuTkNu8r4oheF", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "mbCXMk97_HKXG3d4TxBOC", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "iogwMmOvub2ZF4zgg6WyF", + "sourceHandle": "x2", + "target": "rQArtuVKGVgLn_fw9yO3b", + "targetHandle": "w2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-iogwMmOvub2ZF4zgg6WyFx2-rQArtuVKGVgLn_fw9yO3bw2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "rQArtuVKGVgLn_fw9yO3b", + "sourceHandle": "y2", + "target": "SIvQYH0q1H29NgbtLq3L8", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-rQArtuVKGVgLn_fw9yO3by2-SIvQYH0q1H29NgbtLq3L8z1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "lDVD-3i64Mk7-KPJrXmFH", + "sourceHandle": "x2", + "target": "vFM311xSa5OqNVove2f6j", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-lDVD-3i64Mk7-KPJrXmFHx2-vFM311xSa5OqNVove2f6jw1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "5bJUcx3v4dpdlIsx7bFvK", + "sourceHandle": "z2", + "target": "X2KHWgQZDHSVDsTRMUwSj", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-5bJUcx3v4dpdlIsx7bFvKz2-X2KHWgQZDHSVDsTRMUwSjy1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "5bJUcx3v4dpdlIsx7bFvK", + "sourceHandle": "z2", + "target": "1GML0Jsfdb1Fn-0PNryiQ", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-5bJUcx3v4dpdlIsx7bFvKz2-1GML0Jsfdb1Fn-0PNryiQy1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "5bJUcx3v4dpdlIsx7bFvK", + "sourceHandle": "z2", + "target": "lDVD-3i64Mk7-KPJrXmFH", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-5bJUcx3v4dpdlIsx7bFvKz2-lDVD-3i64Mk7-KPJrXmFHy1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "mUCidjOsVLMAVDf2jmV5F", + "sourceHandle": "y2", + "target": "XxBl-zO7CF6DpOZ2bMDxJ", + "targetHandle": "z2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-6ilqzjvI4J1pUCmTJ33PAy2-XxBl-zO7CF6DpOZ2bMDxJz2", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "mUCidjOsVLMAVDf2jmV5F", + "sourceHandle": "y2", + "target": "zTCmPUp9j5P1wpGgiboMa", + "targetHandle": "z2", + "data": { + "edgeStyle": "dashed" + }, + "selected": false, + "id": "reactflow__edge-6ilqzjvI4J1pUCmTJ33PAy2-zTCmPUp9j5P1wpGgiboMaz2", + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "mUCidjOsVLMAVDf2jmV5F", + "sourceHandle": "y2", + "target": "ALNR_uSq6ByPUrt6lXkhZ", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-6ilqzjvI4J1pUCmTJ33PAy2-ALNR_uSq6ByPUrt6lXkhZz1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "MwLWDlciJOq_0n5S3GoF-", + "sourceHandle": "x2", + "target": "TbXJO__4xSnzK1fvvJK86", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-MwLWDlciJOq_0n5S3GoF-x2-TbXJO__4xSnzK1fvvJK86w1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "mUCidjOsVLMAVDf2jmV5F", + "sourceHandle": "x2", + "target": "MwLWDlciJOq_0n5S3GoF-", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-6ilqzjvI4J1pUCmTJ33PAx2-MwLWDlciJOq_0n5S3GoF-w1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "IMyHwnXxJK6oFxzOMLxjS", + "sourceHandle": "z2", + "target": "Vh81GnOUOZvDOlOyI5PwT", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-6ilqzjvI4J1pUCmTJ33PAz2-Vh81GnOUOZvDOlOyI5PwTy1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "IMyHwnXxJK6oFxzOMLxjS", + "sourceHandle": "z2", + "target": "wD_HWc9YxPhlkilt585pg", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-6ilqzjvI4J1pUCmTJ33PAz2-wD_HWc9YxPhlkilt585pgy1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "IMyHwnXxJK6oFxzOMLxjS", + "sourceHandle": "z2", + "target": "jsNsyrGzegVnjIF2l52vI", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-6ilqzjvI4J1pUCmTJ33PAz2-jsNsyrGzegVnjIF2l52vIy1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "IMyHwnXxJK6oFxzOMLxjS", + "sourceHandle": "z2", + "target": "tBOvBpDi3SOKZjAmkxdM0", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-6ilqzjvI4J1pUCmTJ33PAz2-tBOvBpDi3SOKZjAmkxdM0y1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "IMyHwnXxJK6oFxzOMLxjS", + "sourceHandle": "z2", + "target": "CCxVnrGDKa1EROXgF_OAm", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-6ilqzjvI4J1pUCmTJ33PAz2-CCxVnrGDKa1EROXgF_OAmy1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "IMyHwnXxJK6oFxzOMLxjS", + "sourceHandle": "x2", + "target": "RfTcTUjaXyp49FnUf44MK", + "targetHandle": "w2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-IMyHwnXxJK6oFxzOMLxjSx2-6ilqzjvI4J1pUCmTJ33PAw2", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "RfTcTUjaXyp49FnUf44MK", + "sourceHandle": "z2", + "target": "WMdCDmFsytsF2AWQXfzC8", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-6ilqzjvI4J1pUCmTJ33PAz2-WMdCDmFsytsF2AWQXfzC8y2", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "RfTcTUjaXyp49FnUf44MK", + "sourceHandle": "z2", + "target": "OYXKtl4A-vaK6yGO6hS6n", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-6ilqzjvI4J1pUCmTJ33PAz2-OYXKtl4A-vaK6yGO6hS6ny1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "RfTcTUjaXyp49FnUf44MK", + "sourceHandle": "z2", + "target": "JE3uZ5U6oe6dVzsmglTl2", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-6ilqzjvI4J1pUCmTJ33PAz2-JE3uZ5U6oe6dVzsmglTl2y2", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "RfTcTUjaXyp49FnUf44MK", + "sourceHandle": "z2", + "target": "MoyBGT9bscUe8vMN4J0bG", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-6ilqzjvI4J1pUCmTJ33PAz2-MoyBGT9bscUe8vMN4J0bGy1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "RfTcTUjaXyp49FnUf44MK", + "sourceHandle": "z2", + "target": "pJw8fN1dt3BABtZVz7wGE", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-6ilqzjvI4J1pUCmTJ33PAz2-pJw8fN1dt3BABtZVz7wGEy1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "RfTcTUjaXyp49FnUf44MK", + "sourceHandle": "x2", + "target": "tg94V7K0mgYhpkUMp_Scv", + "targetHandle": "w2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-RfTcTUjaXyp49FnUf44MKx2-6ilqzjvI4J1pUCmTJ33PAw2", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tg94V7K0mgYhpkUMp_Scv", + "sourceHandle": "z2", + "target": "5kF1fqr-mn5-15e3aMa9k", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-6ilqzjvI4J1pUCmTJ33PAz2-5kF1fqr-mn5-15e3aMa9ky1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tg94V7K0mgYhpkUMp_Scv", + "sourceHandle": "z2", + "target": "2jDV-ovvrkBbTTLk5VbR9", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-6ilqzjvI4J1pUCmTJ33PAz2-2jDV-ovvrkBbTTLk5VbR9y1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tg94V7K0mgYhpkUMp_Scv", + "sourceHandle": "z2", + "target": "OzY-LPcfj1sBm_0F0WbIJ", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-6ilqzjvI4J1pUCmTJ33PAz2-OzY-LPcfj1sBm_0F0WbIJy1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tg94V7K0mgYhpkUMp_Scv", + "sourceHandle": "y2", + "target": "6ilqzjvI4J1pUCmTJ33PA", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-tg94V7K0mgYhpkUMp_Scvy2-6ilqzjvI4J1pUCmTJ33PAw1", + "selected": false, + "type": "smoothstep", + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "YPvm8XD_FaFYCQ-b7-KsH", + "sourceHandle": "x2", + "target": "jnQAzUUnwpJgoRuRIFtSe", + "targetHandle": "w2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-YPvm8XD_FaFYCQ-b7-KsHx2-jnQAzUUnwpJgoRuRIFtSew2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "6ilqzjvI4J1pUCmTJ33PA", + "sourceHandle": "y2", + "target": "HvpuFTCknHPhnFkhmhRc4", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-6ilqzjvI4J1pUCmTJ33PAy2-3QSLUMKD0G08N3MIb1cG7z1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "HvpuFTCknHPhnFkhmhRc4", + "sourceHandle": "w2", + "target": "OAyMj6uLSv1yJ87YAjyZu", + "targetHandle": "x2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-3QSLUMKD0G08N3MIb1cG7w2-OAyMj6uLSv1yJ87YAjyZux2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "HvpuFTCknHPhnFkhmhRc4", + "sourceHandle": "x2", + "target": "a2pcxVTGdAPw8aLvdr19M", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-3QSLUMKD0G08N3MIb1cG7x2-a2pcxVTGdAPw8aLvdr19Mw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "HvpuFTCknHPhnFkhmhRc4", + "sourceHandle": "z2", + "target": "TS6dz61rUSxm-SqmK6JKe", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-HvpuFTCknHPhnFkhmhRc4z2-3QSLUMKD0G08N3MIb1cG7y1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "G_BEJKkJ1_Nc43aosy_iS", + "sourceHandle": "y2", + "target": "DYvzGc_r0SlOArPPc1gNI", + "targetHandle": "z2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-G_BEJKkJ1_Nc43aosy_iSy2-DYvzGc_r0SlOArPPc1gNIz2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "zbIbPlqTNSbJUkqH9iLQv", + "sourceHandle": "y2", + "target": "SXOEMkcVYBsRza6BPmmwy", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-zbIbPlqTNSbJUkqH9iLQvy2-SXOEMkcVYBsRza6BPmmwyz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "3QSLUMKD0G08N3MIb1cG7", + "sourceHandle": "z2", + "target": "IeD-oQ1bkwlKNC-R0lJjZ", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-3QSLUMKD0G08N3MIb1cG7z2-IeD-oQ1bkwlKNC-R0lJjZy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tGQu18PWDatW7HvkTP-uh", + "sourceHandle": "y2", + "target": "gB-TYpgUDV47bxznNJhYn", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-cw7WdFfL5HpeZ_n8wYk2ty2-gB-TYpgUDV47bxznNJhYnz1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tGQu18PWDatW7HvkTP-uh", + "sourceHandle": "y2", + "target": "FKOhe21PVlaKIoZI4hd49", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-cw7WdFfL5HpeZ_n8wYk2ty2-FKOhe21PVlaKIoZI4hd49z1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tGQu18PWDatW7HvkTP-uh", + "sourceHandle": "y2", + "target": "uTlxyDOtvt_Qp0gXLWO-j", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-cw7WdFfL5HpeZ_n8wYk2ty2-uTlxyDOtvt_Qp0gXLWO-jz1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tGQu18PWDatW7HvkTP-uh", + "sourceHandle": "y2", + "target": "1c6EqGv1g-d8M1i0vKImb", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-cw7WdFfL5HpeZ_n8wYk2ty2-1c6EqGv1g-d8M1i0vKImbz1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tGQu18PWDatW7HvkTP-uh", + "sourceHandle": "y2", + "target": "HXSWvhgT4L5w6xgOO-3kj", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-cw7WdFfL5HpeZ_n8wYk2ty2-HXSWvhgT4L5w6xgOO-3kjz1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "tGQu18PWDatW7HvkTP-uh", + "sourceHandle": "x2", + "target": "FLFaGZDg2MSG6_YHnWETM", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-tGQu18PWDatW7HvkTP-uhx2-cw7WdFfL5HpeZ_n8wYk2tw1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "4UzHjUtWQExUbCApQZrb1", + "sourceHandle": "z2", + "target": "7YNaELVcoV7DV1Fa06USi", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-4UzHjUtWQExUbCApQZrb1z2-7YNaELVcoV7DV1Fa06USiy1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "4UzHjUtWQExUbCApQZrb1", + "sourceHandle": "z2", + "target": "ayeezKxQkXAPJMTShsOBU", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-4UzHjUtWQExUbCApQZrb1z2-ayeezKxQkXAPJMTShsOBUy2", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "FLFaGZDg2MSG6_YHnWETM", + "sourceHandle": "x2", + "target": "1788KFqsQBkYARqA0T5GX", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-FLFaGZDg2MSG6_YHnWETMx2-cw7WdFfL5HpeZ_n8wYk2tw1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "1788KFqsQBkYARqA0T5GX", + "sourceHandle": "z2", + "target": "YxaroYL_Az0vKRCeu2jsp", + "targetHandle": "y2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-1788KFqsQBkYARqA0T5GXz2-cw7WdFfL5HpeZ_n8wYk2ty2", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "YxaroYL_Az0vKRCeu2jsp", + "sourceHandle": "w2", + "target": "_uqTTBUYAzDHbEUkDzmzg", + "targetHandle": "x2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-cw7WdFfL5HpeZ_n8wYk2tw2-_uqTTBUYAzDHbEUkDzmzgx2", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "YxaroYL_Az0vKRCeu2jsp", + "sourceHandle": "z2", + "target": "cw7WdFfL5HpeZ_n8wYk2t", + "targetHandle": "y2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-YxaroYL_Az0vKRCeu2jspz2-cw7WdFfL5HpeZ_n8wYk2ty2", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "cw7WdFfL5HpeZ_n8wYk2t", + "sourceHandle": "w2", + "target": "UESjGrFyUbNf4pQamaBoy", + "targetHandle": "x2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-cw7WdFfL5HpeZ_n8wYk2tw2-UESjGrFyUbNf4pQamaBoyx2", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "cw7WdFfL5HpeZ_n8wYk2t", + "sourceHandle": "x2", + "target": "_jd91rrAXGbJI9RhXlSx8", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "selected": false, + "selectable": true, + "focusable": true, + "type": "smoothstep", + "id": "reactflow__edge-cw7WdFfL5HpeZ_n8wYk2tx2-dkCVwuy8GKeEi3VJar_Zoz1" + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_jd91rrAXGbJI9RhXlSx8", + "sourceHandle": "y2", + "target": "ThBxS9xIMt9OrXfnto3rW", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-dkCVwuy8GKeEi3VJar_Zoy2-ThBxS9xIMt9OrXfnto3rWz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_jd91rrAXGbJI9RhXlSx8", + "sourceHandle": "y2", + "target": "LVwGXmZhMewGQy61qwNyu", + "targetHandle": "z2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-dkCVwuy8GKeEi3VJar_Zoy2-LVwGXmZhMewGQy61qwNyuz2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_jd91rrAXGbJI9RhXlSx8", + "sourceHandle": "x2", + "target": "hhtqvFfTCuVPT0OPu4Y1a", + "targetHandle": "w2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-_jd91rrAXGbJI9RhXlSx8x2-dkCVwuy8GKeEi3VJar_Zow2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "hhtqvFfTCuVPT0OPu4Y1a", + "sourceHandle": "z2", + "target": "wD6dUrS-tP2gpCHPghFp5", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-dkCVwuy8GKeEi3VJar_Zoz2-wD6dUrS-tP2gpCHPghFp5y2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "hhtqvFfTCuVPT0OPu4Y1a", + "sourceHandle": "z2", + "target": "73uoFNGcCALxIuRNbebav", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-dkCVwuy8GKeEi3VJar_Zoz2-73uoFNGcCALxIuRNbebavy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "hhtqvFfTCuVPT0OPu4Y1a", + "sourceHandle": "z2", + "target": "Rkx2A6oWsddlCTseZlpRU", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-dkCVwuy8GKeEi3VJar_Zoz2-Rkx2A6oWsddlCTseZlpRUy2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "hhtqvFfTCuVPT0OPu4Y1a", + "sourceHandle": "y2", + "target": "XCJvgUSS7-oDR-XGdDY33", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-hhtqvFfTCuVPT0OPu4Y1ay2-dkCVwuy8GKeEi3VJar_Zoz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "XCJvgUSS7-oDR-XGdDY33", + "sourceHandle": "x2", + "target": "yrWiWJMSyTWxDakJbqacu", + "targetHandle": "w2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-dkCVwuy8GKeEi3VJar_Zox2-yrWiWJMSyTWxDakJbqacuw2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "XCJvgUSS7-oDR-XGdDY33", + "sourceHandle": "y2", + "target": "k3FJY26SVxdZx4MLLE25h", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-XCJvgUSS7-oDR-XGdDY33y2-dkCVwuy8GKeEi3VJar_Zoz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "k3FJY26SVxdZx4MLLE25h", + "sourceHandle": "y2", + "target": "zW_7VLeEHQp8fp_f5N__0", + "targetHandle": "z2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-dkCVwuy8GKeEi3VJar_Zoy2-zW_7VLeEHQp8fp_f5N__0z2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "zW_7VLeEHQp8fp_f5N__0", + "sourceHandle": "x2", + "target": "yAf7VDX7dyaT5AdlNnuKD", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-zW_7VLeEHQp8fp_f5N__0x2-yAf7VDX7dyaT5AdlNnuKDw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "k3FJY26SVxdZx4MLLE25h", + "sourceHandle": "x2", + "target": "dkCVwuy8GKeEi3VJar_Zo", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-k3FJY26SVxdZx4MLLE25hx2-dkCVwuy8GKeEi3VJar_Zow1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "dkCVwuy8GKeEi3VJar_Zo", + "sourceHandle": "y2", + "target": "XvvlvDKfYRCcYtTdWohsd", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-dkCVwuy8GKeEi3VJar_Zoy2-XvvlvDKfYRCcYtTdWohsdz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "dkCVwuy8GKeEi3VJar_Zo", + "sourceHandle": "x2", + "target": "jkWvfp4GqckYPQ48GtjlR", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-dkCVwuy8GKeEi3VJar_Zox2-jkWvfp4GqckYPQ48GtjlRw1", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "dkCVwuy8GKeEi3VJar_Zo", + "sourceHandle": "z2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "selected": false, + "focusable": true, + "selectable": true, + "id": "reactflow__edge-dkCVwuy8GKeEi3VJar_Zoz2-GV_zWF6rSWg5bqgiXhOEfw1", + "type": "smoothstep" + } + ] } \ No newline at end of file diff --git a/src/data/roadmaps/server-side-game-developer/server-side-game-developer.md b/src/data/roadmaps/server-side-game-developer/server-side-game-developer.md index a07294693..c65e210bc 100644 --- a/src/data/roadmaps/server-side-game-developer/server-side-game-developer.md +++ b/src/data/roadmaps/server-side-game-developer/server-side-game-developer.md @@ -1,6 +1,7 @@ --- pdfUrl: '/pdfs/roadmaps/server-side-game-developer.pdf' order: 17 +renderer: 'editor' briefTitle: 'Server Side Game Developer' briefDescription: 'Roadmap to becoming a Server Side Game Developer in 2024' title: 'Server Side Game Developer' @@ -10,7 +11,7 @@ isNew: true isHidden: true dimensions: width: 968 - height: 2618.02 + height: 2850 schema: headline: 'Server Side Game Developer Roadmap' description: 'Learn what Server Side Game Development is, what server side game developers do and how to become one using our community-driven roadmap.' diff --git a/src/data/roadmaps/software-architect/content/functional-programming@6FDGecsHbqY-cm32yTZJa .md b/src/data/roadmaps/software-architect/content/functional-programming@6FDGecsHbqY-cm32yTZJa .md index 375b86ef5..76cf07cf3 100644 --- a/src/data/roadmaps/software-architect/content/functional-programming@6FDGecsHbqY-cm32yTZJa .md +++ b/src/data/roadmaps/software-architect/content/functional-programming@6FDGecsHbqY-cm32yTZJa .md @@ -5,5 +5,4 @@ Functional programming is a programming paradigm designed to handle pure mathema Visit the following resources to learn more: - [@video@Learning Functional Programming](https://youtube.com/watch?v=e-5obm1G_FY) -- [@article@Functional Programming with JavaScript](https://www.telerik.com/blogs/functional-programming-javascript) -- [@article@What is Functional Programming?](https://www.freecodecamp.org/news/functional-programming-in-javascript/) \ No newline at end of file +- [@article@Functional Programming with JavaScript](https://www.telerik.com/blogs/functional-programming-javascript) \ No newline at end of file diff --git a/src/data/roadmaps/software-architect/content/oop@AMDLJ_Bup-AY1chl_taV3.md b/src/data/roadmaps/software-architect/content/oop@AMDLJ_Bup-AY1chl_taV3.md index 49456422f..ddbf7cc96 100644 --- a/src/data/roadmaps/software-architect/content/oop@AMDLJ_Bup-AY1chl_taV3.md +++ b/src/data/roadmaps/software-architect/content/oop@AMDLJ_Bup-AY1chl_taV3.md @@ -5,7 +5,6 @@ Object-oriented programming (OOP) is a computer programming model that organizes Visit the following resources to learn more: - [@article@Basic concepts of object-oriented programming](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Object-oriented_programming) -- [@article@geeksforgeeks - OOP Concepts](https://www.geeksforgeeks.org/object-oriented-programming-oops-concept-in-java/) - [@article@w3schools - OOP Concepts](https://www.w3schools.com/java/java_oop.asp) - [@video@FreeCodeCamp - (OOP) in C++](https://www.youtube.com/watch?v=wN0x9eZLix4) - [@video@FreeCodeCamp - (OPP) in Python](https://www.youtube.com/watch?v=Ej_02ICOIgs) diff --git a/src/data/roadmaps/software-architect/content/osi@Mt5W1IvuHevNXVRlh7z26.md b/src/data/roadmaps/software-architect/content/osi@Mt5W1IvuHevNXVRlh7z26.md index c2a860783..2bb9ede32 100644 --- a/src/data/roadmaps/software-architect/content/osi@Mt5W1IvuHevNXVRlh7z26.md +++ b/src/data/roadmaps/software-architect/content/osi@Mt5W1IvuHevNXVRlh7z26.md @@ -5,5 +5,3 @@ The OSI and TCP/IP model is used to help the developer to design their system fo Visit the following resources to learn more: - [@article@Cloudflare - What is the OSI model](https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi/) -- [@article@Geeksforgeeks - Layers of OSI model](https://www.geeksforgeeks.org/layers-of-osi-model/) -- [@article@Geeksforgeeks - TCP/IP model](https://www.geeksforgeeks.org/tcp-ip-model/) diff --git a/src/data/roadmaps/software-architect/content/service-oriented@6uvmMgvOwGyuLC5TOhjFu.md b/src/data/roadmaps/software-architect/content/service-oriented@6uvmMgvOwGyuLC5TOhjFu.md index 22318f88c..24e3a0bd0 100644 --- a/src/data/roadmaps/software-architect/content/service-oriented@6uvmMgvOwGyuLC5TOhjFu.md +++ b/src/data/roadmaps/software-architect/content/service-oriented@6uvmMgvOwGyuLC5TOhjFu.md @@ -12,4 +12,3 @@ SOA provides four different service types: Visit the following resources to learn more: - [@article@SOA Architecture By AWS](https://aws.amazon.com/what-is/service-oriented-architecture/) -- [@article@SOA Architecture](https://www.geeksforgeeks.org/service-oriented-architecture/) diff --git a/src/data/roadmaps/software-architect/content/what-is-software-architecture@EGG99VA-PEdWdVxNDLtG_.md b/src/data/roadmaps/software-architect/content/what-is-software-architecture@EGG99VA-PEdWdVxNDLtG_.md index 3bb2d7d88..7df900c23 100644 --- a/src/data/roadmaps/software-architect/content/what-is-software-architecture@EGG99VA-PEdWdVxNDLtG_.md +++ b/src/data/roadmaps/software-architect/content/what-is-software-architecture@EGG99VA-PEdWdVxNDLtG_.md @@ -5,6 +5,5 @@ Describes how an application is built including its components, how they interac Visit the following resources to learn more: - [@article@What is Software Architecture in Software Engineering?](https://webcache.googleusercontent.com/search?q=cache:ya4xvYaEckQJ:https://www.future-processing.com/blog/what-is-software-architecture-in-software-engineering/\&cd=1\&hl=es-419\&ct=clnk\&gl=ar) -- [@article@An Introduction to Software Architecture Patterns](https://www.freecodecamp.org/news/an-introduction-to-software-architecture-patterns/) - [@article@Software Architecture: It might not be what you think it is](https://www.infoq.com/articles/what-software-architecture/) - [@feed@Explore top posts about Architecture](https://app.daily.dev/tags/architecture?ref=roadmapsh) diff --git a/src/data/roadmaps/software-design-architecture/content/101-programming-paradigms/index.md b/src/data/roadmaps/software-design-architecture/content/101-programming-paradigms/index.md index fef38236b..5bdb623d4 100644 --- a/src/data/roadmaps/software-design-architecture/content/101-programming-paradigms/index.md +++ b/src/data/roadmaps/software-design-architecture/content/101-programming-paradigms/index.md @@ -11,4 +11,3 @@ A programming paradigm is a fundamental style or approach to solving problems us Learn more from the following links: - [@article@Overview of Programming paradigm](https://en.wikipedia.org/wiki/Programming_paradigm) -- [@article@Introduction of Programming Paradigms](https://www.geeksforgeeks.org/introduction-of-programming-paradigms/) diff --git a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/101-concrete-classes.md b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/101-concrete-classes.md index 21b61bf27..5012ba975 100644 --- a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/101-concrete-classes.md +++ b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/101-paradigm-features/101-concrete-classes.md @@ -6,4 +6,3 @@ Concrete classes are used to provide specific implementation details for a group Learn more from the following resources: -- [@article@Concrete class in Java](https://www.geeksforgeeks.org/concrete-class-in-java/) diff --git a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/102-program-against-abstractions.md b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/102-program-against-abstractions.md index 652053bea..3d04957db 100644 --- a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/102-program-against-abstractions.md +++ b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/102-program-against-abstractions.md @@ -6,5 +6,4 @@ Programming against abstractions allows for more flexibility in the code. When c Learn more from the following resources: -- [@article@What is Abstraction in Programming – And Why is it Useful?](https://www.freecodecamp.org/news/what-is-abstraction-in-programming/) - [@article@Overview of Abstraction principle](https://en.wikipedia.org/wiki/Abstraction_principle_(computer_programming)) diff --git a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/index.md b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/index.md index a1e16437d..5fda8b19c 100644 --- a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/index.md +++ b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/index.md @@ -16,5 +16,4 @@ By following these design principles, software can be developed in a way that is Learn more from the following resources: -- [@article@Principles of Software Design](https://www.geeksforgeeks.org/principles-of-software-design/) - [@video@Software Design Principles For Beginners](https://www.youtube.com/watch?v=60EqoRcanpo) diff --git a/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/102-coupling-and-cohesion.md b/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/102-coupling-and-cohesion.md index 99197810e..bc59c8e3a 100644 --- a/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/102-coupling-and-cohesion.md +++ b/src/data/roadmaps/software-design-architecture/content/105-architectural-principles/102-coupling-and-cohesion.md @@ -9,4 +9,3 @@ Cohesion, on the other hand, refers to the degree to which the responsibilities To learn more, visit the following links: - [@video@Cohesion and Coupling in Software Engineering](https://www.youtube.com/watch?v=NweTzHYBgYU) -- [@article@Overview of Coupling and Cohesion](https://www.geeksforgeeks.org/software-engineering-coupling-and-cohesion/) diff --git a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/103-model-view-controller.md b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/103-model-view-controller.md index ae34480e6..941e276e5 100644 --- a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/103-model-view-controller.md +++ b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/103-model-view-controller.md @@ -4,6 +4,5 @@ Model-View-Controller (MVC) is an architectural pattern that separates the conce Learn more from the following links: -- [@article@MVC Design Pattern](https://www.geeksforgeeks.org/mvc-design-pattern/) - [@article@MVC Framework - Introduction](https://www.tutorialspoint.com/mvc_framework/mvc_framework_introduction.htm) - [@video@Tutorial - MVC Architectural Pattern](https://www.youtube.com/watch?v=e9S90R-Y24Q) diff --git a/src/data/roadmaps/spring-boot/content/100-spring-core/100-introduction/101-architecture.md b/src/data/roadmaps/spring-boot/content/100-spring-core/100-introduction/101-architecture.md index 205ab2a2c..f349c4708 100644 --- a/src/data/roadmaps/spring-boot/content/100-spring-core/100-introduction/101-architecture.md +++ b/src/data/roadmaps/spring-boot/content/100-spring-core/100-introduction/101-architecture.md @@ -11,5 +11,4 @@ For more information, visit the following links: - [@article@Spring Boot Architecture](https://www.javatpoint.com/spring-boot-architecture) - [@article@Spring Boot Architecture – Detailed Explanation](https://www.interviewbit.com/blog/spring-boot-architecture) -- [@article@Spring Boot – Architecture](https://www.geeksforgeeks.org/spring-boot-architecture/) - [@feed@Explore top posts about Architecture](https://app.daily.dev/tags/architecture?ref=roadmapsh) diff --git a/src/data/roadmaps/spring-boot/content/100-spring-core/103-spring-ioc.md b/src/data/roadmaps/spring-boot/content/100-spring-core/103-spring-ioc.md index cb0ee9b10..9b0172284 100644 --- a/src/data/roadmaps/spring-boot/content/100-spring-core/103-spring-ioc.md +++ b/src/data/roadmaps/spring-boot/content/100-spring-core/103-spring-ioc.md @@ -24,5 +24,4 @@ More more resources, check out the following links: - [@article@Spring IoC, Spring Bean Example Tutorial](https://www.digitalocean.com/community/tutorials/spring-ioc-bean-example-tutorial) - [@article@Intro to Inversion of Control with Spring](https://www.baeldung.com/inversion-control-and-dependency-injection-in-spring) - [@article@IoC Container](https://www.javatpoint.com/ioc-container) -- [@article@Spring – IoC Container](https://www.geeksforgeeks.org/spring-ioc-container/) - [@feed@Explore top posts about Spring Framework](https://app.daily.dev/tags/spring?ref=roadmapsh) diff --git a/src/data/roadmaps/spring-boot/content/102-spring-boot-starters.md b/src/data/roadmaps/spring-boot/content/102-spring-boot-starters.md index e6bb5af8d..e16232706 100644 --- a/src/data/roadmaps/spring-boot/content/102-spring-boot-starters.md +++ b/src/data/roadmaps/spring-boot/content/102-spring-boot-starters.md @@ -6,5 +6,4 @@ For more information, visit the following links: - [@article@Intro to Spring Boot Starters](https://www.baeldung.com/spring-boot-starters) - [@article@Spring Boot Starters](https://www.javatpoint.com/spring-boot-starters) -- [@article@Starters in Spring Boot](https://www.geeksforgeeks.org/spring-boot-starters/) - [@feed@Explore top posts about Spring Framework](https://app.daily.dev/tags/spring?ref=roadmapsh) diff --git a/src/data/roadmaps/spring-boot/content/103-autconfiguration.md b/src/data/roadmaps/spring-boot/content/103-autconfiguration.md index ae0701e3f..ec8438f17 100644 --- a/src/data/roadmaps/spring-boot/content/103-autconfiguration.md +++ b/src/data/roadmaps/spring-boot/content/103-autconfiguration.md @@ -6,4 +6,3 @@ For more information, visit the following links: - [@article@Auto-configuration using Spring Boot](https://docs.spring.io/spring-boot/docs/2.0.x/reference/html/using-boot-auto-configuration.html) - [@article@Spring Boot Auto-configuration](https://www.javatpoint.com/spring-boot-auto-configuration) -- [@article@What is Spring Boot Auto-configuration](https://www.geeksforgeeks.org/spring-boot-auto-configuration/) diff --git a/src/data/roadmaps/spring-boot/content/106-hibernate/102-entity-lifecycle.md b/src/data/roadmaps/spring-boot/content/106-hibernate/102-entity-lifecycle.md index bebccc99d..5ce8f4967 100644 --- a/src/data/roadmaps/spring-boot/content/106-hibernate/102-entity-lifecycle.md +++ b/src/data/roadmaps/spring-boot/content/106-hibernate/102-entity-lifecycle.md @@ -11,6 +11,5 @@ There are mainly four states of the Hibernate Lifecycle : For more resources, visit the following links: -- [@article@Hibernate Lifecycle](https://www.geeksforgeeks.org/hibernate-lifecycle/) - [@article@Entity Lifecycle in Hibernate](https://www.javatpoint.com/hibernate-lifecycle) - [@article@Hibernate Entity Lifecycle & and its state](https://www.baeldung.com/hibernate-entity-lifecycle) diff --git a/src/data/roadmaps/spring-boot/content/106-hibernate/index.md b/src/data/roadmaps/spring-boot/content/106-hibernate/index.md index 05e79f8b4..375efc680 100644 --- a/src/data/roadmaps/spring-boot/content/106-hibernate/index.md +++ b/src/data/roadmaps/spring-boot/content/106-hibernate/index.md @@ -5,5 +5,4 @@ Hibernate is a Java framework that provides an object-relational mapping to an o For more resources, visit the following links: - [@article@Difference Between Spring vs Hibernate](https://www.educba.com/spring-vs-hibernate/) -- [@article@Spring Boot – Integrating Hibernate and JPA](https://www.geeksforgeeks.org/spring-boot-integrating-hibernate-and-jpa/) - [@article@Spring Hibernate Integration Example](https://www.digitalocean.com/community/tutorials/spring-hibernate-integration-example-tutorial) diff --git a/src/data/roadmaps/spring-boot/content/109-spring-mvc/100-servlet.md b/src/data/roadmaps/spring-boot/content/109-spring-mvc/100-servlet.md index cc8892ee5..41a2dba67 100644 --- a/src/data/roadmaps/spring-boot/content/109-spring-mvc/100-servlet.md +++ b/src/data/roadmaps/spring-boot/content/109-spring-mvc/100-servlet.md @@ -6,4 +6,3 @@ For more information, visit the following links: - [@article@DispatcherServlet and web.xml in Spring Boot](https://www.baeldung.com/spring-boot-dispatcherservlet-web-xml) - [@article@The DispatcherServlet](https://docs.spring.io/spring-framework/docs/3.0.0.M4/spring-framework-reference/html/ch15s02.html) -- [@article@What is Dispatcher Servlet in Spring?](https://www.geeksforgeeks.org/what-is-dispatcher-servlet-in-spring) diff --git a/src/data/roadmaps/spring-boot/content/109-spring-mvc/101-jsp-files.md b/src/data/roadmaps/spring-boot/content/109-spring-mvc/101-jsp-files.md index 18d4c2295..b89316595 100644 --- a/src/data/roadmaps/spring-boot/content/109-spring-mvc/101-jsp-files.md +++ b/src/data/roadmaps/spring-boot/content/109-spring-mvc/101-jsp-files.md @@ -6,6 +6,5 @@ In a Spring MVC application that uses JSPs, the view component of the MVC patter Visit the following links for more resources: -- [@article@Spring MVC with JSP View](https://www.geeksforgeeks.org/spring-mvc-with-jsp-view/) - [@article@Spring Boot With JavaServer Pages (JSP)](https://www.baeldung.com/spring-boot-jsp) - [@official@Spring MVC: from JSP and Tiles to Thymeleaf](https://spring.io/blog/2012/10/30/spring-mvc-from-jsp-and-tiles-to-thymeleaf/) diff --git a/src/data/roadmaps/spring-boot/content/109-spring-mvc/102-architecture.md b/src/data/roadmaps/spring-boot/content/109-spring-mvc/102-architecture.md index a6f7e4eb5..935ace9cb 100644 --- a/src/data/roadmaps/spring-boot/content/109-spring-mvc/102-architecture.md +++ b/src/data/roadmaps/spring-boot/content/109-spring-mvc/102-architecture.md @@ -5,6 +5,5 @@ The Spring MVC (Model-View-Controller) is a web application framework that is pa For more resources, visit the following resources: - [@article@Spring MVC Tutorial](https://www.javatpoint.com/spring-mvc-tutorial) -- [@article@Spring – MVC Framework](https://www.geeksforgeeks.org/spring-mvc-framework/) - [@article@Overview of Spring MVC Architecture](https://terasolunaorg.github.io/guideline/1.0.1.RELEASE/en/Overview/SpringMVCOverview.html) - [@feed@Explore top posts about Architecture](https://app.daily.dev/tags/architecture?ref=roadmapsh) diff --git a/src/data/roadmaps/spring-boot/content/109-spring-mvc/103-components.md b/src/data/roadmaps/spring-boot/content/109-spring-mvc/103-components.md index 3b114a689..4000ca956 100644 --- a/src/data/roadmaps/spring-boot/content/109-spring-mvc/103-components.md +++ b/src/data/roadmaps/spring-boot/content/109-spring-mvc/103-components.md @@ -15,5 +15,5 @@ There are other supporting components that are used to manage the lifecycle of t For more information, visit the following links: -- [@article@Spring Boot vs Spring MVC: How do They Compare?](https://rollbar.com/blog/spring-boot-vs-spring-mvc-how-do-they-compare/) -- [@article@Spring MVC components](http://makble.com/spring-mvc-components) +- [@article@Spring Boot vs Spring MVC: How do They Compare?](https://www.javatpoint.com/spring-vs-spring-boot-vs-spring-mvc) +- [@article@Spring MVC components](https://www.javatpoint.com/spring-vs-spring-boot-vs-spring-mvc) diff --git a/src/data/roadmaps/technical-writer/content/105-types/104-api-references/101-api-definition.md b/src/data/roadmaps/technical-writer/content/api-definitions@co-35BsWMrD6PXohpFqba.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/105-types/104-api-references/101-api-definition.md rename to src/data/roadmaps/technical-writer/content/api-definitions@co-35BsWMrD6PXohpFqba.md diff --git a/src/data/roadmaps/technical-writer/content/105-types/104-api-references/index.md b/src/data/roadmaps/technical-writer/content/api-reference@z5_73Q7dWbBd4m_OrdZlH.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/105-types/104-api-references/index.md rename to src/data/roadmaps/technical-writer/content/api-reference@z5_73Q7dWbBd4m_OrdZlH.md diff --git a/src/data/roadmaps/technical-writer/content/108-top-funnel/101-awareness-blogs.md b/src/data/roadmaps/technical-writer/content/awareness-blog-posts@7S2lymeBZSMBZSsmei7us.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/108-top-funnel/101-awareness-blogs.md rename to src/data/roadmaps/technical-writer/content/awareness-blog-posts@7S2lymeBZSMBZSsmei7us.md diff --git a/src/data/roadmaps/technical-writer/content/107-seo/100-seo-keywords/102-backlinking.md b/src/data/roadmaps/technical-writer/content/backlinking@UphVii3y4T_PkRMqFJ4r_.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/107-seo/100-seo-keywords/102-backlinking.md rename to src/data/roadmaps/technical-writer/content/backlinking@UphVii3y4T_PkRMqFJ4r_.md diff --git a/src/data/roadmaps/technical-writer/content/103-best-practices/index.md b/src/data/roadmaps/technical-writer/content/best-practices@yYLsG2LuPaNUuhXSVev_0.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/103-best-practices/index.md rename to src/data/roadmaps/technical-writer/content/best-practices@yYLsG2LuPaNUuhXSVev_0.md diff --git a/src/data/roadmaps/technical-writer/content/102-tooling/106-blogging-platforms.md b/src/data/roadmaps/technical-writer/content/blogging-platforms@sdoFe4A3y_-Zp3mlrJ5r8.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/102-tooling/106-blogging-platforms.md rename to src/data/roadmaps/technical-writer/content/blogging-platforms@sdoFe4A3y_-Zp3mlrJ5r8.md diff --git a/src/data/roadmaps/technical-writer/content/110-bottom-funnel/index.md b/src/data/roadmaps/technical-writer/content/bottom-funnel-content@vo1udIIRpxNZCpA3g32F3.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/110-bottom-funnel/index.md rename to src/data/roadmaps/technical-writer/content/bottom-funnel-content@vo1udIIRpxNZCpA3g32F3.md diff --git a/src/data/roadmaps/technical-writer/content/106-marketing/101-buyer-journey.md b/src/data/roadmaps/technical-writer/content/buyer-journey--content-funnel@EhhKxYPtoLztZXBXl3ZGl.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/106-marketing/101-buyer-journey.md rename to src/data/roadmaps/technical-writer/content/buyer-journey--content-funnel@EhhKxYPtoLztZXBXl3ZGl.md diff --git a/src/data/roadmaps/technical-writer/content/103-best-practices/103-call-to-actions.md b/src/data/roadmaps/technical-writer/content/call-to-actions@a1ChwDwztjZBi79y38AGa.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/103-best-practices/103-call-to-actions.md rename to src/data/roadmaps/technical-writer/content/call-to-actions@a1ChwDwztjZBi79y38AGa.md diff --git a/src/data/roadmaps/technical-writer/content/117-content-distribution/100-canonical-link.md b/src/data/roadmaps/technical-writer/content/canonical-link@NIxIhMEOxrUR8nbjbF_Fp.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/117-content-distribution/100-canonical-link.md rename to src/data/roadmaps/technical-writer/content/canonical-link@NIxIhMEOxrUR8nbjbF_Fp.md diff --git a/src/data/roadmaps/technical-writer/content/104-content-research/102-forums.md b/src/data/roadmaps/technical-writer/content/communities--forums@QMehC1tmWPVWaTsiV9sFC.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/104-content-research/102-forums.md rename to src/data/roadmaps/technical-writer/content/communities--forums@QMehC1tmWPVWaTsiV9sFC.md diff --git a/src/data/roadmaps/technical-writer/content/110-bottom-funnel/100-comparative-posts.md b/src/data/roadmaps/technical-writer/content/comparative-posts@2wjRA_pQ9cCG9Ww994FEM.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/110-bottom-funnel/100-comparative-posts.md rename to src/data/roadmaps/technical-writer/content/comparative-posts@2wjRA_pQ9cCG9Ww994FEM.md diff --git a/src/data/roadmaps/technical-writer/content/116-content-analysis/103-content-aging.md b/src/data/roadmaps/technical-writer/content/content-aging--timelines@JgdrXG7MX1gGuNG9uyubA.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/116-content-analysis/103-content-aging.md rename to src/data/roadmaps/technical-writer/content/content-aging--timelines@JgdrXG7MX1gGuNG9uyubA.md diff --git a/src/data/roadmaps/technical-writer/content/116-content-analysis/index.md b/src/data/roadmaps/technical-writer/content/content-analysis@TbSBCITdLswhVB82fErTP.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/116-content-analysis/index.md rename to src/data/roadmaps/technical-writer/content/content-analysis@TbSBCITdLswhVB82fErTP.md diff --git a/src/data/roadmaps/technical-writer/content/117-content-distribution/103-amplification-strategies.md b/src/data/roadmaps/technical-writer/content/content-distribution-amplification-strategies@_cAGbAswDhOqpoiiikPbD.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/117-content-distribution/103-amplification-strategies.md rename to src/data/roadmaps/technical-writer/content/content-distribution-amplification-strategies@_cAGbAswDhOqpoiiikPbD.md diff --git a/src/data/roadmaps/technical-writer/content/117-content-distribution/102-content-distribution-channels.md b/src/data/roadmaps/technical-writer/content/content-distribution-channels@m9-DqsQfeukmhjhIfCph-.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/117-content-distribution/102-content-distribution-channels.md rename to src/data/roadmaps/technical-writer/content/content-distribution-channels@m9-DqsQfeukmhjhIfCph-.md diff --git a/src/data/roadmaps/technical-writer/content/117-content-distribution/index.md b/src/data/roadmaps/technical-writer/content/content-distribution@mrqBxsNRl1CQEKtuYSy9F.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/117-content-distribution/index.md rename to src/data/roadmaps/technical-writer/content/content-distribution@mrqBxsNRl1CQEKtuYSy9F.md diff --git a/src/data/roadmaps/technical-writer/content/103-best-practices/106-content-objectives.md b/src/data/roadmaps/technical-writer/content/content-objectives--intent@7FGMPztd6ouvqemcGhIol.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/103-best-practices/106-content-objectives.md rename to src/data/roadmaps/technical-writer/content/content-objectives--intent@7FGMPztd6ouvqemcGhIol.md diff --git a/src/data/roadmaps/technical-writer/content/115-content-optimization.md b/src/data/roadmaps/technical-writer/content/content-optimization@XyFEYDJvJpGZ7qSdoSZeI.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/115-content-optimization.md rename to src/data/roadmaps/technical-writer/content/content-optimization@XyFEYDJvJpGZ7qSdoSZeI.md diff --git a/src/data/roadmaps/technical-writer/content/104-content-research/index.md b/src/data/roadmaps/technical-writer/content/content-research@O-dZEkmU0tP3dUIUPM6YJ.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/104-content-research/index.md rename to src/data/roadmaps/technical-writer/content/content-research@O-dZEkmU0tP3dUIUPM6YJ.md diff --git a/src/data/roadmaps/technical-writer/content/107-seo/index.md b/src/data/roadmaps/technical-writer/content/content-seo@-IBL9S4DelIi07w_fmrX3.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/107-seo/index.md rename to src/data/roadmaps/technical-writer/content/content-seo@-IBL9S4DelIi07w_fmrX3.md diff --git a/src/data/roadmaps/technical-writer/content/103-best-practices/102-content-structure.md b/src/data/roadmaps/technical-writer/content/content-structure@Ezz2e4lYLD_bdNNwvsV_y.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/103-best-practices/102-content-structure.md rename to src/data/roadmaps/technical-writer/content/content-structure@Ezz2e4lYLD_bdNNwvsV_y.md diff --git a/src/data/roadmaps/technical-writer/content/116-content-analysis/102-conversion-tracking.md b/src/data/roadmaps/technical-writer/content/conversion-tracking@UiXn-CnPcLWAflKJzaJ2a.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/116-content-analysis/102-conversion-tracking.md rename to src/data/roadmaps/technical-writer/content/conversion-tracking@UiXn-CnPcLWAflKJzaJ2a.md diff --git a/src/data/roadmaps/technical-writer/content/103-best-practices/105-great-titles.md b/src/data/roadmaps/technical-writer/content/crafting-great-titles@WmOvQYlnedX0QgC5Adeen.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/103-best-practices/105-great-titles.md rename to src/data/roadmaps/technical-writer/content/crafting-great-titles@WmOvQYlnedX0QgC5Adeen.md diff --git a/src/data/roadmaps/technical-writer/content/114-case-studies.md b/src/data/roadmaps/technical-writer/content/customer-case-studies@W44q1iEj7RKM55-9jabMJ.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/114-case-studies.md rename to src/data/roadmaps/technical-writer/content/customer-case-studies@W44q1iEj7RKM55-9jabMJ.md diff --git a/src/data/roadmaps/technical-writer/content/105-types/103-developer-docs/index.md b/src/data/roadmaps/technical-writer/content/developer-docs@e8oNoXw1KLY4jDzojIXyk.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/105-types/103-developer-docs/index.md rename to src/data/roadmaps/technical-writer/content/developer-docs@e8oNoXw1KLY4jDzojIXyk.md diff --git a/src/data/roadmaps/technical-writer/content/105-types/103-developer-docs/101-developer-journey.md b/src/data/roadmaps/technical-writer/content/developer-journey@2pNW7wDGih_m73lhGZRg6.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/105-types/103-developer-docs/101-developer-journey.md rename to src/data/roadmaps/technical-writer/content/developer-journey@2pNW7wDGih_m73lhGZRg6.md diff --git a/src/data/roadmaps/technical-writer/content/105-types/105-help-content/101-support-content.md b/src/data/roadmaps/technical-writer/content/developer-support@7w1SjK-LV9SBZJ673eAUd.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/105-types/105-help-content/101-support-content.md rename to src/data/roadmaps/technical-writer/content/developer-support@7w1SjK-LV9SBZJ673eAUd.md diff --git a/src/data/roadmaps/technical-writer/content/105-types/104-api-references/100-doc-generation-tools.md b/src/data/roadmaps/technical-writer/content/docs-generation-tools@iBBeZopD8SNo7sWTohMim.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/105-types/104-api-references/100-doc-generation-tools.md rename to src/data/roadmaps/technical-writer/content/docs-generation-tools@iBBeZopD8SNo7sWTohMim.md diff --git a/src/data/roadmaps/technical-writer/content/105-types/103-developer-docs/102-documentation-structure.md b/src/data/roadmaps/technical-writer/content/docs-structure@jYhfx6RETFgDulyNqdTBy.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/105-types/103-developer-docs/102-documentation-structure.md rename to src/data/roadmaps/technical-writer/content/docs-structure@jYhfx6RETFgDulyNqdTBy.md diff --git a/src/data/roadmaps/technical-writer/content/109-mid-funnel/102-ebook.md b/src/data/roadmaps/technical-writer/content/ebook@5zQpravkqwafvwXVOuNPX.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/109-mid-funnel/102-ebook.md rename to src/data/roadmaps/technical-writer/content/ebook@5zQpravkqwafvwXVOuNPX.md diff --git a/src/data/roadmaps/technical-writer/content/102-tooling/102-editing.md b/src/data/roadmaps/technical-writer/content/editing-tools@Am_ocP3r0HM45LYfMcQxM.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/102-tooling/102-editing.md rename to src/data/roadmaps/technical-writer/content/editing-tools@Am_ocP3r0HM45LYfMcQxM.md diff --git a/src/data/roadmaps/technical-writer/content/100-introduction/103-forms.md b/src/data/roadmaps/technical-writer/content/forms-of-technical-writing@cNeT1dJDfgn0ndPzSxhSL.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/100-introduction/103-forms.md rename to src/data/roadmaps/technical-writer/content/forms-of-technical-writing@cNeT1dJDfgn0ndPzSxhSL.md diff --git a/src/data/roadmaps/technical-writer/content/113-faqs.md b/src/data/roadmaps/technical-writer/content/frequently-asked-questions@pgrKfp1trcIxhDdvLk95g.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/113-faqs.md rename to src/data/roadmaps/technical-writer/content/frequently-asked-questions@pgrKfp1trcIxhDdvLk95g.md diff --git a/src/data/roadmaps/technical-writer/content/105-types/101-product-prose.md b/src/data/roadmaps/technical-writer/content/general-product-prose@UFuMiHtWq1M8dS8547lOp.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/105-types/101-product-prose.md rename to src/data/roadmaps/technical-writer/content/general-product-prose@UFuMiHtWq1M8dS8547lOp.md diff --git a/src/data/roadmaps/technical-writer/content/109-mid-funnel/100-generic-gated.md b/src/data/roadmaps/technical-writer/content/generic-gated-content@XDX2QxMUkUok2fcS3tFki.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/109-mid-funnel/100-generic-gated.md rename to src/data/roadmaps/technical-writer/content/generic-gated-content@XDX2QxMUkUok2fcS3tFki.md diff --git a/src/data/roadmaps/technical-writer/content/102-tooling/103-git-version-control.md b/src/data/roadmaps/technical-writer/content/git--version-control@ffJyulu9GPB_TDqjeJYyV.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/102-tooling/103-git-version-control.md rename to src/data/roadmaps/technical-writer/content/git--version-control@ffJyulu9GPB_TDqjeJYyV.md diff --git a/src/data/roadmaps/technical-writer/content/100-introduction/104-growth.md b/src/data/roadmaps/technical-writer/content/growth-as-a-technical-writer@FVxNjbDBxgf6vkZWw1Awt.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/100-introduction/104-growth.md rename to src/data/roadmaps/technical-writer/content/growth-as-a-technical-writer@FVxNjbDBxgf6vkZWw1Awt.md diff --git a/src/data/roadmaps/technical-writer/content/105-types/105-help-content/index.md b/src/data/roadmaps/technical-writer/content/help-content@e_bsYrZ0eQqduURg2ybX4.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/105-types/105-help-content/index.md rename to src/data/roadmaps/technical-writer/content/help-content@e_bsYrZ0eQqduURg2ybX4.md diff --git a/src/data/roadmaps/technical-writer/content/105-types/102-how-to-guides.md b/src/data/roadmaps/technical-writer/content/how-to-guides@C-eVVtF6Yabp2a6XvMeh_.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/105-types/102-how-to-guides.md rename to src/data/roadmaps/technical-writer/content/how-to-guides@C-eVVtF6Yabp2a6XvMeh_.md diff --git a/src/data/roadmaps/technical-writer/content/106-marketing/100-icp-buyer-persona.md b/src/data/roadmaps/technical-writer/content/icp--buyer-persona@O1apL6I_g9DQl8VbL3X4W.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/106-marketing/100-icp-buyer-persona.md rename to src/data/roadmaps/technical-writer/content/icp--buyer-persona@O1apL6I_g9DQl8VbL3X4W.md diff --git a/src/data/roadmaps/technical-writer/content/index.md b/src/data/roadmaps/technical-writer/content/index.md deleted file mode 100644 index 4e768b56d..000000000 --- a/src/data/roadmaps/technical-writer/content/index.md +++ /dev/null @@ -1 +0,0 @@ -# \ No newline at end of file diff --git a/src/data/roadmaps/technical-writer/content/100-introduction/index.md b/src/data/roadmaps/technical-writer/content/introduction@HlUUGj3dOZ68t4gIjerXh.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/100-introduction/index.md rename to src/data/roadmaps/technical-writer/content/introduction@HlUUGj3dOZ68t4gIjerXh.md diff --git a/src/data/roadmaps/technical-writer/content/104-content-research/101-keyword-volume.md b/src/data/roadmaps/technical-writer/content/keyword-volume@JtFLW5WwH5Ixmnb0qikia.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/104-content-research/101-keyword-volume.md rename to src/data/roadmaps/technical-writer/content/keyword-volume@JtFLW5WwH5Ixmnb0qikia.md diff --git a/src/data/roadmaps/technical-writer/content/101-required-skills/101-lang-proficiency.md b/src/data/roadmaps/technical-writer/content/language-proficiency@kNIiAJrvrNoOAllUbRtUB.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/101-required-skills/101-lang-proficiency.md rename to src/data/roadmaps/technical-writer/content/language-proficiency@kNIiAJrvrNoOAllUbRtUB.md diff --git a/src/data/roadmaps/technical-writer/content/116-content-analysis/100-url-shorteners.md b/src/data/roadmaps/technical-writer/content/link-shorteners--tracking@qpOfqbgLy5TzlNQEyt6DG.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/116-content-analysis/100-url-shorteners.md rename to src/data/roadmaps/technical-writer/content/link-shorteners--tracking@qpOfqbgLy5TzlNQEyt6DG.md diff --git a/src/data/roadmaps/technical-writer/content/107-seo/100-seo-keywords/100-long-tail-keywords.md b/src/data/roadmaps/technical-writer/content/long-tail-keywords@2LAvq7W11WMIubSprlK_l.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/107-seo/100-seo-keywords/100-long-tail-keywords.md rename to src/data/roadmaps/technical-writer/content/long-tail-keywords@2LAvq7W11WMIubSprlK_l.md diff --git a/src/data/roadmaps/technical-writer/content/102-tooling/104-markdown.md b/src/data/roadmaps/technical-writer/content/markdown@TJ1iuzQ9u_WbrllRQkgm_.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/102-tooling/104-markdown.md rename to src/data/roadmaps/technical-writer/content/markdown@TJ1iuzQ9u_WbrllRQkgm_.md diff --git a/src/data/roadmaps/technical-writer/content/109-mid-funnel/index.md b/src/data/roadmaps/technical-writer/content/mid-funnel-content@Q2KD70IKwBXAH3UQgeZpp.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/109-mid-funnel/index.md rename to src/data/roadmaps/technical-writer/content/mid-funnel-content@Q2KD70IKwBXAH3UQgeZpp.md diff --git a/src/data/roadmaps/technical-writer/content/117-content-distribution/101-opengraph-data.md b/src/data/roadmaps/technical-writer/content/opengraph-data@AarJ887P-SFRnKaOOv9yw.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/117-content-distribution/101-opengraph-data.md rename to src/data/roadmaps/technical-writer/content/opengraph-data@AarJ887P-SFRnKaOOv9yw.md diff --git a/src/data/roadmaps/technical-writer/content/108-top-funnel/100-pillar-content.md b/src/data/roadmaps/technical-writer/content/pillar-content@wBDjGa2PgdmeXxHnILFjY.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/108-top-funnel/100-pillar-content.md rename to src/data/roadmaps/technical-writer/content/pillar-content@wBDjGa2PgdmeXxHnILFjY.md diff --git a/src/data/roadmaps/technical-writer/content/102-tooling/101-plagiarism.md b/src/data/roadmaps/technical-writer/content/plagiarism-checker@cSZbTOB0FPPOlGzy-MkSi.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/102-tooling/101-plagiarism.md rename to src/data/roadmaps/technical-writer/content/plagiarism-checker@cSZbTOB0FPPOlGzy-MkSi.md diff --git a/src/data/roadmaps/technical-writer/content/105-types/105-help-content/102-support-manual.md b/src/data/roadmaps/technical-writer/content/platform-support@How-4Re1NhxPLDoshUM-G.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/105-types/105-help-content/102-support-manual.md rename to src/data/roadmaps/technical-writer/content/platform-support@How-4Re1NhxPLDoshUM-G.md diff --git a/src/data/roadmaps/technical-writer/content/116-content-analysis/101-platform-tracking.md b/src/data/roadmaps/technical-writer/content/platform-tracking-and-metrics@hlhBgI3SvU3tMtNaHtu8k.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/116-content-analysis/101-platform-tracking.md rename to src/data/roadmaps/technical-writer/content/platform-tracking-and-metrics@hlhBgI3SvU3tMtNaHtu8k.md diff --git a/src/data/roadmaps/technical-writer/content/105-types/100-product-content.md b/src/data/roadmaps/technical-writer/content/product-content@d9mTdwqx6QWKYO5PA_rDH.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/105-types/100-product-content.md rename to src/data/roadmaps/technical-writer/content/product-content@d9mTdwqx6QWKYO5PA_rDH.md diff --git a/src/data/roadmaps/technical-writer/content/102-tooling/100-publishing.md b/src/data/roadmaps/technical-writer/content/publishing-tools@jC3ZrpskBqzxiV6SKf4Uf.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/102-tooling/100-publishing.md rename to src/data/roadmaps/technical-writer/content/publishing-tools@jC3ZrpskBqzxiV6SKf4Uf.md diff --git a/src/data/roadmaps/technical-writer/content/103-best-practices/104-references.md b/src/data/roadmaps/technical-writer/content/references@8qSL2esjsA3YYuB4d7B9z.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/103-best-practices/104-references.md rename to src/data/roadmaps/technical-writer/content/references@8qSL2esjsA3YYuB4d7B9z.md diff --git a/src/data/roadmaps/technical-writer/content/111-release-notes.md b/src/data/roadmaps/technical-writer/content/release-notes--product-announcements@-GZXLc9RjY6eWkKC1K_Rg.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/111-release-notes.md rename to src/data/roadmaps/technical-writer/content/release-notes--product-announcements@-GZXLc9RjY6eWkKC1K_Rg.md diff --git a/src/data/roadmaps/technical-writer/content/101-required-skills/index.md b/src/data/roadmaps/technical-writer/content/required-skills@8rjUZ9NZPGwVRGmk6Dlyb.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/101-required-skills/index.md rename to src/data/roadmaps/technical-writer/content/required-skills@8rjUZ9NZPGwVRGmk6Dlyb.md diff --git a/src/data/roadmaps/technical-writer/content/108-top-funnel/102-research-reports.md b/src/data/roadmaps/technical-writer/content/research-reports@HoNQSWy82ybT0YmejCzRb.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/108-top-funnel/102-research-reports.md rename to src/data/roadmaps/technical-writer/content/research-reports@HoNQSWy82ybT0YmejCzRb.md diff --git a/src/data/roadmaps/technical-writer/content/102-tooling/105-research-tools.md b/src/data/roadmaps/technical-writer/content/research-tools@0XWiraeoicNBbaGYQnNZr.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/102-tooling/105-research-tools.md rename to src/data/roadmaps/technical-writer/content/research-tools@0XWiraeoicNBbaGYQnNZr.md diff --git a/src/data/roadmaps/technical-writer/content/100-introduction/102-role.md b/src/data/roadmaps/technical-writer/content/role-of-technical-writers-inorganizations@j69erqfosSZMDlmKcnnn0.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/100-introduction/102-role.md rename to src/data/roadmaps/technical-writer/content/role-of-technical-writers-inorganizations@j69erqfosSZMDlmKcnnn0.md diff --git a/src/data/roadmaps/technical-writer/content/104-content-research/103-search-trends.md b/src/data/roadmaps/technical-writer/content/search-trends@IZqyEqkrBoEfLBwIQwJl6.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/104-content-research/103-search-trends.md rename to src/data/roadmaps/technical-writer/content/search-trends@IZqyEqkrBoEfLBwIQwJl6.md diff --git a/src/data/roadmaps/technical-writer/content/107-seo/100-seo-keywords/index.md b/src/data/roadmaps/technical-writer/content/seo-keywords@IA6TuXmOZr_-Y3HLHqxp0.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/107-seo/100-seo-keywords/index.md rename to src/data/roadmaps/technical-writer/content/seo-keywords@IA6TuXmOZr_-Y3HLHqxp0.md diff --git a/src/data/roadmaps/technical-writer/content/102-tooling/107-seo-tools.md b/src/data/roadmaps/technical-writer/content/seo-tools@FD-8LQ_g2_O_i2Qwp-Gpv.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/102-tooling/107-seo-tools.md rename to src/data/roadmaps/technical-writer/content/seo-tools@FD-8LQ_g2_O_i2Qwp-Gpv.md diff --git a/src/data/roadmaps/technical-writer/content/107-seo/100-seo-keywords/101-short-tail-keywords.md b/src/data/roadmaps/technical-writer/content/short-tail-keywords@eAioe6b7w8pV2Dvawl_fw.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/107-seo/100-seo-keywords/101-short-tail-keywords.md rename to src/data/roadmaps/technical-writer/content/short-tail-keywords@eAioe6b7w8pV2Dvawl_fw.md diff --git a/src/data/roadmaps/technical-writer/content/103-best-practices/100-story-telling.md b/src/data/roadmaps/technical-writer/content/story-telling@27muFD1Ld1gF6hhIh22sG.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/103-best-practices/100-story-telling.md rename to src/data/roadmaps/technical-writer/content/story-telling@27muFD1Ld1gF6hhIh22sG.md diff --git a/src/data/roadmaps/technical-writer/content/103-best-practices/101-subtle-selling.md b/src/data/roadmaps/technical-writer/content/subtle-selling@lxSSjgtqJk-PtRp4hARDw.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/103-best-practices/101-subtle-selling.md rename to src/data/roadmaps/technical-writer/content/subtle-selling@lxSSjgtqJk-PtRp4hARDw.md diff --git a/src/data/roadmaps/technical-writer/content/104-content-research/104-request-evaluation.md b/src/data/roadmaps/technical-writer/content/support-request-evaluation@xFMsHYYxC0hLueY9xxART.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/104-content-research/104-request-evaluation.md rename to src/data/roadmaps/technical-writer/content/support-request-evaluation@xFMsHYYxC0hLueY9xxART.md diff --git a/src/data/roadmaps/technical-writer/content/106-marketing/index.md b/src/data/roadmaps/technical-writer/content/technical-content-marketing@mJ1s5-SGd_tj8y0LLZxYg.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/106-marketing/index.md rename to src/data/roadmaps/technical-writer/content/technical-content-marketing@mJ1s5-SGd_tj8y0LLZxYg.md diff --git a/src/data/roadmaps/technical-writer/content/112-web-copy.md b/src/data/roadmaps/technical-writer/content/technical-website-copy@tAFenZA0MFhMPE5cevNuD.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/112-web-copy.md rename to src/data/roadmaps/technical-writer/content/technical-website-copy@tAFenZA0MFhMPE5cevNuD.md diff --git a/src/data/roadmaps/technical-writer/content/101-required-skills/100-tech-expertise.md b/src/data/roadmaps/technical-writer/content/technology-expertise@DubLTESNn3wvEH_bKQZbP.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/101-required-skills/100-tech-expertise.md rename to src/data/roadmaps/technical-writer/content/technology-expertise@DubLTESNn3wvEH_bKQZbP.md diff --git a/src/data/roadmaps/technical-writer/content/102-tooling/index.md b/src/data/roadmaps/technical-writer/content/tooling@_5xFbl2BHx0f2u9HmSVS8.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/102-tooling/index.md rename to src/data/roadmaps/technical-writer/content/tooling@_5xFbl2BHx0f2u9HmSVS8.md diff --git a/src/data/roadmaps/technical-writer/content/108-top-funnel/index.md b/src/data/roadmaps/technical-writer/content/top-funnel-content@5dnZe0oCIzb5qGwgI6pwH.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/108-top-funnel/index.md rename to src/data/roadmaps/technical-writer/content/top-funnel-content@5dnZe0oCIzb5qGwgI6pwH.md diff --git a/src/data/roadmaps/technical-writer/content/104-content-research/100-topic-score.md b/src/data/roadmaps/technical-writer/content/topic-score@SX4vL_JEHrwqHdThyqKKO.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/104-content-research/100-topic-score.md rename to src/data/roadmaps/technical-writer/content/topic-score@SX4vL_JEHrwqHdThyqKKO.md diff --git a/src/data/roadmaps/technical-writer/content/105-types/105-help-content/100-troubleshooting.md b/src/data/roadmaps/technical-writer/content/troubleshooting@8fJcJi96Ige6z2PBuTquC.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/105-types/105-help-content/100-troubleshooting.md rename to src/data/roadmaps/technical-writer/content/troubleshooting@8fJcJi96Ige6z2PBuTquC.md diff --git a/src/data/roadmaps/technical-writer/content/110-bottom-funnel/101-tutorials.md b/src/data/roadmaps/technical-writer/content/tutorials@K459CcDrcPMJCimIcCzM6.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/110-bottom-funnel/101-tutorials.md rename to src/data/roadmaps/technical-writer/content/tutorials@K459CcDrcPMJCimIcCzM6.md diff --git a/src/data/roadmaps/technical-writer/content/105-types/index.md b/src/data/roadmaps/technical-writer/content/types-of-technical-content@xV8mox1WnSbl2jAGqQpeg.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/105-types/index.md rename to src/data/roadmaps/technical-writer/content/types-of-technical-content@xV8mox1WnSbl2jAGqQpeg.md diff --git a/src/data/roadmaps/technical-writer/content/105-types/103-developer-docs/100-user-goals.md b/src/data/roadmaps/technical-writer/content/user-goals@FgyBWRtE34VNqBt_5QhAf.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/105-types/103-developer-docs/100-user-goals.md rename to src/data/roadmaps/technical-writer/content/user-goals@FgyBWRtE34VNqBt_5QhAf.md diff --git a/src/data/roadmaps/technical-writer/content/103-best-practices/107-user-persona.md b/src/data/roadmaps/technical-writer/content/user-persona@UuV51vM2JT_LFFXORSwru.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/103-best-practices/107-user-persona.md rename to src/data/roadmaps/technical-writer/content/user-persona@UuV51vM2JT_LFFXORSwru.md diff --git a/src/data/roadmaps/technical-writer/content/100-introduction/101-what-technical-writing.md b/src/data/roadmaps/technical-writer/content/what-is-technical-writing@jl1FsQ5-WGKeFyaILNt_p.md similarity index 67% rename from src/data/roadmaps/technical-writer/content/100-introduction/101-what-technical-writing.md rename to src/data/roadmaps/technical-writer/content/what-is-technical-writing@jl1FsQ5-WGKeFyaILNt_p.md index ff0cd0a05..01a31476e 100644 --- a/src/data/roadmaps/technical-writer/content/100-introduction/101-what-technical-writing.md +++ b/src/data/roadmaps/technical-writer/content/what-is-technical-writing@jl1FsQ5-WGKeFyaILNt_p.md @@ -2,8 +2,8 @@ Technical writing involves explaining complex concepts in a simple, easy-to-understand language to a specific audience. This form of writing is commonly utilized in fields such as engineering, computer hardware and software, finance, consumer electronics, and biotechnology. -The primary objective of a technical writer is to simplify complicated information and present it in a clear and concise manner. Duties of a technical writer may include creating how-to guides, instruction manuals, FAQ pages, journal articles, and other technical content that can aid the user understanding. +The primary objective of a technical writer is to simplify complicated information and present it in a clear and concise manner. The duties of a technical writer may include creating how-to guides, instruction manuals, FAQ pages, journal articles, and other technical content that can aid the user's understanding. -Technical writing prioritizes clear and consistent communication, using straightforward language and maintaining a uniform writing style to prevent confusion.Technical writers often integrate visual aids and leverage documentation tools to achieve these objectives. +Technical writing prioritizes clear and consistent communication, using straightforward language and maintaining a uniform writing style to prevent confusion. Technical writers often integrate visual aids and leverage documentation tools to achieve these objectives. The ultimate goal is to enable the user to understand and navigate a new product or concept without difficulty. diff --git a/src/data/roadmaps/technical-writer/content/109-mid-funnel/101-white-papers.md b/src/data/roadmaps/technical-writer/content/white-papers@Xa7yBWcbP2aPs4u0C4cLJ.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/109-mid-funnel/101-white-papers.md rename to src/data/roadmaps/technical-writer/content/white-papers@Xa7yBWcbP2aPs4u0C4cLJ.md diff --git a/src/data/roadmaps/technical-writer/content/100-introduction/100-who-technical-writer.md b/src/data/roadmaps/technical-writer/content/who-is-a-technical-writer@ZRGsokU313Ky-anWbWK6q.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/100-introduction/100-who-technical-writer.md rename to src/data/roadmaps/technical-writer/content/who-is-a-technical-writer@ZRGsokU313Ky-anWbWK6q.md diff --git a/src/data/roadmaps/technical-writer/content/103-best-practices/108-writing-guide.md b/src/data/roadmaps/technical-writer/content/writing-style-guides@cnEVPsqZqs9ZdyqmOuLGA.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/103-best-practices/108-writing-guide.md rename to src/data/roadmaps/technical-writer/content/writing-style-guides@cnEVPsqZqs9ZdyqmOuLGA.md diff --git a/src/data/roadmaps/technical-writer/content/101-required-skills/102-written-communication.md b/src/data/roadmaps/technical-writer/content/written-communication-proficiency@7-3tqRUpntoQP4nK_nul5.md similarity index 100% rename from src/data/roadmaps/technical-writer/content/101-required-skills/102-written-communication.md rename to src/data/roadmaps/technical-writer/content/written-communication-proficiency@7-3tqRUpntoQP4nK_nul5.md diff --git a/src/data/roadmaps/technical-writer/migration-mapping.json b/src/data/roadmaps/technical-writer/migration-mapping.json new file mode 100644 index 000000000..f2431e5a9 --- /dev/null +++ b/src/data/roadmaps/technical-writer/migration-mapping.json @@ -0,0 +1,86 @@ +{ + "introduction": "HlUUGj3dOZ68t4gIjerXh", + "introduction:who-technical-writer": "ZRGsokU313Ky-anWbWK6q", + "introduction:what-technical-writing": "jl1FsQ5-WGKeFyaILNt_p", + "introduction:role": "j69erqfosSZMDlmKcnnn0", + "introduction:forms": "cNeT1dJDfgn0ndPzSxhSL", + "introduction:growth": "FVxNjbDBxgf6vkZWw1Awt", + "required-skills": "8rjUZ9NZPGwVRGmk6Dlyb", + "required-skills:tech-expertise": "DubLTESNn3wvEH_bKQZbP", + "required-skills:written-communication": "7-3tqRUpntoQP4nK_nul5", + "required-skills:lang-proficiency": "kNIiAJrvrNoOAllUbRtUB", + "tooling": "_5xFbl2BHx0f2u9HmSVS8", + "tooling:publishing": "jC3ZrpskBqzxiV6SKf4Uf", + "tooling:plagiarism": "cSZbTOB0FPPOlGzy-MkSi", + "tooling:editing": "Am_ocP3r0HM45LYfMcQxM", + "tooling:git-version-control": "ffJyulu9GPB_TDqjeJYyV", + "tooling:markdown": "TJ1iuzQ9u_WbrllRQkgm_", + "tooling:research-tools": "0XWiraeoicNBbaGYQnNZr", + "tooling:blogging-platforms": "sdoFe4A3y_-Zp3mlrJ5r8", + "tooling:seo-tools": "FD-8LQ_g2_O_i2Qwp-Gpv", + "best-practices": "yYLsG2LuPaNUuhXSVev_0", + "best-practices:story-telling": "27muFD1Ld1gF6hhIh22sG", + "best-practices:subtle-selling": "lxSSjgtqJk-PtRp4hARDw", + "best-practices:content-structure": "Ezz2e4lYLD_bdNNwvsV_y", + "best-practices:call-to-actions": "a1ChwDwztjZBi79y38AGa", + "best-practices:references": "8qSL2esjsA3YYuB4d7B9z", + "best-practices:great-titles": "WmOvQYlnedX0QgC5Adeen", + "best-practices:content-objectives": "7FGMPztd6ouvqemcGhIol", + "best-practices:user-persona": "UuV51vM2JT_LFFXORSwru", + "best-practices:writing-guide": "cnEVPsqZqs9ZdyqmOuLGA", + "content-research": "O-dZEkmU0tP3dUIUPM6YJ", + "content-research:topic-score": "SX4vL_JEHrwqHdThyqKKO", + "content-research:keyword-volume": "JtFLW5WwH5Ixmnb0qikia", + "content-research:forums": "QMehC1tmWPVWaTsiV9sFC", + "content-research:search-trends": "IZqyEqkrBoEfLBwIQwJl6", + "content-research:request-evaluation": "xFMsHYYxC0hLueY9xxART", + "types": "xV8mox1WnSbl2jAGqQpeg", + "types:product-content": "d9mTdwqx6QWKYO5PA_rDH", + "types:product-prose": "UFuMiHtWq1M8dS8547lOp", + "types:how-to-guides": "C-eVVtF6Yabp2a6XvMeh_", + "types:developer-docs": "e8oNoXw1KLY4jDzojIXyk", + "types:developer-docs:user-goals": "FgyBWRtE34VNqBt_5QhAf", + "types:developer-docs:developer-journey": "2pNW7wDGih_m73lhGZRg6", + "types:developer-docs:documentation-structure": "jYhfx6RETFgDulyNqdTBy", + "types:api-references": "z5_73Q7dWbBd4m_OrdZlH", + "types:api-references:doc-generation-tools": "iBBeZopD8SNo7sWTohMim", + "types:api-references:api-definition": "co-35BsWMrD6PXohpFqba", + "types:help-content": "e_bsYrZ0eQqduURg2ybX4", + "types:help-content:troubleshooting": "8fJcJi96Ige6z2PBuTquC", + "types:help-content:support-content": "7w1SjK-LV9SBZJ673eAUd", + "types:help-content:support-manual": "How-4Re1NhxPLDoshUM-G", + "marketing": "mJ1s5-SGd_tj8y0LLZxYg", + "marketing:icp-buyer-persona": "O1apL6I_g9DQl8VbL3X4W", + "marketing:buyer-journey": "EhhKxYPtoLztZXBXl3ZGl", + "seo": "-IBL9S4DelIi07w_fmrX3", + "seo:seo-keywords": "IA6TuXmOZr_-Y3HLHqxp0", + "seo:seo-keywords:long-tail-keywords": "2LAvq7W11WMIubSprlK_l", + "seo:seo-keywords:short-tail-keywords": "eAioe6b7w8pV2Dvawl_fw", + "seo:seo-keywords:backlinking": "UphVii3y4T_PkRMqFJ4r_", + "top-funnel": "5dnZe0oCIzb5qGwgI6pwH", + "top-funnel:pillar-content": "wBDjGa2PgdmeXxHnILFjY", + "top-funnel:awareness-blogs": "7S2lymeBZSMBZSsmei7us", + "top-funnel:research-reports": "HoNQSWy82ybT0YmejCzRb", + "mid-funnel": "Q2KD70IKwBXAH3UQgeZpp", + "mid-funnel:generic-gated": "XDX2QxMUkUok2fcS3tFki", + "mid-funnel:white-papers": "Xa7yBWcbP2aPs4u0C4cLJ", + "mid-funnel:ebook": "5zQpravkqwafvwXVOuNPX", + "bottom-funnel": "vo1udIIRpxNZCpA3g32F3", + "bottom-funnel:comparative-posts": "2wjRA_pQ9cCG9Ww994FEM", + "bottom-funnel:tutorials": "K459CcDrcPMJCimIcCzM6", + "release-notes": "-GZXLc9RjY6eWkKC1K_Rg", + "case-studies": "W44q1iEj7RKM55-9jabMJ", + "faqs": "pgrKfp1trcIxhDdvLk95g", + "web-copy": "tAFenZA0MFhMPE5cevNuD", + "content-optimization": "XyFEYDJvJpGZ7qSdoSZeI", + "content-analysis": "TbSBCITdLswhVB82fErTP", + "content-analysis:url-shorteners": "qpOfqbgLy5TzlNQEyt6DG", + "content-analysis:platform-tracking": "hlhBgI3SvU3tMtNaHtu8k", + "content-analysis:conversion-tracking": "UiXn-CnPcLWAflKJzaJ2a", + "content-analysis:content-aging": "JgdrXG7MX1gGuNG9uyubA", + "content-distribution": "mrqBxsNRl1CQEKtuYSy9F", + "content-distribution:canonical-link": "NIxIhMEOxrUR8nbjbF_Fp", + "content-distribution:opengraph-data": "AarJ887P-SFRnKaOOv9yw", + "content-distribution:content-distribution-channels": "m9-DqsQfeukmhjhIfCph-", + "content-distribution:amplification-strategies": "_cAGbAswDhOqpoiiikPbD" +} \ No newline at end of file diff --git a/src/data/roadmaps/technical-writer/technical-writer.json b/src/data/roadmaps/technical-writer/technical-writer.json index 6c72b9287..24c8007c1 100644 --- a/src/data/roadmaps/technical-writer/technical-writer.json +++ b/src/data/roadmaps/technical-writer/technical-writer.json @@ -1,5580 +1,4309 @@ { - "mockup": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Label", - "zOrder": "32", - "measuredW": "233", - "measuredH": "40", - "x": "686", - "y": "324", - "properties": { - "size": "32", - "text": "Technical Writer" - } - }, - { - "ID": "1", - "typeID": "__group__", - "zOrder": "33", - "measuredW": "373", - "measuredH": "151", - "w": "373", - "h": "151", - "x": "1069", - "y": "216", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "373", - "h": "151", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "333", - "measuredH": "26", - "x": "18", - "y": "19", - "properties": { - "text": "Find the detailed version of this roadmap", - "size": "18" - } - }, - { - "ID": "3", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "339", - "measuredH": "47", - "w": "339", - "h": "47", - "x": "18", - "y": "88", - "properties": { - "controlName": "ext_link:roadmap.sh" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "339", - "h": "47", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "borderColor": "4273622", - "color": "4273622" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "155", - "measuredH": "26", - "x": "92", - "y": "11", - "properties": { - "color": "16777215", - "text": "https://roadmap.sh", - "size": "18" - } - } - ] - } - } - }, - { - "ID": "5", - "typeID": "Label", - "zOrder": "3", - "measuredW": "337", - "measuredH": "26", - "x": "18", - "y": "48", - "properties": { - "size": "18", - "text": "Along with resources and more roadmaps" - } - } - ] - } - } - }, - { - "ID": "2", - "typeID": "Arrow", - "zOrder": "34", - "w": "1", - "h": "74", - "measuredW": "150", - "measuredH": "100", - "x": "805", - "y": "233", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.4438624012549725, - "y": -0.00008403832147459165 - }, - "p2": { - "x": 0, - "y": 74.15918378573792 - }, - "stroke": "dotted" - } - }, - { - "ID": "3", - "typeID": "Arrow", - "zOrder": "35", - "w": "1", - "h": "164", - "measuredW": "150", - "measuredH": "100", - "x": "805", - "y": "385", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.44386240125497245, - "y": -0.00008403832147459165 - }, - "p2": { - "x": 0, - "y": 164.11821056548797 - } - } - }, - { - "ID": "4", - "typeID": "__group__", - "zOrder": "36", - "measuredW": "394", - "measuredH": "198", - "w": "394", - "h": "198", - "x": "131", - "y": "211", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "394", - "h": "198", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "5", - "typeID": "Label", - "zOrder": "1", - "measuredW": "298", - "measuredH": "26", - "x": "26", - "y": "72", - "properties": { - "size": "18", - "text": "Original roadmap was contributed by" - } - }, - { - "ID": "7", - "typeID": "Label", - "zOrder": "2", - "measuredW": "239", - "measuredH": "26", - "x": "26", - "y": "102", - "properties": { - "size": "18", - "text": "Hackmamba. Check them out" - } - }, - { - "ID": "11", - "typeID": "Label", - "zOrder": "3", - "measuredW": "169", - "measuredH": "32", - "x": "26", - "y": "29", - "properties": { - "size": "24", - "text": "Special Thanks!" - } - }, - { - "ID": "16", - "typeID": "Label", - "zOrder": "5", - "measuredW": "13", - "measuredH": "26", - "x": "186", - "y": "144", - "properties": { - "size": "18", - "text": "+" - } - }, - { - "ID": "18", - "typeID": "__group__", - "zOrder": "4", - "measuredW": "149", - "measuredH": "26", - "w": "149", - "h": "26", - "x": "26", - "y": "144", - "properties": { - "controlName": "ext_link:discord.com/invite/MjbyDy3sPp" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Label", - "zOrder": "0", - "measuredW": "149", - "measuredH": "26", - "x": "0", - "y": "0", - "properties": { - "size": "18", - "color": "10027263", - "text": "Author Community" - } - } - ] - } - } - }, - { - "ID": "19", - "typeID": "__group__", - "zOrder": "6", - "measuredW": "37", - "measuredH": "26", - "w": "37", - "h": "26", - "x": "211", - "y": "144", - "properties": { - "controlName": "ext_link:bit.ly/hmb-roadmap" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Label", - "zOrder": "0", - "measuredW": "37", - "measuredH": "26", - "x": "0", - "y": "0", - "properties": { - "size": "18", - "color": "10027263", - "text": "Blog" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "5", - "typeID": "Arrow", - "zOrder": "37", - "w": "101", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "754", - "y": "203", - "properties": { - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "16777215", - "p0": { - "x": 100.57841492806233, - "y": 0.15918378573792324 - }, - "p1": { - "x": 0.4438624012549726, - "y": -0.00008403832147459165 - }, - "p2": { - "x": 0, - "y": 0.15918378573792324 - } - } - }, - { - "ID": "17", - "typeID": "Arrow", - "zOrder": "31", - "w": "197", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "893", - "y": "549", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 197, - "y": 0.15918378573792324 - }, - "p1": { - "x": 0.44386240125497245, - "y": -0.00008403832147459165 - }, - "p2": { - "x": 0.33333333333337123, - "y": 0.15918378573792324 - } - } - }, - { - "ID": "18", - "typeID": "Arrow", - "zOrder": "30", - "w": "179", - "h": "41", - "measuredW": "150", - "measuredH": "100", - "x": "893", - "y": "492", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 178.33333333333326, - "y": 0 - }, - "p1": { - "x": 0.432199336489445, - "y": 0.06731985877495898 - }, - "p2": { - "x": -0.33333333333337123, - "y": 41.33333333333337 - } - } - }, - { - "ID": "23", - "typeID": "Arrow", - "zOrder": "29", - "w": "197", - "h": "44", - "measuredW": "150", - "measuredH": "100", - "x": "877", - "y": "560", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 197, - "y": 44 - }, - "p1": { - "x": 0.385595616057061, - "y": -0.06267124777106091 - }, - "p2": { - "x": -0.33333333333337123, - "y": 0 - } - } - }, - { - "ID": "24", - "typeID": "Arrow", - "zOrder": "28", - "w": "185", - "h": "91", - "measuredW": "150", - "measuredH": "100", - "x": "886", - "y": "568", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 185.66666666666674, - "y": 90.66666666666663 - }, - "p1": { - "x": 0.4409697204400978, - "y": -0.09308969384657384 - }, - "p2": { - "x": 0.33333333333337123, - "y": 0 - } - } - }, - { - "ID": "25", - "typeID": "Arrow", - "zOrder": "27", - "w": "203", - "h": "139", - "measuredW": "150", - "measuredH": "100", - "x": "870", - "y": "571", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 203, - "y": 139.15918378573792 - }, - "p1": { - "x": 0.46970354765406896, - "y": -0.08853392589678596 - }, - "p2": { - "x": 0, - "y": -0.33333333333337123 - } - } - }, - { - "ID": "26", - "typeID": "Arrow", - "zOrder": "26", - "w": "343", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "385", - "y": "544", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.3333333333333144, - "y": 0.1182105654879706 - }, - "p1": { - "x": 0.4438624012549724, - "y": -0.00008403832147459161 - }, - "p2": { - "x": 343, - "y": 0.1182105654879706 - } - } - }, - { - "ID": "35", - "typeID": "Arrow", - "zOrder": "25", - "w": "1", - "h": "102", - "measuredW": "150", - "measuredH": "100", - "x": "438", - "y": "549", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.44386240125497245, - "y": -0.00008403832147459164 - }, - "p2": { - "x": 0, - "y": 101.66666666666663 - } - } - }, - { - "ID": "36", - "typeID": "Arrow", - "zOrder": "24", - "w": "197", - "h": "273", - "measuredW": "150", - "measuredH": "100", - "x": "492", - "y": "556", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.4770168587300532, - "y": 0.3497935907107603 - }, - "p1": { - "x": 0.45139090210116345, - "y": 0.240051930372966 - }, - "p2": { - "x": 196.27393992498878, - "y": 273.7491556771331 - } - } - }, - { - "ID": "55", - "typeID": "Arrow", - "zOrder": "23", - "w": "153", - "h": "2", - "measuredW": "150", - "measuredH": "100", - "x": "752", - "y": "827", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 153.25555341197287, - "y": 2.1591837857379232 - }, - "p1": { - "x": 0.4438624012549722, - "y": -0.00008403832147459168 - }, - "p2": { - "x": 0.43844272611238466, - "y": -0.09793625369911751 - } - } - }, - { - "ID": "56", - "typeID": "Arrow", - "zOrder": "22", - "w": "141", - "h": "48", - "measuredW": "150", - "measuredH": "100", - "x": "757", - "y": "840", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 141.0922513485732, - "y": 47.79013128519841 - }, - "p1": { - "x": 0.465229974475796, - "y": -0.09080893239094005 - }, - "p2": { - "x": 0.21397743504553546, - "y": 0.03478419586701875 - } - } - }, - { - "ID": "57", - "typeID": "Arrow", - "zOrder": "21", - "w": "141", - "h": "104", - "measuredW": "150", - "measuredH": "100", - "x": "755", - "y": "844", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 140.70448399410657, - "y": 103.48431514686274 - }, - "p1": { - "x": 0.45465965663239166, - "y": -0.1224119480761179 - }, - "p2": { - "x": -0.17378991942109678, - "y": -0.3835647724330329 - } - } - }, - { - "ID": "58", - "typeID": "Arrow", - "zOrder": "20", - "w": "152", - "h": "148", - "measuredW": "150", - "measuredH": "100", - "x": "742", - "y": "847", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 151.25555341197287, - "y": 148.15918378573792 - }, - "p1": { - "x": 0.5165314170597166, - "y": -0.09588196304248396 - }, - "p2": { - "x": -0.30651036898723305, - "y": 0.1980862592668018 - } - } - }, - { - "ID": "59", - "typeID": "Arrow", - "zOrder": "19", - "w": "243", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "418", - "y": "843", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.45622887026638637, - "y": 0.1182105654879706 - }, - "p1": { - "x": 0.4438624012549724, - "y": -0.00008403832147459165 - }, - "p2": { - "x": 243, - "y": 0.1182105654879706 - } - } - }, - { - "ID": "80", - "typeID": "Arrow", - "zOrder": "18", - "w": "1", - "h": "102", - "measuredW": "150", - "measuredH": "100", - "x": "436", - "y": "857", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.44386240125497245, - "y": -0.00008403832147459164 - }, - "p2": { - "x": 0, - "y": 101.66666666666663 - } - } - }, - { - "ID": "83", - "typeID": "Arrow", - "zOrder": "17", - "w": "192", - "h": "231", - "measuredW": "150", - "measuredH": "100", - "x": "493", - "y": "864", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.15563946486474833, - "y": -0.04210049251582859 - }, - "p1": { - "x": 0.47980880097204776, - "y": 0.22821483522019922 - }, - "p2": { - "x": 192.54053178357572, - "y": 230.6971337571722 - } - } - }, - { - "ID": "94", - "typeID": "Arrow", - "zOrder": "16", - "w": "1", - "h": "94", - "measuredW": "150", - "measuredH": "100", - "x": "685", - "y": "1112", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.44386240125497256, - "y": -0.00008403832147459164 - }, - "p2": { - "x": 0, - "y": 93.79263495530108 - } - } - }, - { - "ID": "95", - "typeID": "Arrow", - "zOrder": "15", - "w": "206", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "822", - "y": "1115", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.45622887026638637, - "y": 0.1182105654879706 - }, - "p1": { - "x": 0.4438624012549724, - "y": -0.00008403832147459161 - }, - "p2": { - "x": 206.63588046362702, - "y": 0.1182105654879706 - } - } - }, - { - "ID": "113", - "typeID": "Arrow", - "zOrder": "14", - "w": "1", - "h": "413", - "measuredW": "150", - "measuredH": "100", - "x": "1028", - "y": "1115", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.45622887026638637, - "y": 0.1182105654879706 - }, - "p1": { - "x": 0.4438624012549725, - "y": -0.0000840383214745912 - }, - "p2": { - "x": 0.45622887026638637, - "y": 412.903112155657 - } - } - }, - { - "ID": "115", - "typeID": "Arrow", - "zOrder": "13", - "w": "1", - "h": "597", - "measuredW": "150", - "measuredH": "100", - "x": "1198", - "y": "1201", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.45622887026638637, - "y": 0.14892652607250056 - }, - "p1": { - "x": 0.4438624012549725, - "y": -0.00008403832147459049 - }, - "p2": { - "x": 0.45622887026638637, - "y": 597.1442809496389 - }, - "stroke": "dotted" - } - }, - { - "ID": "134", - "typeID": "Arrow", - "zOrder": "88", - "w": "546", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "483", - "y": "1527", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": -0.05733797084718617, - "y": 0.1182105654879706 - }, - "p1": { - "x": 0.44386240125497295, - "y": -0.00008403832147459167 - }, - "p2": { - "x": 545.635880463627, - "y": 0.1182105654879706 - } - } - }, - { - "ID": "141", - "typeID": "Arrow", - "zOrder": "12", - "w": "1", - "h": "94", - "measuredW": "150", - "measuredH": "100", - "x": "679", - "y": "1528", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.44386240125497256, - "y": -0.00008403832147459164 - }, - "p2": { - "x": 0, - "y": 93.79263495530108 - } - } - }, - { - "ID": "144", - "typeID": "Arrow", - "zOrder": "11", - "w": "1", - "h": "342", - "measuredW": "150", - "measuredH": "100", - "x": "483", - "y": "1527", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.45622887026638637, - "y": 0.1182105654879706 - }, - "p1": { - "x": 0.44386240125497245, - "y": -0.00008403832147459061 - }, - "p2": { - "x": 0.45622887026638637, - "y": 341.8874889982319 - } - } - }, - { - "ID": "153", - "typeID": "Arrow", - "zOrder": "10", - "w": "1", - "h": "94", - "measuredW": "150", - "measuredH": "100", - "x": "348", - "y": "1630", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.44386240125497256, - "y": -0.00008403832147459164 - }, - "p2": { - "x": 0, - "y": 93.79263495530108 - } - } - }, - { - "ID": "154", - "typeID": "Arrow", - "zOrder": "97", - "w": "595", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "484", - "y": "1868", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": -0.07323823086341008, - "y": 0.1182105654879706 - }, - "p1": { - "x": 0.4438624012549729, - "y": -0.00008403832147459167 - }, - "p2": { - "x": 595.2347689101184, - "y": 0.1182105654879706 - } - } - }, - { - "ID": "163", - "typeID": "Arrow", - "zOrder": "9", - "w": "1", - "h": "94", - "measuredW": "150", - "measuredH": "100", - "x": "635", - "y": "1866", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.44386240125497256, - "y": -0.00008403832147459164 - }, - "p2": { - "x": 0, - "y": 93.79263495530108 - } - } - }, - { - "ID": "164", - "typeID": "Arrow", - "zOrder": "102", - "w": "1", - "h": "94", - "measuredW": "150", - "measuredH": "100", - "x": "904", - "y": "1866", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.44386240125497256, - "y": -0.00008403832147459164 - }, - "p2": { - "x": 0, - "y": 93.79263495530108 - } - } - }, - { - "ID": "173", - "typeID": "Arrow", - "zOrder": "107", - "w": "1", - "h": "286", - "measuredW": "150", - "measuredH": "100", - "x": "1079", - "y": "1869", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.45622887026638637, - "y": 0.1182105654879706 - }, - "p1": { - "x": 0.44386240125497245, - "y": -0.000084038321474591 - }, - "p2": { - "x": 0.45622887026638637, - "y": 285.7247953882097 - } - } - }, - { - "ID": "180", - "typeID": "Arrow", - "zOrder": "8", - "w": "91", - "h": "21", - "measuredW": "150", - "measuredH": "100", - "x": "1135", - "y": "2132", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 90.25317568377159, - "y": -0.2073650446989177 - }, - "p1": { - "x": 0.4334710299451035, - "y": 0.05136689368017996 - }, - "p2": { - "x": -0.3430430958853776, - "y": 21.22689841539932 - } - } - }, - { - "ID": "181", - "typeID": "Arrow", - "zOrder": "7", - "w": "81", - "h": "24", - "measuredW": "150", - "measuredH": "100", - "x": "1138", - "y": "2165", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 80.5391873815147, - "y": 24.17642576285607 - }, - "p1": { - "x": 0.41992433795712447, - "y": -0.04224464060529518 - }, - "p2": { - "x": -0.3472491502639059, - "y": 0.2100741978847509 - } - } - }, - { - "ID": "182", - "typeID": "Arrow", - "zOrder": "6", - "w": "720", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "359", - "y": "2159", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.49527347457097903, - "y": 0.1182105654879706 - }, - "p1": { - "x": 0.44386240125497295, - "y": -0.00008403832147459174 - }, - "p2": { - "x": 720.2347689101184, - "y": 0.1182105654879706 - } - } - }, - { - "ID": "191", - "typeID": "Arrow", - "zOrder": "5", - "w": "1", - "h": "126", - "measuredW": "150", - "measuredH": "100", - "x": "359", - "y": "2031", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.45622887026638637, - "y": 0.1482951313259946 - }, - "p1": { - "x": 0.4438624012549725, - "y": -0.00008403832147459064 - }, - "p2": { - "x": 0.45622887026638637, - "y": 125.72479538820971 - } - } - }, - { - "ID": "192", - "typeID": "Arrow", - "zOrder": "4", - "w": "1", - "h": "240", - "measuredW": "150", - "measuredH": "100", - "x": "325", - "y": "2041", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.45622887026638637, - "y": 0.1482951313259946 - }, - "p1": { - "x": 0.44386240125497256, - "y": -0.00008403832147459012 - }, - "p2": { - "x": 0.45622887026638637, - "y": 240.29708959071513 - } - } - }, - { - "ID": "195", - "typeID": "Arrow", - "zOrder": "3", - "w": "981", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "354", - "y": "2286", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.49527347457097903, - "y": 0.1182105654879706 - }, - "p1": { - "x": 0.4438624012549731, - "y": -0.00008403832147459176 - }, - "p2": { - "x": 981.9329172763976, - "y": 0.1182105654879706 - } - } - }, - { - "ID": "198", - "typeID": "Arrow", - "zOrder": "2", - "w": "1", - "h": "94", - "measuredW": "150", - "measuredH": "100", - "x": "699", - "y": "2290", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.44386240125497256, - "y": -0.00008403832147459164 - }, - "p2": { - "x": 0, - "y": 93.79263495530108 - } - } - }, - { - "ID": "219", - "typeID": "Arrow", - "zOrder": "1", - "w": "1", - "h": "64", - "measuredW": "150", - "measuredH": "100", - "x": "989", - "y": "2300", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.44386240125497256, - "y": -0.00008403832147459164 - }, - "p2": { - "x": 0, - "y": 63.62539318625113 - } - } - }, - { - "ID": "220", - "typeID": "Arrow", - "zOrder": "126", - "w": "1", - "h": "315", - "measuredW": "150", - "measuredH": "100", - "x": "1337", - "y": "2287", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.45622887026638637, - "y": 0.1182105654879706 - }, - "p1": { - "x": 0.4438624012549726, - "y": -0.00008403832147459083 - }, - "p2": { - "x": 0.45622887026638637, - "y": 315.3515280152633 - } - } - }, - { - "ID": "221", - "typeID": "Arrow", - "zOrder": "127", - "w": "535", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "802", - "y": "2605", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.3381795006973789, - "y": 0.1182105654879706 - }, - "p1": { - "x": 0.4438624012549731, - "y": -0.00008403832147459174 - }, - "p2": { - "x": 534.9329172763976, - "y": 0.1182105654879706 - } - } - }, - { - "ID": "222", - "typeID": "Arrow", - "zOrder": "128", - "w": "1", - "h": "83", - "measuredW": "150", - "measuredH": "100", - "x": "800", - "y": "2605", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.45622887026638637, - "y": 0.1182105654879706 - }, - "p1": { - "x": 0.4438624012549725, - "y": -0.0000840383214745904 - }, - "p2": { - "x": 0.45622887026638637, - "y": 83 - } - } - }, - { - "ID": "223", - "typeID": "Arrow", - "zOrder": "0", - "w": "1", - "h": "64", - "measuredW": "150", - "measuredH": "100", - "x": "1168", - "y": "2294", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.44386240125497256, - "y": -0.00008403832147459164 - }, - "p2": { - "x": 0, - "y": 63.62539318625113 - } - } - }, - { - "ID": "224", - "typeID": "Label", - "zOrder": "129", - "measuredW": "187", - "measuredH": "36", - "x": "707", - "y": "2712", - "properties": { - "size": "28", - "text": "Keep Learning" - } - }, - { - "ID": "225", - "typeID": "Arrow", - "zOrder": "130", - "w": "1", - "h": "60", - "measuredW": "150", - "measuredH": "100", - "x": "800", - "y": "2768", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.45622887026638637, - "y": 0.1182105654879706 - }, - "p1": { - "x": 0.44386240125497267, - "y": -0.00008403832147458961 - }, - "p2": { - "x": 0.45622887026638637, - "y": 60.197181497624115 - }, - "stroke": "dotted" - } - }, - { - "ID": "226", - "typeID": "Arrow", - "zOrder": "131", - "w": "101", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "764", - "y": "2865", - "properties": { - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "color": "16777215", - "p0": { - "x": 100.57841492806233, - "y": 0.15918378573792324 - }, - "p1": { - "x": 0.4438624012549726, - "y": -0.00008403832147459165 - }, - "p2": { - "x": 0, - "y": 0.15918378573792324 - } - } - }, - { - "ID": "227", - "typeID": "__group__", - "zOrder": "38", - "measuredW": "204", - "measuredH": "50", - "w": "204", - "h": "50", - "x": "703", - "y": "523", - "properties": { - "controlName": "100-introduction" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "204", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "93", - "measuredH": "25", - "x": "60", - "y": "13", - "properties": { - "size": "17", - "text": "Introduction" - } - } - ] - } - } - }, - { - "ID": "228", - "typeID": "__group__", - "zOrder": "44", - "measuredW": "203", - "measuredH": "50", - "w": "203", - "h": "50", - "x": "312", - "y": "524", - "properties": { - "controlName": "101-required-skills" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "203", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "115", - "measuredH": "25", - "x": "44", - "y": "13", - "properties": { - "size": "17", - "text": "Required Skills" - } - } - ] - } - } - }, - { - "ID": "229", - "typeID": "__group__", - "zOrder": "48", - "measuredW": "172", - "measuredH": "50", - "w": "172", - "h": "50", - "x": "603", - "y": "814", - "properties": { - "controlName": "102-tooling" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "172", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "55", - "measuredH": "25", - "x": "58", - "y": "13", - "properties": { - "size": "17", - "text": "Tooling" - } - } - ] - } - } - }, - { - "ID": "230", - "typeID": "__group__", - "zOrder": "57", - "measuredW": "200", - "measuredH": "50", - "w": "200", - "h": "50", - "x": "312", - "y": "828", - "properties": { - "controlName": "103-best-practices" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "112", - "measuredH": "25", - "x": "44", - "y": "13", - "properties": { - "size": "17", - "text": "Best Practices" - } - } - ] - } - } - }, - { - "ID": "231", - "typeID": "__group__", - "zOrder": "67", - "measuredW": "261", - "measuredH": "50", - "w": "261", - "h": "50", - "x": "571", - "y": "1090", - "properties": { - "controlName": "104-content-research" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "261", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "141", - "measuredH": "25", - "x": "60", - "y": "13", - "properties": { - "size": "17", - "text": "Content Research" - } - } - ] - } - } - }, - { - "ID": "232", - "typeID": "__group__", - "zOrder": "73", - "measuredW": "261", - "measuredH": "50", - "w": "261", - "h": "50", - "x": "983", - "y": "1285", - "properties": { - "controlName": "105-types" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "261", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "208", - "measuredH": "25", - "x": "27", - "y": "13", - "properties": { - "size": "17", - "text": "Types of Technical Content" - } - } - ] - } - } - }, - { - "ID": "233", - "typeID": "__group__", - "zOrder": "89", - "measuredW": "296", - "measuredH": "50", - "w": "296", - "h": "50", - "x": "570", - "y": "1502", - "properties": { - "controlName": "106-marketing" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "296", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "221", - "measuredH": "25", - "x": "37", - "y": "13", - "properties": { - "size": "17", - "text": "Technical Content Marketing" - } - } - ] - } - } - }, - { - "ID": "234", - "typeID": "__group__", - "zOrder": "92", - "measuredW": "203", - "measuredH": "50", - "w": "203", - "h": "50", - "x": "310", - "y": "1700", - "properties": { - "controlName": "107-seo" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "203", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "100", - "measuredH": "25", - "x": "52", - "y": "12", - "properties": { - "size": "17", - "text": "Content SEO" - } - } - ] - } - } - }, - { - "ID": "235", - "typeID": "__group__", - "zOrder": "98", - "measuredW": "213", - "measuredH": "50", - "w": "213", - "h": "50", - "x": "529", - "y": "1845", - "properties": { - "controlName": "108-top-funnel" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "213", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "148", - "measuredH": "25", - "x": "33", - "y": "13", - "properties": { - "size": "17", - "text": "Top-funnel Content" - } - } - ] - } - } - }, - { - "ID": "236", - "typeID": "__group__", - "zOrder": "103", - "measuredW": "213", - "measuredH": "50", - "w": "213", - "h": "50", - "x": "798", - "y": "1845", - "properties": { - "controlName": "109-mid-funnel" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "213", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "148", - "measuredH": "25", - "x": "33", - "y": "13", - "properties": { - "size": "17", - "text": "Mid-funnel Content" - } - } - ] - } - } - }, - { - "ID": "238", - "typeID": "__group__", - "zOrder": "108", - "measuredW": "213", - "measuredH": "50", - "w": "213", - "h": "50", - "x": "939", - "y": "2134", - "properties": { - "controlName": "110-bottom-funnel" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "213", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "175", - "measuredH": "25", - "x": "18", - "y": "13", - "properties": { - "size": "17", - "text": "Bottom-funnel Content" - } - } - ] - } - } - }, - { - "ID": "239", - "typeID": "__group__", - "zOrder": "111", - "measuredW": "377", - "measuredH": "50", - "w": "377", - "h": "50", - "x": "462", - "y": "2135", - "properties": { - "controlName": "111-release-notes" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "377", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "342", - "measuredH": "25", - "x": "18", - "y": "13", - "properties": { - "size": "17", - "text": "Release Notes and Product Announcements" - } - } - ] - } - } - }, - { - "ID": "240", - "typeID": "__group__", - "zOrder": "112", - "measuredW": "246", - "measuredH": "50", - "w": "246", - "h": "50", - "x": "236", - "y": "2014", - "properties": { - "controlName": "112-web-copy" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "246", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "183", - "measuredH": "25", - "x": "31", - "y": "13", - "properties": { - "size": "17", - "text": "Technical Website Copy" - } - } - ] - } - } - }, - { - "ID": "241", - "typeID": "__group__", - "zOrder": "113", - "measuredW": "246", - "measuredH": "50", - "w": "246", - "h": "50", - "x": "236", - "y": "1960", - "properties": { - "controlName": "113-faqs" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "246", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "214", - "measuredH": "25", - "x": "16", - "y": "13", - "properties": { - "size": "17", - "text": "Frequently Asked Questions" - } - } - ] - } - } - }, - { - "ID": "242", - "typeID": "__group__", - "zOrder": "114", - "measuredW": "246", - "measuredH": "50", - "w": "246", - "h": "50", - "x": "236", - "y": "1906", - "properties": { - "controlName": "114-case-studies" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "246", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "183", - "measuredH": "25", - "x": "31", - "y": "13", - "properties": { - "size": "17", - "text": "Customer Case-Studies" - } - } - ] - } - } - }, - { - "ID": "243", - "typeID": "__group__", - "zOrder": "115", - "measuredW": "246", - "measuredH": "50", - "w": "246", - "h": "50", - "x": "245", - "y": "2262", - "properties": { - "controlName": "115-content-optimization" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "246", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "162", - "measuredH": "25", - "x": "42", - "y": "13", - "properties": { - "size": "17", - "text": "Content Optimization" - } - } - ] - } - } - }, - { - "ID": "244", - "typeID": "__group__", - "zOrder": "116", - "measuredW": "200", - "measuredH": "50", - "w": "200", - "h": "50", - "x": "600", - "y": "2262", - "properties": { - "controlName": "116-content-analysis" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "128", - "measuredH": "25", - "x": "36", - "y": "13", - "properties": { - "size": "17", - "text": "Content Analysis" - } - } - ] - } - } - }, - { - "ID": "245", - "typeID": "__group__", - "zOrder": "121", - "measuredW": "380", - "measuredH": "50", - "w": "380", - "h": "50", - "x": "905", - "y": "2263", - "properties": { - "controlName": "117-content-distribution" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "380", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "154", - "measuredH": "25", - "x": "113", - "y": "13", - "properties": { - "size": "17", - "text": "Content Distribution" - } - } - ] - } - } - }, - { - "ID": "246", - "typeID": "__group__", - "zOrder": "39", - "measuredW": "370", - "measuredH": "50", - "w": "370", - "h": "50", - "x": "1063", - "y": "469", - "properties": { - "controlName": "100-introduction:who-technical-writer" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "370", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "193", - "measuredH": "25", - "x": "88", - "y": "13", - "properties": { - "size": "17", - "text": "Who is a Technical Writer" - } - } - ] - } - } - }, - { - "ID": "247", - "typeID": "__group__", - "zOrder": "40", - "measuredW": "370", - "measuredH": "50", - "w": "370", - "h": "50", - "x": "1063", - "y": "523", - "properties": { - "controlName": "101-introduction:what-technical-writing" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "370", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "192", - "measuredH": "25", - "x": "89", - "y": "13", - "properties": { - "size": "17", - "text": "What is Technical Writing" - } - } - ] - } - } - }, - { - "ID": "248", - "typeID": "__group__", - "zOrder": "41", - "measuredW": "370", - "measuredH": "50", - "w": "370", - "h": "50", - "x": "1063", - "y": "577", - "properties": { - "controlName": "102-introduction:role" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "370", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "336", - "measuredH": "25", - "x": "17", - "y": "13", - "properties": { - "size": "17", - "text": "Role of Technical Writers in an Organization" - } - } - ] - } - } - }, - { - "ID": "249", - "typeID": "__group__", - "zOrder": "42", - "measuredW": "370", - "measuredH": "50", - "w": "370", - "h": "50", - "x": "1063", - "y": "631", - "properties": { - "controlName": "103-introduction:forms" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "370", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "203", - "measuredH": "25", - "x": "83", - "y": "13", - "properties": { - "size": "17", - "text": "Forms of Technical Writing" - } - } - ] - } - } - }, - { - "ID": "250", - "typeID": "__group__", - "zOrder": "43", - "measuredW": "370", - "measuredH": "50", - "w": "370", - "h": "50", - "x": "1063", - "y": "685", - "properties": { - "controlName": "104-introduction:growth" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "370", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "219", - "measuredH": "25", - "x": "83", - "y": "13", - "properties": { - "size": "17", - "text": "Growth as a Technical Writer" - } - } - ] - } - } - }, - { - "ID": "251", - "typeID": "__group__", - "zOrder": "45", - "measuredW": "308", - "measuredH": "50", - "w": "308", - "h": "50", - "x": "201", - "y": "632", - "properties": { - "controlName": "100-required-skills:tech-expertise" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "308", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "164", - "measuredH": "25", - "x": "72", - "y": "13", - "properties": { - "size": "17", - "text": "Technology Expertise" - } - } - ] - } - } - }, - { - "ID": "252", - "typeID": "__group__", - "zOrder": "46", - "measuredW": "308", - "measuredH": "50", - "w": "308", - "h": "50", - "x": "201", - "y": "685", - "properties": { - "controlName": "101-required-skills:lang-proficiency" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "308", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "166", - "measuredH": "25", - "x": "71", - "y": "13", - "properties": { - "size": "17", - "text": "Language Proficiency" - } - } - ] - } - } - }, - { - "ID": "253", - "typeID": "__group__", - "zOrder": "47", - "measuredW": "308", - "measuredH": "50", - "w": "308", - "h": "50", - "x": "201", - "y": "738", - "properties": { - "controlName": "102-required-skills:written-communication" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "308", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "269", - "measuredH": "25", - "x": "19", - "y": "13", - "properties": { - "size": "17", - "text": "Written Communication Proficiency" - } - } - ] - } - } - }, - { - "ID": "254", - "typeID": "__group__", - "zOrder": "49", - "measuredW": "180", - "measuredH": "50", - "w": "180", - "h": "50", - "x": "887", - "y": "805", - "properties": { - "controlName": "100-tooling:publishing" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "180", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "123", - "measuredH": "25", - "x": "28", - "y": "13", - "properties": { - "size": "17", - "text": "Publishing Tools" - } - } - ] - } - } - }, - { - "ID": "255", - "typeID": "__group__", - "zOrder": "53", - "measuredW": "190", - "measuredH": "50", - "w": "190", - "h": "50", - "x": "1073", - "y": "804", - "properties": { - "controlName": "101-tooling:plagiarism" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "190", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "150", - "measuredH": "25", - "x": "20", - "y": "13", - "properties": { - "size": "17", - "text": "Plagiarism Checker" - } - } - ] - } - } - }, - { - "ID": "256", - "typeID": "__group__", - "zOrder": "50", - "measuredW": "180", - "measuredH": "50", - "w": "180", - "h": "50", - "x": "887", - "y": "861", - "properties": { - "controlName": "102-tooling:editing" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "180", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "98", - "measuredH": "25", - "x": "41", - "y": "13", - "properties": { - "size": "17", - "text": "Editing Tools" - } - } - ] - } - } - }, - { - "ID": "257", - "typeID": "__group__", - "zOrder": "54", - "measuredW": "190", - "measuredH": "50", - "w": "190", - "h": "50", - "x": "1073", - "y": "858", - "properties": { - "controlName": "103-tooling:git-version-control" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "190", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "156", - "measuredH": "25", - "x": "17", - "y": "13", - "properties": { - "size": "17", - "text": "Git / Version Control" - } - } - ] - } - } - }, - { - "ID": "258", - "typeID": "__group__", - "zOrder": "51", - "measuredW": "180", - "measuredH": "50", - "w": "180", - "h": "50", - "x": "887", - "y": "915", - "properties": { - "controlName": "104-tooling:markdown" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "180", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "79", - "measuredH": "25", - "x": "50", - "y": "13", - "properties": { - "size": "17", - "text": "Markdown" - } - } - ] - } - } - }, - { - "ID": "259", - "typeID": "__group__", - "zOrder": "55", - "measuredW": "190", - "measuredH": "50", - "w": "190", - "h": "50", - "x": "1073", - "y": "912", - "properties": { - "controlName": "105-tooling:research-tools" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "190", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "119", - "measuredH": "25", - "x": "35", - "y": "13", - "properties": { - "size": "17", - "text": "Research Tools" - } - } - ] - } - } - }, - { - "ID": "260", - "typeID": "__group__", - "zOrder": "52", - "measuredW": "180", - "measuredH": "50", - "w": "180", - "h": "50", - "x": "887", - "y": "969", - "properties": { - "controlName": "106-tooling:blogging-platforms" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "180", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "145", - "measuredH": "25", - "x": "17", - "y": "13", - "properties": { - "size": "17", - "text": "Blogging Platforms" - } - } - ] - } - } - }, - { - "ID": "261", - "typeID": "__group__", - "zOrder": "56", - "measuredW": "190", - "measuredH": "50", - "w": "190", - "h": "50", - "x": "1073", - "y": "966", - "properties": { - "controlName": "107-tooling:seo-tools" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "190", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "79", - "measuredH": "25", - "x": "55", - "y": "13", - "properties": { - "size": "17", - "text": "SEO Tools" - } - } - ] - } - } - }, - { - "ID": "262", - "typeID": "__group__", - "zOrder": "58", - "measuredW": "285", - "measuredH": "50", - "w": "285", - "h": "50", - "x": "224", - "y": "926", - "properties": { - "controlName": "100-best-practices:story-telling" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "285", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "92", - "measuredH": "25", - "x": "98", - "y": "13", - "properties": { - "size": "17", - "text": "Story Telling" - } - } - ] - } - } - }, - { - "ID": "263", - "typeID": "__group__", - "zOrder": "59", - "measuredW": "285", - "measuredH": "50", - "w": "285", - "h": "50", - "x": "224", - "y": "979", - "properties": { - "controlName": "101-best-practices:subtle-selling" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "285", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "104", - "measuredH": "25", - "x": "92", - "y": "13", - "properties": { - "size": "17", - "text": "Subtle Selling" - } - } - ] - } - } - }, - { - "ID": "264", - "typeID": "__group__", - "zOrder": "60", - "measuredW": "285", - "measuredH": "50", - "w": "285", - "h": "50", - "x": "224", - "y": "1032", - "properties": { - "controlName": "102-best-practices:content-structure" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "285", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "241", - "measuredH": "25", - "x": "23", - "y": "13", - "properties": { - "size": "17", - "text": "Content Structure and Headers" - } - } - ] - } - } - }, - { - "ID": "265", - "typeID": "__group__", - "zOrder": "61", - "measuredW": "285", - "measuredH": "50", - "w": "285", - "h": "50", - "x": "224", - "y": "1086", - "properties": { - "controlName": "103-best-practices:call-to-actions" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "285", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "110", - "measuredH": "25", - "x": "89", - "y": "13", - "properties": { - "size": "17", - "text": "Call to Actions" - } - } - ] - } - } - }, - { - "ID": "266", - "typeID": "__group__", - "zOrder": "62", - "measuredW": "285", - "measuredH": "50", - "w": "285", - "h": "50", - "x": "224", - "y": "1139", - "properties": { - "controlName": "104-best-practices:references" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "285", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "90", - "measuredH": "25", - "x": "99", - "y": "13", - "properties": { - "size": "17", - "text": "References" - } - } - ] - } - } - }, - { - "ID": "267", - "typeID": "__group__", - "zOrder": "63", - "measuredW": "285", - "measuredH": "50", - "w": "285", - "h": "50", - "x": "224", - "y": "1192", - "properties": { - "controlName": "105-best-practices:great-titles" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "285", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "155", - "measuredH": "25", - "x": "66", - "y": "13", - "properties": { - "size": "17", - "text": "Crafting Great Titles" - } - } - ] - } - } - }, - { - "ID": "268", - "typeID": "__group__", - "zOrder": "64", - "measuredW": "285", - "measuredH": "50", - "w": "285", - "h": "50", - "x": "224", - "y": "1246", - "properties": { - "controlName": "106-best-practices:content-objectives" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "285", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "230", - "measuredH": "25", - "x": "29", - "y": "13", - "properties": { - "size": "17", - "text": "Content Objectives and Intent" - } - } - ] - } - } - }, - { - "ID": "269", - "typeID": "__group__", - "zOrder": "65", - "measuredW": "285", - "measuredH": "50", - "w": "285", - "h": "50", - "x": "224", - "y": "1299", - "properties": { - "controlName": "107-best-practices:user-persona" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "285", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "106", - "measuredH": "25", - "x": "91", - "y": "13", - "properties": { - "size": "17", - "text": "User Persona" - } - } - ] - } - } - }, - { - "ID": "270", - "typeID": "__group__", - "zOrder": "66", - "measuredW": "285", - "measuredH": "50", - "w": "285", - "h": "50", - "x": "224", - "y": "1353", - "properties": { - "controlName": "108-best-practices:writing-guide" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "285", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "155", - "measuredH": "25", - "x": "66", - "y": "13", - "properties": { - "size": "17", - "text": "Writing Style Guides" - } - } - ] - } - } - }, - { - "ID": "271", - "typeID": "__group__", - "zOrder": "68", - "measuredW": "265", - "measuredH": "50", - "w": "265", - "h": "50", - "x": "569", - "y": "1175", - "properties": { - "controlName": "100-content-research:topic-score" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "265", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "91", - "measuredH": "25", - "x": "87", - "y": "13", - "properties": { - "size": "17", - "text": "Topic Score" - } - } - ] - } - } - }, - { - "ID": "272", - "typeID": "__group__", - "zOrder": "69", - "measuredW": "265", - "measuredH": "50", - "w": "265", - "h": "50", - "x": "569", - "y": "1228", - "properties": { - "controlName": "101-content-research:keyword-volume" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "265", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "126", - "measuredH": "25", - "x": "70", - "y": "13", - "properties": { - "size": "17", - "text": "Keyword Volume" - } - } - ] - } - } - }, - { - "ID": "273", - "typeID": "__group__", - "zOrder": "70", - "measuredW": "265", - "measuredH": "50", - "w": "265", - "h": "50", - "x": "569", - "y": "1282", - "properties": { - "controlName": "102-content-research:forums" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "265", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "179", - "measuredH": "25", - "x": "43", - "y": "13", - "properties": { - "size": "17", - "text": "Communities & Forums" - } - } - ] - } - } - }, - { - "ID": "274", - "typeID": "__group__", - "zOrder": "71", - "measuredW": "265", - "measuredH": "50", - "w": "265", - "h": "50", - "x": "569", - "y": "1336", - "properties": { - "controlName": "103-content-research:search-trends" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "265", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "112", - "measuredH": "25", - "x": "77", - "y": "13", - "properties": { - "size": "17", - "text": "Search Trends" - } - } - ] - } - } - }, - { - "ID": "275", - "typeID": "__group__", - "zOrder": "72", - "measuredW": "265", - "measuredH": "50", - "w": "265", - "h": "50", - "x": "569", - "y": "1390", - "properties": { - "controlName": "104-content-research:request-evaluation" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "265", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "216", - "measuredH": "25", - "x": "25", - "y": "13", - "properties": { - "size": "17", - "text": "Support Request Evaluation" - } - } - ] - } - } - }, - { - "ID": "276", - "typeID": "__group__", - "zOrder": "74", - "measuredW": "265", - "measuredH": "50", - "w": "265", - "h": "50", - "x": "1138", - "y": "1070", - "properties": { - "controlName": "100-types:product-content" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "265", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "126", - "measuredH": "25", - "x": "70", - "y": "13", - "properties": { - "size": "17", - "text": "Product Content" - } - } - ] - } - } - }, - { - "ID": "277", - "typeID": "__group__", - "zOrder": "77", - "measuredW": "265", - "measuredH": "50", - "w": "265", - "h": "50", - "x": "1138", - "y": "1124", - "properties": { - "controlName": "101-types:product-prose" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "265", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "176", - "measuredH": "25", - "x": "45", - "y": "13", - "properties": { - "size": "17", - "text": "General Product Prose" - } - } - ] - } - } - }, - { - "ID": "278", - "typeID": "__group__", - "zOrder": "78", - "measuredW": "265", - "measuredH": "50", - "w": "265", - "h": "50", - "x": "1138", - "y": "1178", - "properties": { - "controlName": "102-types:how-to-guides" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "265", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "114", - "measuredH": "25", - "x": "76", - "y": "13", - "properties": { - "size": "17", - "text": "How-to Guides" - } - } - ] - } - } - }, - { - "ID": "279", - "typeID": "__group__", - "zOrder": "75", - "measuredW": "265", - "measuredH": "198", - "w": "265", - "h": "198", - "x": "1138", - "y": "1366", - "properties": { - "controlName": "103-types:developer-docs" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "265", - "h": "198", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "202", - "measuredH": "25", - "x": "32", - "y": "16", - "properties": { - "size": "17", - "text": "Developer Documentation" - } - } - ] - } - } - }, - { - "ID": "280", - "typeID": "__group__", - "zOrder": "76", - "measuredW": "265", - "measuredH": "144", - "w": "265", - "h": "144", - "x": "1138", - "y": "1591", - "properties": { - "controlName": "104-types:api-references" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "265", - "h": "144", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "113", - "measuredH": "25", - "x": "76", - "y": "15", - "properties": { - "size": "17", - "text": "API Reference" - } - } - ] - } - } - }, - { - "ID": "281", - "typeID": "__group__", - "zOrder": "84", - "measuredW": "265", - "measuredH": "198", - "w": "265", - "h": "198", - "x": "1138", - "y": "1770", - "properties": { - "controlName": "105-types:help-content" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "265", - "h": "198", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "103", - "measuredH": "25", - "x": "81", - "y": "16", - "properties": { - "size": "17", - "text": "Help Content" - } - } - ] - } - } - }, - { - "ID": "282", - "typeID": "__group__", - "zOrder": "79", - "measuredW": "265", - "measuredH": "50", - "w": "265", - "h": "50", - "x": "1138", - "y": "1421", - "properties": { - "controlName": "100-types:developer-docs:user-goals" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "265", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "86", - "measuredH": "25", - "x": "90", - "y": "13", - "properties": { - "size": "17", - "text": "User Goals" - } - } - ] - } - } - }, - { - "ID": "283", - "typeID": "__group__", - "zOrder": "80", - "measuredW": "265", - "measuredH": "50", - "w": "265", - "h": "50", - "x": "1138", - "y": "1468", - "properties": { - "controlName": "101-types:developer-docs:developer-journey" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "265", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "145", - "measuredH": "25", - "x": "60", - "y": "13", - "properties": { - "size": "17", - "text": "Developer Journey" - } - } - ] - } - } - }, - { - "ID": "284", - "typeID": "__group__", - "zOrder": "81", - "measuredW": "265", - "measuredH": "50", - "w": "265", - "h": "50", - "x": "1138", - "y": "1514", - "properties": { - "controlName": "102-types:developer-docs:documentation-structure" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "265", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "192", - "measuredH": "25", - "x": "37", - "y": "13", - "properties": { - "size": "17", - "text": "Documentation Structure" - } - } - ] - } - } - }, - { - "ID": "285", - "typeID": "__group__", - "zOrder": "82", - "measuredW": "265", - "measuredH": "50", - "w": "265", - "h": "50", - "x": "1138", - "y": "1643", - "properties": { - "controlName": "100-types:api-references:doc-generation-tools" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "265", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "215", - "measuredH": "25", - "x": "25", - "y": "13", - "properties": { - "size": "17", - "text": "Document Generation Tools" - } - } - ] - } - } - }, - { - "ID": "286", - "typeID": "__group__", - "zOrder": "83", - "measuredW": "265", - "measuredH": "50", - "w": "265", - "h": "50", - "x": "1138", - "y": "1690", - "properties": { - "controlName": "101-types:api-references:api-definition" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "265", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "112", - "measuredH": "25", - "x": "77", - "y": "13", - "properties": { - "size": "17", - "text": "API Definitions" - } - } - ] - } - } - }, - { - "ID": "287", - "typeID": "__group__", - "zOrder": "85", - "measuredW": "265", - "measuredH": "50", - "w": "265", - "h": "50", - "x": "1138", - "y": "1825", - "properties": { - "controlName": "100-types:help-content:troubleshooting" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "265", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "189", - "measuredH": "25", - "x": "38", - "y": "13", - "properties": { - "size": "17", - "text": "Troubleshooting Content" - } - } - ] - } - } - }, - { - "ID": "288", - "typeID": "__group__", - "zOrder": "86", - "measuredW": "265", - "measuredH": "50", - "w": "265", - "h": "50", - "x": "1138", - "y": "1872", - "properties": { - "controlName": "101-types:help-content:support-content" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "265", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "211", - "measuredH": "25", - "x": "27", - "y": "13", - "properties": { - "size": "17", - "text": "Developer Support Content" - } - } - ] - } - } - }, - { - "ID": "289", - "typeID": "__group__", - "zOrder": "87", - "measuredW": "265", - "measuredH": "50", - "w": "265", - "h": "50", - "x": "1138", - "y": "1918", - "properties": { - "controlName": "102-types:help-content:support-manual" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "265", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "190", - "measuredH": "25", - "x": "38", - "y": "13", - "properties": { - "size": "17", - "text": "Platform Support Manual" - } - } - ] - } - } - }, - { - "ID": "290", - "typeID": "__group__", - "zOrder": "90", - "measuredW": "298", - "measuredH": "50", - "w": "298", - "h": "50", - "x": "569", - "y": "1606", - "properties": { - "controlName": "100-marketing:icp-buyer-persona" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "298", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "179", - "measuredH": "25", - "x": "59", - "y": "13", - "properties": { - "size": "17", - "text": "ICP and Buyer Persona" - } - } - ] - } - } - }, - { - "ID": "291", - "typeID": "__group__", - "zOrder": "91", - "measuredW": "298", - "measuredH": "50", - "w": "298", - "h": "50", - "x": "569", - "y": "1659", - "properties": { - "controlName": "101-marketing:buyer-journey" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "298", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "265", - "measuredH": "25", - "x": "16", - "y": "13", - "properties": { - "size": "17", - "text": "Buyer Journey and Content Funnel" - } - } - ] - } - } - }, - { - "ID": "292", - "typeID": "__group__", - "zOrder": "93", - "measuredW": "200", - "measuredH": "191", - "w": "200", - "h": "191", - "x": "242", - "y": "1455", - "properties": { - "controlName": "100-seo:seo-keywords" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "h": "191", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "113", - "measuredH": "25", - "x": "43", - "y": "150", - "properties": { - "size": "17", - "text": "SEO Keywords" - } - } - ] - } - } - }, - { - "ID": "293", - "typeID": "__group__", - "zOrder": "94", - "measuredW": "200", - "measuredH": "50", - "w": "200", - "h": "50", - "x": "242", - "y": "1544", - "properties": { - "controlName": "100-seo:seo-keywords:long-tail-keywords" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "147", - "measuredH": "25", - "x": "26", - "y": "13", - "properties": { - "size": "17", - "text": "Long-Tail Keywords" - } - } - ] - } - } - }, - { - "ID": "294", - "typeID": "__group__", - "zOrder": "95", - "measuredW": "200", - "measuredH": "50", - "w": "200", - "h": "50", - "x": "242", - "y": "1500", - "properties": { - "controlName": "101-seo:seo-keywords:short-tail-keywords" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "148", - "measuredH": "25", - "x": "26", - "y": "13", - "properties": { - "size": "17", - "text": "Short-tail Keywords" - } - } - ] - } - } - }, - { - "ID": "295", - "typeID": "__group__", - "zOrder": "96", - "measuredW": "200", - "measuredH": "50", - "w": "200", - "h": "50", - "x": "242", - "y": "1453", - "properties": { - "controlName": "102-seo:seo-keywords:backlinking" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "88", - "measuredH": "25", - "x": "56", - "y": "13", - "properties": { - "size": "17", - "text": "Backlinking" - } - } - ] - } - } - }, - { - "ID": "296", - "typeID": "__group__", - "zOrder": "99", - "measuredW": "214", - "measuredH": "50", - "w": "214", - "h": "50", - "x": "529", - "y": "1923", - "properties": { - "controlName": "100-top-funnel:pillar-content" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "214", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "104", - "measuredH": "25", - "x": "55", - "y": "13", - "properties": { - "size": "17", - "text": "Pillar Content" - } - } - ] - } - } - }, - { - "ID": "297", - "typeID": "__group__", - "zOrder": "100", - "measuredW": "214", - "measuredH": "50", - "w": "214", - "h": "50", - "x": "529", - "y": "1975", - "properties": { - "controlName": "101-top-funnel:awareness-blogs" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "214", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "170", - "measuredH": "25", - "x": "22", - "y": "13", - "properties": { - "size": "17", - "text": "Awareness Blog Posts" - } - } - ] - } - } - }, - { - "ID": "298", - "typeID": "__group__", - "zOrder": "101", - "measuredW": "214", - "measuredH": "50", - "w": "214", - "h": "50", - "x": "529", - "y": "2028", - "properties": { - "controlName": "102-top-funnel:research-reports" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "214", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "141", - "measuredH": "25", - "x": "36", - "y": "13", - "properties": { - "size": "17", - "text": "Research Reports" - } - } - ] - } - } - }, - { - "ID": "299", - "typeID": "__group__", - "zOrder": "104", - "measuredW": "214", - "measuredH": "50", - "w": "214", - "h": "50", - "x": "798", - "y": "1923", - "properties": { - "controlName": "100-mid-funnel:generic-gated" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "214", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "180", - "measuredH": "25", - "x": "17", - "y": "13", - "properties": { - "size": "17", - "text": "Generic Gated Content" - } - } - ] - } - } - }, - { - "ID": "300", - "typeID": "__group__", - "zOrder": "105", - "measuredW": "214", - "measuredH": "50", - "w": "214", - "h": "50", - "x": "798", - "y": "1977", - "properties": { - "controlName": "101-mid-funnel:white-papers" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "214", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "104", - "measuredH": "25", - "x": "55", - "y": "13", - "properties": { - "size": "17", - "text": "White-papers" - } - } - ] - } - } - }, - { - "ID": "301", - "typeID": "__group__", - "zOrder": "106", - "measuredW": "214", - "measuredH": "50", - "w": "214", - "h": "50", - "x": "798", - "y": "2030", - "properties": { - "controlName": "102-mid-funnel:ebook" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "214", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "57", - "measuredH": "25", - "x": "78", - "y": "13", - "properties": { - "size": "17", - "text": "E-Book" - } - } - ] - } - } - }, - { - "ID": "302", - "typeID": "__group__", - "zOrder": "109", - "measuredW": "190", - "measuredH": "50", - "w": "190", - "h": "50", - "x": "1210", - "y": "2107", - "properties": { - "controlName": "100-bottom-funnel:comparative-posts" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "190", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "144", - "measuredH": "25", - "x": "23", - "y": "13", - "properties": { - "size": "17", - "text": "Comparative Posts" - } - } - ] - } - } - }, - { - "ID": "303", - "typeID": "__group__", - "zOrder": "110", - "measuredW": "190", - "measuredH": "50", - "w": "190", - "h": "50", - "x": "1210", - "y": "2160", - "properties": { - "controlName": "101-bottom-funnel:tutorials" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "190", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "66", - "measuredH": "25", - "x": "62", - "y": "13", - "properties": { - "size": "17", - "text": "Tutorials" - } - } - ] - } - } - }, - { - "ID": "304", - "typeID": "__group__", - "zOrder": "117", - "measuredW": "276", - "measuredH": "50", - "w": "276", - "h": "50", - "x": "562", - "y": "2342", - "properties": { - "controlName": "100-content-analysis:url-shorteners" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "276", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "225", - "measuredH": "25", - "x": "25", - "y": "13", - "properties": { - "size": "17", - "text": "Link Shorteners and Tracking" - } - } - ] - } - } - }, - { - "ID": "305", - "typeID": "__group__", - "zOrder": "118", - "measuredW": "276", - "measuredH": "50", - "w": "276", - "h": "50", - "x": "562", - "y": "2395", - "properties": { - "controlName": "101-content-analysis:platform-tracking" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "276", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "229", - "measuredH": "25", - "x": "23", - "y": "13", - "properties": { - "size": "17", - "text": "Platform Tracking and Metrics" - } - } - ] - } - } - }, - { - "ID": "306", - "typeID": "__group__", - "zOrder": "119", - "measuredW": "276", - "measuredH": "50", - "w": "276", - "h": "50", - "x": "562", - "y": "2447", - "properties": { - "controlName": "102-content-analysis:conversion-tracking" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "276", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "157", - "measuredH": "25", - "x": "59", - "y": "13", - "properties": { - "size": "17", - "text": "Conversion Tracking" - } - } - ] - } - } - }, - { - "ID": "307", - "typeID": "__group__", - "zOrder": "120", - "measuredW": "276", - "measuredH": "50", - "w": "276", - "h": "50", - "x": "562", - "y": "2500", - "properties": { - "controlName": "103-content-analysis:content-aging" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "276", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "225", - "measuredH": "25", - "x": "25", - "y": "13", - "properties": { - "size": "17", - "text": "Content Aging and Timelines" - } - } - ] - } - } - }, - { - "ID": "308", - "typeID": "__group__", - "zOrder": "122", - "measuredW": "161", - "measuredH": "50", - "w": "161", - "h": "50", - "x": "905", - "y": "2343", - "properties": { - "controlName": "100-content-distribution:canonical-link" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "161", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "114", - "measuredH": "25", - "x": "28", - "y": "13", - "properties": { - "size": "17", - "text": "Canonical Link" - } - } - ] - } - } - }, - { - "ID": "309", - "typeID": "__group__", - "zOrder": "123", - "measuredW": "215", - "measuredH": "50", - "w": "215", - "h": "50", - "x": "1069", - "y": "2344", - "properties": { - "controlName": "101-content-distribution:opengraph-data" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "215", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "131", - "measuredH": "25", - "x": "34", - "y": "13", - "properties": { - "size": "17", - "text": "OpenGraph Data" - } - } - ] - } - } - }, - { - "ID": "310", - "typeID": "__group__", - "zOrder": "124", - "measuredW": "379", - "measuredH": "50", - "w": "379", - "h": "50", - "x": "905", - "y": "2398", - "properties": { - "controlName": "102-content-distribution:content-distribution-channels" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "379", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "231", - "measuredH": "25", - "x": "74", - "y": "13", - "properties": { - "size": "17", - "text": "Content Distribution Channels" - } - } - ] - } - } - }, - { - "ID": "311", - "typeID": "__group__", - "zOrder": "125", - "measuredW": "379", - "measuredH": "50", - "w": "379", - "h": "50", - "x": "905", - "y": "2452", - "properties": { - "controlName": "103-content-distribution:amplification-strategies" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "379", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "339", - "measuredH": "25", - "x": "20", - "y": "13", - "properties": { - "size": "17", - "text": "Content Distribution Amplification Strategies" - } - } - ] - } - } + "nodes": [ + { + "id": "C1UYq0kwAatvnq8ondEGr", + "type": "horizontal", + "position": { + "x": 673.405148207419, + "y": 1896.6749108232366 + }, + "selected": false, + "data": { + "label": "horizontal node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75 + } + }, + "zIndex": 999, + "width": 207, + "height": 20, + "style": { + "width": 207, + "height": 20 + }, + "positionAbsolute": { + "x": 673.405148207419, + "y": 1896.6749108232366 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "Tea_v904u6tNFuMBzkVft", + "type": "section", + "position": { + "x": 880.405148207419, + "y": 1733.1749108232366 + }, + "width": 384, + "height": 224, + "style": { + "width": 384, + "height": 224 + }, + "selected": false, + "data": { + "style": { + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "positionAbsolute": { + "x": 880.405148207419, + "y": 1733.1749108232366 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "BRSq7FKGqrbjRR0NKEw9C", + "type": "vertical", + "position": { + "x": 1147.1877382711257, + "y": 1537.2977449847244 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.5 + } + }, + "zIndex": 999, + "width": 20, + "height": 196, + "style": { + "width": 20, + "height": 196 + }, + "positionAbsolute": { + "x": 1147.1877382711257, + "y": 1537.2977449847244 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "emeziC4p96dk2ZdBnUGqj", + "type": "vertical", + "position": { + "x": 1101.9620919533354, + "y": 1447.2977449847244 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 90, + "style": { + "width": 20, + "height": 90 + }, + "positionAbsolute": { + "x": 1101.9620919533354, + "y": 1447.2977449847244 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "V-W_mPzOTLkdzaeU9jDtu", + "type": "vertical", + "position": { + "x": 1207.1877382711257, + "y": 1447.2977449847244 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "emeziC4p96dk2ZdBnUGqj" + }, + "zIndex": 999, + "width": 20, + "height": 90, + "style": { + "width": 20, + "height": 90 + }, + "positionAbsolute": { + "x": 1207.1877382711257, + "y": 1447.2977449847244 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "5OchPaFXMYtz9WvMOpOK8", + "type": "vertical", + "position": { + "x": 424.1877382711257, + "y": 1376.732278071367 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "5AnsmwOaq25Z8FY3BRGm-" + }, + "zIndex": 999, + "width": 20, + "height": 153, + "style": { + "width": 20, + "height": 153 + }, + "positionAbsolute": { + "x": 424.1877382711257, + "y": 1376.732278071367 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "5AnsmwOaq25Z8FY3BRGm-", + "type": "vertical", + "position": { + "x": 285.6877382711257, + "y": 1448.732278071367 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + }, + "oldId": "PSSovQ00thrVrRJCz2SYB" + }, + "zIndex": 999, + "width": 20, + "height": 81, + "style": { + "width": 20, + "height": 81 + }, + "positionAbsolute": { + "x": 285.6877382711257, + "y": 1448.732278071367 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "PSSovQ00thrVrRJCz2SYB", + "type": "vertical", + "position": { + "x": 354.6877382711257, + "y": 1159.732278071367 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 91, + "style": { + "width": 20, + "height": 91 + }, + "positionAbsolute": { + "x": 354.6877382711257, + "y": 1159.732278071367 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "8bAy2PKLRM8fm-2oDrQQ_", + "type": "vertical", + "position": { + "x": 723.5409442883595, + "y": 1114.848933004529 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 54, + "style": { + "width": 20, + "height": 54 + }, + "positionAbsolute": { + "x": 723.5409442883595, + "y": 1114.848933004529 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "dqJMYRZ0lm1Iw-MavHli-", + "type": "section", + "position": { + "x": 626.1877382711257, + "y": 1168.848933004529 + }, + "selected": false, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "zIndex": -999, + "width": 633, + "height": 233, + "style": { + "width": 633, + "height": 233 + }, + "positionAbsolute": { + "x": 626.1877382711257, + "y": 1168.848933004529 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "5Z9o-b3vBA-ITFg86zzYM", + "type": "title", + "position": { + "x": 556.8760409943199, + "y": 166.2553633125035 + }, + "selected": false, + "data": { + "label": "Technical Writer", + "style": { + "fontSize": 28, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 245, + "height": 68, + "style": {}, + "positionAbsolute": { + "x": 556.8760409943199, + "y": 166.2553633125035 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "XgM_I974PlXAu4AbeqHX1", + "type": "vertical", + "position": { + "x": 668.8760409943199, + "y": 93.2553633125035 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2B78E4" + } + }, + "zIndex": 999, + "width": 20, + "height": 73, + "style": { + "width": 20, + "height": 73 + }, + "resizing": false, + "positionAbsolute": { + "x": 668.8760409943199, + "y": 93.2553633125035 + }, + "dragging": false, + "focusable": true, + "selectable": true + }, + { + "id": "yHmHXymPNWwu8p1vvqD3o", + "type": "paragraph", + "position": { + "x": 909.4971847919508, + "y": 83.84893300452893 + }, + "selected": false, + "data": { + "label": "Find the detailed version of this roadmap along with other similar roadmaps", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "left", + "borderColor": "#000000", + "backgroundColor": "#FFFFFf" + } + }, + "zIndex": 999, + "width": 353, + "height": 142, + "positionAbsolute": { + "x": 909.4971847919508, + "y": 83.84893300452893 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 353, + "height": 142 + }, + "resizing": false + }, + { + "id": "2zqZkyVgigifcRS1H7F_b", + "type": "button", + "position": { + "x": 921.7005592047509, + "y": 165.8344964222742 + }, + "selected": false, + "data": { + "label": "roadmap.sh", + "href": "https://roadmap.sh", + "color": "#ffffff", + "backgroundColor": "#4136D6", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 329, + "height": 49, + "dragging": false, + "style": { + "width": 329, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": 921.7005592047509, + "y": 165.8344964222742 + }, + "selectable": true, + "focusable": true + }, + { + "id": "HlUUGj3dOZ68t4gIjerXh", + "type": "topic", + "position": { + "x": 582.8760409943199, + "y": 374.48940199488766 + }, + "selected": false, + "data": { + "label": "Introduction", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 192, + "height": 49, + "positionAbsolute": { + "x": 582.8760409943199, + "y": 374.48940199488766 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "style": { + "width": 192, + "height": 49 + }, + "resizing": false + }, + { + "id": "ZRGsokU313Ky-anWbWK6q", + "type": "subtopic", + "position": { + "x": 901.4340503630634, + "y": 267.71103642623416 + }, + "selected": false, + "data": { + "label": "Who is a Technical Writer?", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 364, + "height": 49, + "positionAbsolute": { + "x": 901.4340503630634, + "y": 267.71103642623416 + }, + "selectable": true, + "focusable": true, + "style": { + "width": 364, + "height": 49 + }, + "dragging": false, + "resizing": false + }, + { + "id": "jl1FsQ5-WGKeFyaILNt_p", + "type": "subtopic", + "position": { + "x": 901.4340503630634, + "y": 320.71103642623416 + }, + "selected": false, + "data": { + "label": "What is Technical Writing?", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 364, + "height": 49, + "dragging": false, + "positionAbsolute": { + "x": 901.4340503630634, + "y": 320.71103642623416 + }, + "selectable": true, + "focusable": true, + "style": { + "width": 364, + "height": 49 + }, + "resizing": false + }, + { + "id": "j69erqfosSZMDlmKcnnn0", + "type": "subtopic", + "position": { + "x": 901.4340503630634, + "y": 373.71103642623416 + }, + "selected": false, + "data": { + "label": "Role of Technical Writers inOrganizations", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 364, + "height": 49, + "positionAbsolute": { + "x": 901.4340503630634, + "y": 373.71103642623416 + }, + "selectable": true, + "focusable": true, + "style": { + "width": 364, + "height": 49 + }, + "dragging": false, + "resizing": false + }, + { + "id": "cNeT1dJDfgn0ndPzSxhSL", + "type": "subtopic", + "position": { + "x": 901.4340503630634, + "y": 426.71103642623416 + }, + "selected": false, + "data": { + "label": "Forms of Technical Writing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 364, + "height": 49, + "positionAbsolute": { + "x": 901.4340503630634, + "y": 426.71103642623416 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "style": { + "width": 364, + "height": 49 + }, + "resizing": false + }, + { + "id": "FVxNjbDBxgf6vkZWw1Awt", + "type": "subtopic", + "position": { + "x": 901.4340503630634, + "y": 479.71103642623416 + }, + "selected": false, + "data": { + "label": "Growth as a Technical Writer", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 364, + "height": 49, + "positionAbsolute": { + "x": 901.4340503630634, + "y": 479.71103642623416 + }, + "selectable": true, + "focusable": true, + "style": { + "width": 364, + "height": 49 + }, + "resizing": true, + "dragging": false + }, + { + "id": "Ju00mr0KLGN2BV6yEQGPt", + "type": "vertical", + "position": { + "x": 683.2670925742796, + "y": 2239.519385286052 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#4136D4" + } + }, + "zIndex": 999, + "width": 20, + "height": 50, + "positionAbsolute": { + "x": 683.2670925742796, + "y": 2239.519385286052 + }, + "dragging": false, + "style": { + "width": 20, + "height": 50 + }, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "id": "8rjUZ9NZPGwVRGmk6Dlyb", + "type": "topic", + "position": { + "x": 285.1877382711257, + "y": 465.3759397202738 + }, + "selected": false, + "data": { + "label": "Required Skills", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "O-dZEkmU0tP3dUIUPM6YJ" + }, + "zIndex": 999, + "width": 159, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 285.1877382711257, + "y": 465.3759397202738 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "DubLTESNn3wvEH_bKQZbP", + "type": "subtopic", + "position": { + "x": 207.18773827112568, + "y": 255.69725318942244 + }, + "selected": false, + "data": { + "label": "Technology Expertise", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 315, + "height": 49, + "style": { + "width": 315, + "height": 49 + }, + "positionAbsolute": { + "x": 207.18773827112568, + "y": 255.69725318942244 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "kNIiAJrvrNoOAllUbRtUB", + "type": "subtopic", + "position": { + "x": 207.18773827112568, + "y": 308.69725318942244 + }, + "selected": false, + "data": { + "label": "Language Proficiency", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 315, + "height": 49, + "style": { + "width": 315, + "height": 49 + }, + "positionAbsolute": { + "x": 207.18773827112568, + "y": 308.69725318942244 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "7-3tqRUpntoQP4nK_nul5", + "type": "subtopic", + "position": { + "x": 207.18773827112568, + "y": 361.69725318942244 + }, + "selected": false, + "data": { + "label": "Written Communication Proficiency", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 315, + "height": 49, + "style": { + "width": 315, + "height": 49 + }, + "positionAbsolute": { + "x": 207.18773827112568, + "y": 361.69725318942244 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "_5xFbl2BHx0f2u9HmSVS8", + "type": "topic", + "position": { + "x": 582.8760409943199, + "y": 612.9709677559136 + }, + "selected": false, + "data": { + "label": "Tooling", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "O-dZEkmU0tP3dUIUPM6YJ" + }, + "zIndex": 999, + "width": 192, + "height": 49, + "style": { + "width": 192, + "height": 49 + }, + "positionAbsolute": { + "x": 582.8760409943199, + "y": 612.9709677559136 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "jC3ZrpskBqzxiV6SKf4Uf", + "type": "subtopic", + "position": { + "x": 901.9620919533353, + "y": 564.9266408696443 + }, + "selected": false, + "data": { + "label": "Publishing Tools", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 200, + "height": 49, + "style": { + "width": 200, + "height": 49 + }, + "positionAbsolute": { + "x": 901.9620919533353, + "y": 564.9266408696443 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "cSZbTOB0FPPOlGzy-MkSi", + "type": "subtopic", + "position": { + "x": 901.9620919533354, + "y": 617.9266408696443 + }, + "selected": false, + "data": { + "label": "Plagiarism Checker", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" } - ] - }, - "attributes": { - "name": "New Wireframe 1 copy", - "order": 1000009.1336392317, - "parentID": null, - "notes": "" - }, - "branchID": "Master", - "resourceID": "E62F7257-0C11-4024-8C48-67BDED6B975E", - "mockupH": "2663", - "mockupW": "1311", - "measuredW": "1442", - "measuredH": "2866", - "version": "1.0" - }, - "groupOffset": { - "x": 0, - "y": 0 - }, - "dependencies": [], - "projectID": "file:///Users/kamrify/Desktop/New%20Roadmaps/Android%20Roadmap.bmpr" + }, + "zIndex": 999, + "width": 201, + "height": 49, + "style": { + "width": 201, + "height": 49 + }, + "positionAbsolute": { + "x": 901.9620919533354, + "y": 617.9266408696443 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "Am_ocP3r0HM45LYfMcQxM", + "type": "subtopic", + "position": { + "x": 1106.9620919533354, + "y": 617.9266408696443 + }, + "selected": false, + "data": { + "label": "Editing Tools", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 153, + "height": 49, + "style": { + "width": 153, + "height": 49 + }, + "positionAbsolute": { + "x": 1106.9620919533354, + "y": 617.9266408696443 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "ffJyulu9GPB_TDqjeJYyV", + "type": "subtopic", + "position": { + "x": 901.4340503630634, + "y": 670.9266408696443 + }, + "selected": false, + "data": { + "label": "Git / Version Control", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 202, + "height": 49, + "style": { + "width": 202, + "height": 49 + }, + "positionAbsolute": { + "x": 901.4340503630634, + "y": 670.9266408696443 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "TJ1iuzQ9u_WbrllRQkgm_", + "type": "subtopic", + "position": { + "x": 1106.4340503630633, + "y": 670.9266408696443 + }, + "selected": false, + "data": { + "label": "Markdown", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 153, + "height": 49, + "style": { + "width": 153, + "height": 49 + }, + "positionAbsolute": { + "x": 1106.4340503630633, + "y": 670.9266408696443 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "0XWiraeoicNBbaGYQnNZr", + "type": "subtopic", + "position": { + "x": 582.8760409943199, + "y": 478.7553633125035 + }, + "selected": false, + "data": { + "label": "Research Tools", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 192, + "height": 49, + "style": { + "width": 192, + "height": 49 + }, + "positionAbsolute": { + "x": 582.8760409943199, + "y": 478.7553633125035 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "sdoFe4A3y_-Zp3mlrJ5r8", + "type": "subtopic", + "position": { + "x": 582.8760409943199, + "y": 531.7553633125035 + }, + "selected": false, + "data": { + "label": "Blogging Platforms", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 192, + "height": 49, + "style": { + "width": 192, + "height": 49 + }, + "positionAbsolute": { + "x": 582.8760409943199, + "y": 531.7553633125035 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "FD-8LQ_g2_O_i2Qwp-Gpv", + "type": "subtopic", + "position": { + "x": 1105.9620919533354, + "y": 564.9266408696443 + }, + "selected": false, + "data": { + "label": "SEO Tools", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 153, + "height": 49, + "style": { + "width": 153, + "height": 49 + }, + "positionAbsolute": { + "x": 1105.9620919533354, + "y": 564.9266408696443 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "yYLsG2LuPaNUuhXSVev_0", + "type": "topic", + "position": { + "x": 582.8760409943199, + "y": 787.1873120693793 + }, + "selected": false, + "data": { + "label": "Best Practices", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "O-dZEkmU0tP3dUIUPM6YJ" + }, + "zIndex": 999, + "width": 192, + "height": 49, + "style": { + "width": 192, + "height": 49 + }, + "positionAbsolute": { + "x": 582.8760409943199, + "y": 787.1873120693793 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "27muFD1Ld1gF6hhIh22sG", + "type": "subtopic", + "position": { + "x": 208.14341138485645, + "y": 573.1873120693793 + }, + "selected": false, + "data": { + "label": "Story Telling", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 257, + "height": 49, + "style": { + "width": 257 + }, + "positionAbsolute": { + "x": 208.14341138485645, + "y": 573.1873120693793 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "lxSSjgtqJk-PtRp4hARDw", + "type": "subtopic", + "position": { + "x": 208.14341138485645, + "y": 626.1873120693793 + }, + "selected": false, + "data": { + "label": "Subtle Selling", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 257, + "height": 51, + "style": { + "width": 257, + "height": 51.27276611328125 + }, + "positionAbsolute": { + "x": 208.14341138485645, + "y": 626.1873120693793 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Ezz2e4lYLD_bdNNwvsV_y", + "type": "subtopic", + "position": { + "x": 208.14341138485645, + "y": 681.1873120693793 + }, + "selected": false, + "data": { + "label": "Content Structure", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 257, + "height": 49, + "style": { + "width": 257 + }, + "positionAbsolute": { + "x": 208.14341138485645, + "y": 681.1873120693793 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "a1ChwDwztjZBi79y38AGa", + "type": "subtopic", + "position": { + "x": 208.14341138485645, + "y": 734.1873120693793 + }, + "selected": false, + "data": { + "label": "Call to Actions", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 257, + "height": 49, + "style": { + "width": 257 + }, + "positionAbsolute": { + "x": 208.14341138485645, + "y": 734.1873120693793 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "8qSL2esjsA3YYuB4d7B9z", + "type": "subtopic", + "position": { + "x": 208.14341138485645, + "y": 787.1873120693793 + }, + "selected": false, + "data": { + "label": "References", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 257, + "height": 49, + "style": { + "width": 257 + }, + "positionAbsolute": { + "x": 208.14341138485645, + "y": 787.1873120693793 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "WmOvQYlnedX0QgC5Adeen", + "type": "subtopic", + "position": { + "x": 208.14341138485645, + "y": 840.1873120693793 + }, + "selected": false, + "data": { + "label": "Crafting Great Titles", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 257, + "height": 49, + "style": { + "width": 257 + }, + "positionAbsolute": { + "x": 208.14341138485645, + "y": 840.1873120693793 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "7FGMPztd6ouvqemcGhIol", + "type": "subtopic", + "position": { + "x": 208.14341138485645, + "y": 893.1873120693793 + }, + "selected": false, + "data": { + "label": "Content Objectives & Intent", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 257, + "height": 49, + "style": { + "width": 257 + }, + "positionAbsolute": { + "x": 208.14341138485645, + "y": 893.1873120693793 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "UuV51vM2JT_LFFXORSwru", + "type": "subtopic", + "position": { + "x": 208.14341138485645, + "y": 946.1873120693793 + }, + "selected": false, + "data": { + "label": "User Persona", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 257, + "height": 49, + "style": { + "width": 257 + }, + "positionAbsolute": { + "x": 208.14341138485645, + "y": 946.1873120693793 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "cnEVPsqZqs9ZdyqmOuLGA", + "type": "subtopic", + "position": { + "x": 208.14341138485645, + "y": 999.1873120693795 + }, + "selected": false, + "data": { + "label": "Writing Style Guides", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 257, + "height": 49, + "style": { + "width": 257 + }, + "positionAbsolute": { + "x": 208.14341138485645, + "y": 999.1873120693795 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "O-dZEkmU0tP3dUIUPM6YJ", + "type": "topic", + "position": { + "x": 1004.4629129969998, + "y": 787.1873120693793 + }, + "selected": false, + "data": { + "label": "Content Research", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 192, + "height": 49, + "style": { + "width": 192, + "height": 49 + }, + "positionAbsolute": { + "x": 1004.4629129969998, + "y": 787.1873120693793 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "SX4vL_JEHrwqHdThyqKKO", + "type": "subtopic", + "position": { + "x": 968.9629129969998, + "y": 881.7322780713671 + }, + "selected": false, + "data": { + "label": "Topic Score", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 263, + "height": 49, + "style": { + "width": 263 + }, + "positionAbsolute": { + "x": 968.9629129969998, + "y": 881.7322780713671 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "JtFLW5WwH5Ixmnb0qikia", + "type": "subtopic", + "position": { + "x": 968.9629129969998, + "y": 934.7322780713671 + }, + "selected": false, + "data": { + "label": "Keyword Volume", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 263, + "height": 49, + "style": { + "width": 263 + }, + "positionAbsolute": { + "x": 968.9629129969998, + "y": 934.7322780713671 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "QMehC1tmWPVWaTsiV9sFC", + "type": "subtopic", + "position": { + "x": 968.9629129969998, + "y": 987.7322780713671 + }, + "selected": false, + "data": { + "label": "Communities & Forums", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 263, + "height": 49, + "style": { + "width": 263 + }, + "positionAbsolute": { + "x": 968.9629129969998, + "y": 987.7322780713671 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "IZqyEqkrBoEfLBwIQwJl6", + "type": "subtopic", + "position": { + "x": 968.9629129969998, + "y": 1040.732278071367 + }, + "selected": false, + "data": { + "label": "Search Trends", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 263, + "height": 49, + "style": { + "width": 263 + }, + "positionAbsolute": { + "x": 968.9629129969998, + "y": 1040.732278071367 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "xFMsHYYxC0hLueY9xxART", + "type": "subtopic", + "position": { + "x": 968.9629129969998, + "y": 1093.732278071367 + }, + "selected": false, + "data": { + "label": "Support Request Evaluation", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 263, + "height": 49, + "style": { + "width": 263, + "height": 49 + }, + "positionAbsolute": { + "x": 968.9629129969998, + "y": 1093.732278071367 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "xV8mox1WnSbl2jAGqQpeg", + "type": "topic", + "position": { + "x": 607.5409442883595, + "y": 1090.6879511850975 + }, + "selected": false, + "data": { + "label": "Types of Technical Content", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "O-dZEkmU0tP3dUIUPM6YJ" + }, + "zIndex": 999, + "width": 253, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 607.5409442883595, + "y": 1090.6879511850975 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "d9mTdwqx6QWKYO5PA_rDH", + "type": "subtopic", + "position": { + "x": 622.0409442883595, + "y": 890.2642007065986 + }, + "selected": false, + "data": { + "label": "Product Content", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 223, + "height": 49, + "style": { + "width": 223 + }, + "positionAbsolute": { + "x": 622.0409442883595, + "y": 890.2642007065986 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "UFuMiHtWq1M8dS8547lOp", + "type": "subtopic", + "position": { + "x": 622.0409442883595, + "y": 943.2642007065986 + }, + "selected": false, + "data": { + "label": "General Product Prose", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 223, + "height": 49, + "style": { + "width": 223, + "height": 49 + }, + "positionAbsolute": { + "x": 622.0409442883595, + "y": 943.2642007065986 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "C-eVVtF6Yabp2a6XvMeh_", + "type": "subtopic", + "position": { + "x": 622.0409442883595, + "y": 996.2642007065986 + }, + "selected": false, + "data": { + "label": "How-to Guides", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 223, + "height": 49, + "style": { + "width": 223 + }, + "positionAbsolute": { + "x": 622.0409442883595, + "y": 996.2642007065986 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "e8oNoXw1KLY4jDzojIXyk", + "type": "topic", + "position": { + "x": 832.7191176574586, + "y": 1180.3854162300877 + }, + "selected": false, + "data": { + "label": "Developer Docs", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + } + }, + "zIndex": 999, + "width": 192, + "height": 49, + "style": { + "width": 192, + "height": 49 + }, + "positionAbsolute": { + "x": 832.7191176574586, + "y": 1180.3854162300877 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "FgyBWRtE34VNqBt_5QhAf", + "type": "subtopic", + "position": { + "x": 832.7191176574586, + "y": 1233.3854162300877 + }, + "selected": false, + "data": { + "label": "User Goals", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 192, + "height": 49, + "style": { + "width": 192, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 832.7191176574586, + "y": 1233.3854162300877 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "2pNW7wDGih_m73lhGZRg6", + "type": "subtopic", + "position": { + "x": 832.7191176574586, + "y": 1286.3854162300877 + }, + "selected": false, + "data": { + "label": "Developer Journey", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 192, + "height": 49, + "style": { + "width": 192, + "height": 49 + }, + "positionAbsolute": { + "x": 832.7191176574586, + "y": 1286.3854162300877 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "jYhfx6RETFgDulyNqdTBy", + "type": "subtopic", + "position": { + "x": 832.7191176574586, + "y": 1339.3854162300877 + }, + "selected": false, + "data": { + "label": "Docs Structure", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 192, + "height": 49, + "style": { + "width": 192, + "height": 49 + }, + "positionAbsolute": { + "x": 832.7191176574586, + "y": 1339.3854162300877 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "z5_73Q7dWbBd4m_OrdZlH", + "type": "topic", + "position": { + "x": 1030.2384541137067, + "y": 1180.3854162300877 + }, + "selected": false, + "data": { + "label": "API Reference", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + }, + "oldId": "e8oNoXw1KLY4jDzojIXyk" + }, + "zIndex": 999, + "width": 221, + "height": 49, + "style": { + "width": 221, + "height": 49 + }, + "positionAbsolute": { + "x": 1030.2384541137067, + "y": 1180.3854162300877 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "iBBeZopD8SNo7sWTohMim", + "type": "subtopic", + "position": { + "x": 1030.2384541137067, + "y": 1233.8730119790503 + }, + "selected": false, + "data": { + "label": "Docs Generation Tools", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "FgyBWRtE34VNqBt_5QhAf" + }, + "zIndex": 999, + "width": 221, + "height": 49, + "style": { + "width": 221, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 1030.2384541137067, + "y": 1233.8730119790503 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "co-35BsWMrD6PXohpFqba", + "type": "subtopic", + "position": { + "x": 1030.2384541137067, + "y": 1286.3854162300877 + }, + "selected": false, + "data": { + "label": "API Definitions", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "2pNW7wDGih_m73lhGZRg6" + }, + "zIndex": 999, + "width": 221, + "height": 49, + "style": { + "width": 221, + "height": 49 + }, + "positionAbsolute": { + "x": 1030.2384541137067, + "y": 1286.3854162300877 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "e_bsYrZ0eQqduURg2ybX4", + "type": "topic", + "position": { + "x": 636.0419920403277, + "y": 1181.3854162300877 + }, + "selected": false, + "data": { + "label": "Help Content", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + }, + "oldId": "e8oNoXw1KLY4jDzojIXyk" + }, + "zIndex": 999, + "width": 193, + "height": 49, + "style": { + "width": 193, + "height": 49 + }, + "positionAbsolute": { + "x": 636.0419920403277, + "y": 1181.3854162300877 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "8fJcJi96Ige6z2PBuTquC", + "type": "subtopic", + "position": { + "x": 636.0419920403277, + "y": 1235.7843582065113 + }, + "selected": false, + "data": { + "label": "Troubleshooting", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "FgyBWRtE34VNqBt_5QhAf" + }, + "zIndex": 999, + "width": 193, + "height": 49, + "style": { + "width": 193, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 636.0419920403277, + "y": 1235.7843582065113 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "7w1SjK-LV9SBZJ673eAUd", + "type": "subtopic", + "position": { + "x": 636.0419920403277, + "y": 1288.7843582065113 + }, + "selected": false, + "data": { + "label": "Developer Support", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "2pNW7wDGih_m73lhGZRg6" + }, + "zIndex": 999, + "width": 193, + "height": 49, + "style": { + "width": 193, + "height": 49 + }, + "positionAbsolute": { + "x": 636.0419920403277, + "y": 1288.7843582065113 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "How-4Re1NhxPLDoshUM-G", + "type": "subtopic", + "position": { + "x": 636.0419920403277, + "y": 1341.7843582065113 + }, + "selected": false, + "data": { + "label": "Platform Support", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "jYhfx6RETFgDulyNqdTBy" + }, + "zIndex": 999, + "width": 193, + "height": 49, + "style": { + "width": 193, + "height": 49 + }, + "positionAbsolute": { + "x": 636.0419920403277, + "y": 1341.7843582065113 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "mJ1s5-SGd_tj8y0LLZxYg", + "type": "topic", + "position": { + "x": 231.68773827112568, + "y": 1229.3854162300877 + }, + "selected": false, + "data": { + "label": "Technical Content Marketing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "mrqBxsNRl1CQEKtuYSy9F" + }, + "zIndex": 999, + "width": 266, + "height": 49, + "style": { + "width": 266 + }, + "positionAbsolute": { + "x": 231.68773827112568, + "y": 1229.3854162300877 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "O1apL6I_g9DQl8VbL3X4W", + "type": "subtopic", + "position": { + "x": 207.18773827112568, + "y": 1079.348933004529 + }, + "selected": false, + "data": { + "label": "ICP & Buyer Persona", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 294, + "height": 49, + "style": { + "width": 294, + "height": 49 + }, + "positionAbsolute": { + "x": 207.18773827112568, + "y": 1079.348933004529 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "EhhKxYPtoLztZXBXl3ZGl", + "type": "subtopic", + "position": { + "x": 207.18773827112568, + "y": 1132.348933004529 + }, + "selected": false, + "data": { + "label": "Buyer Journey & Content Funnel", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 294, + "height": 49, + "style": { + "width": 294, + "height": 49 + }, + "positionAbsolute": { + "x": 207.18773827112568, + "y": 1132.348933004529 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "-IBL9S4DelIi07w_fmrX3", + "type": "topic", + "position": { + "x": 271.6877382711257, + "y": 1510.3854162300877 + }, + "selected": false, + "data": { + "label": "Content SEO", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "mrqBxsNRl1CQEKtuYSy9F" + }, + "zIndex": 999, + "width": 186, + "height": 50, + "style": { + "width": 186, + "height": 50 + }, + "positionAbsolute": { + "x": 271.6877382711257, + "y": 1510.3854162300877 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "UphVii3y4T_PkRMqFJ4r_", + "type": "subtopic", + "position": { + "x": 208.14341138485645, + "y": 1430.3854162300877 + }, + "selected": false, + "data": { + "label": "Backlinking", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "c" + } + }, + "zIndex": 999, + "width": 121, + "height": 49, + "style": { + "width": 121, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 208.14341138485645, + "y": 1430.3854162300877 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "eAioe6b7w8pV2Dvawl_fw", + "type": "subtopic", + "position": { + "x": 392.1877382711257, + "y": 1305.348933004529 + }, + "selected": false, + "data": { + "label": "Short-tail Keywords", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "EmxmGa120msnjywTqqmKX" + }, + "zIndex": 999, + "width": 194, + "height": 49, + "style": { + "width": 194, + "height": 49 + }, + "dragging": false, + "resizing": false, + "positionAbsolute": { + "x": 392.1877382711257, + "y": 1305.348933004529 + }, + "selectable": true, + "focusable": true + }, + { + "id": "2LAvq7W11WMIubSprlK_l", + "type": "subtopic", + "position": { + "x": 392.1877382711257, + "y": 1358.348933004529 + }, + "selected": false, + "data": { + "label": "Long-Tail Keywords", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "3CsG9cxi0gWKkZET0aBRq" + }, + "zIndex": 999, + "width": 194, + "height": 49, + "style": { + "width": 194, + "height": 49 + }, + "positionAbsolute": { + "x": 392.1877382711257, + "y": 1358.348933004529 + }, + "dragging": false, + "resizing": true, + "selectable": true, + "focusable": true + }, + { + "id": "IA6TuXmOZr_-Y3HLHqxp0", + "type": "subtopic", + "position": { + "x": 392.1877382711257, + "y": 1430.3854162300877 + }, + "selected": false, + "data": { + "label": "SEO Keywords", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "colorType": "h" + }, + "oldId": "enC9YBYV6zdl4qy2c1dI4" + }, + "zIndex": 999, + "width": 159, + "height": 49, + "style": { + "width": 159, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 392.1877382711257, + "y": 1430.3854162300877 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "5dnZe0oCIzb5qGwgI6pwH", + "type": "topic", + "position": { + "x": 533.3803672996291, + "y": 1510.3854162300877 + }, + "selected": false, + "data": { + "label": "Top-funnel Content", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "mrqBxsNRl1CQEKtuYSy9F" + }, + "zIndex": 999, + "width": 193, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 533.3803672996291, + "y": 1510.3854162300877 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "wBDjGa2PgdmeXxHnILFjY", + "type": "subtopic", + "position": { + "x": 520.8803672996291, + "y": 1597.2977449847244 + }, + "selected": false, + "data": { + "label": "Pillar Content", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 217, + "height": 49, + "style": { + "width": 217, + "height": 49 + }, + "positionAbsolute": { + "x": 520.8803672996291, + "y": 1597.2977449847244 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "7S2lymeBZSMBZSsmei7us", + "type": "subtopic", + "position": { + "x": 520.8803672996291, + "y": 1650.2977449847244 + }, + "selected": false, + "data": { + "label": "Awareness Blog Posts", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 217, + "height": 49, + "style": { + "width": 217, + "height": 49 + }, + "positionAbsolute": { + "x": 520.8803672996291, + "y": 1650.2977449847244 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "HoNQSWy82ybT0YmejCzRb", + "type": "subtopic", + "position": { + "x": 520.8803672996291, + "y": 1703.2977449847244 + }, + "selected": false, + "data": { + "label": "Research Reports", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 217, + "height": 49, + "style": { + "width": 217, + "height": 49 + }, + "positionAbsolute": { + "x": 520.8803672996291, + "y": 1703.2977449847244 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Q2KD70IKwBXAH3UQgeZpp", + "type": "topic", + "position": { + "x": 801.3849507669174, + "y": 1510.3854162300877 + }, + "selected": false, + "data": { + "label": "Mid-funnel Content", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "mrqBxsNRl1CQEKtuYSy9F" + }, + "zIndex": 999, + "width": 193, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 801.3849507669174, + "y": 1510.3854162300877 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "XDX2QxMUkUok2fcS3tFki", + "type": "subtopic", + "position": { + "x": 785.8849507669174, + "y": 1606.3892684775974 + }, + "selected": false, + "data": { + "label": "Generic Gated Content", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 224, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 785.8849507669174, + "y": 1606.3892684775974 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "Xa7yBWcbP2aPs4u0C4cLJ", + "type": "subtopic", + "position": { + "x": 785.8849507669172, + "y": 1659.3892684775974 + }, + "selected": false, + "data": { + "label": "White-papers", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 149, + "height": 49, + "style": { + "width": 149, + "height": 49 + }, + "positionAbsolute": { + "x": 785.8849507669172, + "y": 1659.3892684775974 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "5zQpravkqwafvwXVOuNPX", + "type": "subtopic", + "position": { + "x": 939.8849507669174, + "y": 1659.3892684775974 + }, + "selected": false, + "data": { + "label": "eBook", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 70, + "height": 49, + "style": { + "width": 70, + "height": 49 + }, + "positionAbsolute": { + "x": 939.8849507669174, + "y": 1659.3892684775974 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "vo1udIIRpxNZCpA3g32F3", + "type": "topic", + "position": { + "x": 1047.1877382711257, + "y": 1510.3854162300877 + }, + "selected": false, + "data": { + "label": "Bottom-funnel Content", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "mrqBxsNRl1CQEKtuYSy9F" + }, + "zIndex": 999, + "width": 220, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 1047.1877382711257, + "y": 1510.3854162300877 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "2wjRA_pQ9cCG9Ww994FEM", + "type": "subtopic", + "position": { + "x": 973.9629129969998, + "y": 1427.3781906911768 + }, + "selected": false, + "data": { + "label": "Comparative Posts", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 189, + "height": 49, + "style": { + "width": 189 + }, + "positionAbsolute": { + "x": 973.9629129969998, + "y": 1427.3781906911768 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "K459CcDrcPMJCimIcCzM6", + "type": "subtopic", + "position": { + "x": 1167.1877382711257, + "y": 1427.3781906911768 + }, + "selected": false, + "data": { + "label": "Tutorials", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": 1167.1877382711257, + "y": 1427.3781906911768 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "-GZXLc9RjY6eWkKC1K_Rg", + "type": "topic", + "position": { + "x": 888.405148207419, + "y": 1741.1749108232366 + }, + "selected": false, + "data": { + "label": "Release Notes / Product Announcements", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "mrqBxsNRl1CQEKtuYSy9F" + }, + "zIndex": 999, + "width": 368, + "height": 49, + "style": { + "width": 368, + "height": 49 + }, + "positionAbsolute": { + "x": 888.405148207419, + "y": 1741.1749108232366 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "W44q1iEj7RKM55-9jabMJ", + "type": "topic", + "position": { + "x": 888.405148207419, + "y": 1794.1749108232366 + }, + "selected": false, + "data": { + "label": "Customer Case-Studies", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "mrqBxsNRl1CQEKtuYSy9F" + }, + "zIndex": 999, + "width": 368, + "height": 49, + "style": { + "width": 368, + "height": 49 + }, + "positionAbsolute": { + "x": 888.405148207419, + "y": 1794.1749108232366 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "pgrKfp1trcIxhDdvLk95g", + "type": "topic", + "position": { + "x": 888.405148207419, + "y": 1900.1749108232366 + }, + "selected": false, + "data": { + "label": "Frequently Asked Questions", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "mrqBxsNRl1CQEKtuYSy9F" + }, + "zIndex": 999, + "width": 368, + "height": 49, + "style": { + "width": 368, + "height": 49 + }, + "positionAbsolute": { + "x": 888.405148207419, + "y": 1900.1749108232366 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "tAFenZA0MFhMPE5cevNuD", + "type": "topic", + "position": { + "x": 888.405148207419, + "y": 1847.1749108232366 + }, + "selected": false, + "data": { + "label": "Technical Website Copy", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "mrqBxsNRl1CQEKtuYSy9F" + }, + "zIndex": 999, + "width": 368, + "height": 49, + "style": { + "width": 368, + "height": 49 + }, + "positionAbsolute": { + "x": 888.405148207419, + "y": 1847.1749108232366 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "XyFEYDJvJpGZ7qSdoSZeI", + "type": "topic", + "position": { + "x": 587.8849507669174, + "y": 1881.7375321604657 + }, + "selected": false, + "data": { + "label": "Content Optimization", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "mrqBxsNRl1CQEKtuYSy9F" + }, + "zIndex": 999, + "width": 209, + "height": 49, + "style": { + "width": 209, + "height": 49 + }, + "positionAbsolute": { + "x": 587.8849507669174, + "y": 1881.7375321604657 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "TbSBCITdLswhVB82fErTP", + "type": "topic", + "position": { + "x": 258.3844471863894, + "y": 1881.7375321604657 + }, + "selected": false, + "data": { + "label": "Content Analysis", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "mrqBxsNRl1CQEKtuYSy9F" + }, + "zIndex": 999, + "width": 185, + "height": 49, + "style": { + "width": 185, + "height": 49 + }, + "positionAbsolute": { + "x": 258.3844471863894, + "y": 1881.7375321604657 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "qpOfqbgLy5TzlNQEyt6DG", + "type": "subtopic", + "position": { + "x": 211.38444718638942, + "y": 1640.2206725696728 + }, + "selected": false, + "data": { + "label": "Link Shorteners / Tracking", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 279, + "height": 49, + "style": { + "width": 279, + "height": 49 + }, + "positionAbsolute": { + "x": 211.38444718638942, + "y": 1640.2206725696728 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "hlhBgI3SvU3tMtNaHtu8k", + "type": "subtopic", + "position": { + "x": 211.38444718638942, + "y": 1693.2206725696728 + }, + "selected": false, + "data": { + "label": "Platform Tracking and Metrics", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 279, + "height": 49, + "style": { + "width": 279, + "height": 49 + }, + "positionAbsolute": { + "x": 211.38444718638942, + "y": 1693.2206725696728 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "UiXn-CnPcLWAflKJzaJ2a", + "type": "subtopic", + "position": { + "x": 211.38444718638942, + "y": 1746.2206725696728 + }, + "selected": false, + "data": { + "label": "Conversion Tracking", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 279, + "height": 49, + "style": { + "width": 279, + "height": 49 + }, + "positionAbsolute": { + "x": 211.38444718638942, + "y": 1746.2206725696728 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "JgdrXG7MX1gGuNG9uyubA", + "type": "subtopic", + "position": { + "x": 211.38444718638942, + "y": 1799.2206725696728 + }, + "selected": false, + "data": { + "label": "Content Aging & Timelines", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 279, + "height": 49, + "style": { + "width": 279, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 211.38444718638942, + "y": 1799.2206725696728 + }, + "selectable": true, + "focusable": true + }, + { + "id": "mrqBxsNRl1CQEKtuYSy9F", + "type": "topic", + "position": { + "x": 588.7670925742796, + "y": 2030.6997330921204 + }, + "selected": false, + "data": { + "label": "Content Distribution", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 209, + "height": 49, + "style": { + "width": 209, + "height": 49 + }, + "positionAbsolute": { + "x": 588.7670925742796, + "y": 2030.6997330921204 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "NIxIhMEOxrUR8nbjbF_Fp", + "type": "subtopic", + "position": { + "x": 875.4800870292461, + "y": 1977.6997330921204 + }, + "selected": false, + "data": { + "label": "Canonical Link", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 170, + "height": 49, + "style": { + "width": 170, + "height": 49 + }, + "positionAbsolute": { + "x": 875.4800870292461, + "y": 1977.6997330921204 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "AarJ887P-SFRnKaOOv9yw", + "type": "subtopic", + "position": { + "x": 1049.4824955422164, + "y": 1977.6997330921204 + }, + "selected": false, + "data": { + "label": "OpenGraph Data", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 214, + "height": 49, + "style": { + "width": 214, + "height": 49 + }, + "positionAbsolute": { + "x": 1049.4824955422164, + "y": 1977.6997330921204 + }, + "dragging": false, + "resizing": true, + "selectable": true, + "focusable": true + }, + { + "id": "m9-DqsQfeukmhjhIfCph-", + "type": "subtopic", + "position": { + "x": 876.4824955422164, + "y": 2030.6997330921204 + }, + "selected": false, + "data": { + "label": "Content Distribution Channels", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 387, + "height": 49, + "style": { + "width": 387 + }, + "positionAbsolute": { + "x": 876.4824955422164, + "y": 2030.6997330921204 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "_cAGbAswDhOqpoiiikPbD", + "type": "subtopic", + "position": { + "x": 876.4824955422164, + "y": 2083.6997330921204 + }, + "selected": false, + "data": { + "label": "Content Distribution Amplification Strategies", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 387, + "height": 49, + "style": { + "width": 387, + "height": 49 + }, + "positionAbsolute": { + "x": 876.4824955422164, + "y": 2083.6997330921204 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "KEP_DmmmIbG5zdC0dj6a_", + "type": "paragraph", + "position": { + "x": 568.2670925742796, + "y": 2184.519385286052 + }, + "selected": false, + "data": { + "label": "Keep Learning", + "style": { + "fontSize": 20, + "borderColor": "transparent", + "backgroundColor": "transparent", + "color": "#000000", + "textAlign": "center", + "justifyContent": "center", + "padding": 16 + } + }, + "zIndex": 999, + "width": 250, + "height": 55, + "style": { + "width": 250, + "height": 55 + }, + "resizing": false, + "positionAbsolute": { + "x": 568.2670925742796, + "y": 2184.519385286052 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "vxDLRIXVZFTbfqiOmjUER", + "type": "paragraph", + "position": { + "x": 202.87564859782253, + "y": 83.84893300452893 + }, + "selected": false, + "data": { + "label": "Shout-out to Hackmamba who helped make this roadmap", + "style": { + "fontSize": 17, + "borderColor": "#000000", + "backgroundColor": "#ffffff", + "color": "#000000", + "textAlign": "left", + "justifyContent": "flex-start", + "padding": 16 + } + }, + "zIndex": 999, + "width": 313, + "height": 148, + "style": { + "width": 313, + "height": 148 + }, + "positionAbsolute": { + "x": 202.87564859782253, + "y": 83.84893300452893 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "id": "D5Gn7dAWlTB-Q0bbPc6ka", + "type": "button", + "position": { + "x": 220.57235751308627, + "y": 165.8344964222742 + }, + "selected": false, + "data": { + "label": "Visit their Website", + "href": "https://hackmamba.io/?utm_source=roadmapsh&utm_medium=web&utm_campaign=roadmap", + "color": "#000000", + "backgroundColor": "#d6d6d6", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 279, + "height": 49, + "style": { + "width": 279, + "height": 49 + }, + "positionAbsolute": { + "x": 220.57235751308627, + "y": 165.8344964222742 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + } + ], + "edges": [ + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "iogwMmOvub2ZF4zgg6WyF", + "sourceHandle": "x2", + "target": "_hYN0gEi9BL24nptEtXWU", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "XX0I26JoVMVXIe_7bVMix", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_hYN0gEi9BL24nptEtXWU", + "sourceHandle": "z2", + "target": "idLHBxhvcIqZTqmh_E8Az", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "dFn6kGOoJ-0BzJJEb9DSG", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_hYN0gEi9BL24nptEtXWU", + "sourceHandle": "z2", + "target": "os3Pa6W9SSNEzgmlBbglQ", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "arkF7QJJRbCBYWp0crqa2", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_hYN0gEi9BL24nptEtXWU", + "sourceHandle": "z2", + "target": "3oInpqvTSSC5_K6i7j8N7", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "HNVw8OboycWKLEtEbG2bn", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_hYN0gEi9BL24nptEtXWU", + "sourceHandle": "z2", + "target": "YKhuRbcUFzo0hTvuTq-Yl", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "auB7Png72XjmhcLr3IJA7", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "jZ67HhVRelJaxjsCckSSI", + "sourceHandle": "x2", + "target": "hWA7RtuqltMTmHdcCnmES", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "2aoDIr80lXSJLW1hIGUkb", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "z2", + "target": "NMznG9mo2wzNFnjhg990f", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "m-_y7nLeYFkUKGiacxWA0", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "z2", + "target": "gc_7cuIO2_joKlQRAPDfX", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "G7pXuJfkyt2nWAOHU8yV0", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "rrrvATyhXqRgJGWI3z0WF", + "sourceHandle": "x2", + "target": "AvbMQ5vY3ip1oX_6Yq4ie", + "targetHandle": "w2", + "data": { + "edgeStyle": "dashed" + }, + "id": "2_6Yz3-Agx9_rEN5xW86c", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "hWA7RtuqltMTmHdcCnmES", + "sourceHandle": "w2", + "target": "1AJv95mTLpR7L8KBoGym8", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "kgMI98fg2-mKMgUs0wnjD", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "hWA7RtuqltMTmHdcCnmES", + "sourceHandle": "y2", + "target": "0etAs56EeBfh_0IlAaSra", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "selected": false, + "id": "ts38Q2ceHs60TJscUBZVE", + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "jZ67HhVRelJaxjsCckSSI", + "sourceHandle": "y2", + "target": "h6ceO0kiBIxNRkPzN3hBY", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "ZiMV7umyPdhy3JJDcopR-", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "jZ67HhVRelJaxjsCckSSI", + "sourceHandle": "y2", + "target": "_JlT9oKQ6Yu4UX6l19G8P", + "targetHandle": "z2", + "data": { + "edgeStyle": "dashed" + }, + "id": "WI-MhbxrehFcVwyGJ5CQJ", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_hYN0gEi9BL24nptEtXWU", + "sourceHandle": "x2", + "target": "jZ67HhVRelJaxjsCckSSI", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "qUrLBzvXvJOg53HBfjrOI", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "HlUUGj3dOZ68t4gIjerXh", + "sourceHandle": "z2", + "target": "ZRGsokU313Ky-anWbWK6q", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-HlUUGj3dOZ68t4gIjerXhz2-ZRGsokU313Ky-anWbWK6qy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "HlUUGj3dOZ68t4gIjerXh", + "sourceHandle": "z2", + "target": "jl1FsQ5-WGKeFyaILNt_p", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-HlUUGj3dOZ68t4gIjerXhz2-jl1FsQ5-WGKeFyaILNt_py1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "HlUUGj3dOZ68t4gIjerXh", + "sourceHandle": "z2", + "target": "j69erqfosSZMDlmKcnnn0", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-HlUUGj3dOZ68t4gIjerXhz2-j69erqfosSZMDlmKcnnn0y2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "HlUUGj3dOZ68t4gIjerXh", + "sourceHandle": "z2", + "target": "cNeT1dJDfgn0ndPzSxhSL", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-HlUUGj3dOZ68t4gIjerXhz2-cNeT1dJDfgn0ndPzSxhSLy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "HlUUGj3dOZ68t4gIjerXh", + "sourceHandle": "z2", + "target": "FVxNjbDBxgf6vkZWw1Awt", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-HlUUGj3dOZ68t4gIjerXhz2-FVxNjbDBxgf6vkZWw1Awty1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "5Z9o-b3vBA-ITFg86zzYM", + "sourceHandle": "x2", + "target": "HlUUGj3dOZ68t4gIjerXh", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-5Z9o-b3vBA-ITFg86zzYMx2-HlUUGj3dOZ68t4gIjerXhw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "HlUUGj3dOZ68t4gIjerXh", + "sourceHandle": "y2", + "target": "8rjUZ9NZPGwVRGmk6Dlyb", + "targetHandle": "z2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-HlUUGj3dOZ68t4gIjerXhy2-O-dZEkmU0tP3dUIUPM6YJz2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "8rjUZ9NZPGwVRGmk6Dlyb", + "sourceHandle": "w2", + "target": "7-3tqRUpntoQP4nK_nul5", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-8rjUZ9NZPGwVRGmk6Dlybw2-7-3tqRUpntoQP4nK_nul5x1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "8rjUZ9NZPGwVRGmk6Dlyb", + "sourceHandle": "z2", + "target": "_5xFbl2BHx0f2u9HmSVS8", + "targetHandle": "y2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-8rjUZ9NZPGwVRGmk6Dlybz2-O-dZEkmU0tP3dUIUPM6YJy2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_5xFbl2BHx0f2u9HmSVS8", + "sourceHandle": "z2", + "target": "jC3ZrpskBqzxiV6SKf4Uf", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-O-dZEkmU0tP3dUIUPM6YJz2-jC3ZrpskBqzxiV6SKf4Ufy2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_5xFbl2BHx0f2u9HmSVS8", + "sourceHandle": "z2", + "target": "cSZbTOB0FPPOlGzy-MkSi", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-O-dZEkmU0tP3dUIUPM6YJz2-cSZbTOB0FPPOlGzy-MkSiy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_5xFbl2BHx0f2u9HmSVS8", + "sourceHandle": "z2", + "target": "ffJyulu9GPB_TDqjeJYyV", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-O-dZEkmU0tP3dUIUPM6YJz2-ffJyulu9GPB_TDqjeJYyVy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_5xFbl2BHx0f2u9HmSVS8", + "sourceHandle": "w2", + "target": "0XWiraeoicNBbaGYQnNZr", + "targetHandle": "x2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-O-dZEkmU0tP3dUIUPM6YJw2-0XWiraeoicNBbaGYQnNZrx2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_5xFbl2BHx0f2u9HmSVS8", + "sourceHandle": "x2", + "target": "yYLsG2LuPaNUuhXSVev_0", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-_5xFbl2BHx0f2u9HmSVS8x2-O-dZEkmU0tP3dUIUPM6YJw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "yYLsG2LuPaNUuhXSVev_0", + "sourceHandle": "y2", + "target": "27muFD1Ld1gF6hhIh22sG", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-O-dZEkmU0tP3dUIUPM6YJy2-27muFD1Ld1gF6hhIh22sGz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "yYLsG2LuPaNUuhXSVev_0", + "sourceHandle": "y2", + "target": "lxSSjgtqJk-PtRp4hARDw", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-O-dZEkmU0tP3dUIUPM6YJy2-lxSSjgtqJk-PtRp4hARDwz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "yYLsG2LuPaNUuhXSVev_0", + "sourceHandle": "y2", + "target": "Ezz2e4lYLD_bdNNwvsV_y", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-O-dZEkmU0tP3dUIUPM6YJy2-Ezz2e4lYLD_bdNNwvsV_yz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "yYLsG2LuPaNUuhXSVev_0", + "sourceHandle": "y2", + "target": "a1ChwDwztjZBi79y38AGa", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-O-dZEkmU0tP3dUIUPM6YJy2-a1ChwDwztjZBi79y38AGaz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "yYLsG2LuPaNUuhXSVev_0", + "sourceHandle": "y2", + "target": "8qSL2esjsA3YYuB4d7B9z", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-O-dZEkmU0tP3dUIUPM6YJy2-8qSL2esjsA3YYuB4d7B9zz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "yYLsG2LuPaNUuhXSVev_0", + "sourceHandle": "y2", + "target": "WmOvQYlnedX0QgC5Adeen", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-O-dZEkmU0tP3dUIUPM6YJy2-WmOvQYlnedX0QgC5Adeenz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "yYLsG2LuPaNUuhXSVev_0", + "sourceHandle": "y2", + "target": "7FGMPztd6ouvqemcGhIol", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-O-dZEkmU0tP3dUIUPM6YJy2-7FGMPztd6ouvqemcGhIolz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "yYLsG2LuPaNUuhXSVev_0", + "sourceHandle": "y2", + "target": "UuV51vM2JT_LFFXORSwru", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-O-dZEkmU0tP3dUIUPM6YJy2-UuV51vM2JT_LFFXORSwruz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "yYLsG2LuPaNUuhXSVev_0", + "sourceHandle": "y2", + "target": "cnEVPsqZqs9ZdyqmOuLGA", + "targetHandle": "z2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-O-dZEkmU0tP3dUIUPM6YJy2-cnEVPsqZqs9ZdyqmOuLGAz2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "yYLsG2LuPaNUuhXSVev_0", + "sourceHandle": "z2", + "target": "O-dZEkmU0tP3dUIUPM6YJ", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-yYLsG2LuPaNUuhXSVev_0z2-O-dZEkmU0tP3dUIUPM6YJy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "O-dZEkmU0tP3dUIUPM6YJ", + "sourceHandle": "y2", + "target": "xV8mox1WnSbl2jAGqQpeg", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-O-dZEkmU0tP3dUIUPM6YJy2-xV8mox1WnSbl2jAGqQpegz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "xV8mox1WnSbl2jAGqQpeg", + "sourceHandle": "w2", + "target": "C-eVVtF6Yabp2a6XvMeh_", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-xV8mox1WnSbl2jAGqQpegw2-C-eVVtF6Yabp2a6XvMeh_x1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "O-dZEkmU0tP3dUIUPM6YJ", + "sourceHandle": "x2", + "target": "SX4vL_JEHrwqHdThyqKKO", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-O-dZEkmU0tP3dUIUPM6YJx2-SX4vL_JEHrwqHdThyqKKOw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "xV8mox1WnSbl2jAGqQpeg", + "sourceHandle": "y2", + "target": "mJ1s5-SGd_tj8y0LLZxYg", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-xV8mox1WnSbl2jAGqQpegy2-mrqBxsNRl1CQEKtuYSy9Fz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "mJ1s5-SGd_tj8y0LLZxYg", + "sourceHandle": "x2", + "target": "-IBL9S4DelIi07w_fmrX3", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-mJ1s5-SGd_tj8y0LLZxYgx2-mrqBxsNRl1CQEKtuYSy9Fw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "eAioe6b7w8pV2Dvawl_fw", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "4r5DqLw19GEweELx9C5Gk", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "-IBL9S4DelIi07w_fmrX3", + "sourceHandle": "z2", + "target": "5dnZe0oCIzb5qGwgI6pwH", + "targetHandle": "y2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge--IBL9S4DelIi07w_fmrX3z2-mrqBxsNRl1CQEKtuYSy9Fy2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "5dnZe0oCIzb5qGwgI6pwH", + "sourceHandle": "x2", + "target": "wBDjGa2PgdmeXxHnILFjY", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-mrqBxsNRl1CQEKtuYSy9Fx2-wBDjGa2PgdmeXxHnILFjYw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "5dnZe0oCIzb5qGwgI6pwH", + "sourceHandle": "z2", + "target": "Q2KD70IKwBXAH3UQgeZpp", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-5dnZe0oCIzb5qGwgI6pwHz2-mrqBxsNRl1CQEKtuYSy9Fy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "Q2KD70IKwBXAH3UQgeZpp", + "sourceHandle": "x2", + "target": "XDX2QxMUkUok2fcS3tFki", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-mrqBxsNRl1CQEKtuYSy9Fx2-XDX2QxMUkUok2fcS3tFkiw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "Q2KD70IKwBXAH3UQgeZpp", + "sourceHandle": "z2", + "target": "vo1udIIRpxNZCpA3g32F3", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-Q2KD70IKwBXAH3UQgeZppz2-mrqBxsNRl1CQEKtuYSy9Fy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "XyFEYDJvJpGZ7qSdoSZeI", + "sourceHandle": "y2", + "target": "TbSBCITdLswhVB82fErTP", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-XyFEYDJvJpGZ7qSdoSZeIy2-mrqBxsNRl1CQEKtuYSy9Fz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "TbSBCITdLswhVB82fErTP", + "sourceHandle": "w2", + "target": "JgdrXG7MX1gGuNG9uyubA", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-mrqBxsNRl1CQEKtuYSy9Fw2-JgdrXG7MX1gGuNG9uyubAx1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "TbSBCITdLswhVB82fErTP", + "sourceHandle": "z2", + "target": "mrqBxsNRl1CQEKtuYSy9F", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-TbSBCITdLswhVB82fErTPz2-mrqBxsNRl1CQEKtuYSy9Fy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "mrqBxsNRl1CQEKtuYSy9F", + "sourceHandle": "z2", + "target": "NIxIhMEOxrUR8nbjbF_Fp", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-mrqBxsNRl1CQEKtuYSy9Fz2-NIxIhMEOxrUR8nbjbF_Fpy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "mrqBxsNRl1CQEKtuYSy9F", + "sourceHandle": "z2", + "target": "m9-DqsQfeukmhjhIfCph-", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-mrqBxsNRl1CQEKtuYSy9Fz2-m9-DqsQfeukmhjhIfCph-y2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "mrqBxsNRl1CQEKtuYSy9F", + "sourceHandle": "z2", + "target": "_cAGbAswDhOqpoiiikPbD", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-mrqBxsNRl1CQEKtuYSy9Fz2-_cAGbAswDhOqpoiiikPbDy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "mrqBxsNRl1CQEKtuYSy9F", + "sourceHandle": "x2", + "target": "KEP_DmmmIbG5zdC0dj6a_", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-mrqBxsNRl1CQEKtuYSy9Fx2-KEP_DmmmIbG5zdC0dj6a_w1", + "selected": false, + "selectable": true, + "focusable": true + } + ] } \ No newline at end of file diff --git a/src/data/roadmaps/technical-writer/technical-writer.md b/src/data/roadmaps/technical-writer/technical-writer.md index c5b595508..a018f7478 100644 --- a/src/data/roadmaps/technical-writer/technical-writer.md +++ b/src/data/roadmaps/technical-writer/technical-writer.md @@ -1,6 +1,7 @@ --- pdfUrl: '/pdfs/roadmaps/technical-writer.pdf' order: 17 +renderer: 'editor' briefTitle: 'Technical Writer' briefDescription: 'Roadmap for anyone looking for a career in technical writing' title: 'Technical Writer' diff --git a/src/data/roadmaps/typescript/content/100-typescript/101-ts-js-interoperability.md b/src/data/roadmaps/typescript/content/100-typescript/101-ts-js-interoperability.md index 7fd2e6fd1..5ebc49286 100644 --- a/src/data/roadmaps/typescript/content/100-typescript/101-ts-js-interoperability.md +++ b/src/data/roadmaps/typescript/content/100-typescript/101-ts-js-interoperability.md @@ -5,3 +5,24 @@ TypeScript and JavaScript have full interoperability, meaning you can use TypeSc You can use JavaScript libraries in TypeScript projects by either including the JavaScript files directly or using type definitions for the library. Type definitions provide type information for JavaScript libraries, making it easier to use them in TypeScript. On the other hand, you can use TypeScript code in JavaScript projects by simply compiling the TypeScript code into JavaScript. The generated JavaScript code can be used in any JavaScript environment, and it will work the same way as regular JavaScript code. + +TypeScript's compiler also supports type checking for plain JavaScript code by adding the `// @ts-check` comment at the top of a file. This allows the compiler to validate types by inspecting the JSDoc comments: + +```typescript +// @ts-check + +/** + * Adds two numbers together. + * @param {number} a - The first number. + * @param {number} b - The second number. + * @returns {number} The sum of the two numbers. + */ +function add(a, b) { + return a + b; +} +``` + +Learn more from the following links: + +- [@article@Type Checking JavaScript Files](https://www.typescriptlang.org/docs/handbook/type-checking-javascript-files.html) +- [@video@Using JavaScript in TypeScript](https://youtu.be/AZhZlEbBaB4) diff --git a/src/data/roadmaps/ux-design/content/dual-process-theory@kWA8CvocP1pkom2N7O4gb.md b/src/data/roadmaps/ux-design/content/dual-process-theory@kWA8CvocP1pkom2N7O4gb.md index 23a4ae5c4..5882d9296 100644 --- a/src/data/roadmaps/ux-design/content/dual-process-theory@kWA8CvocP1pkom2N7O4gb.md +++ b/src/data/roadmaps/ux-design/content/dual-process-theory@kWA8CvocP1pkom2N7O4gb.md @@ -1,45 +1,25 @@ -# Spectrum of Thinking Interventions +# Dual Process Theory -The _Spectrum of Thinking Interventions_ provides a structure to guide your UX design process, helping you identify the types and range of thinking interventions that the user may require. This spectrum encompasses four primary categories: guidance, explanation, exploration, and creation. +The Dual Process Theory is a psychological concept that suggests that human thinking operates on two different levels – an intuitive, fast, and automatic level (known as System 1), as well as a more deliberate, slow, and logical level (System 2). In the context of UX design, understanding these two systems can help designers create user interfaces and experiences that cater to both types of thinking. -## Guidance +**System 1: Intuitive and Fast** -Guidance-based interventions are designed to help users navigate through a digital product or service with minimal effort. They may be aimed at full-fledged beginners, casual users, or experts in their respective domains. Such interventions may include signposts, tooltips, and clearly articulated labels. +- Relies on intuition, heuristics, and mental shortcuts +- Makes quick judgments based on emotions and past experiences +- Prone to errors and biases, but highly efficient for everyday tasks -_Examples:_ +**System 2: Deliberate and Slow** -- Visual cues (e.g., icons, colors) -- Signposting (e.g., breadcrumbs) -- In-context information (e.g., tool tips, hints) +- Involves conscious, controlled thinking and decision making +- Requires more mental effort and can handle complex problems +- Less prone to errors, but slower and more resource-intensive -## Explanation +In order to create user experiences that cater to both System 1 and System 2 thinking, UX designers should: -Explanation-based interventions provide users with detailed narratives, overviews, or background information that helps them make informed decisions. This may include tutorials, articles, videos, or any other mediums that help explain complex concepts or instructions. +- **Make tasks simple and intuitive**: Reduce cognitive load by simplifying tasks, using familiar patterns, and providing clear instructions. +- **Provide visual cues**: Use visual cues such as icons, colors, and typography to guide users through tasks, while promoting clarity and efficiency. +- **Minimize errors**: Design systems that help prevent errors by using constraints, providing feedback, and allowing users to undo their actions. +- **Accommodate different thinking styles**: Recognize that different users may approach tasks using different cognitive styles, and design experiences that cater to a range of preferences. +- **Test and iterate**: Continuously test your designs with real users, and iterate based on their feedback to ensure that your designs are catering to both System 1 and System 2 thinking. -_Examples:_ - -- Multimedia tutorials -- Articles or blog posts -- Infographics or diagrams - -## Exploration - -Exploration-based interventions encourage users to understand and interact with the product by investigating, asking questions, or searching for solutions on their own. This can be done by providing interactive elements, multiple pathways, and opportunities for discovery. - -_Examples:_ - -- Interactive simulations or models -- Advanced search capabilities -- Multiple UI paths for task completion - -## Creation - -Creation-based interventions engage users by offering them the tools and resources to co-create or customize their experience. This type of intervention often involves a more extensive level of input and involvement from the user as they become active participants in the design process. - -_Examples:_ - -- Customizable user interfaces -- Allowing users to create their content -- Enabling users to manage their preferences, settings, and configurations - -With this spectrum in mind, it is essential as a UX designer to analyze which types of thinking interventions are most relevant to your target users and design the most accessible and effective solutions. Always consider how these interventions will influence users' decision-making processes and their overall satisfaction with your digital product or service. +By understanding the Dual Process Theory and designing for both types of cognitive processing, UX designers can create user experiences that are both delightful and efficient, ultimately leading to higher user satisfaction and engagement. \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/index.md b/src/data/roadmaps/vue/content/100-fundamental-topics/index.md deleted file mode 100644 index c1f407e9c..000000000 --- a/src/data/roadmaps/vue/content/100-fundamental-topics/index.md +++ /dev/null @@ -1,8 +0,0 @@ -# Fundamental Topics - -Vue is a JavaScript framework for building user interfaces. It builds on top of standard HTML, CSS and JavaScript, and provides a declarative and component-based programming model that helps you efficiently develop user interfaces, be it simple or complex. - -Visit the following resources to learn more: - -- [@article@Vue.js Official Website](https://vuejs.org/) -- [@article@Official Documentation](https://vuejs.org/guide/introduction.html) diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/100-ref.md b/src/data/roadmaps/vue/content/101-advanced-topics/100-ref.md deleted file mode 100644 index c9d3f9fb2..000000000 --- a/src/data/roadmaps/vue/content/101-advanced-topics/100-ref.md +++ /dev/null @@ -1,8 +0,0 @@ -# Ref - -`ref()` and `reactive()` are used to track changes of its argument. When using them to initialize variables you give Vue information: “Hey, I want you to re-build or re-evaluate everything that depends on those variables every time they change”. - -Visit the following resources to learn more: - -- [@article@Ref() vs Reactive() in Vue 3 — what’s the right choice?](https://medium.com/@bsalwiczek/ref-vs-reactive-in-vue-3-whats-the-right-choice-7c6f7265ce39) -- [@article@Reactivity API — ref](https://vuejs.org/api/reactivity-core.html#ref) diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/101-torefs.md b/src/data/roadmaps/vue/content/101-advanced-topics/101-torefs.md deleted file mode 100644 index 93a06647f..000000000 --- a/src/data/roadmaps/vue/content/101-advanced-topics/101-torefs.md +++ /dev/null @@ -1,8 +0,0 @@ -# toRefs - -`toRefs` converts a reactive object to a plain object where each property of the resulting object is a ref pointing to the corresponding property of the original object. Each individual ref is created using `toRef()`. - -Visit the following resources to learn more: - -- [@article@Reactivity API — toRefs](https://vuejs.org/api/reactivity-utilities.html#toref) -- [@video@Vue 3: Reactivity Made Easy (ref, reactive, toRefs... oh my!)](https://www.youtube.com/watch?v=sAj6tdVS2cA) diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/102-reactive.md b/src/data/roadmaps/vue/content/101-advanced-topics/102-reactive.md deleted file mode 100644 index 5a94c9cf9..000000000 --- a/src/data/roadmaps/vue/content/101-advanced-topics/102-reactive.md +++ /dev/null @@ -1,9 +0,0 @@ -# reactive - -`reactive` allows us to create reactive data structures. Reactive objects are [JavaScript Proxies](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) and behave just like normal objects. The difference is that Vue is able to track the property access and mutations of a reactive object. - -Visit the following resources to learn more: - -- [@article@Reactivity API — reactive](https://vuejs.org/api/reactivity-core.html#reactive) -- [@article@Diving into Vue 3 - The Reactivity API](https://developers.deepgram.com/blog/2022/02/diving-into-vue-3-reactivity-api/) -- [@feed@Explore top posts about General Programming](https://app.daily.dev/tags/general-programming?ref=roadmapsh) diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/102-toref.md b/src/data/roadmaps/vue/content/101-advanced-topics/102-toref.md deleted file mode 100644 index dca12df4f..000000000 --- a/src/data/roadmaps/vue/content/101-advanced-topics/102-toref.md +++ /dev/null @@ -1,9 +0,0 @@ -# toRef - -`toRef` just like `toRefs` converts a reactive object to a ref pointing to the corresponding property of the original object. The difference is that `toRef` converts a single property of the reactive object to a ref, while `toRefs` converts all properties of the reactive object to refs. - - -Visit the following resources to learn more: - -- [@article@Reactivity API — toRef](https://vuejs.org/api/reactivity-utilities.html#toref) -- [@video@Vue 3: Reactivity Made Easy (ref, reactive, toRefs... oh my!)](https://www.youtube.com/watch?v=sAj6tdVS2cA) diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/103-computed.md b/src/data/roadmaps/vue/content/101-advanced-topics/103-computed.md deleted file mode 100644 index bfa337271..000000000 --- a/src/data/roadmaps/vue/content/101-advanced-topics/103-computed.md +++ /dev/null @@ -1,7 +0,0 @@ -# computed - -`computed` takes a getter function and returns a readonly reactive `ref` object for the returned value from the getter. It can also take an object with `get` and `set` functions to create a writable ref object. - -Visit the following resources to learn more: - -- [@article@Reactivity Core — computed](https://vuejs.org/api/reactivity-core.html#computed) diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/104-watch.md b/src/data/roadmaps/vue/content/101-advanced-topics/104-watch.md deleted file mode 100644 index 76fbecdb3..000000000 --- a/src/data/roadmaps/vue/content/101-advanced-topics/104-watch.md +++ /dev/null @@ -1,8 +0,0 @@ -# watch - -`watch` watches one or more reactive data sources and invokes a callback function when the sources change. - -Visit the following resources to learn more: - -- [@article@Reactivity API — watch](https://vuejs.org/api/reactivity-core.html#watch) -- [@article@Understanding watchers in Vue](https://blog.logrocket.com/understanding-watchers-vue/) diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/105-next-tick.md b/src/data/roadmaps/vue/content/101-advanced-topics/105-next-tick.md deleted file mode 100644 index e8afd722a..000000000 --- a/src/data/roadmaps/vue/content/101-advanced-topics/105-next-tick.md +++ /dev/null @@ -1,7 +0,0 @@ -# nextTick - -`nextTick` is a utility for waiting for the next DOM update flush. - -Visit the following resources to learn more: - -- [@article@Global API — nextTick](https://vuejs.org/api/general.html#nexttick) diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/106-composables.md b/src/data/roadmaps/vue/content/101-advanced-topics/106-composables.md deleted file mode 100644 index 6c083a807..000000000 --- a/src/data/roadmaps/vue/content/101-advanced-topics/106-composables.md +++ /dev/null @@ -1,10 +0,0 @@ -# Composables - -In the context of Vue applications, a "composable" is a function that leverages Vue's Composition API to encapsulate and reuse stateful logic. - -When building frontend applications, we often need to reuse logic for common tasks. For example, we may need to format dates in many places, so we extract a reusable function for that. This formatter function encapsulates stateless logic: it takes some input and immediately returns expected output. There are many libraries out there for reusing stateless logic - for example lodash and date-fns, which you may have heard of. - -Visit the following resources to learn more: - -- [@article@Vue.js Composables](https://vuejs.org/guide/reusability/composables.html) -- [@video@What is a Composable? (Vue 3)](https://www.youtube.com/watch?v=h8yveYCbFQM) diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/111-custom-events.md b/src/data/roadmaps/vue/content/101-advanced-topics/111-custom-events.md deleted file mode 100644 index 4f265dc2b..000000000 --- a/src/data/roadmaps/vue/content/101-advanced-topics/111-custom-events.md +++ /dev/null @@ -1,7 +0,0 @@ -# Custom Events - -Sometimes you may need to define custom events that can be used in your components. Vue.js allows you to do this by emitting custom event objects using `$emit`. - -Visit the following resources to learn more: - -- [@article@Custom Events in Vue](https://auth0.com/blog/custom-events-in-vue/) diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/index.md b/src/data/roadmaps/vue/content/101-advanced-topics/index.md deleted file mode 100644 index 53e96801f..000000000 --- a/src/data/roadmaps/vue/content/101-advanced-topics/index.md +++ /dev/null @@ -1,3 +0,0 @@ -# Advanced Topics - -Now that you have covered the basics, next we have the advanced topics such as Async Components, Teleports, Provide/Inject, Custom Directives, Custom Events, Plugins, Watchers, Slots and more. diff --git a/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/101-vue-relay.md b/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/101-vue-relay.md deleted file mode 100644 index a8453ad9c..000000000 --- a/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/101-vue-relay.md +++ /dev/null @@ -1,9 +0,0 @@ -# Relay Modern - -Relay is a JavaScript client used in the browser to fetch GraphQL data. It's a JavaScript framework developed by Facebook for managing and fetching data in React applications. It is built with scalability in mind in order to power complex applications like Facebook. The ultimate goal of GraphQL and Relay is to deliver instant UI-response interactions. - -Visit the following resources to learn more: - -- [@official@Official Website](https://relay.dev/) -- [@official@Introduction to Relay modern](https://relay.dev/docs/) -- [@feed@Explore top posts about Vue.js](https://app.daily.dev/tags/vuejs?ref=roadmapsh) diff --git a/src/data/roadmaps/vue/content/102-ecosystem/index.md b/src/data/roadmaps/vue/content/102-ecosystem/index.md deleted file mode 100644 index 2c2f11ec8..000000000 --- a/src/data/roadmaps/vue/content/102-ecosystem/index.md +++ /dev/null @@ -1,7 +0,0 @@ -# Ecosystem - -Thanks to its popularity, Vue has been enriched by a vast ecosystem of plugins and tools. A (long) list is available here: [awesome-vue](https://github.com/vuejs/awesome-vue). - -Visit the following resources to learn more: - -- [@opensource@Awesome Vue.js](https://github.com/vuejs/awesome-vue) diff --git a/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/index.md b/src/data/roadmaps/vue/content/api-calls@ZLlz0Azfze-8k3z8HnVvE.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/index.md rename to src/data/roadmaps/vue/content/api-calls@ZLlz0Azfze-8k3z8HnVvE.md diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/104-api-styles/index.md b/src/data/roadmaps/vue/content/api-styles@OpJ2NMKCGXQezpzURE45R.md similarity index 100% rename from src/data/roadmaps/vue/content/100-fundamental-topics/104-api-styles/index.md rename to src/data/roadmaps/vue/content/api-styles@OpJ2NMKCGXQezpzURE45R.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/100-apollo.md b/src/data/roadmaps/vue/content/apollo@l2Rl6OQbL7kYvPlpYCZ0Z.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/100-apollo.md rename to src/data/roadmaps/vue/content/apollo@l2Rl6OQbL7kYvPlpYCZ0Z.md diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/105-app-configurations.md b/src/data/roadmaps/vue/content/app-configurations@qRm08uDZW-D8QDc-9sPX8.md similarity index 100% rename from src/data/roadmaps/vue/content/100-fundamental-topics/105-app-configurations.md rename to src/data/roadmaps/vue/content/app-configurations@qRm08uDZW-D8QDc-9sPX8.md diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/107-async-components.md b/src/data/roadmaps/vue/content/async-components@Re7tv1U0LxYqE5ShFxQSf.md similarity index 100% rename from src/data/roadmaps/vue/content/101-advanced-topics/107-async-components.md rename to src/data/roadmaps/vue/content/async-components@Re7tv1U0LxYqE5ShFxQSf.md diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/104-attribute-inheritance.md b/src/data/roadmaps/vue/content/attribute-inheritance@4S5fVFsFDMbq05ld7n0sF.md similarity index 100% rename from src/data/roadmaps/vue/content/100-fundamental-topics/101-components/104-attribute-inheritance.md rename to src/data/roadmaps/vue/content/attribute-inheritance@4S5fVFsFDMbq05ld7n0sF.md diff --git a/src/data/roadmaps/react/content/108-api-calls/105-axios.md b/src/data/roadmaps/vue/content/axios@n5IlN-wv4k0r16CvhoSpD.md similarity index 84% rename from src/data/roadmaps/react/content/108-api-calls/105-axios.md rename to src/data/roadmaps/vue/content/axios@n5IlN-wv4k0r16CvhoSpD.md index a340549f5..4a4577741 100644 --- a/src/data/roadmaps/react/content/108-api-calls/105-axios.md +++ b/src/data/roadmaps/vue/content/axios@n5IlN-wv4k0r16CvhoSpD.md @@ -7,6 +7,5 @@ Axios is a client HTTP API based on the XMLHttpRequest interface provided by bro Visit the following resources to learn more: - [@article@Axios Getting Started](https://axios-http.com/docs/intro) -- [@article@How To Use Axios With React: The Definitive Guide](https://www.freecodecamp.org/news/how-to-use-axios-with-react/) - [@article@How to make HTTP requests with Axios](https://blog.logrocket.com/how-to-make-http-requests-like-a-pro-with-axios/#why) - [@feed@Explore top posts about Axios](https://app.daily.dev/tags/axios?ref=roadmapsh) diff --git a/src/data/roadmaps/vue/content/binding-events@b7iXwtUnELg_ShbCyTrNA.md b/src/data/roadmaps/vue/content/binding-events@b7iXwtUnELg_ShbCyTrNA.md new file mode 100644 index 000000000..1f412e238 --- /dev/null +++ b/src/data/roadmaps/vue/content/binding-events@b7iXwtUnELg_ShbCyTrNA.md @@ -0,0 +1 @@ +# Binding Events \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/102-ecosystem/105-mobile-apps/100-capacitor.md b/src/data/roadmaps/vue/content/capacitor@IsNzCdS05tbAK0D1zz0Sf.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/105-mobile-apps/100-capacitor.md rename to src/data/roadmaps/vue/content/capacitor@IsNzCdS05tbAK0D1zz0Sf.md diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/101-component-registration.md b/src/data/roadmaps/vue/content/component-registration@2HhKifjuDcP3eKpanRMEQ.md similarity index 100% rename from src/data/roadmaps/vue/content/100-fundamental-topics/101-components/101-component-registration.md rename to src/data/roadmaps/vue/content/component-registration@2HhKifjuDcP3eKpanRMEQ.md diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/index.md b/src/data/roadmaps/vue/content/components@0EevuyZiyty3X3Jzpjl4y.md similarity index 100% rename from src/data/roadmaps/vue/content/100-fundamental-topics/101-components/index.md rename to src/data/roadmaps/vue/content/components@0EevuyZiyty3X3Jzpjl4y.md diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/104-api-styles/101-composition-api.md b/src/data/roadmaps/vue/content/composition-api@a0qwdQTunxEjQ9A5wpF-q.md similarity index 100% rename from src/data/roadmaps/vue/content/100-fundamental-topics/104-api-styles/101-composition-api.md rename to src/data/roadmaps/vue/content/composition-api@a0qwdQTunxEjQ9A5wpF-q.md diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/111-computed-properties.md b/src/data/roadmaps/vue/content/computed-properties@Bx1Atxcf15AEaA1BiSIc6.md similarity index 100% rename from src/data/roadmaps/vue/content/100-fundamental-topics/111-computed-properties.md rename to src/data/roadmaps/vue/content/computed-properties@Bx1Atxcf15AEaA1BiSIc6.md diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/107-conditional-rendering.md b/src/data/roadmaps/vue/content/conditional-rendering@tU4Umtnfu01t9gLlnlK6b.md similarity index 100% rename from src/data/roadmaps/vue/content/100-fundamental-topics/107-conditional-rendering.md rename to src/data/roadmaps/vue/content/conditional-rendering@tU4Umtnfu01t9gLlnlK6b.md diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/100-create-vue.md b/src/data/roadmaps/vue/content/create-vue@y9ToYDix-koRbR6FLydFw.md similarity index 100% rename from src/data/roadmaps/vue/content/100-fundamental-topics/100-create-vue.md rename to src/data/roadmaps/vue/content/create-vue@y9ToYDix-koRbR6FLydFw.md diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/110-custom-directives.md b/src/data/roadmaps/vue/content/custom-directives@br1r8KIf5KInY5mk2xhA6.md similarity index 100% rename from src/data/roadmaps/vue/content/101-advanced-topics/110-custom-directives.md rename to src/data/roadmaps/vue/content/custom-directives@br1r8KIf5KInY5mk2xhA6.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/109-cypress.md b/src/data/roadmaps/vue/content/cypress@JbMKUVDMUygjXXmhndHVs.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/109-cypress.md rename to src/data/roadmaps/vue/content/cypress@JbMKUVDMUygjXXmhndHVs.md diff --git a/src/data/roadmaps/vue/content/debugging@dxwKfBxd5KYVkfEPMdHp-.md b/src/data/roadmaps/vue/content/debugging@dxwKfBxd5KYVkfEPMdHp-.md new file mode 100644 index 000000000..948532978 --- /dev/null +++ b/src/data/roadmaps/vue/content/debugging@dxwKfBxd5KYVkfEPMdHp-.md @@ -0,0 +1 @@ +# Debugging \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/103-directives.md b/src/data/roadmaps/vue/content/directives@CGdw3PqLRb9OqFU5SqmE1.md similarity index 100% rename from src/data/roadmaps/vue/content/100-fundamental-topics/103-directives.md rename to src/data/roadmaps/vue/content/directives@CGdw3PqLRb9OqFU5SqmE1.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/112-element-ui.md b/src/data/roadmaps/vue/content/element-ui@NMIh8rqLM5P-Uk65uHATn.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/112-element-ui.md rename to src/data/roadmaps/vue/content/element-ui@NMIh8rqLM5P-Uk65uHATn.md diff --git a/src/data/roadmaps/vue/content/error--warn-handler@1oIt_5OK-t2WaCgaYt9A8.md b/src/data/roadmaps/vue/content/error--warn-handler@1oIt_5OK-t2WaCgaYt9A8.md new file mode 100644 index 000000000..054279f68 --- /dev/null +++ b/src/data/roadmaps/vue/content/error--warn-handler@1oIt_5OK-t2WaCgaYt9A8.md @@ -0,0 +1 @@ +# Error / Warn Handler \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/110-events-handling.md b/src/data/roadmaps/vue/content/event-handling@4p6Gh2fMPA8hls_mWa5HR.md similarity index 100% rename from src/data/roadmaps/vue/content/100-fundamental-topics/110-events-handling.md rename to src/data/roadmaps/vue/content/event-handling@4p6Gh2fMPA8hls_mWa5HR.md diff --git a/src/data/roadmaps/vue/content/event-modifiers@Aaf7eA-5sbAD5Cs1MbdTQ.md b/src/data/roadmaps/vue/content/event-modifiers@Aaf7eA-5sbAD5Cs1MbdTQ.md new file mode 100644 index 000000000..9b0a49522 --- /dev/null +++ b/src/data/roadmaps/vue/content/event-modifiers@Aaf7eA-5sbAD5Cs1MbdTQ.md @@ -0,0 +1 @@ +# Event Modifiers \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/103-events.md b/src/data/roadmaps/vue/content/events@X0J3ogH3W8EQe68tLfcGL.md similarity index 100% rename from src/data/roadmaps/vue/content/100-fundamental-topics/101-components/103-events.md rename to src/data/roadmaps/vue/content/events@X0J3ogH3W8EQe68tLfcGL.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/103-fetch.md b/src/data/roadmaps/vue/content/fetch@ufnt87swK61kxShLuVc1-.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/103-fetch.md rename to src/data/roadmaps/vue/content/fetch@ufnt87swK61kxShLuVc1-.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/101-forms/100-formkit.md b/src/data/roadmaps/vue/content/formkit@BXz1utB_2eYzFvzSbFKx0.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/101-forms/100-formkit.md rename to src/data/roadmaps/vue/content/formkit@BXz1utB_2eYzFvzSbFKx0.md diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/109-forms-handling.md b/src/data/roadmaps/vue/content/forms-handling@PQu4TyJOfCEaafW5th0e4.md similarity index 100% rename from src/data/roadmaps/vue/content/100-fundamental-topics/109-forms-handling.md rename to src/data/roadmaps/vue/content/forms-handling@PQu4TyJOfCEaafW5th0e4.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/101-forms/index.md b/src/data/roadmaps/vue/content/forms@izGdctxP_OvQNvaMwVIrh.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/101-forms/index.md rename to src/data/roadmaps/vue/content/forms@izGdctxP_OvQNvaMwVIrh.md diff --git a/src/data/roadmaps/vue/content/global-properties@gihxGgt177BK_EYsAfpx9.md b/src/data/roadmaps/vue/content/global-properties@gihxGgt177BK_EYsAfpx9.md new file mode 100644 index 000000000..7a7ed3b48 --- /dev/null +++ b/src/data/roadmaps/vue/content/global-properties@gihxGgt177BK_EYsAfpx9.md @@ -0,0 +1 @@ +# Global Properties \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/inline--method-handlers@gVahaZNPktQuqdukFEbQH.md b/src/data/roadmaps/vue/content/inline--method-handlers@gVahaZNPktQuqdukFEbQH.md new file mode 100644 index 000000000..c23dfd5d7 --- /dev/null +++ b/src/data/roadmaps/vue/content/inline--method-handlers@gVahaZNPktQuqdukFEbQH.md @@ -0,0 +1 @@ +# Inline / Method Handlers \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/input-bindings@NfB3HlZ3uwYK5xszvV50b.md b/src/data/roadmaps/vue/content/input-bindings@NfB3HlZ3uwYK5xszvV50b.md new file mode 100644 index 000000000..aebef9958 --- /dev/null +++ b/src/data/roadmaps/vue/content/input-bindings@NfB3HlZ3uwYK5xszvV50b.md @@ -0,0 +1 @@ +# Input Bindings \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/key-modifiers@BXw36wqhmi3gExXwFCIBd.md b/src/data/roadmaps/vue/content/key-modifiers@BXw36wqhmi3gExXwFCIBd.md new file mode 100644 index 000000000..00be7c3c7 --- /dev/null +++ b/src/data/roadmaps/vue/content/key-modifiers@BXw36wqhmi3gExXwFCIBd.md @@ -0,0 +1 @@ +# Key Modifiers \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/108-lifecycle-hooks.md b/src/data/roadmaps/vue/content/lifecycle-hooks@WiGG9_4G5y-AVA9byw6_g.md similarity index 100% rename from src/data/roadmaps/vue/content/100-fundamental-topics/108-lifecycle-hooks.md rename to src/data/roadmaps/vue/content/lifecycle-hooks@WiGG9_4G5y-AVA9byw6_g.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/105-mobile-apps/index.md b/src/data/roadmaps/vue/content/mobile-apps@3RwIO-S8-xOYKNmfwk0pf.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/105-mobile-apps/index.md rename to src/data/roadmaps/vue/content/mobile-apps@3RwIO-S8-xOYKNmfwk0pf.md diff --git a/src/data/roadmaps/vue/content/modifiers@dSfrFLr8wKkLAOMJwtCTr.md b/src/data/roadmaps/vue/content/modifiers@dSfrFLr8wKkLAOMJwtCTr.md new file mode 100644 index 000000000..4526d9635 --- /dev/null +++ b/src/data/roadmaps/vue/content/modifiers@dSfrFLr8wKkLAOMJwtCTr.md @@ -0,0 +1 @@ +# Modifiers \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/mouse-button-modifiers@x0wl2Qz2LTP4Q2tThKAt3.md b/src/data/roadmaps/vue/content/mouse-button-modifiers@x0wl2Qz2LTP4Q2tThKAt3.md new file mode 100644 index 000000000..ba68ba00c --- /dev/null +++ b/src/data/roadmaps/vue/content/mouse-button-modifiers@x0wl2Qz2LTP4Q2tThKAt3.md @@ -0,0 +1 @@ +# Mouse Button Modifiers \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/102-ecosystem/102-ssr/101-nuxt-js.md b/src/data/roadmaps/vue/content/nuxtjs@8xZxTLYq5m5_nkGh2lfUt.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/102-ssr/101-nuxt-js.md rename to src/data/roadmaps/vue/content/nuxtjs@8xZxTLYq5m5_nkGh2lfUt.md diff --git a/src/data/roadmaps/vue/content/optimizing-renders@RRPhAxIqvAcjZIcLe_N8-.md b/src/data/roadmaps/vue/content/optimizing-renders@RRPhAxIqvAcjZIcLe_N8-.md new file mode 100644 index 000000000..46ec87efe --- /dev/null +++ b/src/data/roadmaps/vue/content/optimizing-renders@RRPhAxIqvAcjZIcLe_N8-.md @@ -0,0 +1 @@ +# Optimizing Renders \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/104-api-styles/100-options-api.md b/src/data/roadmaps/vue/content/options-api@PPUU3Rb73aCpT4zcyvlJE.md similarity index 100% rename from src/data/roadmaps/vue/content/100-fundamental-topics/104-api-styles/100-options-api.md rename to src/data/roadmaps/vue/content/options-api@PPUU3Rb73aCpT4zcyvlJE.md diff --git a/src/data/roadmaps/vue/content/performance@f7N4pAp_jBlT8_8owAcbG.md b/src/data/roadmaps/vue/content/performance@f7N4pAp_jBlT8_8owAcbG.md new file mode 100644 index 000000000..55cb80a3a --- /dev/null +++ b/src/data/roadmaps/vue/content/performance@f7N4pAp_jBlT8_8owAcbG.md @@ -0,0 +1 @@ +# Performance \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/102-ecosystem/104-state-management/100-pinia.md b/src/data/roadmaps/vue/content/pinia@NIvjyhtTFC1gomtGQT_2t.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/104-state-management/100-pinia.md rename to src/data/roadmaps/vue/content/pinia@NIvjyhtTFC1gomtGQT_2t.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/110-playwright.md b/src/data/roadmaps/vue/content/playwright@zqcE3bTnymdepV-Yc8qBl.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/110-playwright.md rename to src/data/roadmaps/vue/content/playwright@zqcE3bTnymdepV-Yc8qBl.md diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/112-plugins.md b/src/data/roadmaps/vue/content/plugins@_Nc8ivQrdpKuf8MwaV-K7.md similarity index 100% rename from src/data/roadmaps/vue/content/101-advanced-topics/112-plugins.md rename to src/data/roadmaps/vue/content/plugins@_Nc8ivQrdpKuf8MwaV-K7.md diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/102-props.md b/src/data/roadmaps/vue/content/props@raEfI4GLMW2fOucka07VE.md similarity index 100% rename from src/data/roadmaps/vue/content/100-fundamental-topics/101-components/102-props.md rename to src/data/roadmaps/vue/content/props@raEfI4GLMW2fOucka07VE.md diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/109-provide-inject.md b/src/data/roadmaps/vue/content/provide--inject@xwVbhOpQMPPB4G-lhro0B.md similarity index 100% rename from src/data/roadmaps/vue/content/101-advanced-topics/109-provide-inject.md rename to src/data/roadmaps/vue/content/provide--inject@xwVbhOpQMPPB4G-lhro0B.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/102-ssr/100-quasar.md b/src/data/roadmaps/vue/content/quasar@f2udJnT2q5eDmBZ_OKtmi.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/102-ssr/100-quasar.md rename to src/data/roadmaps/vue/content/quasar@f2udJnT2q5eDmBZ_OKtmi.md diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/106-rendering-lists.md b/src/data/roadmaps/vue/content/rendering-lists@ftqDoGpwqqWQnu4NQSsMk.md similarity index 100% rename from src/data/roadmaps/vue/content/100-fundamental-topics/106-rendering-lists.md rename to src/data/roadmaps/vue/content/rendering-lists@ftqDoGpwqqWQnu4NQSsMk.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/100-routing/index.md b/src/data/roadmaps/vue/content/routing@ixRG0xfEp4BmyvCR0mtoR.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/100-routing/index.md rename to src/data/roadmaps/vue/content/routing@ixRG0xfEp4BmyvCR0mtoR.md diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/100-single-file-components.md b/src/data/roadmaps/vue/content/single-file-components@VNBRlJkdH6NOOzGXUrbZK.md similarity index 100% rename from src/data/roadmaps/vue/content/100-fundamental-topics/101-components/100-single-file-components.md rename to src/data/roadmaps/vue/content/single-file-components@VNBRlJkdH6NOOzGXUrbZK.md diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/114-slots.md b/src/data/roadmaps/vue/content/slots@jkX66izOHVWqtyd6KZ0K6.md similarity index 100% rename from src/data/roadmaps/vue/content/101-advanced-topics/114-slots.md rename to src/data/roadmaps/vue/content/slots@jkX66izOHVWqtyd6KZ0K6.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/103-ssg/index.md b/src/data/roadmaps/vue/content/ssg@822tGnM9jOkYh9aNlosPr.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/103-ssg/index.md rename to src/data/roadmaps/vue/content/ssg@822tGnM9jOkYh9aNlosPr.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/102-ssr/index.md b/src/data/roadmaps/vue/content/ssr@Cm6mqXYp-G4mGfPxuU73_.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/102-ssr/index.md rename to src/data/roadmaps/vue/content/ssr@Cm6mqXYp-G4mGfPxuU73_.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/104-state-management/index.md b/src/data/roadmaps/vue/content/state-management@9AwVtwIv6TfP9F4ulz2F0.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/104-state-management/index.md rename to src/data/roadmaps/vue/content/state-management@9AwVtwIv6TfP9F4ulz2F0.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/110-tailwind-css.md b/src/data/roadmaps/vue/content/tailwind-css@TkzlmJ85O-e-KfMhTBwry.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/110-tailwind-css.md rename to src/data/roadmaps/vue/content/tailwind-css@TkzlmJ85O-e-KfMhTBwry.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/104-tanstack-query.md b/src/data/roadmaps/vue/content/tanstack-query@WSq_cDKQPZa_qmQlIdGXg.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/106-api-calls/104-tanstack-query.md rename to src/data/roadmaps/vue/content/tanstack-query@WSq_cDKQPZa_qmQlIdGXg.md diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/108-teleport-components.md b/src/data/roadmaps/vue/content/teleport-components@SGsd08ZTu4H76s8cfbCKe.md similarity index 100% rename from src/data/roadmaps/vue/content/101-advanced-topics/108-teleport-components.md rename to src/data/roadmaps/vue/content/teleport-components@SGsd08ZTu4H76s8cfbCKe.md diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/102-templates.md b/src/data/roadmaps/vue/content/templates@VlcYnTHW5d4J_zLYupvu5.md similarity index 100% rename from src/data/roadmaps/vue/content/100-fundamental-topics/102-templates.md rename to src/data/roadmaps/vue/content/templates@VlcYnTHW5d4J_zLYupvu5.md diff --git a/src/data/roadmaps/vue/content/topic-node@B36yB4jsgSbTrf8g-R5Z1.md b/src/data/roadmaps/vue/content/topic-node@B36yB4jsgSbTrf8g-R5Z1.md new file mode 100644 index 000000000..59f1a30d4 --- /dev/null +++ b/src/data/roadmaps/vue/content/topic-node@B36yB4jsgSbTrf8g-R5Z1.md @@ -0,0 +1 @@ +# topic node \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/116-transition-group.md b/src/data/roadmaps/vue/content/transition-group@HjzOYjS-7ZEBvElRJ8uN2.md similarity index 100% rename from src/data/roadmaps/vue/content/101-advanced-topics/116-transition-group.md rename to src/data/roadmaps/vue/content/transition-group@HjzOYjS-7ZEBvElRJ8uN2.md diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/115-transition.md b/src/data/roadmaps/vue/content/transition@SWpWg5J5N9ZfY_DaIigA5.md similarity index 100% rename from src/data/roadmaps/vue/content/101-advanced-topics/115-transition.md rename to src/data/roadmaps/vue/content/transition@SWpWg5J5N9ZfY_DaIigA5.md diff --git a/src/data/roadmaps/vue/content/v-bind@cuM9q9vYy8JpZPGeBffd1.md b/src/data/roadmaps/vue/content/v-bind@cuM9q9vYy8JpZPGeBffd1.md new file mode 100644 index 000000000..ef258b0ed --- /dev/null +++ b/src/data/roadmaps/vue/content/v-bind@cuM9q9vYy8JpZPGeBffd1.md @@ -0,0 +1 @@ +# v-bind \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/v-cloak@RrSekP8Ub01coegMwLP6a.md b/src/data/roadmaps/vue/content/v-cloak@RrSekP8Ub01coegMwLP6a.md new file mode 100644 index 000000000..733c98f6f --- /dev/null +++ b/src/data/roadmaps/vue/content/v-cloak@RrSekP8Ub01coegMwLP6a.md @@ -0,0 +1 @@ +# v-cloak \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/v-else-if@a9caVhderJaVo0v14w8WB.md b/src/data/roadmaps/vue/content/v-else-if@a9caVhderJaVo0v14w8WB.md new file mode 100644 index 000000000..ada0725f1 --- /dev/null +++ b/src/data/roadmaps/vue/content/v-else-if@a9caVhderJaVo0v14w8WB.md @@ -0,0 +1 @@ +# v-else-if \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/v-else@0CtAZQcFJexMiJfZ-mofv.md b/src/data/roadmaps/vue/content/v-else@0CtAZQcFJexMiJfZ-mofv.md new file mode 100644 index 000000000..6b401a36d --- /dev/null +++ b/src/data/roadmaps/vue/content/v-else@0CtAZQcFJexMiJfZ-mofv.md @@ -0,0 +1 @@ +# v-else \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/v-for@3ftwRjQ9e1-qDT9BV53zr.md b/src/data/roadmaps/vue/content/v-for@3ftwRjQ9e1-qDT9BV53zr.md new file mode 100644 index 000000000..8028a2c52 --- /dev/null +++ b/src/data/roadmaps/vue/content/v-for@3ftwRjQ9e1-qDT9BV53zr.md @@ -0,0 +1 @@ +# v-for \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/v-html@bZxtIBeIfeUcR32LZWrPW.md b/src/data/roadmaps/vue/content/v-html@bZxtIBeIfeUcR32LZWrPW.md new file mode 100644 index 000000000..fa347fda9 --- /dev/null +++ b/src/data/roadmaps/vue/content/v-html@bZxtIBeIfeUcR32LZWrPW.md @@ -0,0 +1 @@ +# v-html \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/v-if@xHj3W9Ig3MVuVlGyXchaP.md b/src/data/roadmaps/vue/content/v-if@xHj3W9Ig3MVuVlGyXchaP.md new file mode 100644 index 000000000..00153096d --- /dev/null +++ b/src/data/roadmaps/vue/content/v-if@xHj3W9Ig3MVuVlGyXchaP.md @@ -0,0 +1 @@ +# v-if \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/v-model@cxu2Wbt306SxM4JKQQqnL.md b/src/data/roadmaps/vue/content/v-model@cxu2Wbt306SxM4JKQQqnL.md new file mode 100644 index 000000000..4176c1cc5 --- /dev/null +++ b/src/data/roadmaps/vue/content/v-model@cxu2Wbt306SxM4JKQQqnL.md @@ -0,0 +1 @@ +# v-model \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/v-model@gMFndBcrTC6FtGryqN6dX.md b/src/data/roadmaps/vue/content/v-model@gMFndBcrTC6FtGryqN6dX.md new file mode 100644 index 000000000..4176c1cc5 --- /dev/null +++ b/src/data/roadmaps/vue/content/v-model@gMFndBcrTC6FtGryqN6dX.md @@ -0,0 +1 @@ +# v-model \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/100-fundamental-topics/101-components/105-v-model.md b/src/data/roadmaps/vue/content/v-model@swpyZFUO4UO3mW8Bvf1Te.md similarity index 100% rename from src/data/roadmaps/vue/content/100-fundamental-topics/101-components/105-v-model.md rename to src/data/roadmaps/vue/content/v-model@swpyZFUO4UO3mW8Bvf1Te.md diff --git a/src/data/roadmaps/vue/content/v-on@hVuRmhXVP65IPtuHTORjJ.md b/src/data/roadmaps/vue/content/v-on@hVuRmhXVP65IPtuHTORjJ.md new file mode 100644 index 000000000..0384ba65f --- /dev/null +++ b/src/data/roadmaps/vue/content/v-on@hVuRmhXVP65IPtuHTORjJ.md @@ -0,0 +1 @@ +# v-on \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/v-once@5k9CrbzhNy9iiS6ez2UE6.md b/src/data/roadmaps/vue/content/v-once@5k9CrbzhNy9iiS6ez2UE6.md new file mode 100644 index 000000000..32cf19dd5 --- /dev/null +++ b/src/data/roadmaps/vue/content/v-once@5k9CrbzhNy9iiS6ez2UE6.md @@ -0,0 +1 @@ +# v-once \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/v-pre@mlsrhioiEkqnRIL6O3hNa.md b/src/data/roadmaps/vue/content/v-pre@mlsrhioiEkqnRIL6O3hNa.md new file mode 100644 index 000000000..6c58998f0 --- /dev/null +++ b/src/data/roadmaps/vue/content/v-pre@mlsrhioiEkqnRIL6O3hNa.md @@ -0,0 +1 @@ +# v-pre \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/v-show@_TlbGTKFCMO0wdLbC6xHX.md b/src/data/roadmaps/vue/content/v-show@_TlbGTKFCMO0wdLbC6xHX.md new file mode 100644 index 000000000..57b1b013b --- /dev/null +++ b/src/data/roadmaps/vue/content/v-show@_TlbGTKFCMO0wdLbC6xHX.md @@ -0,0 +1 @@ +# v-show \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/v-slot@m9pQ3daR3KiwRATcQysHA.md b/src/data/roadmaps/vue/content/v-slot@m9pQ3daR3KiwRATcQysHA.md new file mode 100644 index 000000000..a72872956 --- /dev/null +++ b/src/data/roadmaps/vue/content/v-slot@m9pQ3daR3KiwRATcQysHA.md @@ -0,0 +1 @@ +# v-slot \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/v-text@NCIzs3jbQTv1xXhAaGfZN.md b/src/data/roadmaps/vue/content/v-text@NCIzs3jbQTv1xXhAaGfZN.md new file mode 100644 index 000000000..2665e99c3 --- /dev/null +++ b/src/data/roadmaps/vue/content/v-text@NCIzs3jbQTv1xXhAaGfZN.md @@ -0,0 +1 @@ +# v-text \ No newline at end of file diff --git a/src/data/roadmaps/vue/content/102-ecosystem/101-forms/101-vee-validate.md b/src/data/roadmaps/vue/content/vee-validate@_Fmp8_z4SKWfKUE80_fqb.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/101-forms/101-vee-validate.md rename to src/data/roadmaps/vue/content/vee-validate@_Fmp8_z4SKWfKUE80_fqb.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/103-ssg/100-vitepress.md b/src/data/roadmaps/vue/content/vitepress@_46COO0FGaFuCYwqaRRWy.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/103-ssg/100-vitepress.md rename to src/data/roadmaps/vue/content/vitepress@_46COO0FGaFuCYwqaRRWy.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/107-vitest.md b/src/data/roadmaps/vue/content/vitest@LjEAviRMtPLwUUlfcof1h.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/107-vitest.md rename to src/data/roadmaps/vue/content/vitest@LjEAviRMtPLwUUlfcof1h.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/100-routing/100-vue-router.md b/src/data/roadmaps/vue/content/vue-router@COxkmvqe9jFtV9WtGjfbh.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/100-routing/100-vue-router.md rename to src/data/roadmaps/vue/content/vue-router@COxkmvqe9jFtV9WtGjfbh.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/108-vue-testing-library.md b/src/data/roadmaps/vue/content/vue-testing-library@p5bUvgr_3H-A55ZnEExk8.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/108-vue-testing-library.md rename to src/data/roadmaps/vue/content/vue-testing-library@p5bUvgr_3H-A55ZnEExk8.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/101-forms/102-vuelidate.md b/src/data/roadmaps/vue/content/vuelidate@6U_CAhAY_jyj_4Mzj_HL_.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/101-forms/102-vuelidate.md rename to src/data/roadmaps/vue/content/vuelidate@6U_CAhAY_jyj_4Mzj_HL_.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/111-vuetify.md b/src/data/roadmaps/vue/content/vuetify@VNclt_QQthWb2u4xWI_uY.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/111-vuetify.md rename to src/data/roadmaps/vue/content/vuetify@VNclt_QQthWb2u4xWI_uY.md diff --git a/src/data/roadmaps/vue/content/102-ecosystem/113-vueuse.md b/src/data/roadmaps/vue/content/vueuse@Z9szBPFXfqK_KsvzkR-rf.md similarity index 100% rename from src/data/roadmaps/vue/content/102-ecosystem/113-vueuse.md rename to src/data/roadmaps/vue/content/vueuse@Z9szBPFXfqK_KsvzkR-rf.md diff --git a/src/data/roadmaps/vue/content/101-advanced-topics/113-watchers.md b/src/data/roadmaps/vue/content/watchers@kdlXhbw_a81xdZtyK-pVa.md similarity index 100% rename from src/data/roadmaps/vue/content/101-advanced-topics/113-watchers.md rename to src/data/roadmaps/vue/content/watchers@kdlXhbw_a81xdZtyK-pVa.md diff --git a/src/data/roadmaps/vue/migration-mapping.json b/src/data/roadmaps/vue/migration-mapping.json new file mode 100644 index 000000000..9b0545879 --- /dev/null +++ b/src/data/roadmaps/vue/migration-mapping.json @@ -0,0 +1,59 @@ +{ + "fundamental-topics:create-vue": "y9ToYDix-koRbR6FLydFw", + "fundamental-topics:components": "0EevuyZiyty3X3Jzpjl4y", + "fundamental-topics:components:single-file-components": "VNBRlJkdH6NOOzGXUrbZK", + "fundamental-topics:components:component-registration": "2HhKifjuDcP3eKpanRMEQ", + "fundamental-topics:components:props": "raEfI4GLMW2fOucka07VE", + "fundamental-topics:components:events": "X0J3ogH3W8EQe68tLfcGL", + "fundamental-topics:components:v-model": "swpyZFUO4UO3mW8Bvf1Te", + "fundamental-topics:components:attribute-inheritance": "4S5fVFsFDMbq05ld7n0sF", + "fundamental-topics:templates": "VlcYnTHW5d4J_zLYupvu5", + "fundamental-topics:directives": "CGdw3PqLRb9OqFU5SqmE1", + "fundamental-topics:api-styles": "OpJ2NMKCGXQezpzURE45R", + "fundamental-topics:api-styles:options-api": "PPUU3Rb73aCpT4zcyvlJE", + "fundamental-topics:api-styles:composition-api": "a0qwdQTunxEjQ9A5wpF-q", + "fundamental-topics:app-configurations": "qRm08uDZW-D8QDc-9sPX8", + "fundamental-topics:rendering-lists": "ftqDoGpwqqWQnu4NQSsMk", + "fundamental-topics:conditional-rendering": "tU4Umtnfu01t9gLlnlK6b", + "fundamental-topics:lifecycle-hooks": "WiGG9_4G5y-AVA9byw6_g", + "fundamental-topics:forms-handling": "PQu4TyJOfCEaafW5th0e4", + "fundamental-topics:events-handling": "4p6Gh2fMPA8hls_mWa5HR", + "fundamental-topics:computed-properties": "Bx1Atxcf15AEaA1BiSIc6", + "advanced-topics:async-components": "Re7tv1U0LxYqE5ShFxQSf", + "advanced-topics:teleport-components": "SGsd08ZTu4H76s8cfbCKe", + "advanced-topics:provide-inject": "xwVbhOpQMPPB4G-lhro0B", + "advanced-topics:custom-directives": "br1r8KIf5KInY5mk2xhA6", + "advanced-topics:plugins": "_Nc8ivQrdpKuf8MwaV-K7", + "advanced-topics:watchers": "kdlXhbw_a81xdZtyK-pVa", + "advanced-topics:slots": "jkX66izOHVWqtyd6KZ0K6", + "advanced-topics:transition": "SWpWg5J5N9ZfY_DaIigA5", + "advanced-topics:transition-group": "HjzOYjS-7ZEBvElRJ8uN2", + "ecosystem:vueuse": "Z9szBPFXfqK_KsvzkR-rf", + "ecosystem:routing:vue-router": "COxkmvqe9jFtV9WtGjfbh", + "ecosystem:routing": "ixRG0xfEp4BmyvCR0mtoR", + "ecosystem:forms": "izGdctxP_OvQNvaMwVIrh", + "ecosystem:forms:formkit": "BXz1utB_2eYzFvzSbFKx0", + "ecosystem:forms:vee-validate": "_Fmp8_z4SKWfKUE80_fqb", + "ecosystem:forms:vuelidate": "6U_CAhAY_jyj_4Mzj_HL_", + "ecosystem:ssr": "Cm6mqXYp-G4mGfPxuU73_", + "ecosystem:ssg": "822tGnM9jOkYh9aNlosPr", + "ecosystem:ssr:quasar": "f2udJnT2q5eDmBZ_OKtmi", + "ecosystem:ssr:nuxt-js": "8xZxTLYq5m5_nkGh2lfUt", + "ecosystem:ssg:vitepress": "_46COO0FGaFuCYwqaRRWy", + "ecosystem:vitest": "LjEAviRMtPLwUUlfcof1h", + "ecosystem:vue-testing-library": "p5bUvgr_3H-A55ZnEExk8", + "ecosystem:cypress": "JbMKUVDMUygjXXmhndHVs", + "ecosystem:playwright": "zqcE3bTnymdepV-Yc8qBl", + "ecosystem:tailwind-css": "TkzlmJ85O-e-KfMhTBwry", + "ecosystem:vuetify": "VNclt_QQthWb2u4xWI_uY", + "ecosystem:element-ui": "NMIh8rqLM5P-Uk65uHATn", + "ecosystem:state-management": "9AwVtwIv6TfP9F4ulz2F0", + "ecosystem:state-management:pinia": "NIvjyhtTFC1gomtGQT_2t", + "ecosystem:mobile-apps": "3RwIO-S8-xOYKNmfwk0pf", + "ecosystem:mobile-apps:capacitor": "IsNzCdS05tbAK0D1zz0Sf", + "ecosystem:api-calls": "ZLlz0Azfze-8k3z8HnVvE", + "ecosystem:api-calls:apollo": "l2Rl6OQbL7kYvPlpYCZ0Z", + "ecosystem:api-calls:axios": "n5IlN-wv4k0r16CvhoSpD", + "ecosystem:api-calls:fetch": "ufnt87swK61kxShLuVc1-", + "ecosystem:api-calls:tanstack-query": "WSq_cDKQPZa_qmQlIdGXg" +} \ No newline at end of file diff --git a/src/data/roadmaps/vue/vue.json b/src/data/roadmaps/vue/vue.json index e13534478..38e6fe6ba 100644 --- a/src/data/roadmaps/vue/vue.json +++ b/src/data/roadmaps/vue/vue.json @@ -1,5046 +1,4730 @@ { - "mockup": { - "controls": { - "control": [ - { - "ID": "4689", - "typeID": "Arrow", - "zOrder": "4", - "w": "78", - "h": "51", - "measuredW": "150", - "measuredH": "100", - "x": "381", - "y": "1244", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 78, - "y": 50.5 - }, - "p1": { - "x": 0.5375000000000003, - "y": -0.025 - }, - "p2": { - "x": 0, - "y": -0.5 - } - } - }, - { - "ID": "4690", - "typeID": "Arrow", - "zOrder": "5", - "w": "160", - "h": "6", - "measuredW": "150", - "measuredH": "100", - "x": "861", - "y": "1222", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.40018141960843606, - "y": -0.010431627485070682 - }, - "p2": { - "x": 159.99273204480028, - "y": 5.748583784000175 - } - } - }, - { - "ID": "4691", - "typeID": "Arrow", - "zOrder": "6", - "w": "86", - "h": "3", - "measuredW": "150", - "measuredH": "100", - "x": "360", - "y": "1479", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 86, - "y": 2.5 - }, - "p1": { - "x": 0.5375000000000003, - "y": -0.025000000000000022 - }, - "p2": { - "x": -0.09070328959990093, - "y": 1.6732179504003852 - } - } - }, - { - "ID": "4692", - "typeID": "Arrow", - "zOrder": "7", - "w": "71", - "h": "253", - "measuredW": "150", - "measuredH": "100", - "x": "629", - "y": "1227", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 51, - "y": -0.5 - }, - "p1": { - "x": 0.6755987828830532, - "y": 0.20191197026423108 - }, - "p2": { - "x": 0, - "y": 252 - } - } - }, - { - "ID": "4693", - "typeID": "Arrow", - "zOrder": "8", - "w": "76", - "h": "3", - "measuredW": "150", - "measuredH": "100", - "x": "357", - "y": "1549", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 76, - "y": 2.5 - }, - "p1": { - "x": 0.5375000000000003, - "y": -0.025000000000000026 - }, - "p2": { - "x": 0.23284555520007189, - "y": 1.2609479856002963 - } - } - }, - { - "ID": "4694", - "typeID": "Arrow", - "zOrder": "9", - "w": "117", - "h": "389", - "measuredW": "150", - "measuredH": "100", - "x": "624", - "y": "1229", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 92, - "y": -0.5 - }, - "p1": { - "x": 0.675598782883057, - "y": 0.20191197026423305 - }, - "p2": { - "x": 0, - "y": 388 - } - } - }, - { - "ID": "4695", - "typeID": "Arrow", - "zOrder": "10", - "w": "58", - "h": "115", - "measuredW": "150", - "measuredH": "100", - "x": "535", - "y": "1237", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 114 - }, - "p1": { - "x": 0.3905730129390017, - "y": -0.10979667282809613 - }, - "p2": { - "x": 58, - "y": -0.5 - } - } - }, - { - "ID": "4696", - "typeID": "Arrow", - "zOrder": "11", - "w": "81", - "h": "49", - "measuredW": "150", - "measuredH": "100", - "x": "375", - "y": "1303", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 81, - "y": 48.5 - }, - "p1": { - "x": 0.5375000000000003, - "y": -0.025000000000000123 - }, - "p2": { - "x": 0, - "y": -0.5 - } - } - }, - { - "ID": "4698", - "typeID": "Arrow", - "zOrder": "12", - "w": "81", - "h": "3", - "measuredW": "150", - "measuredH": "100", - "x": "374", - "y": "1353", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 81, - "y": 1.5 - }, - "p1": { - "x": 0.5375000000000002, - "y": -0.02500000000000002 - }, - "p2": { - "x": 0, - "y": 2.5 - } - } - }, - { - "ID": "4699", - "typeID": "Arrow", - "zOrder": "13", - "w": "87", - "h": "4", - "measuredW": "150", - "measuredH": "100", - "x": "373", - "y": "1296", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 87, - "y": 4.5 - }, - "p1": { - "x": 0.5375000000000003, - "y": -0.025000000000000022 - }, - "p2": { - "x": 0, - "y": 1.5 - } - } - }, - { - "ID": "4700", - "typeID": "Arrow", - "zOrder": "14", - "w": "78", - "h": "4", - "measuredW": "150", - "measuredH": "100", - "x": "378", - "y": "1136", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 78, - "y": 4 - }, - "p1": { - "x": 0.5375000000000001, - "y": -0.025000000000000005 - }, - "p2": { - "x": 0, - "y": 0.5 - } - } - }, - { - "ID": "4701", - "typeID": "Arrow", - "zOrder": "15", - "w": "82", - "h": "79", - "measuredW": "150", - "measuredH": "100", - "x": "505", - "y": "1147", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 82, - "y": 78.5 - }, - "p1": { - "x": 0.6030918077610684, - "y": 0.1775581028499316 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "4702", - "typeID": "Arrow", - "zOrder": "16", - "w": "1", - "h": "78", - "measuredW": "150", - "measuredH": "100", - "x": "650", - "y": "1147", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 78 - }, - "p1": { - "x": 0.6380090497737557, - "y": -0.0018099547511312257 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "4704", - "typeID": "Arrow", - "zOrder": "17", - "w": "84", - "h": "168", - "measuredW": "150", - "measuredH": "100", - "x": "607", - "y": "450", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 84, - "y": 0 - }, - "p1": { - "x": 0.5406025677062014, - "y": 0.12359189147033602 - }, - "p2": { - "x": 0.48102856640014124, - "y": 167.51772039840012 - } - } - }, - { - "ID": "4706", - "typeID": "Arrow", - "zOrder": "18", - "w": "162", - "h": "202", - "measuredW": "150", - "measuredH": "100", - "x": "839", - "y": "759", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 161.91934838080022, - "y": 201.7725810528002 - }, - "p1": { - "x": 0.4134269539924311, - "y": 0.05352954054983893 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "4707", - "typeID": "Arrow", - "zOrder": "19", - "w": "151", - "h": "146", - "measuredW": "150", - "measuredH": "100", - "x": "853", - "y": "761", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 150.5957995360002, - "y": 146.24355794880023 - }, - "p1": { - "x": 0.4114461538461538, - "y": 0.05243076923076919 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "4708", - "typeID": "Arrow", - "zOrder": "20", - "w": "137", - "h": "92", - "measuredW": "150", - "measuredH": "100", - "x": "865", - "y": "760", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 137.25757395840026, - "y": 91.03808368960017 - }, - "p1": { - "x": 0.4416019869605713, - "y": 0.06513505122632714 - }, - "p2": { - "x": 0, - "y": -0.5 - } - } - }, - { - "ID": "4709", - "typeID": "Arrow", - "zOrder": "21", - "w": "136", - "h": "46", - "measuredW": "150", - "measuredH": "100", - "x": "865", - "y": "753", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 135.91934838080022, - "y": 45.847286163200124 - }, - "p1": { - "x": 0.461517349539306, - "y": -0.013252303469907925 - }, - "p2": { - "x": 0, - "y": -0.5 - } - } - }, - { - "ID": "4710", - "typeID": "Arrow", - "zOrder": "22", - "w": "140", - "h": "8", - "measuredW": "150", - "measuredH": "100", - "x": "861", - "y": "740", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 139.91934838080022, - "y": 7.994714214400119 - }, - "p1": { - "x": 0.4736842105263155, - "y": -0.03947368421052632 - }, - "p2": { - "x": 0, - "y": 3.5 - } - } - }, - { - "ID": "4713", - "typeID": "Arrow", - "zOrder": "23", - "w": "74", - "h": "104", - "measuredW": "150", - "measuredH": "100", - "x": "610", - "y": "453", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 74, - "y": 0 - }, - "p1": { - "x": 0.5406025677062014, - "y": 0.12359189147033613 - }, - "p2": { - "x": 0.1574797216001116, - "y": 104.29756940640016 - } - } - }, - { - "ID": "4714", - "typeID": "Arrow", - "zOrder": "24", - "w": "102", - "h": "305", - "measuredW": "150", - "measuredH": "100", - "x": "698", - "y": "450", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 102, - "y": -0.5 - }, - "p1": { - "x": 0.5750441807624339, - "y": -0.17893208785660192 - }, - "p2": { - "x": 29.5, - "y": 304 - } - } - }, - { - "ID": "4715", - "typeID": "Arrow", - "zOrder": "25", - "w": "155", - "h": "220", - "measuredW": "150", - "measuredH": "100", - "x": "891", - "y": "443", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 155.38966455360026, - "y": 220.01739003680018 - }, - "p1": { - "x": 0.5144201268152997, - "y": 0.12669257516874619 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "4716", - "typeID": "Arrow", - "zOrder": "26", - "w": "147", - "h": "163", - "measuredW": "150", - "measuredH": "100", - "x": "901", - "y": "452", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 146.72789013120018, - "y": 162.84126924320014 - }, - "p1": { - "x": 0.5467496438479418, - "y": 0.0853265352028192 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "4717", - "typeID": "Arrow", - "zOrder": "27", - "w": "142", - "h": "113", - "measuredW": "150", - "measuredH": "100", - "x": "903", - "y": "447", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 142.0514389760002, - "y": 112.97402056160013 - }, - "p1": { - "x": 0.5467496438479419, - "y": 0.08532653520281926 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "4718", - "typeID": "Arrow", - "zOrder": "28", - "w": "134", - "h": "69", - "measuredW": "150", - "measuredH": "100", - "x": "912", - "y": "445", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 134.38966455360026, - "y": 69.47435092320012 - }, - "p1": { - "x": 0.5981432360742706, - "y": -0.0366931918656057 - }, - "p2": { - "x": 0, - "y": 0 - } - } - }, - { - "ID": "4719", - "typeID": "Arrow", - "zOrder": "29", - "w": "145", - "h": "17", - "measuredW": "150", - "measuredH": "100", - "x": "907", - "y": "442", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 144.7425668640002, - "y": 17.607102241600103 - }, - "p1": { - "x": 0.45522128005575574, - "y": -0.05494250203275645 - }, - "p2": { - "x": 0, - "y": 2 - } - } - }, - { - "ID": "4720", - "typeID": "Arrow", - "zOrder": "30", - "w": "141", - "h": "32", - "measuredW": "150", - "measuredH": "100", - "x": "911", - "y": "402", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 140.7425668640002, - "y": 0.06340240480005832 - }, - "p1": { - "x": 0.44798938044995784, - "y": 0.04032682580733751 - }, - "p2": { - "x": 0, - "y": 32 - } - } - }, - { - "ID": "4721", - "typeID": "Arrow", - "zOrder": "31", - "w": "153", - "h": "89", - "measuredW": "150", - "measuredH": "100", - "x": "896", - "y": "347", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 153.06611570880023, - "y": 0.19615372320009783 - }, - "p1": { - "x": 0.4981106746880125, - "y": 0.05503902948341876 - }, - "p2": { - "x": 0, - "y": 89 - } - } - }, - { - "ID": "4722", - "typeID": "Arrow", - "zOrder": "32", - "w": "66", - "h": "29", - "measuredW": "150", - "measuredH": "100", - "x": "397", - "y": "621", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 29 - }, - "p1": { - "x": 0.33909140180668784, - "y": -0.058884933860741506 - }, - "p2": { - "x": 66, - "y": 0 - } - } - }, - { - "ID": "4723", - "typeID": "Arrow", - "zOrder": "33", - "w": "79", - "h": "13", - "measuredW": "150", - "measuredH": "100", - "x": "385", - "y": "602", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 2 - }, - "p1": { - "x": 0.3920449765553399, - "y": 0.06724676888745247 - }, - "p2": { - "x": 79, - "y": 13 - } - } - }, - { - "ID": "4724", - "typeID": "Arrow", - "zOrder": "34", - "w": "96", - "h": "88", - "measuredW": "150", - "measuredH": "100", - "x": "413", - "y": "447", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.36493615040006944, - "y": 88.21684737600015 - }, - "p1": { - "x": 0.42992499013028035, - "y": 0.004934859849980256 - }, - "p2": { - "x": 96, - "y": 0 - } - } - }, - { - "ID": "4725", - "typeID": "Arrow", - "zOrder": "35", - "w": "88", - "h": "33", - "measuredW": "150", - "measuredH": "100", - "x": "416", - "y": "443", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.041387305600096624, - "y": 33.334921961600116 - }, - "p1": { - "x": 0.40022307356578246, - "y": 0.06604917317297902 - }, - "p2": { - "x": 88, - "y": 0 - } - } - }, - { - "ID": "4726", - "typeID": "Arrow", - "zOrder": "36", - "w": "91", - "h": "17", - "measuredW": "150", - "measuredH": "100", - "x": "415", - "y": "420", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.2968382719999454, - "y": 0.12944770240011394 - }, - "p1": { - "x": 0.4067680844458243, - "y": -0.016268239677118913 - }, - "p2": { - "x": 91, - "y": 17 - } - } - }, - { - "ID": "4727", - "typeID": "Arrow", - "zOrder": "37", - "w": "93", - "h": "59", - "measuredW": "150", - "measuredH": "100", - "x": "419", - "y": "369", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.28216153919993303, - "y": 0.2768757536000521 - }, - "p1": { - "x": 0.5531295985763665, - "y": -0.08925088121556413 - }, - "p2": { - "x": 93, - "y": 59 - } - } - }, - { - "ID": "4728", - "typeID": "Arrow", - "zOrder": "38", - "w": "45", - "h": "106", - "measuredW": "150", - "measuredH": "100", - "x": "715", - "y": "186", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "p0": { - "x": 4, - "y": 0 - }, - "p1": { - "x": 0.4965158371040725, - "y": -0.18375565610859723 - }, - "p2": { - "x": 45, - "y": 105.5 - } - } - }, - { - "ID": "4729", - "typeID": "Label", - "zOrder": "39", - "measuredW": "74", - "measuredH": "36", - "x": "760", - "y": "308", - "properties": { - "size": "28", - "text": "Vue.js" - } - }, - { - "ID": "4730", - "typeID": "Arrow", - "zOrder": "40", - "w": "27", - "measuredW": "150", - "measuredH": "100", - "x": "738", - "y": "47", - "properties": { - "curvature": "0", - "leftArrow": "false", - "rightArrow": "false", - "color": "10027263", - "stroke": "dotted", - "p0": { - "x": 20.66666666666663, - "y": -0.33333333333333215 - }, - "p1": { - "x": 0.4525527916281198, - "y": 0.13367847141227748 - }, - "p2": { - "x": -0.019880609337405986, - "y": 99.62109147224172 - } - } - }, - { - "ID": "4731", - "typeID": "Arrow", - "zOrder": "41", - "w": "7", - "h": "812", - "measuredW": "150", - "measuredH": "100", - "x": "783", - "y": "1233", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0.33333333333337123, - "y": 0 - }, - "p1": { - "x": 0.5326751848090502, - "y": 0.008478779433645877 - }, - "p2": { - "x": 0.33333333333337123, - "y": 812.4044116976004 - } - } - }, - { - "ID": "4732", - "typeID": "Arrow", - "zOrder": "42", - "w": "185", - "h": "260", - "measuredW": "150", - "measuredH": "100", - "x": "835", - "y": "1226", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.6386805175102197, - "y": -0.153177546462135 - }, - "p2": { - "x": 184.65450646720024, - "y": 260.0261202608003 - } - } - }, - { - "ID": "4733", - "typeID": "Arrow", - "zOrder": "43", - "w": "74", - "h": "47", - "measuredW": "150", - "measuredH": "100", - "x": "382", - "y": "1086", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 74, - "y": 46.5 - }, - "p1": { - "x": 0.48867924528301887, - "y": 0.06037735849056604 - }, - "p2": { - "x": 0, - "y": -0.5 - } - } - }, - { - "ID": "4734", - "typeID": "Arrow", - "zOrder": "44", - "w": "80", - "h": "44", - "measuredW": "150", - "measuredH": "100", - "x": "377", - "y": "1145", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 80, - "y": -0.5 - }, - "p1": { - "x": 0.4805662188099808, - "y": -0.05806142034548944 - }, - "p2": { - "x": 0, - "y": 43.5 - } - } - }, - { - "ID": "4736", - "typeID": "Arrow", - "zOrder": "45", - "w": "90", - "h": "3", - "measuredW": "150", - "measuredH": "100", - "x": "360", - "y": "1614", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.09070328959990093, - "y": 3.1722268656003507 - }, - "p1": { - "x": 0.38285714285714273, - "y": 5.304829345092718e-18 - }, - "p2": { - "x": 89.5, - "y": 0 - } - } - }, - { - "ID": "4737", - "typeID": "Arrow", - "zOrder": "46", - "w": "81", - "h": "142", - "measuredW": "150", - "measuredH": "100", - "x": "368", - "y": "1624", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 142 - }, - "p1": { - "x": 0.4806545191468839, - "y": -0.05408932611764033 - }, - "p2": { - "x": 80.5, - "y": 0 - } - } - }, - { - "ID": "4739", - "typeID": "Arrow", - "zOrder": "47", - "w": "63", - "h": "84", - "measuredW": "150", - "measuredH": "100", - "x": "370", - "y": "1622", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 84 - }, - "p1": { - "x": 0.3906532168329655, - "y": -0.0770872475876032 - }, - "p2": { - "x": 63, - "y": 0 - } - } - }, - { - "ID": "4740", - "typeID": "Arrow", - "zOrder": "48", - "w": "40", - "h": "67", - "measuredW": "150", - "measuredH": "100", - "x": "544", - "y": "1228", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 66.5 - }, - "p1": { - "x": 0.5210888020482414, - "y": 0.050532273278533886 - }, - "p2": { - "x": 40, - "y": -0.5 - } - } - }, - { - "ID": "4741", - "typeID": "Arrow", - "zOrder": "49", - "w": "96", - "h": "313", - "measuredW": "150", - "measuredH": "100", - "x": "624", - "y": "1236", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 78, - "y": -0.5 - }, - "p1": { - "x": 0.6755987828830571, - "y": 0.20191197026423297 - }, - "p2": { - "x": 0, - "y": 312 - } - } - }, - { - "ID": "4742", - "typeID": "Arrow", - "zOrder": "50", - "w": "56", - "h": "452", - "measuredW": "150", - "measuredH": "100", - "x": "733", - "y": "759", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.4900492258899942, - "y": 0.06627091255555864 - }, - "p2": { - "x": 45, - "y": 452 - } - } - }, - { - "ID": "4743", - "typeID": "Arrow", - "zOrder": "51", - "w": "69", - "h": "59", - "measuredW": "150", - "measuredH": "100", - "x": "611", - "y": "450", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 69, - "y": 0 - }, - "p1": { - "x": 0.44947028326696226, - "y": -0.10519197535502291 - }, - "p2": { - "x": 0.4957052992001536, - "y": 59.12144861280012 - } - } - }, - { - "ID": "4744", - "typeID": "Arrow", - "zOrder": "52", - "w": "25", - "h": "70", - "measuredW": "150", - "measuredH": "100", - "x": "806", - "y": "363", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 22, - "y": -0.5 - }, - "p1": { - "x": 0.44883470778056644, - "y": 0.15539619935460727 - }, - "p2": { - "x": 0, - "y": 69 - } - } - }, - { - "ID": "4745", - "typeID": "__group__", - "zOrder": "53", - "measuredW": "350", - "measuredH": "141", - "w": "350", - "h": "141", - "x": "984", - "y": "89", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "350", - "h": "141", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "314", - "measuredH": "25", - "x": "14", - "y": "17", - "properties": { - "size": "17", - "text": "Find the detailed version of this roadmap" - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "319", - "measuredH": "25", - "x": "14", - "y": "45", - "properties": { - "size": "17", - "text": "along with resources and other roadmaps" - } - }, - { - "ID": "3", - "typeID": "__group__", - "zOrder": "3", - "measuredW": "320", - "measuredH": "45", - "w": "320", - "h": "45", - "x": "15", - "y": "81", - "properties": { - "controlName": "ext_link:roadmap.sh" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "320", - "h": "45", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "borderColor": "4273622", - "color": "4273622" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "105", - "measuredH": "28", - "x": "141", - "y": "8", - "properties": { - "color": "16777215", - "size": "20", - "text": "roadmap.sh" - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "35", - "measuredH": "28", - "x": "76", - "y": "8", - "properties": { - "color": "16777215", - "size": "20", - "text": "http" - } - }, - { - "ID": "3", - "typeID": "Label", - "zOrder": "3", - "measuredW": "5", - "measuredH": "28", - "x": "113", - "y": "8", - "properties": { - "color": "16777215", - "size": "20", - "text": ":" - } - }, - { - "ID": "4", - "typeID": "Label", - "zOrder": "4", - "measuredW": "10", - "measuredH": "28", - "x": "120", - "y": "9", - "properties": { - "color": "16777215", - "size": "20", - "text": "/" - } - }, - { - "ID": "5", - "typeID": "Label", - "zOrder": "5", - "measuredW": "10", - "measuredH": "28", - "x": "128", - "y": "9", - "properties": { - "color": "16777215", - "size": "20", - "text": "/" - } - } - ] - } - } - } - ] - } - } - }, - { - "ID": "4746", - "typeID": "Arrow", - "zOrder": "54", - "w": "86", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "597", - "y": "440", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 86, - "y": 0 - }, - "p1": { - "x": 0.4811090254395629, - "y": 0.004165338153758769 - }, - "p2": { - "x": -0.22477605439985382, - "y": 0 - } - } - }, - { - "ID": "4747", - "typeID": "Arrow", - "zOrder": "55", - "w": "76", - "h": "56", - "measuredW": "150", - "measuredH": "100", - "x": "605", - "y": "370", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 76, - "y": 56 - }, - "p1": { - "x": 0.37909451283121226, - "y": 0.05987899019403308 - }, - "p2": { - "x": -0.1954225887998291, - "y": -0.05401145759992687 - } - } - }, - { - "ID": "4748", - "typeID": "__group__", - "zOrder": "56", - "measuredW": "244", - "measuredH": "50", - "w": "244", - "h": "50", - "x": "674", - "y": "414", - "properties": { - "controlName": "100-fundamental-topics" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "244", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "155", - "measuredH": "25", - "x": "44", - "y": "12", - "properties": { - "size": "17", - "text": "Fundamental Topics" - } - } - ] - } - } - }, - { - "ID": "4749", - "typeID": "__group__", - "zOrder": "57", - "measuredW": "132", - "measuredH": "44", - "w": "132", - "h": "44", - "x": "485", - "y": "419", - "properties": { - "controlName": "101-fundamental-topics:components" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "132", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "w": "99", - "measuredW": "99", - "measuredH": "25", - "x": "16", - "y": "9", - "properties": { - "size": "17", - "text": "Components" - } - } - ] - } - } - }, - { - "ID": "4750", - "typeID": "__group__", - "zOrder": "58", - "measuredW": "225", - "measuredH": "44", - "w": "225", - "h": "44", - "x": "202", - "y": "350", - "properties": { - "controlName": "100-fundamental-topics:components:single-file-components" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "225", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "183", - "measuredH": "25", - "x": "21", - "y": "10", - "properties": { - "size": "17", - "text": "Single File Components" - } - } - ] - } - } - }, - { - "ID": "4751", - "typeID": "__group__", - "zOrder": "59", - "measuredW": "226", - "measuredH": "44", - "w": "226", - "h": "44", - "x": "201", - "y": "400", - "properties": { - "controlName": "101-fundamental-topics:components:component-registration" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "226", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "188", - "measuredH": "25", - "x": "19", - "y": "10", - "properties": { - "size": "17", - "text": "Component Registration" - } - } - ] - } - } - }, - { - "ID": "4752", - "typeID": "__group__", - "zOrder": "60", - "measuredW": "134", - "measuredH": "44", - "w": "134", - "h": "44", - "x": "483", - "y": "351", - "properties": { - "controlName": "100-fundamental-topics:create-vue" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "134", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "84", - "measuredH": "25", - "x": "25", - "y": "9", - "properties": { - "size": "17", - "text": "create-vue" - } - } - ] - } - } - }, - { - "ID": "4753", - "typeID": "__group__", - "zOrder": "61", - "measuredW": "326", - "measuredH": "50", - "w": "326", - "h": "50", - "x": "576", - "y": "1199", - "properties": { - "controlName": "102-ecosystem" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "326", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "84", - "measuredH": "25", - "x": "121", - "y": "12", - "properties": { - "size": "17", - "text": "Ecosystem" - } - } - ] - } - } - }, - { - "ID": "4754", - "typeID": "__group__", - "zOrder": "62", - "measuredW": "108", - "measuredH": "44", - "w": "108", - "h": "44", - "x": "445", - "y": "1116", - "properties": { - "controlName": "101-ecosystem:forms" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "108", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "48", - "measuredH": "25", - "x": "30", - "y": "9", - "properties": { - "size": "17", - "text": "Forms" - } - } - ] - } - } - }, - { - "ID": "4755", - "typeID": "__group__", - "zOrder": "63", - "measuredW": "212", - "measuredH": "44", - "w": "212", - "h": "44", - "x": "180", - "y": "1068", - "properties": { - "controlName": "100-ecosystem:forms:formkit" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "212", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "60", - "measuredH": "25", - "x": "76", - "y": "9", - "properties": { - "size": "17", - "text": "FormKit" - } - } - ] - } - } - }, - { - "ID": "4756", - "typeID": "__group__", - "zOrder": "64", - "measuredW": "211", - "measuredH": "44", - "w": "211", - "h": "44", - "x": "181", - "y": "1118", - "properties": { - "controlName": "101-ecosystem:forms:vee-validate" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "211", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "95", - "measuredH": "25", - "x": "58", - "y": "10", - "properties": { - "size": "17", - "text": "Vee Validate" - } - } - ] - } - } - }, - { - "ID": "4757", - "typeID": "__group__", - "zOrder": "65", - "measuredW": "211", - "measuredH": "44", - "w": "211", - "h": "44", - "x": "181", - "y": "1168", - "properties": { - "controlName": "102-ecosystem:forms:vuelidate" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "211", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "72", - "measuredH": "25", - "x": "70", - "y": "9", - "properties": { - "size": "17", - "text": "Vuelidate" - } - } - ] - } - } - }, - { - "ID": "4758", - "typeID": "__group__", - "zOrder": "66", - "measuredW": "142", - "measuredH": "44", - "w": "142", - "h": "44", - "x": "580", - "y": "1116", - "properties": { - "controlName": "100-ecosystem:routing" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "142", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "60", - "measuredH": "25", - "x": "41", - "y": "9", - "properties": { - "size": "17", - "text": "Routing" - } - } - ] - } - } - }, - { - "ID": "4759", - "typeID": "__group__", - "zOrder": "67", - "measuredW": "143", - "measuredH": "44", - "w": "143", - "h": "44", - "x": "579", - "y": "1075", - "properties": { - "controlName": "100-ecosystem:routing:vue-router" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "143", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "87", - "measuredH": "25", - "x": "28", - "y": "9", - "properties": { - "size": "17", - "text": "Vue Router" - } - } - ] - } - } - }, - { - "ID": "4760", - "typeID": "__group__", - "zOrder": "68", - "measuredW": "221", - "measuredH": "44", - "w": "221", - "h": "44", - "x": "421", - "y": "1595", - "properties": { - "controlName": "106-ecosystem:api-calls" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "221", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "69", - "measuredH": "25", - "x": "76", - "y": "9", - "properties": { - "size": "17", - "text": "API Calls" - } - } - ] - } - } - }, - { - "ID": "4761", - "typeID": "__group__", - "zOrder": "69", - "measuredW": "97", - "measuredH": "44", - "w": "97", - "h": "44", - "x": "185", - "y": "1688", - "properties": { - "controlName": "102-ecosystem:api-calls:axios" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "97", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "41", - "measuredH": "25", - "x": "28", - "y": "10", - "properties": { - "size": "17", - "text": "Axios" - } - } - ] - } - } - }, - { - "ID": "4762", - "typeID": "__group__", - "zOrder": "70", - "measuredW": "88", - "measuredH": "44", - "w": "88", - "h": "44", - "x": "288", - "y": "1688", - "properties": { - "controlName": "103-ecosystem:api-calls:fetch" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "88", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "39", - "measuredH": "25", - "x": "24", - "y": "10", - "properties": { - "size": "17", - "text": "fetch" - } - } - ] - } - } - }, - { - "ID": "4763", - "typeID": "__group__", - "zOrder": "71", - "measuredW": "189", - "measuredH": "44", - "w": "189", - "h": "44", - "x": "186", - "y": "1738", - "properties": { - "controlName": "104-ecosystem:api-calls:tanstack-query" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "189", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "122", - "measuredH": "25", - "x": "34", - "y": "10", - "properties": { - "size": "17", - "text": "TanStack Query" - } - } - ] - } - } - }, - { - "ID": "4765", - "typeID": "__group__", - "zOrder": "72", - "measuredW": "190", - "measuredH": "44", - "w": "190", - "h": "44", - "x": "185", - "y": "1593", - "properties": { - "controlName": "100-ecosystem:api-calls:apollo" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "190", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "48", - "measuredH": "25", - "x": "71", - "y": "10", - "properties": { - "size": "17", - "text": "Apollo" - } - } - ] - } - } - }, - { - "ID": "4767", - "typeID": "Label", - "zOrder": "73", - "measuredW": "71", - "measuredH": "25", - "x": "245", - "y": "1644", - "properties": { - "size": "17", - "text": "GraphQL" - } - }, - { - "ID": "4768", - "typeID": "__group__", - "zOrder": "74", - "measuredW": "219", - "measuredH": "44", - "w": "219", - "h": "44", - "x": "423", - "y": "1529", - "properties": { - "controlName": "105-ecosystem:mobile-apps" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "219", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "95", - "measuredH": "25", - "x": "62", - "y": "9", - "properties": { - "size": "17", - "text": "Mobile Apps" - } - } - ] - } - } - }, - { - "ID": "4769", - "typeID": "__group__", - "zOrder": "75", - "measuredW": "216", - "measuredH": "44", - "w": "216", - "h": "44", - "x": "422", - "y": "1458", - "properties": { - "controlName": "104-ecosystem:state-management" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "216", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "148", - "measuredH": "25", - "x": "34", - "y": "9", - "properties": { - "size": "17", - "text": "State Management" - } - } - ] - } - } - }, - { - "ID": "4770", - "typeID": "__group__", - "zOrder": "76", - "measuredW": "206", - "measuredH": "44", - "w": "206", - "h": "44", - "x": "184", - "y": "1276", - "properties": { - "controlName": "101-ecosystem:ssr:nuxt-js" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "206", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "52", - "measuredH": "25", - "x": "77", - "y": "9", - "properties": { - "size": "17", - "text": "Nuxt.js" - } - } - ] - } - } - }, - { - "ID": "4771", - "typeID": "__group__", - "zOrder": "77", - "measuredW": "207", - "measuredH": "44", - "w": "207", - "h": "44", - "x": "183", - "y": "1331", - "properties": { - "controlName": "100-ecosystem:ssg:vitepress" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "207", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "73", - "measuredH": "25", - "x": "67", - "y": "10", - "properties": { - "size": "17", - "text": "Vitepress" - } - } - ] - } - } - }, - { - "ID": "4772", - "typeID": "__group__", - "zOrder": "78", - "measuredW": "576", - "measuredH": "105", - "w": "576", - "h": "105", - "x": "551", - "y": "1837", - "properties": { - "controlName": "ext_link:roadmap.sh/frontend" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "576", - "h": "105", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "502", - "measuredH": "32", - "x": "40", - "y": "22", - "properties": { - "size": "24", - "text": "Frontend Roadmap after Framework Selection" - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "171", - "measuredH": "26", - "x": "205", - "y": "58", - "properties": { - "text": "roadmap.sh/frontend", - "size": "18", - "color": "10027263" - } - } - ] - } - } - }, - { - "ID": "4773", - "typeID": "__group__", - "zOrder": "79", - "measuredW": "67", - "measuredH": "44", - "w": "67", - "h": "44", - "x": "201", - "y": "451", - "properties": { - "controlName": "102-fundamental-topics:components:props" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "67", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "45", - "measuredH": "25", - "x": "11", - "y": "9", - "properties": { - "size": "17", - "text": "Props" - } - } - ] - } - } - }, - { - "ID": "4774", - "typeID": "__group__", - "zOrder": "80", - "measuredW": "73", - "measuredH": "44", - "w": "73", - "h": "44", - "x": "272", - "y": "451", - "properties": { - "controlName": "103-fundamental-topics:components:events" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "73", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "53", - "measuredH": "25", - "x": "10", - "y": "10", - "properties": { - "size": "17", - "text": "Events" - } - } - ] - } - } - }, - { - "ID": "4775", - "typeID": "__group__", - "zOrder": "81", - "measuredW": "225", - "measuredH": "44", - "w": "225", - "h": "44", - "x": "202", - "y": "500", - "properties": { - "controlName": "104-fundamental-topics:components:attribute-inheritance" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "225", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "158", - "measuredH": "25", - "x": "34", - "y": "10", - "properties": { - "size": "17", - "text": "Attribute Inheritance" - } - } - ] - } - } + "nodes": [ + { + "id": "sg9IjWWorT2lLEnUek-q5", + "type": "section", + "position": { + "x": -447.5730606910654, + "y": 1502.6656483488384 + }, + "width": 232, + "height": 220, + "style": { + "width": 232, + "height": 220 + }, + "selected": false, + "data": { + "style": { + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "resizing": false, + "positionAbsolute": { + "x": -447.5730606910654, + "y": 1502.6656483488384 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "ua7DIYStv0V-G9f0vWE_W", + "type": "section", + "position": { + "x": -249.9953868087789, + "y": 1194.2566150719415 + }, + "selected": false, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "zIndex": -999, + "width": 217, + "height": 164, + "style": { + "width": 217, + "height": 164 + }, + "resizing": false, + "dragging": false, + "positionAbsolute": { + "x": -249.9953868087789, + "y": 1194.2566150719415 + }, + "selectable": true, + "focusable": true + }, + { + "id": "s7zTkuA9XzDhJHb7-tL7A", + "type": "vertical", + "position": { + "x": -216.52532545570534, + "y": 185.7304293708296 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75 + } + }, + "zIndex": 999, + "width": 20, + "height": 289, + "style": { + "width": 20, + "height": 289 + }, + "positionAbsolute": { + "x": -216.52532545570534, + "y": 185.7304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "aIYgUc_hEIZx_2P3OhCNh", + "type": "section", + "position": { + "x": 304.6806160048882, + "y": 472.59334049231074 + }, + "selected": false, + "data": { + "label": "", + "style": { + "width": 150, + "height": 100, + "fontSize": 17, + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "zIndex": -999, + "width": 238, + "height": 687, + "style": { + "width": 238, + "height": 687 + }, + "resizing": false, + "dragging": false, + "positionAbsolute": { + "x": 304.6806160048882, + "y": 472.59334049231074 + }, + "selectable": true, + "focusable": true + }, + { + "width": 88, + "height": 68, + "id": "iogwMmOvub2ZF4zgg6WyF", + "type": "title", + "position": { + "x": -49.45968546864998, + "y": -155.76957062917046 + }, + "selected": false, + "data": { + "label": "Vue", + "style": { + "fontSize": 28, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4776", - "typeID": "__group__", - "zOrder": "82", - "measuredW": "212", - "measuredH": "44", - "w": "212", - "h": "44", - "x": "1036", - "y": "486", - "properties": { - "controlName": "108-fundamental-topics:lifecycle-hooks" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "212", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "121", - "measuredH": "25", - "x": "45", - "y": "10", - "properties": { - "size": "17", - "text": "Lifecycle Hooks" - } - } - ] - } - } + "oldId": "9nxw2PEl-_eQPW0FHNPq2" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -49.45968546864998, + "y": -155.76957062917046 + }, + "focusable": true, + "selectable": true + }, + { + "width": 20, + "height": 64, + "id": "LEijbLyxg4RyutKEM2Y5g", + "type": "vertical", + "position": { + "x": -15.45968546864998, + "y": -230.76957062917046 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#0A33FF" }, - { - "ID": "4777", - "typeID": "__group__", - "zOrder": "83", - "measuredW": "212", - "measuredH": "44", - "w": "212", - "h": "44", - "x": "1036", - "y": "636", - "properties": { - "controlName": "111-fundamental-topics:computed-properties" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "212", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "165", - "measuredH": "25", - "x": "23", - "y": "9", - "properties": { - "size": "17", - "text": "Computed Properties" - } - } - ] - } - } + "oldId": "xD07fJ1NmNeAarVCEfubU" + }, + "zIndex": 999, + "positionAbsolute": { + "x": -15.45968546864998, + "y": -230.76957062917046 + }, + "dragging": false, + "focusable": true, + "style": { + "width": 20, + "height": 64 + }, + "resizing": true, + "selectable": true + }, + { + "id": "yHmHXymPNWwu8p1vvqD3o", + "type": "paragraph", + "position": { + "x": 179.8414717224867, + "y": -232.76957062917046 + }, + "selected": false, + "data": { + "label": "Find the detailed version of this roadmap along with other similar roadmaps", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "left", + "borderColor": "#000000", + "backgroundColor": "#FFFFFf" + } + }, + "zIndex": 999, + "width": 363, + "height": 143, + "positionAbsolute": { + "x": 179.8414717224867, + "y": -232.76957062917046 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "style": { + "width": 363, + "height": 143 + }, + "resizing": false + }, + { + "id": "R_Fs6rdl2XtQ9aLOubMqL", + "type": "button", + "position": { + "x": 193.04484613528683, + "y": -150.78400721142515 + }, + "selected": false, + "data": { + "label": "roadmap.sh", + "href": "https://roadmap.sh", + "color": "#ffffff", + "backgroundColor": "#4136D6", + "style": { + "fontSize": 17 }, - { - "ID": "4778", - "typeID": "__group__", - "zOrder": "84", - "measuredW": "163", - "measuredH": "44", - "w": "163", - "h": "44", - "x": "248", - "y": "623", - "properties": { - "controlName": "101-fundamental-topics:api-styles:composition-api" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "163", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "128", - "measuredH": "25", - "x": "18", - "y": "9", - "properties": { - "size": "17", - "text": "Composition API" - } - } - ] - } - } + "oldId": "2zqZkyVgigifcRS1H7F_b" + }, + "zIndex": 999, + "width": 339, + "height": 49, + "dragging": false, + "style": { + "width": 339, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": 193.04484613528683, + "y": -150.78400721142515 + }, + "selectable": true, + "focusable": true + }, + { + "id": "xwpc_KxehAruFM0pCQnie", + "type": "vertical", + "position": { + "x": -11.628773626739985, + "y": 2031.9010423312407 + }, + "selected": false, + "data": { + "label": "vertical node", + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#4136D4" }, - { - "ID": "4779", - "typeID": "__group__", - "zOrder": "85", - "measuredW": "163", - "measuredH": "44", - "w": "163", - "h": "44", - "x": "248", - "y": "573", - "properties": { - "controlName": "100-fundamental-topics:api-styles:options-api" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "163", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "91", - "measuredH": "25", - "x": "36", - "y": "9", - "properties": { - "size": "17", - "text": "Options API" - } - } - ] - } - } + "oldId": "Ju00mr0KLGN2BV6yEQGPt" + }, + "zIndex": 999, + "width": 20, + "height": 104, + "positionAbsolute": { + "x": -11.628773626739985, + "y": 2031.9010423312407 + }, + "dragging": false, + "style": { + "width": 20, + "height": 104 + }, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "width": 426, + "height": 119, + "id": "GV_zWF6rSWg5bqgiXhOEf", + "type": "paragraph", + "position": { + "x": -214.62877362673987, + "y": 1942.385077050813 + }, + "selected": false, + "data": { + "label": "Have a look at the following related roadmaps", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center", + "borderColor": "#000000", + "backgroundColor": "#ffffff" }, - { - "ID": "4780", - "typeID": "__group__", - "zOrder": "86", - "measuredW": "212", - "measuredH": "44", - "w": "212", - "h": "44", - "x": "1036", - "y": "333", - "properties": { - "controlName": "105-fundamental-topics:app-configurations" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "212", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "146", - "measuredH": "25", - "x": "33", - "y": "9", - "properties": { - "size": "17", - "text": "App Configurations" - } - } - ] - } - } + "oldId": "sVXZrBCsiSzWBBYWTm-nQ" + }, + "zIndex": 999, + "positionAbsolute": { + "x": -214.62877362673987, + "y": 1942.385077050813 + }, + "dragging": false, + "style": { + "width": 426, + "height": 119 + }, + "resizing": false, + "focusable": true, + "selectable": true + }, + { + "width": 205, + "height": 49, + "id": "ZSrQoNGKiR484uALMWO9F", + "type": "button", + "position": { + "x": -4.080988474536298, + "y": 2000.0743589624644 + }, + "selected": false, + "data": { + "label": "TypeScript Roadmap", + "href": "https://roadmap.sh/typescript", + "color": "#FFFFFf", + "backgroundColor": "#4136D4", + "style": { + "fontSize": 17 }, - { - "ID": "4781", - "typeID": "__group__", - "zOrder": "87", - "measuredW": "212", - "measuredH": "44", - "w": "212", - "h": "44", - "x": "1036", - "y": "436", - "properties": { - "controlName": "107-fundamental-topics:conditional-rendering" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "212", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "173", - "measuredH": "25", - "x": "19", - "y": "9", - "properties": { - "size": "17", - "text": "Conditional Rendering" - } - } - ] - } - } + "borderColor": "#4136D4", + "oldId": "dlGf3ZdFXYx0Z6Viu2x-l" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -4.080988474536298, + "y": 2000.0743589624644 + }, + "style": {}, + "focusable": true, + "resizing": false, + "selectable": true + }, + { + "width": 194, + "height": 49, + "id": "P5IZjP0g1_fnvHy3YTR4q", + "type": "button", + "position": { + "x": -204.2816601458129, + "y": 2000.0743589624644 + }, + "selected": false, + "data": { + "label": "Frontend Roadmap", + "href": "https://roadm.sh/frontend", + "color": "#FFFFFf", + "backgroundColor": "#4136D4", + "style": { + "fontSize": 17 }, - { - "ID": "4782", - "typeID": "__group__", - "zOrder": "88", - "measuredW": "179", - "measuredH": "44", - "w": "179", - "h": "44", - "x": "440", - "y": "597", - "properties": { - "controlName": "104-fundamental-topics:api-styles" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "179", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "76", - "measuredH": "25", - "x": "47", - "y": "9", - "properties": { - "size": "17", - "text": "API Styles" - } - } - ] - } - } + "borderColor": "#4136D4", + "oldId": "dlGf3ZdFXYx0Z6Viu2x-l" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": -204.2816601458129, + "y": 2000.0743589624644 + }, + "style": {}, + "focusable": true, + "resizing": false, + "selectable": true + }, + { + "id": "0EevuyZiyty3X3Jzpjl4y", + "type": "topic", + "position": { + "x": 344.5448461352869, + "y": 177.7304293708296 + }, + "selected": false, + "data": { + "label": "Components", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4783", - "typeID": "__group__", - "zOrder": "89", - "measuredW": "212", - "measuredH": "44", - "w": "212", - "h": "44", - "x": "1036", - "y": "385", - "properties": { - "controlName": "106-fundamental-topics:rendering-lists" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "212", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "122", - "measuredH": "25", - "x": "45", - "y": "9", - "properties": { - "size": "17", - "text": "Rendering Lists" - } - } - ] - } - } + "oldId": "tU4Umtnfu01t9gLlnlK6b" + }, + "zIndex": 999, + "width": 158, + "height": 49, + "style": { + "width": 158, + "height": 49 + }, + "positionAbsolute": { + "x": 344.5448461352869, + "y": 177.7304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "XDvH2t3AJGevS17uM8TO6", + "type": "button", + "position": { + "x": -108.45968546864998, + "y": 33.94433023898546 + }, + "selected": false, + "data": { + "label": "JavaScript Roadmap", + "href": "https://roadmap.sh/javascript", + "color": "#ffffff", + "backgroundColor": "#4136D6", + "style": { + "fontSize": 17 }, - { - "ID": "4784", - "typeID": "__group__", - "zOrder": "90", - "measuredW": "212", - "measuredH": "44", - "w": "212", - "h": "44", - "x": "1036", - "y": "536", - "properties": { - "controlName": "109-fundamental-topics:forms-handling" + "oldId": "R_Fs6rdl2XtQ9aLOubMqL" + }, + "zIndex": 999, + "width": 206, + "height": 49, + "dragging": false, + "style": { + "width": 206, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": -108.45968546864998, + "y": 33.94433023898546 + }, + "selectable": true, + "focusable": true + }, + { + "id": "y9ToYDix-koRbR6FLydFw", + "type": "subtopic", + "position": { + "x": 359.0448461352869, + "y": -59.05566976101454 + }, + "selected": false, + "data": { + "label": "create-vue", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 129, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 359.0448461352869, + "y": -59.05566976101454 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "lsC4XcjZoMODK_3b_vilY", + "type": "linksgroup", + "position": { + "x": -514.5253254557053, + "y": -217.76957062917046 + }, + "selected": false, + "data": { + "label": "Related Roadmaps", + "links": [ + { + "id": "XxVdieUjAjB36MpgPIwMy", + "label": "JavaScript Roadmap", + "href": "", + "url": "https://roadmap.sh/javascript" }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "212", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "122", - "measuredH": "25", - "x": "45", - "y": "9", - "properties": { - "size": "17", - "text": "Forms Handling" - } - } - ] - } - } - }, - { - "ID": "4785", - "typeID": "__group__", - "zOrder": "91", - "measuredW": "212", - "measuredH": "44", - "w": "212", - "h": "44", - "x": "1036", - "y": "586", - "properties": { - "controlName": "110-fundamental-topics:events-handling" + { + "id": "8ZLwReh1HSZDMXGgjnYp9", + "label": "React Roadmap", + "url": "https://roadmap.sh/react" }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "212", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "126", - "measuredH": "25", - "x": "43", - "y": "9", - "properties": { - "size": "17", - "text": "Events Handling" - } - } - ] - } - } - }, - { - "ID": "4786", - "typeID": "__group__", - "zOrder": "92", - "measuredW": "299", - "measuredH": "50", - "w": "299", - "h": "50", - "x": "576", - "y": "725", - "properties": { - "controlName": "101-advanced-topics" + { + "id": "PVLflqBimeZ2iCUUNMhU8", + "label": "Angular Roadmap", + "url": "https://roadmap.sh/angular" }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "299", - "h": "50", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16776960" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "130", - "measuredH": "25", - "x": "85", - "y": "12", - "properties": { - "size": "17", - "text": "Advanced Topics" - } - } - ] - } + { + "id": "iMG4TiLMRmM2cAbMOG37K", + "label": "TypeScript Roadmap", + "url": "https://roadmap.sh/typescript" } + ] + }, + "zIndex": 999, + "width": 330, + "height": 193, + "positionAbsolute": { + "x": -514.5253254557053, + "y": -217.76957062917046 + }, + "dragging": false, + "resizing": false, + "style": { + "width": 330, + "height": 193 + }, + "selectable": true, + "focusable": true + }, + { + "id": "kPzzrnb2DRHlJ7piaywDe", + "type": "paragraph", + "position": { + "x": 310.5448461352869, + "y": 26.444330238985458 + }, + "selected": false, + "data": { + "label": "Boostrapping a Project", + "style": { + "fontSize": 17, + "borderColor": "transparent", + "backgroundColor": "transparent", + "color": "#000000", + "textAlign": "center", + "justifyContent": "center", + "padding": 16 + } + }, + "zIndex": 999, + "width": 226, + "height": 64, + "style": { + "width": 226, + "height": 64 + }, + "resizing": false, + "positionAbsolute": { + "x": 310.5448461352869, + "y": 26.444330238985458 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "VNBRlJkdH6NOOzGXUrbZK", + "type": "subtopic", + "position": { + "x": -13.265315108760092, + "y": 177.7304293708296 + }, + "selected": false, + "data": { + "label": "Single File Components", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 257, + "height": 49, + "style": { + "width": 257, + "height": 49 + }, + "positionAbsolute": { + "x": -13.265315108760092, + "y": 177.7304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "2HhKifjuDcP3eKpanRMEQ", + "type": "subtopic", + "position": { + "x": -13.265315108760092, + "y": 124.7304293708296 + }, + "selected": false, + "data": { + "label": "Component Registration", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 257, + "height": 49, + "style": { + "width": 257 + }, + "positionAbsolute": { + "x": -13.265315108760092, + "y": 124.7304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "raEfI4GLMW2fOucka07VE", + "type": "subtopic", + "position": { + "x": -13.265315108760092, + "y": 230.7304293708296 + }, + "selected": false, + "data": { + "label": "Props", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 70, + "height": 49, + "style": { + "width": 70, + "height": 49 + }, + "positionAbsolute": { + "x": -13.265315108760092, + "y": 230.7304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "X0J3ogH3W8EQe68tLfcGL", + "type": "subtopic", + "position": { + "x": 60.73468489123991, + "y": 230.7304293708296 + }, + "selected": false, + "data": { + "label": "Events", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 70, + "height": 49, + "style": { + "width": 70, + "height": 49 + }, + "positionAbsolute": { + "x": 60.73468489123991, + "y": 230.7304293708296 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "swpyZFUO4UO3mW8Bvf1Te", + "type": "subtopic", + "position": { + "x": 134.7346848912399, + "y": 230.7304293708296 + }, + "selected": false, + "data": { + "label": "v-model", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 108, + "height": 49, + "style": { + "width": 108, + "height": 49 + }, + "positionAbsolute": { + "x": 134.7346848912399, + "y": 230.7304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "4S5fVFsFDMbq05ld7n0sF", + "type": "subtopic", + "position": { + "x": -13.265315108760092, + "y": 283.7304293708296 + }, + "selected": false, + "data": { + "label": "Attribute Inheritance", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 257, + "height": 49, + "style": { + "width": 257, + "height": 49 + }, + "positionAbsolute": { + "x": -13.265315108760092, + "y": 283.7304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "VlcYnTHW5d4J_zLYupvu5", + "type": "topic", + "position": { + "x": 344.5448461352869, + "y": 279.7304293708296 + }, + "selected": false, + "data": { + "label": "Templates", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4787", - "typeID": "__group__", - "zOrder": "93", - "measuredW": "134", - "measuredH": "44", - "w": "134", - "h": "44", - "x": "485", - "y": "482", - "properties": { - "controlName": "102-fundamental-topics:templates" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "134", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "80", - "measuredH": "25", - "x": "27", - "y": "9", - "properties": { - "size": "17", - "text": "Templates" - } - } - ] - } - } + "oldId": "tU4Umtnfu01t9gLlnlK6b" + }, + "zIndex": 999, + "width": 158, + "height": 49, + "style": { + "width": 158, + "height": 49 + }, + "positionAbsolute": { + "x": 344.5448461352869, + "y": 279.7304293708296 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "CGdw3PqLRb9OqFU5SqmE1", + "type": "topic", + "position": { + "x": 344.5448461352869, + "y": 374.33464066194904 + }, + "selected": false, + "data": { + "label": "Directives", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4788", - "typeID": "__group__", - "zOrder": "94", - "measuredW": "134", - "measuredH": "44", - "w": "134", - "h": "44", - "x": "485", - "y": "536", - "properties": { - "controlName": "103-fundamental-topics:directives" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "134", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "77", - "measuredH": "25", - "x": "28", - "y": "9", - "properties": { - "size": "17", - "text": "Directives" - } - } - ] - } - } + "oldId": "tU4Umtnfu01t9gLlnlK6b" + }, + "zIndex": 999, + "width": 158, + "height": 49, + "style": { + "width": 158, + "height": 49 + }, + "positionAbsolute": { + "x": 344.5448461352869, + "y": 374.33464066194904 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "OpJ2NMKCGXQezpzURE45R", + "type": "topic", + "position": { + "x": -293.59797432485874, + "y": 335.33464066194904 + }, + "selected": false, + "data": { + "label": "API Styles", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4789", - "typeID": "__group__", - "zOrder": "95", - "measuredW": "263", - "measuredH": "44", - "w": "263", - "h": "44", - "x": "989", - "y": "829", - "properties": { - "controlName": "113-advanced-topics:watchers" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "263", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "73", - "measuredH": "25", - "x": "95", - "y": "9", - "properties": { - "size": "17", - "text": "Watchers" - } - } - ] - } - } + "oldId": "Bx1Atxcf15AEaA1BiSIc6" + }, + "zIndex": 999, + "width": 127, + "height": 49, + "style": { + "width": 127, + "height": 49 + }, + "positionAbsolute": { + "x": -293.59797432485874, + "y": 335.33464066194904 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "PPUU3Rb73aCpT4zcyvlJE", + "type": "subtopic", + "position": { + "x": -519.8364531870259, + "y": 311.5660709449147 + }, + "selected": false, + "data": { + "label": "Options API", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 174, + "height": 49, + "style": { + "width": 174, + "height": 49 + }, + "positionAbsolute": { + "x": -519.8364531870259, + "y": 311.5660709449147 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "a0qwdQTunxEjQ9A5wpF-q", + "type": "subtopic", + "position": { + "x": -519.8364531870259, + "y": 364.56607094491454 + }, + "selected": false, + "data": { + "label": "Composition API", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 174, + "height": 49, + "style": { + "width": 174, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": -519.8364531870259, + "y": 364.56607094491454 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "qRm08uDZW-D8QDc-9sPX8", + "type": "topic", + "position": { + "x": -240.45968546864998, + "y": 152.74910795099487 + }, + "selected": false, + "data": { + "label": "App Configurations", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4790", - "typeID": "__group__", - "zOrder": "96", - "measuredW": "265", - "measuredH": "44", - "w": "265", - "h": "44", - "x": "989", - "y": "880", - "properties": { - "controlName": "114-advanced-topics:slots" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "265", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "38", - "measuredH": "25", - "x": "114", - "y": "9", - "properties": { - "size": "17", - "text": "Slots" - } - } - ] - } - } + "oldId": "tU4Umtnfu01t9gLlnlK6b" + }, + "zIndex": 999, + "width": 191, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -240.45968546864998, + "y": 152.74910795099487 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "ftqDoGpwqqWQnu4NQSsMk", + "type": "subtopic", + "position": { + "x": 0.9532181586903334, + "y": 521.9023298779132 + }, + "selected": false, + "data": { + "label": "Rendering Lists", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4791", - "typeID": "__group__", - "zOrder": "97", - "measuredW": "261", - "measuredH": "44", - "w": "261", - "h": "44", - "x": "989", - "y": "725", - "properties": { - "controlName": "110-advanced-topics:custom-directives" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "261", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "140", - "measuredH": "25", - "x": "61", - "y": "9", - "properties": { - "size": "17", - "text": "Custom Directives" - } - } - ] - } - } + "oldId": "dxwKfBxd5KYVkfEPMdHp-" + }, + "zIndex": 999, + "width": 218, + "height": 49, + "style": { + "width": 218, + "height": 49 + }, + "positionAbsolute": { + "x": 0.9532181586903334, + "y": 521.9023298779132 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "1oIt_5OK-t2WaCgaYt9A8", + "type": "subtopic", + "position": { + "x": -519.8364531870259, + "y": 99.74910795099487 + }, + "selected": false, + "data": { + "label": "Error / Warn Handler", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4793", - "typeID": "__group__", - "zOrder": "98", - "measuredW": "262", - "measuredH": "44", - "w": "262", - "h": "44", - "x": "989", - "y": "775", - "properties": { - "controlName": "112-advanced-topics:plugins" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "262", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "56", - "measuredH": "25", - "x": "103", - "y": "9", - "properties": { - "size": "17", - "text": "Plugins" - } - } - ] - } - } + "oldId": "f7N4pAp_jBlT8_8owAcbG" + }, + "zIndex": 999, + "width": 208, + "height": 49, + "style": { + "width": 208, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -519.8364531870259, + "y": 99.74910795099487 + }, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "gihxGgt177BK_EYsAfpx9", + "type": "subtopic", + "position": { + "x": -519.8364531870259, + "y": 152.74910795099487 + }, + "selected": false, + "data": { + "label": "Global Properties", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4794", - "typeID": "TextArea", - "zOrder": "99", - "w": "262", - "h": "154", - "measuredW": "200", - "measuredH": "140", - "x": "989", - "y": "936" + "oldId": "f7N4pAp_jBlT8_8owAcbG" + }, + "zIndex": 999, + "width": 208, + "height": 49, + "style": { + "width": 208, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -519.8364531870259, + "y": 152.74910795099487 + }, + "selectable": true, + "focusable": true + }, + { + "id": "f7N4pAp_jBlT8_8owAcbG", + "type": "subtopic", + "position": { + "x": -519.8364531870259, + "y": 205.74910795099487 + }, + "selected": false, + "data": { + "label": "Performance", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 208, + "height": 49, + "style": { + "width": 208, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": -519.8364531870259, + "y": 205.74910795099487 + }, + "selectable": true, + "focusable": true + }, + { + "id": "tU4Umtnfu01t9gLlnlK6b", + "type": "subtopic", + "position": { + "x": 0.9532181586903334, + "y": 468.90232987791325 + }, + "selected": false, + "data": { + "label": "Conditional Rendering", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 218, + "height": 49, + "style": { + "width": 218, + "height": 49 + }, + "positionAbsolute": { + "x": 0.9532181586903334, + "y": 468.90232987791325 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "NCIzs3jbQTv1xXhAaGfZN", + "type": "subtopic", + "position": { + "x": 316.3072938863818, + "y": 515.560061206005 + }, + "selected": false, + "data": { + "label": "v-text", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 103, + "height": 49, + "style": { + "width": 103, + "height": 49 + }, + "positionAbsolute": { + "x": 316.3072938863818, + "y": 515.560061206005 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "bZxtIBeIfeUcR32LZWrPW", + "type": "subtopic", + "position": { + "x": 424.093620869392, + "y": 515.560061206005 + }, + "selected": false, + "data": { + "label": "v-html", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 111, + "height": 49, + "style": { + "width": 111, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": 424.093620869392, + "y": 515.560061206005 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "_TlbGTKFCMO0wdLbC6xHX", + "type": "subtopic", + "position": { + "x": 316.3072938863818, + "y": 716.560061206005 + }, + "selected": false, + "data": { + "label": "v-show", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4795", - "typeID": "Label", - "zOrder": "100", - "measuredW": "85", - "measuredH": "25", - "x": "1077", - "y": "948", - "properties": { - "size": "17", - "text": "Animations" - } + "oldId": "Xv5oqDolAOVnNLXDQbeSc" + }, + "zIndex": 999, + "width": 215, + "height": 49, + "style": { + "width": 215, + "height": 49 + }, + "resizing": false, + "dragging": false, + "positionAbsolute": { + "x": 316.3072938863818, + "y": 716.560061206005 + }, + "selectable": true, + "focusable": true + }, + { + "id": "xHj3W9Ig3MVuVlGyXchaP", + "type": "subtopic", + "position": { + "x": 316.3072938863818, + "y": 768.560061206005 + }, + "selected": false, + "data": { + "label": "v-if", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 102, + "height": 49, + "style": { + "width": 102, + "height": 49 + }, + "resizing": false, + "dragging": false, + "positionAbsolute": { + "x": 316.3072938863818, + "y": 768.560061206005 + }, + "selectable": true, + "focusable": true + }, + { + "id": "0CtAZQcFJexMiJfZ-mofv", + "type": "subtopic", + "position": { + "x": 425.60847046222204, + "y": 768.560061206005 + }, + "selected": false, + "data": { + "label": "v-else", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 106, + "height": 49, + "style": { + "width": 106, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": 425.60847046222204, + "y": 768.560061206005 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "a9caVhderJaVo0v14w8WB", + "type": "subtopic", + "position": { + "x": 316.3072938863818, + "y": 820.560061206005 + }, + "selected": false, + "data": { + "label": "v-else-if", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 215, + "height": 49, + "style": { + "width": 215, + "height": 49 + }, + "dragging": false, + "resizing": false, + "positionAbsolute": { + "x": 316.3072938863818, + "y": 820.560061206005 + }, + "selectable": true, + "focusable": true + }, + { + "id": "3ftwRjQ9e1-qDT9BV53zr", + "type": "subtopic", + "position": { + "x": 316.3072938863818, + "y": 911.0003386751386 + }, + "selected": false, + "data": { + "label": "v-for", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 215, + "height": 49, + "style": { + "width": 215, + "height": 49 + }, + "positionAbsolute": { + "x": 316.3072938863818, + "y": 911.0003386751386 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "hVuRmhXVP65IPtuHTORjJ", + "type": "subtopic", + "position": { + "x": 316.3072938863818, + "y": 1001.0824225237909 + }, + "selected": false, + "data": { + "label": "v-on", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 215, + "height": 49, + "style": { + "width": 215, + "height": 49 + }, + "positionAbsolute": { + "x": 316.3072938863818, + "y": 1001.0824225237909 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "cuM9q9vYy8JpZPGeBffd1", + "type": "subtopic", + "position": { + "x": 316.3072938863818, + "y": 567.560061206005 + }, + "selected": false, + "data": { + "label": "v-bind", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 103, + "height": 49, + "style": { + "width": 103, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 316.3072938863818, + "y": 567.560061206005 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "cxu2Wbt306SxM4JKQQqnL", + "type": "subtopic", + "position": { + "x": 424.093620869392, + "y": 567.560061206005 + }, + "selected": false, + "data": { + "label": "v-model", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 111, + "height": 49, + "style": { + "width": 111, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 424.093620869392, + "y": 567.560061206005 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "m9pQ3daR3KiwRATcQysHA", + "type": "subtopic", + "position": { + "x": 319.60847046222204, + "y": 1090.7930632441885 + }, + "selected": false, + "data": { + "label": "v-slot", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4796", - "typeID": "__group__", - "zOrder": "101", - "measuredW": "230", - "measuredH": "44", - "w": "230", - "h": "44", - "x": "1005", - "y": "980", - "properties": { - "controlName": "115-advanced-topics:transition" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "230", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "76", - "measuredH": "25", - "x": "77", - "y": "9", - "properties": { - "size": "17", - "text": "Transition" - } - } - ] - } - } + "oldId": "RrSekP8Ub01coegMwLP6a" + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": 319.60847046222204, + "y": 1090.7930632441885 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "T4gBws699f0L6_2KitOmO", + "type": "label", + "position": { + "x": 358.60847046222204, + "y": 480.810061206005 + }, + "selected": false, + "data": { + "label": "Interpolation", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 }, - { - "ID": "4797", - "typeID": "__group__", - "zOrder": "102", - "measuredW": "231", - "measuredH": "44", - "w": "231", - "h": "44", - "x": "1005", - "y": "1030", - "properties": { - "controlName": "116-advanced-topics:transition-group" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "231", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "128", - "measuredH": "25", - "x": "52", - "y": "9", - "properties": { - "size": "17", - "text": "Transition Group" - } - } - ] - } - } + "oldId": "jFgWJnXJlysaz8pDkUKZf" + }, + "zIndex": 999, + "width": 113, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": 358.60847046222204, + "y": 480.810061206005 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "0bGhocvW0638QjfmkB1H1", + "type": "label", + "position": { + "x": 358.60847046222204, + "y": 677.810061206005 + }, + "selected": false, + "data": { + "label": "Conditionals", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 }, - { - "ID": "4807", - "typeID": "__group__", - "zOrder": "103", - "measuredW": "227", - "measuredH": "44", - "w": "227", - "h": "44", - "x": "270", - "y": "727", - "properties": { - "controlName": "107-advanced-topics:async-components" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "227", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "148", - "measuredH": "25", - "x": "40", - "y": "9", - "properties": { - "size": "17", - "text": "Async Components" - } - } - ] - } - } + "oldId": "jFgWJnXJlysaz8pDkUKZf" + }, + "zIndex": 999, + "width": 111, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": 358.60847046222204, + "y": 677.810061206005 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "qS8aEgb48igiqQ_hDEm-b", + "type": "label", + "position": { + "x": 384.8072938863818, + "y": 875.0003386751386 + }, + "selected": false, + "data": { + "label": "Iterative", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 }, - { - "ID": "4808", - "typeID": "__group__", - "zOrder": "104", - "measuredW": "227", - "measuredH": "44", - "w": "227", - "h": "44", - "x": "268", - "y": "780", - "properties": { - "controlName": "108-advanced-topics:teleport-components" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "227", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "167", - "measuredH": "25", - "x": "30", - "y": "9", - "properties": { - "size": "17", - "text": "Teleport Components" - } - } - ] - } - } + "oldId": "jFgWJnXJlysaz8pDkUKZf" + }, + "zIndex": 999, + "width": 78, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": 384.8072938863818, + "y": 875.0003386751386 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "5k9CrbzhNy9iiS6ez2UE6", + "type": "subtopic", + "position": { + "x": 316.3072938863818, + "y": 619.560061206005 + }, + "selected": false, + "data": { + "label": "v-once", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4809", - "typeID": "__group__", - "zOrder": "105", - "measuredW": "227", - "measuredH": "44", - "w": "227", - "h": "44", - "x": "268", - "y": "831", - "properties": { - "controlName": "109-advanced-topics:provide-inject" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "227", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "119", - "measuredH": "25", - "x": "54", - "y": "9", - "properties": { - "size": "17", - "text": "Provide / Inject" - } - } - ] - } - } + "oldId": "mlsrhioiEkqnRIL6O3hNa" + }, + "zIndex": 999, + "width": 103, + "height": 49, + "style": { + "width": 103, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 316.3072938863818, + "y": 619.560061206005 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "mlsrhioiEkqnRIL6O3hNa", + "type": "subtopic", + "position": { + "x": 424.093620869392, + "y": 619.560061206005 + }, + "selected": false, + "data": { + "label": "v-pre", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4811", - "typeID": "__group__", - "zOrder": "106", - "measuredW": "108", - "measuredH": "44", - "w": "108", - "h": "44", - "x": "445", - "y": "1276", - "properties": { - "controlName": "102-ecosystem:ssr" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "108", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "33", - "measuredH": "25", - "x": "37", - "y": "9", - "properties": { - "size": "17", - "text": "SSR" - } - } - ] - } - } + "oldId": "cuM9q9vYy8JpZPGeBffd1" + }, + "zIndex": 999, + "width": 111, + "height": 49, + "style": { + "width": 111, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 424.093620869392, + "y": 619.560061206005 + }, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "MZ38pZ5MykwdjjWdpd6bQ", + "type": "label", + "position": { + "x": 362.3072938863818, + "y": 965.0824225237909 + }, + "selected": false, + "data": { + "label": "Event Binding", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 }, - { - "ID": "4812", - "typeID": "__group__", - "zOrder": "107", - "measuredW": "108", - "measuredH": "44", - "w": "108", - "h": "44", - "x": "445", - "y": "1327", - "properties": { - "controlName": "103-ecosystem:ssg" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "108", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "34", - "measuredH": "25", - "x": "37", - "y": "9", - "properties": { - "size": "17", - "text": "SSG" - } - } - ] - } - } + "oldId": "jFgWJnXJlysaz8pDkUKZf" + }, + "zIndex": 999, + "width": 123, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": 362.3072938863818, + "y": 965.0824225237909 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "jFgWJnXJlysaz8pDkUKZf", + "type": "label", + "position": { + "x": 376.1806160048882, + "y": 1052.9006472331898 + }, + "selected": false, + "data": { + "label": "Templates", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 95, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": 376.1806160048882, + "y": 1052.9006472331898 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "RrSekP8Ub01coegMwLP6a", + "type": "subtopic", + "position": { + "x": 426.60847046222204, + "y": 1090.7930632441885 + }, + "selected": false, + "data": { + "label": "v-cloak", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": 426.60847046222204, + "y": 1090.7930632441885 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "_dQbXoFTJHaOARTWDUeHY", + "type": "paragraph", + "position": { + "x": 36.95321815869033, + "y": 371.83464066194904 + }, + "selected": false, + "data": { + "label": "Rendering", + "style": { + "fontSize": 17, + "borderColor": "transparent", + "backgroundColor": "transparent", + "color": "#000000", + "textAlign": "center", + "justifyContent": "center", + "padding": 16 }, - { - "ID": "4813", - "typeID": "__group__", - "zOrder": "108", - "measuredW": "193", - "measuredH": "44", - "w": "193", - "h": "44", - "x": "183", - "y": "1530", - "properties": { - "controlName": "100-ecosystem:mobile-apps:capacitor" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "193", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "76", - "measuredH": "25", - "x": "59", - "y": "9", - "properties": { - "size": "17", - "text": "Capacitor" - } - } - ] - } - } + "oldId": "kPzzrnb2DRHlJ7piaywDe" + }, + "zIndex": 999, + "width": 146, + "height": 54, + "style": { + "width": 146, + "height": 54 + }, + "resizing": false, + "positionAbsolute": { + "x": 36.95321815869033, + "y": 371.83464066194904 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "RRPhAxIqvAcjZIcLe_N8-", + "type": "subtopic", + "position": { + "x": 0.9532181586903334, + "y": 574.9023298779132 + }, + "selected": false, + "data": { + "label": "Optimizing Renders", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4814", - "typeID": "__group__", - "zOrder": "109", - "measuredW": "194", - "measuredH": "44", - "w": "194", - "h": "44", - "x": "182", - "y": "1458", - "properties": { - "controlName": "100-ecosystem:state-management:pinia" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "194", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "38", - "measuredH": "25", - "x": "78", - "y": "9", - "properties": { - "size": "17", - "text": "Pinia" - } - } - ] - } - } + "oldId": "dxwKfBxd5KYVkfEPMdHp-" + }, + "zIndex": 999, + "width": 218, + "height": 49, + "style": { + "width": 218, + "height": 49 + }, + "positionAbsolute": { + "x": 0.9532181586903334, + "y": 574.9023298779132 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "dxwKfBxd5KYVkfEPMdHp-", + "type": "subtopic", + "position": { + "x": 0.9532181586903334, + "y": 627.9023298779132 + }, + "selected": false, + "data": { + "label": "Debugging", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4815", - "typeID": "TextArea", - "zOrder": "110", - "w": "262", - "h": "252", - "measuredW": "200", - "measuredH": "140", - "x": "989", - "y": "1202" + "oldId": "tU4Umtnfu01t9gLlnlK6b" + }, + "zIndex": 999, + "width": 218, + "height": 49, + "style": { + "width": 218, + "height": 49 + }, + "positionAbsolute": { + "x": 0.9532181586903334, + "y": 627.9023298779132 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "WiGG9_4G5y-AVA9byw6_g", + "type": "topic", + "position": { + "x": -293.52532545570534, + "y": 467.810061206005 + }, + "selected": false, + "data": { + "label": "Lifecycle Hooks", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4816", - "typeID": "Label", - "zOrder": "111", - "measuredW": "56", - "measuredH": "25", - "x": "1092", - "y": "1216", - "properties": { - "size": "17", - "text": "Testing" - } + "oldId": "Bx1Atxcf15AEaA1BiSIc6" + }, + "zIndex": 999, + "width": 174, + "height": 49, + "style": { + "width": 174, + "height": 49 + }, + "positionAbsolute": { + "x": -293.52532545570534, + "y": 467.810061206005 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "PQu4TyJOfCEaafW5th0e4", + "type": "topic", + "position": { + "x": -293.59797432485874, + "y": 591.0683595993249 + }, + "selected": false, + "data": { + "label": "Forms Handling", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4817", - "typeID": "__group__", - "zOrder": "112", - "measuredW": "229", - "measuredH": "44", - "w": "229", - "h": "44", - "x": "1005", - "y": "1251", - "properties": { - "controlName": "107-ecosystem:vitest" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "229", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "44", - "measuredH": "25", - "x": "93", - "y": "10", - "properties": { - "size": "17", - "text": "Vitest" - } - } - ] - } - } + "oldId": "Bx1Atxcf15AEaA1BiSIc6" + }, + "zIndex": 999, + "width": 174, + "height": 49, + "style": { + "width": 174, + "height": 49 + }, + "positionAbsolute": { + "x": -293.59797432485874, + "y": 591.0683595993249 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "NfB3HlZ3uwYK5xszvV50b", + "type": "subtopic", + "position": { + "x": -514.5059150365778, + "y": 538.0683595993249 + }, + "selected": false, + "data": { + "label": "Input Bindings", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 156, + "height": 49, + "style": { + "width": 156, + "height": 49 + }, + "positionAbsolute": { + "x": -514.5059150365778, + "y": 538.0683595993249 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "gMFndBcrTC6FtGryqN6dX", + "type": "subtopic", + "position": { + "x": -514.5059150365778, + "y": 591.0683595993249 + }, + "selected": false, + "data": { + "label": "v-model", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4818", - "typeID": "__group__", - "zOrder": "113", - "measuredW": "229", - "measuredH": "44", - "w": "229", - "h": "44", - "x": "1006", - "y": "1300", - "properties": { - "controlName": "108-ecosystem:vue-testing-library" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "229", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "147", - "measuredH": "25", - "x": "41", - "y": "10", - "properties": { - "size": "17", - "text": "Vue Testing Library" - } - } - ] - } - } + "oldId": "dSfrFLr8wKkLAOMJwtCTr" + }, + "zIndex": 999, + "width": 156, + "height": 49, + "style": { + "width": 156, + "height": 49 + }, + "positionAbsolute": { + "x": -514.5059150365778, + "y": 591.0683595993249 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "dSfrFLr8wKkLAOMJwtCTr", + "type": "subtopic", + "position": { + "x": -514.5059150365778, + "y": 644.0683595993249 + }, + "selected": false, + "data": { + "label": "Modifiers", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 156, + "height": 49, + "style": { + "width": 156, + "height": 49 + }, + "positionAbsolute": { + "x": -514.5059150365778, + "y": 644.0683595993249 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "4p6Gh2fMPA8hls_mWa5HR", + "type": "topic", + "position": { + "x": -293.59797432485874, + "y": 719.560061206005 + }, + "selected": false, + "data": { + "label": "Event Handling", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4819", - "typeID": "__group__", - "zOrder": "114", - "measuredW": "228", - "measuredH": "44", - "w": "228", - "h": "44", - "x": "1006", - "y": "1348", - "properties": { - "controlName": "109-ecosystem:cypress" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "228", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "63", - "measuredH": "25", - "x": "82", - "y": "10", - "properties": { - "size": "17", - "text": "Cypress" - } - } - ] - } - } + "oldId": "Bx1Atxcf15AEaA1BiSIc6" + }, + "zIndex": 999, + "width": 174, + "height": 49, + "style": { + "width": 174, + "height": 49 + }, + "positionAbsolute": { + "x": -293.59797432485874, + "y": 719.560061206005 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "b7iXwtUnELg_ShbCyTrNA", + "type": "subtopic", + "position": { + "x": -512.8080206821377, + "y": 826.1444350693496 + }, + "selected": false, + "data": { + "label": "Binding Events", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 241, + "height": 49, + "style": { + "width": 241 + }, + "positionAbsolute": { + "x": -512.8080206821377, + "y": 826.1444350693496 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "gVahaZNPktQuqdukFEbQH", + "type": "subtopic", + "position": { + "x": -512.8080206821377, + "y": 879.1444350693496 + }, + "selected": false, + "data": { + "label": "Inline / Method Handlers", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 241, + "height": 49, + "style": { + "width": 241, + "height": 49 + }, + "positionAbsolute": { + "x": -512.8080206821377, + "y": 879.1444350693496 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "Aaf7eA-5sbAD5Cs1MbdTQ", + "type": "subtopic", + "position": { + "x": -512.8080206821377, + "y": 932.1444350693496 + }, + "selected": false, + "data": { + "label": "Event Modifiers", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 241, + "height": 49, + "style": { + "width": 241 + }, + "dragging": false, + "positionAbsolute": { + "x": -512.8080206821377, + "y": 932.1444350693496 + }, + "selectable": true, + "focusable": true + }, + { + "id": "BXw36wqhmi3gExXwFCIBd", + "type": "subtopic", + "position": { + "x": -512.8080206821377, + "y": 985.1444350693496 + }, + "selected": false, + "data": { + "label": "Key Modifiers", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 241, + "height": 49, + "style": { + "width": 241 + }, + "positionAbsolute": { + "x": -512.8080206821377, + "y": 985.1444350693496 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "x0wl2Qz2LTP4Q2tThKAt3", + "type": "subtopic", + "position": { + "x": -512.8080206821377, + "y": 1038.1444350693496 + }, + "selected": false, + "data": { + "label": "Mouse Button Modifiers", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 241, + "height": 49, + "style": { + "width": 241 + }, + "positionAbsolute": { + "x": -512.8080206821377, + "y": 1038.1444350693496 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Bx1Atxcf15AEaA1BiSIc6", + "type": "topic", + "position": { + "x": 59.54031453135002, + "y": 719.560061206005 + }, + "selected": false, + "data": { + "label": "Computed Properties", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4820", - "typeID": "__group__", - "zOrder": "115", - "measuredW": "207", - "measuredH": "44", - "w": "207", - "h": "44", - "x": "183", - "y": "1224", - "properties": { - "controlName": "100-ecosystem:ssr:quasar" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "207", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "57", - "measuredH": "25", - "x": "75", - "y": "9", - "properties": { - "size": "17", - "text": "Quasar" - } - } - ] - } - } + "oldId": "1vHiAZliR19a2UtT3Ps0W" + }, + "zIndex": 999, + "width": 210, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 59.54031453135002, + "y": 719.560061206005 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "A5p6pqSOtLJybt4LrZ1St", + "type": "paragraph", + "position": { + "x": 67.04031453135002, + "y": 968.2507883342075 + }, + "selected": false, + "data": { + "label": "Advanced Topics", + "style": { + "fontSize": 20, + "borderColor": "transparent", + "backgroundColor": "transparent", + "color": "#000000", + "textAlign": "center", + "justifyContent": "center", + "padding": 16 }, - { - "ID": "4821", - "typeID": "TextArea", - "zOrder": "116", - "w": "262", - "h": "212", - "measuredW": "200", - "measuredH": "140", - "x": "989", - "y": "1472" + "oldId": "HOPgVo3xf0ZN8DmU9BDpo" + }, + "zIndex": 999, + "width": 195, + "height": 76, + "style": { + "width": 195, + "height": 76 + }, + "resizing": false, + "positionAbsolute": { + "x": 67.04031453135002, + "y": 968.2507883342075 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Re7tv1U0LxYqE5ShFxQSf", + "type": "subtopic", + "position": { + "x": -248.45827207144166, + "y": 822.7507883342075 + }, + "selected": false, + "data": { + "label": "Async Components", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 217, + "height": 49, + "style": { + "width": 217 + }, + "positionAbsolute": { + "x": -248.45827207144166, + "y": 822.7507883342075 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "SGsd08ZTu4H76s8cfbCKe", + "type": "subtopic", + "position": { + "x": -248.45827207144166, + "y": 875.7507883342075 + }, + "selected": false, + "data": { + "label": "Teleport Components", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 217, + "height": 49, + "style": { + "width": 217, + "height": 49 + }, + "positionAbsolute": { + "x": -248.45827207144166, + "y": 875.7507883342075 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "id": "xwVbhOpQMPPB4G-lhro0B", + "type": "subtopic", + "position": { + "x": -248.45827207144166, + "y": 928.7507883342075 + }, + "selected": false, + "data": { + "label": "Provide / Inject", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 217, + "height": 49, + "style": { + "width": 217 + }, + "positionAbsolute": { + "x": -248.45827207144166, + "y": 928.7507883342075 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "br1r8KIf5KInY5mk2xhA6", + "type": "subtopic", + "position": { + "x": -248.45827207144166, + "y": 981.7507883342075 + }, + "selected": false, + "data": { + "label": "Custom Directives", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 217, + "height": 49, + "style": { + "width": 217 + }, + "positionAbsolute": { + "x": -248.45827207144166, + "y": 981.7507883342075 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "_Nc8ivQrdpKuf8MwaV-K7", + "type": "subtopic", + "position": { + "x": -248.45827207144166, + "y": 1034.7507883342075 + }, + "selected": false, + "data": { + "label": "Plugins", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 217, + "height": 49, + "style": { + "width": 217 + }, + "positionAbsolute": { + "x": -248.45827207144166, + "y": 1034.7507883342075 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "kdlXhbw_a81xdZtyK-pVa", + "type": "subtopic", + "position": { + "x": -248.45827207144166, + "y": 1087.7507883342075 + }, + "selected": false, + "data": { + "label": "Watchers", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 217, + "height": 49, + "style": { + "width": 217 + }, + "positionAbsolute": { + "x": -248.45827207144166, + "y": 1087.7507883342075 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "jkX66izOHVWqtyd6KZ0K6", + "type": "subtopic", + "position": { + "x": -248.45827207144166, + "y": 1140.7507883342075 + }, + "selected": false, + "data": { + "label": "Slots", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 217, + "height": 49, + "style": { + "width": 217, + "height": 49 + }, + "positionAbsolute": { + "x": -248.45827207144166, + "y": 1140.7507883342075 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "w72iWpfaV9zTACCxSL4zI", + "type": "label", + "position": { + "x": -199.61720569319456, + "y": 1203.736629603213 + }, + "selected": false, + "data": { + "label": "Animations", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 101, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": -199.61720569319456, + "y": 1203.736629603213 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "SWpWg5J5N9ZfY_DaIigA5", + "type": "subtopic", + "position": { + "x": -239.61720569319456, + "y": 1245.0004887424668 + }, + "selected": false, + "data": { + "label": "Transition", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 195, + "height": 49, + "style": { + "width": 195, + "height": 49 + }, + "positionAbsolute": { + "x": -239.61720569319456, + "y": 1245.0004887424668 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "HjzOYjS-7ZEBvElRJ8uN2", + "type": "subtopic", + "position": { + "x": -239.61720569319456, + "y": 1298.0004887424668 + }, + "selected": false, + "data": { + "label": "Transition Group", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 195, + "height": 49, + "style": { + "width": 195, + "height": 49 + }, + "positionAbsolute": { + "x": -239.61720569319456, + "y": 1298.0004887424668 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "YTzOdnGWNKTjk8T1fcaiO", + "type": "paragraph", + "position": { + "x": 83.54031453135002, + "y": 1300.0004887424668 + }, + "selected": false, + "data": { + "label": "Ecosystems", + "style": { + "fontSize": 20, + "borderColor": "transparent", + "backgroundColor": "transparent", + "color": "#000000", + "textAlign": "center", + "justifyContent": "center", + "padding": 16 }, - { - "ID": "4822", - "typeID": "Label", - "zOrder": "117", - "measuredW": "51", - "measuredH": "25", - "x": "1094", - "y": "1487", - "properties": { - "size": "17", - "text": "Styling" - } + "oldId": "HOPgVo3xf0ZN8DmU9BDpo" + }, + "zIndex": 999, + "width": 162, + "height": 46, + "style": { + "width": 162, + "height": 46 + }, + "resizing": false, + "positionAbsolute": { + "x": 83.54031453135002, + "y": 1300.0004887424668 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "HOPgVo3xf0ZN8DmU9BDpo", + "type": "paragraph", + "position": { + "x": 387.9970609830833, + "y": 1298.5004887424668 + }, + "selected": false, + "data": { + "label": "Utilities", + "style": { + "fontSize": 20, + "borderColor": "transparent", + "backgroundColor": "transparent", + "color": "#000000", + "textAlign": "center", + "justifyContent": "center", + "padding": 16 }, - { - "ID": "4823", - "typeID": "__group__", - "zOrder": "118", - "measuredW": "230", - "measuredH": "44", - "w": "230", - "h": "44", - "x": "1006", - "y": "1526", - "properties": { - "controlName": "110-ecosystem:tailwind-css" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "230", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "98", - "measuredH": "25", - "x": "66", - "y": "10", - "properties": { - "size": "17", - "text": "Tailwind CSS" - } - } - ] - } - } + "oldId": "_dQbXoFTJHaOARTWDUeHY" + }, + "zIndex": 999, + "width": 112, + "height": 49, + "style": { + "width": 112, + "height": 49 + }, + "resizing": false, + "positionAbsolute": { + "x": 387.9970609830833, + "y": 1298.5004887424668 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Z9szBPFXfqK_KsvzkR-rf", + "type": "subtopic", + "position": { + "x": 391.4970609830833, + "y": 1203.736629603213 + }, + "selected": false, + "data": { + "label": "VueUse", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 105, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 391.4970609830833, + "y": 1203.736629603213 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "ixRG0xfEp4BmyvCR0mtoR", + "type": "topic", + "position": { + "x": 92.54031453135002, + "y": 1422.1053534778678 + }, + "selected": false, + "data": { + "label": "Routing", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 144, + "height": 49, + "style": { + "width": 144, + "height": 49 + }, + "dragging": false, + "positionAbsolute": { + "x": 92.54031453135002, + "y": 1422.1053534778678 + }, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "COxkmvqe9jFtV9WtGjfbh", + "type": "subtopic", + "position": { + "x": 338.60847046222204, + "y": 1422.1053534778678 + }, + "selected": false, + "data": { + "label": "Vue Router", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 131, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 338.60847046222204, + "y": 1422.1053534778678 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "izGdctxP_OvQNvaMwVIrh", + "type": "topic", + "position": { + "x": -105.9953868087789, + "y": 1422.1053534778678 + }, + "selected": false, + "data": { + "label": "Forms", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4824", - "typeID": "__group__", - "zOrder": "119", - "measuredW": "228", - "measuredH": "44", - "w": "228", - "h": "44", - "x": "1008", - "y": "1575", - "properties": { - "controlName": "111-ecosystem:vuetify" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "228", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "52", - "measuredH": "25", - "x": "88", - "y": "10", - "properties": { - "size": "17", - "text": "Vuetify" - } - } - ] - } - } + "oldId": "1nmGJFENMmI1WXAeUHeCt" + }, + "zIndex": 999, + "width": 93, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -105.9953868087789, + "y": 1422.1053534778678 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "BXz1utB_2eYzFvzSbFKx0", + "type": "subtopic", + "position": { + "x": -134.5523118952504, + "y": 1502.7534021113336 + }, + "selected": false, + "data": { + "label": "FormKit", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 149, + "height": 49, + "style": { + "width": 149 + }, + "positionAbsolute": { + "x": -134.5523118952504, + "y": 1502.7534021113336 + }, + "selectable": true, + "focusable": true, + "dragging": false + }, + { + "id": "_Fmp8_z4SKWfKUE80_fqb", + "type": "subtopic", + "position": { + "x": -134.5523118952504, + "y": 1555.7534021113336 + }, + "selected": false, + "data": { + "label": "Vee Validate", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 149, + "height": 49, + "style": { + "width": 149, + "height": 49 + }, + "positionAbsolute": { + "x": -134.5523118952504, + "y": 1555.7534021113336 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "id": "6U_CAhAY_jyj_4Mzj_HL_", + "type": "subtopic", + "position": { + "x": -134.5523118952504, + "y": 1608.7534021113336 + }, + "selected": false, + "data": { + "label": "Vuelidate", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 149, + "height": 49, + "style": { + "width": 149 + }, + "positionAbsolute": { + "x": -134.5523118952504, + "y": 1608.7534021113336 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "Cm6mqXYp-G4mGfPxuU73_", + "type": "topic", + "position": { + "x": -370.65341088187324, + "y": 1422.1053534778678 + }, + "selected": false, + "data": { + "label": "SSR", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4825", - "typeID": "__group__", - "zOrder": "120", - "measuredW": "228", - "measuredH": "44", - "w": "228", - "h": "44", - "x": "1008", - "y": "1623", - "properties": { - "controlName": "112-ecosystem:element-ui" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "228", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "87", - "measuredH": "25", - "x": "70", - "y": "10", - "properties": { - "size": "17", - "text": "Element UI" - } - } - ] - } - } + "oldId": "1nmGJFENMmI1WXAeUHeCt" + }, + "zIndex": 999, + "width": 78, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -370.65341088187324, + "y": 1422.1053534778678 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "822tGnM9jOkYh9aNlosPr", + "type": "topic", + "position": { + "x": -518.3364531870259, + "y": 1315.8962774513473 + }, + "selected": false, + "data": { + "label": "SSG", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4826", - "typeID": "__group__", - "zOrder": "121", - "measuredW": "274", - "measuredH": "57", - "w": "274", - "h": "57", - "x": "557", - "y": "144", - "properties": { - "controlName": "ext_link:roadmap.sh/javascript" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "274", - "h": "57", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0", - "properties": { - "borderColor": "4273622", - "color": "4273622" - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "1", - "measuredW": "188", - "measuredH": "28", - "x": "43", - "y": "15", - "properties": { - "color": "16777215", - "size": "20", - "text": "JavaScript Roadmap" - } - } - ] - } - } + "oldId": "1nmGJFENMmI1WXAeUHeCt" + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": -518.3364531870259, + "y": 1315.8962774513473 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "f2udJnT2q5eDmBZ_OKtmi", + "type": "subtopic", + "position": { + "x": -381.65341088187324, + "y": 1262.8962774513473 + }, + "selected": false, + "data": { + "label": "Quasar", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4827", - "typeID": "__group__", - "zOrder": "122", - "measuredW": "300", - "measuredH": "148", - "w": "300", - "h": "148", - "x": "200", - "y": "92", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Canvas", - "zOrder": "0", - "w": "300", - "h": "148", - "measuredW": "100", - "measuredH": "70", - "x": "0", - "y": "0" - }, - { - "ID": "1", - "typeID": "__group__", - "zOrder": "1", - "measuredW": "151", - "measuredH": "25", - "w": "151", - "h": "25", - "x": "23", - "y": "62", - "properties": { - "controlName": "ext_link:roadmap.sh/react" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Label", - "zOrder": "0", - "measuredW": "118", - "measuredH": "24", - "x": "33", - "y": "0", - "properties": { - "size": "16", - "text": "React Roadmap" - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "1", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10066329" - } - } - ] - } - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "175", - "measuredH": "28", - "x": "25", - "y": "21", - "properties": { - "size": "20", - "text": "Related Roadmaps" - } - }, - { - "ID": "3", - "typeID": "__group__", - "zOrder": "3", - "measuredW": "163", - "measuredH": "25", - "w": "163", - "h": "25", - "x": "23", - "y": "95", - "properties": { - "controlName": "ext_link:roadmap.sh/angular" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Label", - "zOrder": "0", - "measuredW": "130", - "measuredH": "24", - "x": "33", - "y": "0", - "properties": { - "size": "16", - "text": "Angular Roadmap" - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "1", - "properties": { - "icon": { - "ID": "check-circle", - "size": "small" - }, - "color": "10066329" - } - } - ] - } - } - } - ] - } - } + "oldId": "_46COO0FGaFuCYwqaRRWy" + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": -381.65341088187324, + "y": 1262.8962774513473 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "8xZxTLYq5m5_nkGh2lfUt", + "type": "subtopic", + "position": { + "x": -381.65341088187324, + "y": 1315.8962774513473 + }, + "selected": false, + "data": { + "label": "Nuxt.js", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4828", - "typeID": "__group__", - "zOrder": "123", - "measuredW": "96", - "measuredH": "44", - "w": "96", - "h": "44", - "x": "806", - "y": "1125", - "properties": { - "controlName": "113-ecosystem:vueuse" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "96", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "61", - "measuredH": "25", - "x": "17", - "y": "9", - "properties": { - "size": "17", - "text": "VueUse" - } - } - ] - } - } + "oldId": "_46COO0FGaFuCYwqaRRWy" + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": -381.65341088187324, + "y": 1315.8962774513473 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "_46COO0FGaFuCYwqaRRWy", + "type": "subtopic", + "position": { + "x": -518.3364531870259, + "y": 1238.4448162837582 + }, + "selected": false, + "data": { + "label": "VitePress", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": -518.3364531870259, + "y": 1238.4448162837582 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "LjEAviRMtPLwUUlfcof1h", + "type": "subtopic", + "position": { + "x": -437.5730606910654, + "y": 1557.1656483488384 + }, + "selected": false, + "data": { + "label": "Vitest", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 212, + "height": 49, + "style": { + "width": 212, + "height": 49 + }, + "positionAbsolute": { + "x": -437.5730606910654, + "y": 1557.1656483488384 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "id": "p5bUvgr_3H-A55ZnEExk8", + "type": "subtopic", + "position": { + "x": -437.5730606910654, + "y": 1610.1656483488384 + }, + "selected": false, + "data": { + "label": "Vue Testing Library", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 212, + "height": 49, + "style": { + "width": 212, + "height": 49 + }, + "positionAbsolute": { + "x": -437.5730606910654, + "y": 1610.1656483488384 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "JbMKUVDMUygjXXmhndHVs", + "type": "subtopic", + "position": { + "x": -437.57306069106534, + "y": 1663.1656483488384 + }, + "selected": false, + "data": { + "label": "Cypress", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 100, + "height": 49, + "style": { + "width": 100, + "height": 49 + }, + "positionAbsolute": { + "x": -437.57306069106534, + "y": 1663.1656483488384 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "zqcE3bTnymdepV-Yc8qBl", + "type": "subtopic", + "position": { + "x": -334.7759930933753, + "y": 1663.1656483488384 + }, + "selected": false, + "data": { + "label": "Playwright", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 110, + "height": 49, + "style": { + "width": 110, + "height": 49 + }, + "positionAbsolute": { + "x": -334.7759930933753, + "y": 1663.1656483488384 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "q1PayNkcJHU43QCdChAXt", + "type": "section", + "position": { + "x": 80.64058812810305, + "y": 1508.9384945254162 + }, + "width": 172, + "height": 211, + "style": { + "width": 172, + "height": 211 + }, + "selected": false, + "data": { + "oldId": "sg9IjWWorT2lLEnUek-q5", + "style": { + "backgroundColor": "#ffffff", + "borderColor": "#000000" + } + }, + "resizing": false, + "positionAbsolute": { + "x": 80.64058812810305, + "y": 1508.9384945254162 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "TkzlmJ85O-e-KfMhTBwry", + "type": "subtopic", + "position": { + "x": 90.64058812810305, + "y": 1553.4384945254162 + }, + "selected": false, + "data": { + "label": "Tailwind CSS", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4829", - "typeID": "Arrow", - "zOrder": "3", - "w": "1", - "h": "78", - "measuredW": "150", - "measuredH": "100", - "x": "853", - "y": "1144", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 78 - }, - "p1": { - "x": 0.6380090497737557, - "y": -0.0018099547511312257 - }, - "p2": { - "x": 0, - "y": 0 - } - } + "oldId": "LjEAviRMtPLwUUlfcof1h" + }, + "zIndex": 999, + "width": 152, + "height": 49, + "style": { + "width": 152, + "height": 49 + }, + "positionAbsolute": { + "x": 90.64058812810305, + "y": 1553.4384945254162 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "id": "VNclt_QQthWb2u4xWI_uY", + "type": "subtopic", + "position": { + "x": 90.64058812810305, + "y": 1606.4384945254162 + }, + "selected": false, + "data": { + "label": "Vuetify", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4830", - "typeID": "__group__", - "zOrder": "124", - "measuredW": "78", - "measuredH": "44", - "w": "78", - "h": "44", - "x": "349", - "y": "451", - "properties": { - "controlName": "105-fundamental-topics:components:v-model" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "78", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "62", - "measuredH": "25", - "x": "8", - "y": "10", - "properties": { - "size": "17", - "text": "v-model" - } - } - ] - } - } + "oldId": "p5bUvgr_3H-A55ZnEExk8" + }, + "zIndex": 999, + "width": 152, + "height": 49, + "style": { + "width": 152, + "height": 49 + }, + "positionAbsolute": { + "x": 90.64058812810305, + "y": 1606.4384945254162 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "NMIh8rqLM5P-Uk65uHATn", + "type": "subtopic", + "position": { + "x": 90.64058812810305, + "y": 1659.4384945254162 + }, + "selected": false, + "data": { + "label": "Element UI", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4833", - "typeID": "Arrow", - "zOrder": "2", - "w": "109", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "483", - "y": "748", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 108.5, - "y": 0 - }, - "p1": { - "x": 0.4811090254395629, - "y": 0.004165338153758769 - }, - "p2": { - "x": -0.22477605439985382, - "y": 0 - } - } + "oldId": "JbMKUVDMUygjXXmhndHVs" + }, + "zIndex": 999, + "width": 152, + "height": 49, + "style": { + "width": 152, + "height": 49 + }, + "positionAbsolute": { + "x": 90.64058812810305, + "y": 1659.4384945254162 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "uNLdPeShyAMpc-_JKMsnb", + "type": "label", + "position": { + "x": -367.5730606910654, + "y": 1512.4295074880922 + }, + "selected": false, + "data": { + "label": "Testing", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 72, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": -367.5730606910654, + "y": 1512.4295074880922 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "5BmKlchM8LbBo2xFOP1wk", + "type": "label", + "position": { + "x": 133.64058812810305, + "y": 1515.4451563483256 + }, + "selected": false, + "data": { + "label": "Styling", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 66, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": 133.64058812810305, + "y": 1515.4451563483256 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "9AwVtwIv6TfP9F4ulz2F0", + "type": "topic", + "position": { + "x": 310.5448461352869, + "y": 1589.9384945254162 + }, + "selected": false, + "data": { + "label": "State Management", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4834", - "typeID": "Arrow", - "zOrder": "1", - "w": "108", - "h": "44", - "measuredW": "150", - "measuredH": "100", - "x": "483", - "y": "760", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 107.5, - "y": -0.5 - }, - "p1": { - "x": 0.5143401966163875, - "y": -0.1055820115798543 - }, - "p2": { - "x": -0.22477605439985382, - "y": 43 - } - } + "oldId": "3RwIO-S8-xOYKNmfwk0pf" + }, + "zIndex": 999, + "width": 192, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 310.5448461352869, + "y": 1589.9384945254162 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "MsPIwtv5b_mp567YlLkEU", + "type": "horizontal", + "position": { + "x": -215.5730606910654, + "y": 1673.9384945254162 + }, + "selected": false, + "data": { + "label": "horizontal node", + "style": { + "stroke": "#2B78E4", + "strokeWidth": 3.75 + } + }, + "zIndex": 999, + "width": 296, + "height": 20, + "style": { + "width": 296, + "height": 20 + }, + "positionAbsolute": { + "x": -215.5730606910654, + "y": 1673.9384945254162 + }, + "dragging": false, + "resizing": false, + "selectable": true, + "focusable": true + }, + { + "id": "NIvjyhtTFC1gomtGQT_2t", + "type": "subtopic", + "position": { + "x": 365.0448461352869, + "y": 1499.4295074880922 + }, + "selected": false, + "data": { + "label": "Pinia", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 83, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 365.0448461352869, + "y": 1499.4295074880922 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "ZLlz0Azfze-8k3z8HnVvE", + "type": "topic", + "position": { + "x": 322.0448461352869, + "y": 1767.5550770848167 + }, + "selected": false, + "data": { + "label": "API Calls", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" }, - { - "ID": "4835", - "typeID": "Arrow", - "zOrder": "0", - "w": "104", - "h": "89", - "measuredW": "150", - "measuredH": "100", - "x": "489", - "y": "766", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 103.5, - "y": -0.5 - }, - "p1": { - "x": 0.5169170459362729, - "y": -0.11617393102757675 - }, - "p2": { - "x": -0.5, - "y": 88.5 - } - } + "oldId": "3RwIO-S8-xOYKNmfwk0pf" + }, + "zIndex": 999, + "width": 169, + "height": 49, + "style": { + "width": 169, + "height": 49 + }, + "positionAbsolute": { + "x": 322.0448461352869, + "y": 1767.5550770848167 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "l2Rl6OQbL7kYvPlpYCZ0Z", + "type": "subtopic", + "position": { + "x": 322.693038734734, + "y": 1858.88303846187 + }, + "selected": false, + "data": { + "label": "Apollo", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 169, + "height": 49, + "style": { + "width": 169, + "height": 49 + }, + "positionAbsolute": { + "x": 322.693038734734, + "y": 1858.88303846187 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "id": "n5IlN-wv4k0r16CvhoSpD", + "type": "subtopic", + "position": { + "x": 319.2119067267403, + "y": 1954.4720214419385 + }, + "selected": false, + "data": { + "label": "Axios", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 87, + "height": 49, + "style": { + "width": 87, + "height": 49 + }, + "positionAbsolute": { + "x": 319.2119067267403, + "y": 1954.4720214419385 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "id": "ufnt87swK61kxShLuVc1-", + "type": "subtopic", + "position": { + "x": 410.7868316808595, + "y": 1954.4720214419385 + }, + "selected": false, + "data": { + "label": "fetch", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 83, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": 410.7868316808595, + "y": 1954.4720214419385 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "WSq_cDKQPZa_qmQlIdGXg", + "type": "subtopic", + "position": { + "x": 318.7868316808595, + "y": 2006.4720214419385 + }, + "selected": false, + "data": { + "label": "Tanstack Query", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 175, + "height": 49, + "style": { + "width": 175, + "height": 49 + }, + "positionAbsolute": { + "x": 318.7868316808595, + "y": 2006.4720214419385 + }, + "selectable": true, + "focusable": true, + "dragging": false, + "resizing": false + }, + { + "id": "hqLe_qkIsVAisPw31NroU", + "type": "label", + "position": { + "x": 364.193038734734, + "y": 1912.88303846187 + }, + "selected": false, + "data": { + "label": "GraphQL", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 }, - { - "ID": "4836", - "typeID": "__group__", - "zOrder": "125", - "measuredW": "228", - "measuredH": "44", - "w": "228", - "h": "44", - "x": "1006", - "y": "1396", - "properties": { - "controlName": "110-ecosystem:playwright" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "228", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "78", - "measuredH": "25", - "x": "75", - "y": "10", - "properties": { - "size": "17", - "text": "Playwright" - } - } - ] - } - } + "oldId": "7ZP7XMaMxk1iOs3rgnuJy" + }, + "zIndex": 999, + "width": 86, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": 364.193038734734, + "y": 1912.88303846187 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "7ZP7XMaMxk1iOs3rgnuJy", + "type": "label", + "position": { + "x": 363.2868316808595, + "y": 2059.18789405153 + }, + "selected": false, + "data": { + "label": "HTTP", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + } + }, + "zIndex": 999, + "width": 60, + "height": 36, + "style": {}, + "positionAbsolute": { + "x": 363.2868316808595, + "y": 2059.18789405153 + }, + "dragging": false, + "selectable": true, + "focusable": true + }, + { + "id": "3RwIO-S8-xOYKNmfwk0pf", + "type": "topic", + "position": { + "x": -86.12877362673987, + "y": 1767.5550770848167 + }, + "selected": false, + "data": { + "label": "Mobile Apps", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" } - ] - }, - "attributes": { - "name": "New Wireframe 1 copy 8", - "order": 1000000.6428282561, - "parentID": null, - "notes": "" - }, - "branchID": "Master", - "resourceID": "960B5EDB-5533-4531-9B7D-06B4366EBEAE", - "mockupH": "1998", - "mockupW": "1154", - "measuredW": "1334", - "measuredH": "2045", - "version": "1.0" - }, - "groupOffset": { - "x": 0, - "y": 0 - }, - "dependencies": [], - "projectID": "file:///Users/kamrify/Desktop/New%20Roadmaps/Android%20Roadmap.bmpr" + }, + "zIndex": 999, + "width": 169, + "height": 49, + "style": { + "width": 169, + "height": 49 + }, + "positionAbsolute": { + "x": -86.12877362673987, + "y": 1767.5550770848167 + }, + "dragging": false, + "selectable": true, + "focusable": true, + "resizing": false + }, + { + "id": "IsNzCdS05tbAK0D1zz0Sf", + "type": "subtopic", + "position": { + "x": -271.8080206821377, + "y": 1767.5550770848167 + }, + "selected": false, + "data": { + "label": "Capacitor", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + } + }, + "zIndex": 999, + "width": 120, + "height": 49, + "style": {}, + "positionAbsolute": { + "x": -271.8080206821377, + "y": 1767.5550770848167 + }, + "dragging": false, + "focusable": true + } + ], + "edges": [ + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "M0aRyhxjzTWUOW95D1g1y", + "selected": false, + "type": "smoothstep", + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "Xw4lLz2zWuTkNu8r4oheF", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "mbCXMk97_HKXG3d4TxBOC", + "selected": false, + "focusable": true, + "selectable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "iogwMmOvub2ZF4zgg6WyF", + "sourceHandle": "x2", + "target": "XDvH2t3AJGevS17uM8TO6", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-iogwMmOvub2ZF4zgg6WyFx2-XDvH2t3AJGevS17uM8TO6w1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "XDvH2t3AJGevS17uM8TO6", + "sourceHandle": "z2", + "target": "kPzzrnb2DRHlJ7piaywDe", + "targetHandle": "y2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-XDvH2t3AJGevS17uM8TO6z2-kPzzrnb2DRHlJ7piaywDey2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "kPzzrnb2DRHlJ7piaywDe", + "sourceHandle": "w2", + "target": "y9ToYDix-koRbR6FLydFw", + "targetHandle": "x2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-kPzzrnb2DRHlJ7piaywDew2-y9ToYDix-koRbR6FLydFwx2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "kPzzrnb2DRHlJ7piaywDe", + "sourceHandle": "x2", + "target": "0EevuyZiyty3X3Jzpjl4y", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-kPzzrnb2DRHlJ7piaywDex2-tU4Umtnfu01t9gLlnlK6bw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "0EevuyZiyty3X3Jzpjl4y", + "sourceHandle": "y2", + "target": "2HhKifjuDcP3eKpanRMEQ", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-tU4Umtnfu01t9gLlnlK6by2-2HhKifjuDcP3eKpanRMEQz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "0EevuyZiyty3X3Jzpjl4y", + "sourceHandle": "y2", + "target": "VNBRlJkdH6NOOzGXUrbZK", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-tU4Umtnfu01t9gLlnlK6by2-VNBRlJkdH6NOOzGXUrbZKz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "0EevuyZiyty3X3Jzpjl4y", + "sourceHandle": "y2", + "target": "swpyZFUO4UO3mW8Bvf1Te", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-tU4Umtnfu01t9gLlnlK6by2-swpyZFUO4UO3mW8Bvf1Tez1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "0EevuyZiyty3X3Jzpjl4y", + "sourceHandle": "y2", + "target": "4S5fVFsFDMbq05ld7n0sF", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-tU4Umtnfu01t9gLlnlK6by2-4S5fVFsFDMbq05ld7n0sFz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "0EevuyZiyty3X3Jzpjl4y", + "sourceHandle": "x2", + "target": "VlcYnTHW5d4J_zLYupvu5", + "targetHandle": "w2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-0EevuyZiyty3X3Jzpjl4yx2-VlcYnTHW5d4J_zLYupvu5w2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "VlcYnTHW5d4J_zLYupvu5", + "sourceHandle": "x2", + "target": "CGdw3PqLRb9OqFU5SqmE1", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-VlcYnTHW5d4J_zLYupvu5x2-CGdw3PqLRb9OqFU5SqmE1w1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "CGdw3PqLRb9OqFU5SqmE1", + "sourceHandle": "x2", + "target": "aIYgUc_hEIZx_2P3OhCNh", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-CGdw3PqLRb9OqFU5SqmE1x2-aIYgUc_hEIZx_2P3OhCNhw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "CGdw3PqLRb9OqFU5SqmE1", + "sourceHandle": "y2", + "target": "_dQbXoFTJHaOARTWDUeHY", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-CGdw3PqLRb9OqFU5SqmE1y2-_dQbXoFTJHaOARTWDUeHYz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_dQbXoFTJHaOARTWDUeHY", + "sourceHandle": "x2", + "target": "tU4Umtnfu01t9gLlnlK6b", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-_dQbXoFTJHaOARTWDUeHYx2-tU4Umtnfu01t9gLlnlK6bw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "_dQbXoFTJHaOARTWDUeHY", + "sourceHandle": "y2", + "target": "qRm08uDZW-D8QDc-9sPX8", + "targetHandle": "x1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-_dQbXoFTJHaOARTWDUeHYy2-qRm08uDZW-D8QDc-9sPX8x1", + "selected": false, + "type": "smoothstep", + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "qRm08uDZW-D8QDc-9sPX8", + "sourceHandle": "y2", + "target": "1oIt_5OK-t2WaCgaYt9A8", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-qRm08uDZW-D8QDc-9sPX8y2-1oIt_5OK-t2WaCgaYt9A8z1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "qRm08uDZW-D8QDc-9sPX8", + "sourceHandle": "y2", + "target": "gihxGgt177BK_EYsAfpx9", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-qRm08uDZW-D8QDc-9sPX8y2-gihxGgt177BK_EYsAfpx9z1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "qRm08uDZW-D8QDc-9sPX8", + "sourceHandle": "y2", + "target": "f7N4pAp_jBlT8_8owAcbG", + "targetHandle": "z2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-qRm08uDZW-D8QDc-9sPX8y2-f7N4pAp_jBlT8_8owAcbGz2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "OpJ2NMKCGXQezpzURE45R", + "sourceHandle": "y2", + "target": "PPUU3Rb73aCpT4zcyvlJE", + "targetHandle": "z2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-OpJ2NMKCGXQezpzURE45Ry2-PPUU3Rb73aCpT4zcyvlJEz2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "OpJ2NMKCGXQezpzURE45R", + "sourceHandle": "y2", + "target": "a0qwdQTunxEjQ9A5wpF-q", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-OpJ2NMKCGXQezpzURE45Ry2-a0qwdQTunxEjQ9A5wpF-qz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "WiGG9_4G5y-AVA9byw6_g", + "sourceHandle": "x2", + "target": "PQu4TyJOfCEaafW5th0e4", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-WiGG9_4G5y-AVA9byw6_gx2-Bx1Atxcf15AEaA1BiSIc6w1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "PQu4TyJOfCEaafW5th0e4", + "sourceHandle": "y2", + "target": "NfB3HlZ3uwYK5xszvV50b", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-Bx1Atxcf15AEaA1BiSIc6y2-NfB3HlZ3uwYK5xszvV50bz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "PQu4TyJOfCEaafW5th0e4", + "sourceHandle": "y2", + "target": "gMFndBcrTC6FtGryqN6dX", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-Bx1Atxcf15AEaA1BiSIc6y2-gMFndBcrTC6FtGryqN6dXz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "PQu4TyJOfCEaafW5th0e4", + "sourceHandle": "y2", + "target": "dSfrFLr8wKkLAOMJwtCTr", + "targetHandle": "z2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-Bx1Atxcf15AEaA1BiSIc6y2-dSfrFLr8wKkLAOMJwtCTrz2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "PQu4TyJOfCEaafW5th0e4", + "sourceHandle": "x2", + "target": "4p6Gh2fMPA8hls_mWa5HR", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-PQu4TyJOfCEaafW5th0e4x2-Bx1Atxcf15AEaA1BiSIc6w1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "4p6Gh2fMPA8hls_mWa5HR", + "sourceHandle": "y2", + "target": "b7iXwtUnELg_ShbCyTrNA", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-Bx1Atxcf15AEaA1BiSIc6y2-b7iXwtUnELg_ShbCyTrNAw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "4p6Gh2fMPA8hls_mWa5HR", + "sourceHandle": "z2", + "target": "Bx1Atxcf15AEaA1BiSIc6", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-4p6Gh2fMPA8hls_mWa5HRz2-Bx1Atxcf15AEaA1BiSIc6y1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "Bx1Atxcf15AEaA1BiSIc6", + "sourceHandle": "x2", + "target": "A5p6pqSOtLJybt4LrZ1St", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-Bx1Atxcf15AEaA1BiSIc6x2-HOPgVo3xf0ZN8DmU9BDpow1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "A5p6pqSOtLJybt4LrZ1St", + "sourceHandle": "y2", + "target": "Re7tv1U0LxYqE5ShFxQSf", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-HOPgVo3xf0ZN8DmU9BDpoy2-Re7tv1U0LxYqE5ShFxQSfz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "A5p6pqSOtLJybt4LrZ1St", + "sourceHandle": "y2", + "target": "SGsd08ZTu4H76s8cfbCKe", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-HOPgVo3xf0ZN8DmU9BDpoy2-SGsd08ZTu4H76s8cfbCKez1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "A5p6pqSOtLJybt4LrZ1St", + "sourceHandle": "y2", + "target": "xwVbhOpQMPPB4G-lhro0B", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-HOPgVo3xf0ZN8DmU9BDpoy2-xwVbhOpQMPPB4G-lhro0Bz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "A5p6pqSOtLJybt4LrZ1St", + "sourceHandle": "y2", + "target": "br1r8KIf5KInY5mk2xhA6", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-HOPgVo3xf0ZN8DmU9BDpoy2-br1r8KIf5KInY5mk2xhA6z1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "A5p6pqSOtLJybt4LrZ1St", + "sourceHandle": "y2", + "target": "_Nc8ivQrdpKuf8MwaV-K7", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-HOPgVo3xf0ZN8DmU9BDpoy2-_Nc8ivQrdpKuf8MwaV-K7z1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "A5p6pqSOtLJybt4LrZ1St", + "sourceHandle": "y2", + "target": "kdlXhbw_a81xdZtyK-pVa", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-HOPgVo3xf0ZN8DmU9BDpoy2-kdlXhbw_a81xdZtyK-pVaz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "A5p6pqSOtLJybt4LrZ1St", + "sourceHandle": "y2", + "target": "jkX66izOHVWqtyd6KZ0K6", + "targetHandle": "z2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-HOPgVo3xf0ZN8DmU9BDpoy2-jkX66izOHVWqtyd6KZ0K6z2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "A5p6pqSOtLJybt4LrZ1St", + "sourceHandle": "x2", + "target": "YTzOdnGWNKTjk8T1fcaiO", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-A5p6pqSOtLJybt4LrZ1Stx2-HOPgVo3xf0ZN8DmU9BDpow1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "YTzOdnGWNKTjk8T1fcaiO", + "sourceHandle": "z2", + "target": "HOPgVo3xf0ZN8DmU9BDpo", + "targetHandle": "y2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-YTzOdnGWNKTjk8T1fcaiOz2-HOPgVo3xf0ZN8DmU9BDpoy2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "HOPgVo3xf0ZN8DmU9BDpo", + "sourceHandle": "w2", + "target": "Z9szBPFXfqK_KsvzkR-rf", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-HOPgVo3xf0ZN8DmU9BDpow2-Z9szBPFXfqK_KsvzkR-rfx1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "YTzOdnGWNKTjk8T1fcaiO", + "sourceHandle": "x2", + "target": "ixRG0xfEp4BmyvCR0mtoR", + "targetHandle": "w2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-YTzOdnGWNKTjk8T1fcaiOx2-ixRG0xfEp4BmyvCR0mtoRw2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "ixRG0xfEp4BmyvCR0mtoR", + "sourceHandle": "z2", + "target": "COxkmvqe9jFtV9WtGjfbh", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-ixRG0xfEp4BmyvCR0mtoRz2-COxkmvqe9jFtV9WtGjfbhy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "ixRG0xfEp4BmyvCR0mtoR", + "sourceHandle": "y2", + "target": "izGdctxP_OvQNvaMwVIrh", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-ixRG0xfEp4BmyvCR0mtoRy2-1nmGJFENMmI1WXAeUHeCtz1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "izGdctxP_OvQNvaMwVIrh", + "sourceHandle": "x2", + "target": "BXz1utB_2eYzFvzSbFKx0", + "targetHandle": "w2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-1nmGJFENMmI1WXAeUHeCtx2-BXz1utB_2eYzFvzSbFKx0w2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "izGdctxP_OvQNvaMwVIrh", + "sourceHandle": "y2", + "target": "Cm6mqXYp-G4mGfPxuU73_", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-izGdctxP_OvQNvaMwVIrhy2-Cm6mqXYp-G4mGfPxuU73_z1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "Cm6mqXYp-G4mGfPxuU73_", + "sourceHandle": "y2", + "target": "822tGnM9jOkYh9aNlosPr", + "targetHandle": "x2", + "data": { + "edgeStyle": "solid" + }, + "selected": false, + "id": "reactflow__edge-Cm6mqXYp-G4mGfPxuU73_y2-1nmGJFENMmI1WXAeUHeCtx2", + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "822tGnM9jOkYh9aNlosPr", + "sourceHandle": "z2", + "target": "8xZxTLYq5m5_nkGh2lfUt", + "targetHandle": "y2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-1nmGJFENMmI1WXAeUHeCtz2-8xZxTLYq5m5_nkGh2lfUty2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "822tGnM9jOkYh9aNlosPr", + "sourceHandle": "w2", + "target": "_46COO0FGaFuCYwqaRRWy", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-1nmGJFENMmI1WXAeUHeCtw2-_46COO0FGaFuCYwqaRRWyx1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "Cm6mqXYp-G4mGfPxuU73_", + "sourceHandle": "w2", + "target": "8xZxTLYq5m5_nkGh2lfUt", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-Cm6mqXYp-G4mGfPxuU73_w2-8xZxTLYq5m5_nkGh2lfUtx1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "Cm6mqXYp-G4mGfPxuU73_", + "sourceHandle": "x2", + "target": "sg9IjWWorT2lLEnUek-q5", + "targetHandle": "w2", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-Cm6mqXYp-G4mGfPxuU73_x2-sg9IjWWorT2lLEnUek-q5w2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "q1PayNkcJHU43QCdChAXt", + "sourceHandle": "z2", + "target": "9AwVtwIv6TfP9F4ulz2F0", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-q1PayNkcJHU43QCdChAXtz2-3RwIO-S8-xOYKNmfwk0pfy1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "9AwVtwIv6TfP9F4ulz2F0", + "sourceHandle": "w2", + "target": "NIvjyhtTFC1gomtGQT_2t", + "targetHandle": "x2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-3RwIO-S8-xOYKNmfwk0pfw2-NIvjyhtTFC1gomtGQT_2tx2", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "9AwVtwIv6TfP9F4ulz2F0", + "sourceHandle": "x2", + "target": "ZLlz0Azfze-8k3z8HnVvE", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-9AwVtwIv6TfP9F4ulz2F0x2-3RwIO-S8-xOYKNmfwk0pfw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "ZLlz0Azfze-8k3z8HnVvE", + "sourceHandle": "x2", + "target": "l2Rl6OQbL7kYvPlpYCZ0Z", + "targetHandle": "w1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-3RwIO-S8-xOYKNmfwk0pfx2-l2Rl6OQbL7kYvPlpYCZ0Zw1", + "selected": false, + "selectable": true, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "ZLlz0Azfze-8k3z8HnVvE", + "sourceHandle": "y2", + "target": "3RwIO-S8-xOYKNmfwk0pf", + "targetHandle": "z1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-ZLlz0Azfze-8k3z8HnVvEy2-3RwIO-S8-xOYKNmfwk0pfz1", + "selected": false, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "3RwIO-S8-xOYKNmfwk0pf", + "sourceHandle": "y2", + "target": "IsNzCdS05tbAK0D1zz0Sf", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-3RwIO-S8-xOYKNmfwk0pfy2-IsNzCdS05tbAK0D1zz0Sfz1", + "selected": false, + "focusable": true + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "3RwIO-S8-xOYKNmfwk0pf", + "sourceHandle": "x2", + "target": "GV_zWF6rSWg5bqgiXhOEf", + "targetHandle": "w1", + "data": { + "edgeStyle": "solid" + }, + "id": "reactflow__edge-3RwIO-S8-xOYKNmfwk0pfx2-GV_zWF6rSWg5bqgiXhOEfw1", + "selected": false, + "focusable": true + } + ] } \ No newline at end of file diff --git a/src/data/roadmaps/vue/vue.md b/src/data/roadmaps/vue/vue.md index 43fdcdfaf..38628b396 100644 --- a/src/data/roadmaps/vue/vue.md +++ b/src/data/roadmaps/vue/vue.md @@ -1,7 +1,8 @@ --- jsonUrl: '/jsons/roadmaps/vue.json' pdfUrl: '/pdfs/roadmaps/vue.pdf' -order: 4 +renderer: 'editor' +order: 3 briefTitle: 'Vue' briefDescription: 'Step by step guide to become a Vue Developer in 2024' title: 'Vue Developer' @@ -10,7 +11,7 @@ isNew: false hasTopics: true dimensions: width: 968 - height: 1657.07 + height: 2150 schema: headline: 'Vue Developer Roadmap' description: 'Learn to become a Vue Developer with this interactive step by step guide in 2024. We also have resources and short descriptions attached to the roadmap items so you can get everything you want to learn in one place.' diff --git a/src/lib/resource-progress.ts b/src/lib/resource-progress.ts index 41b10f98f..e5c237358 100644 --- a/src/lib/resource-progress.ts +++ b/src/lib/resource-progress.ts @@ -100,6 +100,14 @@ export function clearMigratedRoadmapProgress( 'cyber-security', 'ux-design', 'game-developer', + 'server-side-game-developer', + 'technical-writer', + 'mlops', + 'computer-science', + 'react', + 'vue', + 'javascript', + 'angular', ]; if (!migratedRoadmaps.includes(resourceId)) { diff --git a/src/lib/roadmap-topic.ts b/src/lib/roadmap-topic.ts index 2f8b90022..437a5f76e 100644 --- a/src/lib/roadmap-topic.ts +++ b/src/lib/roadmap-topic.ts @@ -11,9 +11,10 @@ function generateTopicUrl(filePath: string) { .replace('/src/data/roadmaps/', '/') // Remove the base `/src/data/roadmaps` from path .replace('/content', ''); // Remove the `/[roadmapId]/content` - if (result.match(/\/\d+-/g)) { + if (result.match(/\/\d+-/g) && !result.match(/\/\d-/g)) { result = result.replace(/\/\d+-/g, '/'); // Remove ordering info `/101-ecosystem` } + result = result .replace(/\/index\.md$/, '') // Make the `/index.md` to become the parent folder only .replace(/\.md$/, ''); // Remove `.md` from the end of file