CINXE.COM
The ReadME Project · Meet the people behind the projects you love · GitHub
<!DOCTYPE html> <html lang="en" data-color-mode="light" data-light-theme="light" data-dark-theme="dark" data-a11y-animated-images="system" data-a11y-link-underlines="true" > <head> <meta charset="utf-8"> <link rel="dns-prefetch" href="https://github.githubassets.com"> <link rel="dns-prefetch" href="https://avatars.githubusercontent.com"> <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com"> <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/"> <link rel="preconnect" href="https://github.githubassets.com" crossorigin> <link rel="preconnect" href="https://avatars.githubusercontent.com"> <link rel="preload" href="https://github.githubassets.com/assets/global-banner-disable-f988792be49f.js" as="script" crossorigin> <link rel="preload" href="https://github.githubassets.com/assets/mona-sans-d1bf285e9b9b.woff2" as="font" type="font/woff2" crossorigin> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-3e154969b9f9.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-9c5b7a476542.css" /><link data-color-theme="light" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light-3e154969b9f9.css" /><link data-color-theme="dark" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark-9c5b7a476542.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-afda8eb0fb33.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-2494e44ccdc5.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-56fff47acadc.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-71cd4cc132ec.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-fd5499848985.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-31d17ba3e139.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-68d6b2c79663.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-4cf0d59ab51a.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-af846850481e.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-8b10f05a77e6.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-d3b66f11d613.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/site-0293a3496b30.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/readme-69d2b1daf4ee.css" /> <script type="application/json" id="client-env">{"locale":"en","featureFlags":["copilot_new_references_ui","copilot_beta_features_opt_in","copilot_chat_static_thread_suggestions","copilot_conversational_ux_history_refs","copilot_implicit_context","copilot_smell_icebreaker_ux","experimentation_azure_variant_endpoint","failbot_handle_non_errors","geojson_azure_maps","ghost_pilot_confidence_truncation_25","ghost_pilot_confidence_truncation_40","hovercard_accessibility","issues_react_new_timeline","issues_react_avatar_refactor","issues_react_remove_placeholders","issues_react_blur_item_picker_on_close","marketing_pages_search_explore_provider","react_keyboard_shortcuts_dialog","remove_child_patch","sample_network_conn_type","site_metered_billing_update","issues_react_first_time_contribution_banner","ui_commands_respect_modals","lifecycle_label_name_updates"]}</script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-6abcc96a7495.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_dompurify_dist_purify_js-b73fdff77a4e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover_js-aff936e590ed.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_arianotify-polyfill_ariaNotify-polyfill_js-node_modules_github_mi-247092-740e4ddd559d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_failbot_failbot_ts-93b6a0551aa9.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/environment-cd35650c2e9c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_index_mjs-4aa4b0e95669.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_selector-observer_dist_index_esm_js-f690fd9ae3d5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_relative-time-element_dist_index_js-6d3967acd51c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_combobox-nav_dist_index_js-node_modules_github_g-emoji-element_di-6ce195-53781cbc550f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_auto-complete-element_dist_index_js-node_modules_github_catalyst_-6afc16-3cdfa69a0406.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_text-expander-element_dist_index_js-f5498b8d4e5d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-b5f1d7-492b5042c841.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-1f651a-1e3d784c897c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_primer_view-co-7671f1-dc6cac136d88.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-71486356f507.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-e3ab8405ef80.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_braintree_browser-detection_dist_browser-detection_js-node_modules_githu-bb80ec-634de60bacfa.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lit-html_lit-html_js-ce7225a304c5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_hydro-analytics-client_dist_analytics-client_js-node_modules_gith-f3aee1-e6893db9c19e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_morphdom_dist_morphdom-e-7c534c-f8a5485c982a.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_turbo_dist_turbo_es2017-esm_js-858e043fcf76.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-893f9f-6cf3320416b8.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_scroll-anchoring_dist_scroll-anchoring_esm_js-node_modules_stacktrace-pa-a71630-6f3c4f0189d8.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_color-convert_index_js-0e07cc183eed.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_quote-selection_dist_index_js-node_modules_github_session-resume_-0b5e12-889cec8cf448.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_updatable-content_updatable-content_ts-eae9df0dd562.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_task-list_ts-app_assets_modules_github_sso_ts-ui_packages-900dde-18d1c91a7872.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_sticky-scroll-into-view_ts-7cbef09a422c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_ajax-error_ts-app_assets_modules_github_behaviors_include-d0d0a6-0e9fa537dc4f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_commenting_edit_ts-app_assets_modules_github_behaviors_ht-83c235-c89801ebbe15.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-a6e4c4c86bfa.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_delegated-events_dist_index_js-node_modules_github_catalyst_lib_index_js-f6223d90c7ba.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-3366f6b6298e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_delegated-events_dist_in-bae876-7b3addcd24c5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/marketing-b679596fd7f0.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/marketing-readme-26b276021d97.js"></script> <title>The ReadME Project · Meet the people behind the projects you love · GitHub</title> <meta name="route-pattern" content="/readme(.:format)" data-turbo-transient> <meta name="route-controller" content="site_readme" data-turbo-transient> <meta name="route-action" content="index" data-turbo-transient> <meta name="current-catalog-service-hash" content="3b3a86e94adb1936974b9e80c6c5c959f35b1d5f75b93677737ffa36daf92bbd"> <meta name="request-id" content="945E:2FF4BB:36533A:3F766C:6746709D" data-pjax-transient="true"/><meta name="html-safe-nonce" content="8b5c3b073a8a624feb6dbd360d2e28cd8bc3827ce1ae7240a76e96f342baad64" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5NDVFOjJGRjRCQjozNjUzM0E6M0Y3NjZDOjY3NDY3MDlEIiwidmlzaXRvcl9pZCI6IjQxMDI0MjQzOTkxODQyOTQwNDUiLCJyZWdpb25fZWRnZSI6InNvdXRoZWFzdGFzaWEiLCJyZWdpb25fcmVuZGVyIjoic291dGhlYXN0YXNpYSJ9" data-pjax-transient="true"/><meta name="visitor-hmac" content="2cbd84523bfd528122ee6f987049a58a832aad6600198f42c4bca658a0cb0df2" data-pjax-transient="true"/> <meta name="github-keyboard-shortcuts" content="copilot" data-turbo-transient="true" /> <meta name="selected-link" value="/readme" data-turbo-transient> <link rel="assets" href="https://github.githubassets.com/"> <meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I"> <meta name="octolytics-url" content="https://collector.github.com/github/collect" /> <meta name="user-login" content=""> <meta name="viewport" content="width=device-width"> <meta name="description" content=""> <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub"> <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub"> <meta property="fb:app_id" content="1401488693436528"> <meta name="apple-itunes-app" content="app-id=1477376905, app-argument=https://github.com/readme" /> <meta name="twitter:image" content="https://github.githubassets.com/assets/readme-project-1b8ad1b2a413.jpg" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="The ReadME Project" /><meta name="twitter:description" content="The ReadME Project amplifies the voices of the open source community: the maintainers, developers, and teams whose contributions move the world forward every day." /> <meta property="og:image" content="https://github.githubassets.com/assets/readme-project-1b8ad1b2a413.jpg" /><meta property="og:image:alt" content="The ReadME Project amplifies the voices of the open source community: the maintainers, developers, and teams whose contributions move the world forward every day." /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="The ReadME Project" /><meta property="og:url" content="https://github.com/readme" /><meta property="og:description" content="The ReadME Project amplifies the voices of the open source community: the maintainers, developers, and teams whose contributions move the world forward every day." /> <meta name="hostname" content="github.com"> <meta name="expected-hostname" content="github.com"> <meta http-equiv="x-pjax-version" content="4caf588b04f263d1969de4a37e18cc53e5ab833ae5abc9180a6f758f0dda62d2" data-turbo-track="reload"> <meta http-equiv="x-pjax-csp-version" content="c1fc046b6c993ef5f46cb3b7b473dbc0348e0ac07951814ed147b75da984d6f2" data-turbo-track="reload"> <meta http-equiv="x-pjax-css-version" content="15b18460ccb38585911f0182c65a829cc58635f60a4a305813e3a2bc7ff7d158" data-turbo-track="reload"> <meta http-equiv="x-pjax-js-version" content="27f803b83eafc3bfa55bbf3cd107b85a3c6d05beedeff2fd583229744e8eb26d" data-turbo-track="reload"> <meta name="turbo-cache-control" content="no-preview" data-turbo-transient=""> <link rel="preconnect" href="https://images.ctfassets.net"> <link rel="preload" href="https://github.githubassets.com/assets/Blimone-Medium-Inktrap-870240417f29.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="https://github.githubassets.com/assets/hubot-sans-597e45ee1797.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="https://github.githubassets.com/assets/mona-sans-d1bf285e9b9b.woff2" as="font" type="font/woff2" crossorigin> <meta name="is_logged_out_page" content="true"> <link rel="canonical" href="https://github.com/readme" data-turbo-transient> <meta name="turbo-body-classes" content="logged-out env-production page-responsive readme-project header-overlay"> <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats"> <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000"> <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png"> <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg" data-base-href="https://github.githubassets.com/favicons/favicon"> <meta name="theme-color" content="#1e2327"> <meta name="color-scheme" content="light dark" /> <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials"> </head> <body class="logged-out env-production page-responsive readme-project header-overlay" style="word-wrap: break-word;" data-turbo="false"> <div data-turbo-body class="logged-out env-production page-responsive readme-project header-overlay" style="word-wrap: break-word;"> <div class="position-relative header-wrapper js-header-wrapper "> <a href="#start-of-content" data-skip-target-assigned="false" class="px-2 py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a> <span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full"> <span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span> </span> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/primer-react-765944243383.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-core-cd0a67881543.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-lib-7b7b5264f6c1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/octicons-react-45c3a19dd792.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_tanstack_query-core_build_modern_queryClient_js-e40bb86d3e93.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_emotion_is-prop-valid_dist_emotion-is-prop-valid_esm_js-node_modules_emo-37e3d5-31653d7f2342.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-e7dcdd-285fc29e9fa5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover-fn_js-4896ddd4b7bb.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-712a9ecf4c74.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.9fa170e9435ed4b922b9.module.css" /> <react-partial partial-name="keyboard-shortcuts-dialog" data-ssr="false" data-attempted-ssr="false" > <script type="application/json" data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script> <div data-target="react-partial.reactRoot"></div> </react-partial> <script type="text/javascript" src="https://github.githubassets.com/assets/global-banner-disable-f988792be49f.js" crossorigin></script> <active-global-banners data-banners=""></active-global-banners> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-94fd67-cf3dd69d89eb.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/sessions-8fa3b694f335.js"></script> <header class="HeaderMktg header-logged-out js-details-container js-header Details f4 py-3" role="banner" data-is-top="true" data-color-mode=light data-light-theme=light data-dark-theme=dark> <h2 class="sr-only">Navigation Menu</h2> <button type="button" class="HeaderMktg-backdrop d-lg-none border-0 position-fixed top-0 left-0 width-full height-full js-details-target" aria-label="Toggle navigation"> <span class="d-none">Toggle navigation</span> </button> <div class="d-flex flex-column flex-lg-row flex-items-center px-3 px-md-4 px-lg-5 height-full position-relative z-1"> <div class="d-flex flex-justify-between flex-items-center width-full width-lg-auto"> <div class="flex-1"> <button aria-label="Toggle navigation" aria-expanded="false" type="button" data-view-component="true" class="js-details-target js-nav-padding-recalculate js-header-menu-toggle Button--link Button--medium Button d-lg-none color-fg-inherit p-1"> <span class="Button-content"> <span class="Button-label"><div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div></span> </span> </button> </div> <a class="mr-lg-3 color-fg-inherit flex-order-2 js-prevent-focus-on-mobile-nav" href="/" aria-label="Homepage" data-analytics-event="{"category":"Marketing nav","action":"click to go to homepage","label":"ref_page:Marketing;ref_cta:Logomark;ref_loc:Header"}"> <svg height="32" aria-hidden="true" viewBox="0 0 24 24" version="1.1" width="32" data-view-component="true" class="octicon octicon-mark-github"> <path d="M12.5.75C6.146.75 1 5.896 1 12.25c0 5.089 3.292 9.387 7.863 10.91.575.101.79-.244.79-.546 0-.273-.014-1.178-.014-2.142-2.889.532-3.636-.704-3.866-1.35-.13-.331-.69-1.352-1.18-1.625-.402-.216-.977-.748-.014-.762.906-.014 1.553.834 1.769 1.179 1.035 1.74 2.688 1.25 3.349.948.1-.747.402-1.25.733-1.538-2.559-.287-5.232-1.279-5.232-5.678 0-1.25.445-2.285 1.178-3.09-.115-.288-.517-1.467.115-3.048 0 0 .963-.302 3.163 1.179.92-.259 1.897-.388 2.875-.388.977 0 1.955.13 2.875.388 2.2-1.495 3.162-1.179 3.162-1.179.633 1.581.23 2.76.115 3.048.733.805 1.179 1.825 1.179 3.09 0 4.413-2.688 5.39-5.247 5.678.417.36.776 1.05.776 2.128 0 1.538-.014 2.774-.014 3.162 0 .302.216.662.79.547C20.709 21.637 24 17.324 24 12.25 24 5.896 18.854.75 12.5.75Z"></path> </svg> </a> <div class="flex-1 flex-order-2 text-right"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Freadme" class="HeaderMenu-link HeaderMenu-button d-inline-flex d-lg-none flex-order-1 f5 no-underline border color-border-default rounded-2 px-2 py-1 color-fg-inherit js-prevent-focus-on-mobile-nav" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/readme","user_id":null}}" data-hydro-click-hmac="0e4461681aa020702a608117fb29791ecd5c2de6ef5d469b06bb08768ad3b97a" data-analytics-event="{"category":"Marketing nav","action":"click to Sign in","label":"ref_page:Marketing;ref_cta:Sign in;ref_loc:Header"}" > Sign in </a> </div> </div> <div class="HeaderMenu js-header-menu height-fit position-lg-relative d-lg-flex flex-column flex-auto top-0"> <div class="HeaderMenu-wrapper d-flex flex-column flex-self-start flex-lg-row flex-auto rounded rounded-lg-0"> <nav class="HeaderMenu-nav" aria-label="Global"> <ul class="d-lg-flex list-style-none"> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Product <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"github_copilot","context":"product","tag":"link","label":"github_copilot_link_product_navbar"}" href="https://github.com/features/copilot"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Copilot</div> Write better code with AI </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"security","context":"product","tag":"link","label":"security_link_product_navbar"}" href="https://github.com/features/security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">Security</div> Find and fix vulnerabilities </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"actions","context":"product","tag":"link","label":"actions_link_product_navbar"}" href="https://github.com/features/actions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-workflow color-fg-subtle mr-3"> <path d="M1 3a2 2 0 0 1 2-2h6.5a2 2 0 0 1 2 2v6.5a2 2 0 0 1-2 2H7v4.063C7 16.355 7.644 17 8.438 17H12.5v-2.5a2 2 0 0 1 2-2H21a2 2 0 0 1 2 2V21a2 2 0 0 1-2 2h-6.5a2 2 0 0 1-2-2v-2.5H8.437A2.939 2.939 0 0 1 5.5 15.562V11.5H3a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v6.5a.5.5 0 0 0 .5.5h6.5a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5ZM14.5 14a.5.5 0 0 0-.5.5V21a.5.5 0 0 0 .5.5H21a.5.5 0 0 0 .5-.5v-6.5a.5.5 0 0 0-.5-.5Z"></path> </svg> <div> <div class="color-fg-default h4">Actions</div> Automate any workflow </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"codespaces","context":"product","tag":"link","label":"codespaces_link_product_navbar"}" href="https://github.com/features/codespaces"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-codespaces color-fg-subtle mr-3"> <path d="M3.5 3.75C3.5 2.784 4.284 2 5.25 2h13.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 18.75 13H5.25a1.75 1.75 0 0 1-1.75-1.75Zm-2 12c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v4a1.75 1.75 0 0 1-1.75 1.75H3.25a1.75 1.75 0 0 1-1.75-1.75ZM5.25 3.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h13.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Zm-2 12a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h17.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25Z"></path><path d="M10 17.75a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> <div> <div class="color-fg-default h4">Codespaces</div> Instant dev environments </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"issues","context":"product","tag":"link","label":"issues_link_product_navbar"}" href="https://github.com/features/issues"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-issue-opened color-fg-subtle mr-3"> <path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1ZM2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12Zm9.5 2a2 2 0 1 1-.001-3.999A2 2 0 0 1 12 14Z"></path> </svg> <div> <div class="color-fg-default h4">Issues</div> Plan and track work </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"code_review","context":"product","tag":"link","label":"code_review_link_product_navbar"}" href="https://github.com/features/code-review"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-review color-fg-subtle mr-3"> <path d="M10.3 6.74a.75.75 0 0 1-.04 1.06l-2.908 2.7 2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M1.5 4.25c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v12.5a1.75 1.75 0 0 1-1.75 1.75h-9.69l-3.573 3.573A1.458 1.458 0 0 1 5 21.043V18.5H3.25a1.75 1.75 0 0 1-1.75-1.75ZM3.25 4a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 .75.75v3.19l3.72-3.72a.749.749 0 0 1 .53-.22h10a.25.25 0 0 0 .25-.25V4.25a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Review</div> Manage code changes </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"discussions","context":"product","tag":"link","label":"discussions_link_product_navbar"}" href="https://github.com/features/discussions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Discussions</div> Collaborate outside of code </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"code_search","context":"product","tag":"link","label":"code_search_link_product_navbar"}" href="https://github.com/features/code-search"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-square color-fg-subtle mr-3"> <path d="M10.3 8.24a.75.75 0 0 1-.04 1.06L7.352 12l2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M2 3.75C2 2.784 2.784 2 3.75 2h16.5c.966 0 1.75.784 1.75 1.75v16.5A1.75 1.75 0 0 1 20.25 22H3.75A1.75 1.75 0 0 1 2 20.25Zm1.75-.25a.25.25 0 0 0-.25.25v16.5c0 .138.112.25.25.25h16.5a.25.25 0 0 0 .25-.25V3.75a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Search</div> Find more, search less </div> </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="product-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="product-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"all_features","context":"product","tag":"link","label":"all_features_link_product_navbar"}" href="https://github.com/features"> All features </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"documentation","context":"product","tag":"link","label":"documentation_link_product_navbar"}" href="https://docs.github.com"> Documentation <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"github_skills","context":"product","tag":"link","label":"github_skills_link_product_navbar"}" href="https://skills.github.com"> GitHub Skills <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"blog","context":"product","tag":"link","label":"blog_link_product_navbar"}" href="https://github.blog"> Blog <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Solutions <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 pb-lg-3 mb-3 mb-lg-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-company-size-heading">By company size</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-company-size-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"enterprises","context":"solutions","tag":"link","label":"enterprises_link_solutions_navbar"}" href="https://github.com/enterprise"> Enterprises </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"small_and_medium_teams","context":"solutions","tag":"link","label":"small_and_medium_teams_link_solutions_navbar"}" href="https://github.com/team"> Small and medium teams </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"startups","context":"solutions","tag":"link","label":"startups_link_solutions_navbar"}" href="https://github.com/enterprise/startups"> Startups </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-use-case-heading">By use case</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-use-case-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devsecops","context":"solutions","tag":"link","label":"devsecops_link_solutions_navbar"}" href="/solutions/use-case/devsecops"> DevSecOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devops","context":"solutions","tag":"link","label":"devops_link_solutions_navbar"}" href="/solutions/use-case/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"ci_cd","context":"solutions","tag":"link","label":"ci_cd_link_solutions_navbar"}" href="/solutions/use-case/ci-cd"> CI/CD </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all_use_cases","context":"solutions","tag":"link","label":"view_all_use_cases_link_solutions_navbar"}" href="/solutions/use-case"> View all use cases </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-industry-heading">By industry</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-industry-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"healthcare","context":"solutions","tag":"link","label":"healthcare_link_solutions_navbar"}" href="/solutions/industry/healthcare"> Healthcare </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"financial_services","context":"solutions","tag":"link","label":"financial_services_link_solutions_navbar"}" href="/solutions/industry/financial-services"> Financial services </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"manufacturing","context":"solutions","tag":"link","label":"manufacturing_link_solutions_navbar"}" href="/solutions/industry/manufacturing"> Manufacturing </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"government","context":"solutions","tag":"link","label":"government_link_solutions_navbar"}" href="/solutions/industry/government"> Government </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all_industries","context":"solutions","tag":"link","label":"view_all_industries_link_solutions_navbar"}" href="/solutions/industry"> View all industries </a></li> </ul> </div> </div> <div class="HeaderMenu-trailing-link rounded-bottom-2 flex-shrink-0 mt-lg-4 px-lg-4 py-4 py-lg-3 f5 text-semibold"> <a href="/solutions"> View all solutions <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-right HeaderMenu-trailing-link-icon"> <path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path> </svg> </a> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Resources <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-topics-heading">Topics</span> <ul class="list-style-none f5" aria-labelledby="resources-topics-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"ai","context":"resources","tag":"link","label":"ai_link_resources_navbar"}" href="/resources/articles/ai"> AI </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"devops","context":"resources","tag":"link","label":"devops_link_resources_navbar"}" href="/resources/articles/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"security","context":"resources","tag":"link","label":"security_link_resources_navbar"}" href="/resources/articles/security"> Security </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"software_development","context":"resources","tag":"link","label":"software_development_link_resources_navbar"}" href="/resources/articles/software-development"> Software Development </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"view_all","context":"resources","tag":"link","label":"view_all_link_resources_navbar"}" href="/resources/articles"> View all </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="resources-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"learning_pathways","context":"resources","tag":"link","label":"learning_pathways_link_resources_navbar"}" href="https://resources.github.com/learn/pathways"> Learning Pathways <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"white_papers_ebooks_webinars","context":"resources","tag":"link","label":"white_papers_ebooks_webinars_link_resources_navbar"}" href="https://resources.github.com"> White papers, Ebooks, Webinars <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"customer_stories","context":"resources","tag":"link","label":"customer_stories_link_resources_navbar"}" href="https://github.com/customer-stories"> Customer Stories </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{"location":"navbar","action":"partners","context":"resources","tag":"link","label":"partners_link_resources_navbar"}" href="https://partner.github.com"> Partners <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Open Source <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"github_sponsors","context":"open_source","tag":"link","label":"github_sponsors_link_open_source_navbar"}" href="/sponsors"> <div> <div class="color-fg-default h4">GitHub Sponsors</div> Fund open source developers </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"the_readme_project","context":"open_source","tag":"link","label":"the_readme_project_link_open_source_navbar"}" href="https://github.com/readme"> <div> <div class="color-fg-default h4">The ReadME Project</div> GitHub community articles </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="open-source-repositories-heading">Repositories</span> <ul class="list-style-none f5" aria-labelledby="open-source-repositories-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"topics","context":"open_source","tag":"link","label":"topics_link_open_source_navbar"}" href="https://github.com/topics"> Topics </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"trending","context":"open_source","tag":"link","label":"trending_link_open_source_navbar"}" href="https://github.com/trending"> Trending </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{"location":"navbar","action":"collections","context":"open_source","tag":"link","label":"collections_link_open_source_navbar"}" href="https://github.com/collections"> Collections </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Enterprise <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"enterprise_platform","context":"enterprise","tag":"link","label":"enterprise_platform_link_enterprise_navbar"}" href="/enterprise"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-stack color-fg-subtle mr-3"> <path d="M11.063 1.456a1.749 1.749 0 0 1 1.874 0l8.383 5.316a1.751 1.751 0 0 1 0 2.956l-8.383 5.316a1.749 1.749 0 0 1-1.874 0L2.68 9.728a1.751 1.751 0 0 1 0-2.956Zm1.071 1.267a.25.25 0 0 0-.268 0L3.483 8.039a.25.25 0 0 0 0 .422l8.383 5.316a.25.25 0 0 0 .268 0l8.383-5.316a.25.25 0 0 0 0-.422Z"></path><path d="M1.867 12.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path><path d="M1.867 16.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path> </svg> <div> <div class="color-fg-default h4">Enterprise platform</div> AI-powered developer platform </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="enterprise-available-add-ons-heading">Available add-ons</span> <ul class="list-style-none f5" aria-labelledby="enterprise-available-add-ons-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"advanced_security","context":"enterprise","tag":"link","label":"advanced_security_link_enterprise_navbar"}" href="https://github.com/enterprise/advanced-security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">Advanced Security</div> Enterprise-grade security features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{"location":"navbar","action":"github_copilot","context":"enterprise","tag":"link","label":"github_copilot_link_enterprise_navbar"}" href="/features/copilot#enterprise"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Copilot</div> Enterprise-grade AI features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{"location":"navbar","action":"premium_support","context":"enterprise","tag":"link","label":"premium_support_link_enterprise_navbar"}" href="/premium-support"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Premium Support</div> Enterprise-grade 24/7 support </div> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <a class="HeaderMenu-link no-underline px-0 px-lg-2 py-3 py-lg-2 d-block d-lg-inline-block" data-analytics-event="{"location":"navbar","action":"pricing","context":"global","tag":"link","label":"pricing_link_global_navbar"}" href="https://github.com/pricing">Pricing</a> </li> </ul> </nav> <div class="d-flex flex-column flex-lg-row width-full flex-justify-end flex-lg-items-center text-center mt-3 mt-lg-0 text-lg-left ml-lg-3"> <qbsearch-input class="search-input" data-scope="" data-custom-scopes-path="/search/custom_scopes" data-delete-custom-scopes-csrf="hfThrDzE0U0pfkMlg0Dq8aNluI9xqNCAB5Hns0nHXTc3zsqqKOYqsRNzgLVpCTYLvwyRSMbP8DWMhN_InucILQ" data-max-custom-scopes="10" data-header-redesign-enabled="false" data-initial-value="" data-blackbird-suggestions-path="/search/suggestions" data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" data-current-repository="" data-current-org="" data-current-owner="" data-logged-in="false" data-copilot-chat-enabled="false" data-nl-search-enabled="false" data-retain-scroll-position="true"> <div class="search-input-container search-with-dialog position-relative d-flex flex-row flex-items-center mr-4 rounded" data-action="click:qbsearch-input#searchInputContainerClicked" > <button type="button" class="header-search-button placeholder input-button form-control d-flex flex-1 flex-self-stretch flex-items-center no-wrap width-full py-0 pl-2 pr-0 text-left border-0 box-shadow-none" data-target="qbsearch-input.inputButton" aria-label="Search or jump to…" aria-haspopup="dialog" placeholder="Search or jump to..." data-hotkey=s,/ autocapitalize="off" data-analytics-event="{"location":"navbar","action":"searchbar","context":"global","tag":"input","label":"searchbar_input_global_navbar"}" data-action="click:qbsearch-input#handleExpand" > <div class="mr-2 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </div> <span class="flex-1" data-target="qbsearch-input.inputButtonText">Search or jump to...</span> <div class="d-flex" data-target="qbsearch-input.hotkeyIndicator"> <svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" aria-hidden="true" class="mr-1"><path fill="none" stroke="#979A9C" opacity=".4" d="M3.5.5h12c1.7 0 3 1.3 3 3v13c0 1.7-1.3 3-3 3h-12c-1.7 0-3-1.3-3-3v-13c0-1.7 1.3-3 3-3z"></path><path fill="#979A9C" d="M11.8 6L8 15.1h-.9L10.8 6h1z"></path></svg> </div> </button> <input type="hidden" name="type" class="js-site-search-type-field"> <div class="Overlay--hidden " data-modal-dialog-overlay> <modal-dialog data-action="close:qbsearch-input#handleClose cancel:qbsearch-input#handleClose" data-target="qbsearch-input.searchSuggestionsDialog" role="dialog" id="search-suggestions-dialog" aria-modal="true" aria-labelledby="search-suggestions-dialog-header" data-view-component="true" class="Overlay Overlay--width-large Overlay--height-auto"> <h1 id="search-suggestions-dialog-header" class="sr-only">Search code, repositories, users, issues, pull requests...</h1> <div class="Overlay-body Overlay-body--paddingNone"> <div data-view-component="true"> <div class="search-suggestions position-fixed width-full color-shadow-large border color-fg-default color-bg-default overflow-hidden d-flex flex-column query-builder-container" style="border-radius: 12px;" data-target="qbsearch-input.queryBuilderContainer" hidden > <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="query-builder-test-form" action="" accept-charset="UTF-8" method="get"> <query-builder data-target="qbsearch-input.queryBuilder" id="query-builder-query-builder-test" data-filter-key=":" data-view-component="true" class="QueryBuilder search-query-builder"> <div class="FormControl FormControl--fullWidth"> <label id="query-builder-test-label" for="query-builder-test" class="FormControl-label sr-only"> Search </label> <div class="QueryBuilder-StyledInput width-fit " data-target="query-builder.styledInput" > <span id="query-builder-test-leadingvisual-wrap" class="FormControl-input-leadingVisualWrap QueryBuilder-leadingVisualWrap"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search FormControl-input-leadingVisual"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </span> <div data-target="query-builder.styledInputContainer" class="QueryBuilder-StyledInputContainer"> <div aria-hidden="true" class="QueryBuilder-StyledInputContent" data-target="query-builder.styledInputContent" ></div> <div class="QueryBuilder-InputWrapper"> <div aria-hidden="true" class="QueryBuilder-Sizer" data-target="query-builder.sizer"></div> <input id="query-builder-test" name="query-builder-test" value="" autocomplete="off" type="text" role="combobox" spellcheck="false" aria-expanded="false" aria-describedby="validation-f20b2ad3-8425-4b08-a36a-45ada5189643" data-target="query-builder.input" data-action=" input:query-builder#inputChange blur:query-builder#inputBlur keydown:query-builder#inputKeydown focus:query-builder#inputFocus " data-view-component="true" class="FormControl-input QueryBuilder-Input FormControl-medium" /> </div> </div> <span class="sr-only" id="query-builder-test-clear">Clear</span> <button role="button" id="query-builder-test-clear-button" aria-labelledby="query-builder-test-clear query-builder-test-label" data-target="query-builder.clearButton" data-action=" click:query-builder#clear focus:query-builder#clearButtonFocus blur:query-builder#clearButtonBlur " variant="small" hidden="hidden" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium mr-1 px-2 py-0 d-flex flex-items-center rounded-1 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x-circle-fill Button-visual"> <path d="M2.343 13.657A8 8 0 1 1 13.658 2.343 8 8 0 0 1 2.343 13.657ZM6.03 4.97a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042L6.94 8 4.97 9.97a.749.749 0 0 0 .326 1.275.749.749 0 0 0 .734-.215L8 9.06l1.97 1.97a.749.749 0 0 0 1.275-.326.749.749 0 0 0-.215-.734L9.06 8l1.97-1.97a.749.749 0 0 0-.326-1.275.749.749 0 0 0-.734.215L8 6.94Z"></path> </svg> </button> </div> <template id="search-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </template> <template id="code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="file-code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file-code"> <path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path> </svg> </template> <template id="history-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-history"> <path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path> </svg> </template> <template id="repo-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </template> <template id="bookmark-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bookmark"> <path d="M3 2.75C3 1.784 3.784 1 4.75 1h6.5c.966 0 1.75.784 1.75 1.75v11.5a.75.75 0 0 1-1.227.579L8 11.722l-3.773 3.107A.751.751 0 0 1 3 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.91l3.023-2.489a.75.75 0 0 1 .954 0l3.023 2.49V2.75a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="plus-circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-plus-circle"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7.25-3.25v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> </template> <template id="trash-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-trash"> <path d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z"></path> </svg> </template> <template id="team-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-people"> <path d="M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5.5ZM11 4a3.001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.752.752 0 0 1-.549-.514 3.507 3.507 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4Zm-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5Z"></path> </svg> </template> <template id="project-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project"> <path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25ZM11.75 3a.75.75 0 0 1 .75.75v7.5a.75.75 0 0 1-1.5 0v-7.5a.75.75 0 0 1 .75-.75Zm-8.25.75a.75.75 0 0 1 1.5 0v5.5a.75.75 0 0 1-1.5 0ZM8 3a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 3Z"></path> </svg> </template> <template id="pencil-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pencil"> <path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"></path> </svg> </template> <template id="copilot-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot"> <path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="copilot-error-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot-error"> <path d="M16 11.24c0 .112-.072.274-.21.467L13 9.688V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-.198 0-.388-.009-.571-.029L6.833 5.226a4.01 4.01 0 0 0 .17-.782c.117-.935-.037-1.395-.241-1.614-.193-.206-.637-.413-1.682-.297-.683.076-1.115.231-1.395.415l-1.257-.91c.579-.564 1.413-.877 2.485-.996 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095Zm-5.083-8.707c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Zm2.511 11.074c-1.393.776-3.272 1.428-5.43 1.428-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.18-.455-.241-.963-.252-1.475L.31 4.107A.747.747 0 0 1 0 3.509V3.49a.748.748 0 0 1 .625-.73c.156-.026.306.047.435.139l14.667 10.578a.592.592 0 0 1 .227.264.752.752 0 0 1 .046.249v.022a.75.75 0 0 1-1.19.596Zm-1.367-.991L5.635 7.964a5.128 5.128 0 0 1-.889.073c-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433 1.539 0 3.089-.505 4.063-.934Z"></path> </svg> </template> <template id="workflow-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-workflow"> <path d="M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="book-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book"> <path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path> </svg> </template> <template id="code-review-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-review"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 13H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25v-8.5C0 1.784.784 1 1.75 1ZM1.5 2.75v8.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-8.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm5.28 1.72a.75.75 0 0 1 0 1.06L5.31 7l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.75.75 0 0 1 1.06 0Zm2.44 0a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.69 7 9.22 5.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="codespaces-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-codespaces"> <path d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z"></path><path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> </template> <template id="comment-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment"> <path d="M1 2.75C1 1.784 1.784 1 2.75 1h10.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 13.25 12H9.06l-2.573 2.573A1.458 1.458 0 0 1 4 13.543V12H2.75A1.75 1.75 0 0 1 1 10.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h4.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="comment-discussion-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> </template> <template id="organization-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-organization"> <path d="M1.75 16A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0h8.5C11.216 0 12 .784 12 1.75v12.5c0 .085-.006.168-.018.25h2.268a.25.25 0 0 0 .25-.25V8.285a.25.25 0 0 0-.111-.208l-1.055-.703a.749.749 0 1 1 .832-1.248l1.055.703c.487.325.779.871.779 1.456v5.965A1.75 1.75 0 0 1 14.25 16h-3.5a.766.766 0 0 1-.197-.026c-.099.017-.2.026-.303.026h-3a.75.75 0 0 1-.75-.75V14h-1v1.25a.75.75 0 0 1-.75.75Zm-.25-1.75c0 .138.112.25.25.25H4v-1.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 .75.75v1.25h2.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM3.75 6h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 3.75A.75.75 0 0 1 3.75 3h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 3.75Zm4 3A.75.75 0 0 1 7.75 6h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 7 6.75ZM7.75 3h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 9.75A.75.75 0 0 1 3.75 9h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 9.75ZM7.75 9h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="rocket-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-rocket"> <path d="M14.064 0h.186C15.216 0 16 .784 16 1.75v.186a8.752 8.752 0 0 1-2.564 6.186l-.458.459c-.314.314-.641.616-.979.904v3.207c0 .608-.315 1.172-.833 1.49l-2.774 1.707a.749.749 0 0 1-1.11-.418l-.954-3.102a1.214 1.214 0 0 1-.145-.125L3.754 9.816a1.218 1.218 0 0 1-.124-.145L.528 8.717a.749.749 0 0 1-.418-1.11l1.71-2.774A1.748 1.748 0 0 1 3.31 4h3.204c.288-.338.59-.665.904-.979l.459-.458A8.749 8.749 0 0 1 14.064 0ZM8.938 3.623h-.002l-.458.458c-.76.76-1.437 1.598-2.02 2.5l-1.5 2.317 2.143 2.143 2.317-1.5c.902-.583 1.74-1.26 2.499-2.02l.459-.458a7.25 7.25 0 0 0 2.123-5.127V1.75a.25.25 0 0 0-.25-.25h-.186a7.249 7.249 0 0 0-5.125 2.123ZM3.56 14.56c-.732.732-2.334 1.045-3.005 1.148a.234.234 0 0 1-.201-.064.234.234 0 0 1-.064-.201c.103-.671.416-2.273 1.15-3.003a1.502 1.502 0 1 1 2.12 2.12Zm6.94-3.935c-.088.06-.177.118-.266.175l-2.35 1.521.548 1.783 1.949-1.2a.25.25 0 0 0 .119-.213ZM3.678 8.116 5.2 5.766c.058-.09.117-.178.176-.266H3.309a.25.25 0 0 0-.213.119l-1.2 1.95ZM12 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </template> <template id="shield-check-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield-check"> <path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="heart-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> </template> <template id="server-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-server"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v4c0 .372-.116.717-.314 1 .198.283.314.628.314 1v4a1.75 1.75 0 0 1-1.75 1.75H1.75A1.75 1.75 0 0 1 0 12.75v-4c0-.358.109-.707.314-1a1.739 1.739 0 0 1-.314-1v-4C0 1.784.784 1 1.75 1ZM1.5 2.75v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm.25 5.75a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25ZM7 4.75A.75.75 0 0 1 7.75 4h4.5a.75.75 0 0 1 0 1.5h-4.5A.75.75 0 0 1 7 4.75ZM7.75 10h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM3 4.75A.75.75 0 0 1 3.75 4h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 4.75ZM3.75 10h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="globe-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-globe"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM5.78 8.75a9.64 9.64 0 0 0 1.363 4.177c.255.426.542.832.857 1.215.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a9.927 9.927 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.507 6.507 0 0 0 4.666 5.5c-.123-.181-.24-.365-.352-.552-.715-1.192-1.437-2.874-1.581-4.948Zm-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.507 6.507 0 0 0-4.666 5.5Zm10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.507 6.507 0 0 0 4.666-5.5Zm2.733-1.5a6.507 6.507 0 0 0-4.666-5.5c.123.181.24.365.353.552.714 1.192 1.436 2.874 1.58 4.948Z"></path> </svg> </template> <template id="issue-opened-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> </template> <template id="device-mobile-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-mobile"> <path d="M3.75 0h8.5C13.216 0 14 .784 14 1.75v12.5A1.75 1.75 0 0 1 12.25 16h-8.5A1.75 1.75 0 0 1 2 14.25V1.75C2 .784 2.784 0 3.75 0ZM3.5 1.75v12.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM8 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path> </svg> </template> <template id="package-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> </template> <template id="credit-card-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-credit-card"> <path d="M10.75 9a.75.75 0 0 0 0 1.5h1.5a.75.75 0 0 0 0-1.5h-1.5Z"></path><path d="M0 3.75C0 2.784.784 2 1.75 2h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 14H1.75A1.75 1.75 0 0 1 0 12.25ZM14.5 6.5h-13v5.75c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25Zm0-2.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25V5h13Z"></path> </svg> </template> <template id="play-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> </template> <template id="gift-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-gift"> <path d="M2 2.75A2.75 2.75 0 0 1 4.75 0c.983 0 1.873.42 2.57 1.232.268.318.497.668.68 1.042.183-.375.411-.725.68-1.044C9.376.42 10.266 0 11.25 0a2.75 2.75 0 0 1 2.45 4h.55c.966 0 1.75.784 1.75 1.75v2c0 .698-.409 1.301-1 1.582v4.918A1.75 1.75 0 0 1 13.25 16H2.75A1.75 1.75 0 0 1 1 14.25V9.332C.409 9.05 0 8.448 0 7.75v-2C0 4.784.784 4 1.75 4h.55c-.192-.375-.3-.8-.3-1.25ZM7.25 9.5H2.5v4.75c0 .138.112.25.25.25h4.5Zm1.5 0v5h4.5a.25.25 0 0 0 .25-.25V9.5Zm0-4V8h5.5a.25.25 0 0 0 .25-.25v-2a.25.25 0 0 0-.25-.25Zm-7 0a.25.25 0 0 0-.25.25v2c0 .138.112.25.25.25h5.5V5.5h-5.5Zm3-4a1.25 1.25 0 0 0 0 2.5h2.309c-.233-.818-.542-1.401-.878-1.793-.43-.502-.915-.707-1.431-.707ZM8.941 4h2.309a1.25 1.25 0 0 0 0-2.5c-.516 0-1 .205-1.43.707-.337.392-.646.975-.879 1.793Z"></path> </svg> </template> <template id="code-square-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-square"> <path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="device-desktop-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-desktop"> <path d="M14.25 1c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 14.25 12h-3.727c.099 1.041.52 1.872 1.292 2.757A.752.752 0 0 1 11.25 16h-6.5a.75.75 0 0 1-.565-1.243c.772-.885 1.192-1.716 1.292-2.757H1.75A1.75 1.75 0 0 1 0 10.25v-7.5C0 1.784.784 1 1.75 1ZM1.75 2.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25ZM9.018 12H6.982a5.72 5.72 0 0 1-.765 2.5h3.566a5.72 5.72 0 0 1-.765-2.5Z"></path> </svg> </template> <div class="position-relative"> <ul role="listbox" class="ActionListWrap QueryBuilder-ListWrap" aria-label="Suggestions" data-action=" combobox-commit:query-builder#comboboxCommit mousedown:query-builder#resultsMousedown " data-target="query-builder.resultsList" data-persist-list=false id="query-builder-test-results" ></ul> </div> <div class="FormControl-inlineValidation" id="validation-f20b2ad3-8425-4b08-a36a-45ada5189643" hidden="hidden"> <span class="FormControl-inlineValidation--visual"> <svg aria-hidden="true" height="12" viewBox="0 0 12 12" version="1.1" width="12" data-view-component="true" class="octicon octicon-alert-fill"> <path d="M4.855.708c.5-.896 1.79-.896 2.29 0l4.675 8.351a1.312 1.312 0 0 1-1.146 1.954H1.33A1.313 1.313 0 0 1 .183 9.058ZM7 7V3H5v4Zm-1 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"></path> </svg> </span> <span></span> </div> </div> <div data-target="query-builder.screenReaderFeedback" aria-live="polite" aria-atomic="true" class="sr-only"></div> </query-builder></form> <div class="d-flex flex-row color-fg-muted px-3 text-small color-bg-default search-feedback-prompt"> <a target="_blank" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax" data-view-component="true" class="Link color-fg-accent text-normal ml-2"> Search syntax tips </a> <div class="d-flex flex-1"></div> </div> </div> </div> </div> </modal-dialog></div> </div> <div data-action="click:qbsearch-input#retract" class="dark-backdrop position-fixed" hidden data-target="qbsearch-input.darkBackdrop"></div> <div class="color-fg-default"> <dialog-helper> <dialog data-target="qbsearch-input.feedbackDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="feedback-dialog" aria-modal="true" aria-labelledby="feedback-dialog-title" aria-describedby="feedback-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="feedback-dialog-title"> Provide feedback </h1> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="feedback-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="feedback-dialog-title"> <div data-view-component="true" class="Overlay-body"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="code-search-feedback-form" data-turbo="false" action="/search/feedback" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="64hxBbAqvJk76hNm8MwModY2agMhkYZSPhO8IPmnKGN6qcxQFTYndzZ8pT9hNejXIs2yEEieAx092gpGkt3YbQ==" /> <p>We read every piece of feedback, and take your input very seriously.</p> <textarea name="feedback" class="form-control width-full mb-2" style="height: 120px" id="feedback"></textarea> <input name="include_email" id="include_email" aria-label="Include my email address so I can be contacted" class="form-control mr-2" type="checkbox"> <label for="include_email" style="font-weight: normal">Include my email address so I can be contacted</label> </form></div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd"> <button data-close-dialog-id="feedback-dialog" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="code-search-feedback-form" data-action="click:qbsearch-input#submitFeedback" type="submit" data-view-component="true" class="btn-primary btn"> Submit feedback </button> </div> </dialog></dialog-helper> <custom-scopes data-target="qbsearch-input.customScopesManager"> <dialog-helper> <dialog data-target="custom-scopes.customScopesModalDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="custom-scopes-dialog" aria-modal="true" aria-labelledby="custom-scopes-dialog-title" aria-describedby="custom-scopes-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header Overlay-header--divided"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="custom-scopes-dialog-title"> Saved searches </h1> <h2 id="custom-scopes-dialog-description" class="Overlay-description">Use saved searches to filter your results more quickly</h2> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="custom-scopes-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="custom-scopes-dialog-title"> <div data-view-component="true" class="Overlay-body"> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <div hidden class="create-custom-scope-form" data-target="custom-scopes.createCustomScopeForm"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="custom-scopes-dialog-form" data-turbo="false" action="/search/custom_scopes" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="rX9JsmPIGMlJN3ECkPzksSC2xWUt1Vgt1RYJCuxyrRJ/qBzhlh6U+xYjgjPu+R4viXLUehhooUl9xL6XFCwyEA==" /> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <input type="hidden" id="custom_scope_id" name="custom_scope_id" data-target="custom-scopes.customScopesIdField"> <div class="form-group"> <label for="custom_scope_name">Name</label> <auto-check src="/search/custom_scopes/check_name" required> <input type="text" name="custom_scope_name" id="custom_scope_name" data-target="custom-scopes.customScopesNameField" class="form-control" autocomplete="off" placeholder="github-ruby" required maxlength="50"> <input type="hidden" data-csrf="true" value="17p9RgTQ8iBk2AkTLj+3fFmX7Nh+BDe0ueIpVBIx39M2zioSRe+07RscWpK/mQ/qU+SxMrLrgoFqb3ujCYl/mA==" /> </auto-check> </div> <div class="form-group"> <label for="custom_scope_query">Query</label> <input type="text" name="custom_scope_query" id="custom_scope_query" data-target="custom-scopes.customScopesQueryField" class="form-control" autocomplete="off" placeholder="(repo:mona/a OR repo:mona/b) AND lang:python" required maxlength="500"> </div> <p class="text-small color-fg-muted"> To see all available qualifiers, see our <a class="Link--inTextBlock" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax">documentation</a>. </p> </form> </div> <div data-target="custom-scopes.manageCustomScopesForm"> <div data-target="custom-scopes.list"></div> </div> </div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd Overlay-footer--divided"> <button data-action="click:custom-scopes#customScopesCancel" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="custom-scopes-dialog-form" data-action="click:custom-scopes#customScopesSubmit" data-target="custom-scopes.customScopesSubmitButton" type="submit" data-view-component="true" class="btn-primary btn"> Create saved search </button> </div> </dialog></dialog-helper> </custom-scopes> </div> </qbsearch-input> <div class="position-relative HeaderMenu-link-wrap d-lg-inline-block"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Freadme" class="HeaderMenu-link HeaderMenu-link--sign-in HeaderMenu-button flex-shrink-0 no-underline d-none d-lg-inline-flex border border-lg-0 rounded rounded-lg-0 px-2 py-1" style="margin-left: 12px;" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/readme","user_id":null}}" data-hydro-click-hmac="0e4461681aa020702a608117fb29791ecd5c2de6ef5d469b06bb08768ad3b97a" data-analytics-event="{"category":"Marketing nav","action":"click to go to homepage","label":"ref_page:Marketing;ref_cta:Sign in;ref_loc:Header"}" > Sign in </a> </div> <a href="/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2Freadme&source=header" class="HeaderMenu-link HeaderMenu-link--sign-up HeaderMenu-button flex-shrink-0 d-flex d-lg-inline-flex no-underline border color-border-default rounded px-2 py-1" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/readme","user_id":null}}" data-hydro-click-hmac="0e4461681aa020702a608117fb29791ecd5c2de6ef5d469b06bb08768ad3b97a" data-analytics-event="{"category":"Sign up","action":"click to sign up for account","label":"ref_page:/readme;ref_cta:Sign up;ref_loc:header logged out"}" > Sign up </a> <button type="button" class="sr-only js-header-menu-focus-trap d-block d-lg-none">Reseting focus</button> </div> </div> </div> </div> </header> <div hidden="hidden" data-view-component="true" class="js-stale-session-flash stale-session-flash flash flash-warn flash-full"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <button id="icon-button-61dce04c-2bb4-4296-b832-6760a9be3c58" aria-labelledby="tooltip-364f2110-53f6-4b1d-8204-a3a74817c14f" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button><tool-tip id="tooltip-364f2110-53f6-4b1d-8204-a3a74817c14f" for="icon-button-61dce04c-2bb4-4296-b832-6760a9be3c58" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip> </div> </div> <div id="start-of-content" class="show-on-focus"></div> <div id="js-flash-container" class="flash-container" data-turbo-replace> <template class="js-flash-template"> <div class="flash flash-full {{ className }}"> <div > <button autofocus class="flash-close js-flash-close" type="button" aria-label="Dismiss this message"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div aria-atomic="true" role="alert" class="js-flash-alert"> <div>{{ message }}</div> </div> </div> </div> </template> </div> <div class="application-main " data-commit-hovercards-enabled data-discussion-hovercards-enabled data-issue-and-pr-hovercards-enabled > <main class="font-mktg" > <div> <div class="overflow-hidden width-full js-details-container"> <h1 class="readme-home-visually-hidden">The ReadME Project</h1> <div class="position-relative width-full pt-12 pb-9 pb-xl-12 overflow-hidden js-build-in" data-build-margin-bottom="45"> <div class="position-absolute top-0 right-0 bottom-0 left-0 readme-bg-black--pattern"></div> <div class="container-readme p-responsive-readme"> <div class="position-relative width-full d-flex flex-justify-between flex-items-center pt-xl-4 pb-xl-2"> <a href="/readme" aria-label="ReadME Project Homepage" class="d-inline-block readme-logo-link--inverted"><svg xmlns="http://www.w3.org/2000/svg" width="132" height="50" viewBox="0 0 137 52" fill="currentColor" aria-hidden="true" class="d-block readme-logo"> <path d="M74 31.097h1.784v-4.52h5.779v4.52h1.8v-4.175c0-.773-.278-1.282-1.178-1.282h-.606v-.115c1.048-.378 1.752-1.413 1.752-2.86 0-2.153-1.13-3.55-3.504-3.55H74v11.982zm1.784-6.016v-4.405h3.65c1.212 0 1.998.543 1.998 1.693v1.003c0 1.019-.704 1.71-1.997 1.71h-3.65zM85.073 26.758c0 2.744 1.523 4.503 4.093 4.503 2.03 0 3.568-1.118 3.912-2.794h-1.67c-.261.855-1.08 1.446-2.226 1.446-1.424 0-2.373-.92-2.373-2.284v-.477h6.17a8.99 8.99 0 00.066-.937c0-2.449-1.555-3.928-3.895-3.928-2.489 0-4.077 1.644-4.077 4.47zm1.736-.822v-.197c0-1.25.95-2.104 2.324-2.104 1.326 0 2.21.822 2.21 2.021v.28h-4.534zM94.392 28.615c0 1.594 1.032 2.646 2.75 2.646 1.392 0 2.505-.624 2.865-1.561h.115l.016.41c.049.625.328.987 1.228.987h1.555v-1.233h-1.211v-4.52c0-.937-.41-3.057-3.372-3.057-2.112 0-3.487 1.02-3.602 2.827h1.67c.049-.904.655-1.48 1.85-1.48 1.047 0 1.768.445 1.768 1.677v.625h-2.505c-1.915 0-3.127.97-3.127 2.679zm1.72-.362c0-.674.572-1.15 1.62-1.15h2.292v.41c0 1.43-.917 2.4-2.407 2.4-.9 0-1.506-.394-1.506-1.2v-.46zM107.489 31.261c1.358 0 2.471-.608 3.028-1.693h.114l.197 1.529h1.506V19h-1.703v5.079h-.114c-.508-1.036-1.555-1.677-3.028-1.677-2.21 0-3.536 1.595-3.536 4.438 0 2.794 1.309 4.421 3.536 4.421zm.54-1.397c-1.506 0-2.341-.887-2.341-2.219v-1.627c0-1.38.9-2.219 2.341-2.219 1.555 0 2.602 1.003 2.602 2.548v.97c0 1.528-1.031 2.547-2.602 2.547zM114.377 31.097h1.752v-6.098l-.148-3.484h.115l4.207 9.368 4.19-9.368h.099l-.131 3.468v6.114h1.735V19.115h-2.308l-3.552 8.152h-.099l-3.536-8.152h-2.324v11.982zM128.489 31.097h8.054v-1.595h-6.269v-3.83h5.483v-1.511h-5.483v-3.452h6.269v-1.594h-8.054v11.982zM74 49.097h1.784V44.84h3.503c2.488 0 3.814-1.447 3.814-3.863 0-2.366-1.244-3.862-3.814-3.862H74v11.982zm1.784-5.786V38.76h3.52c1.146 0 1.915.575 1.915 1.643v1.134c0 1.036-.72 1.775-2.063 1.775h-3.372zM86.37 40.452c-1.309 0-1.489.805-1.489 1.479v7.166h1.686v-7.232h2.783v-1.413h-2.98zM89.853 44.774c0 2.761 1.588 4.487 4.174 4.487 2.636 0 4.175-1.792 4.175-4.487 0-2.86-1.736-4.487-4.175-4.487-2.52 0-4.174 1.677-4.174 4.487zm1.719.707v-1.348c0-1.48.999-2.416 2.455-2.416 1.408 0 2.44.937 2.44 2.416v1.348c0 1.545-1.064 2.367-2.44 2.367-1.358 0-2.455-.806-2.455-2.367zM100.327 37v2.038h1.686V37h-1.686zm0 3.452v10.025h-1.85v1.364h2.03c1.489 0 1.489-1.084 1.489-1.495v-1.71l.017-8.184h-1.686zM103.889 44.758c0 2.744 1.522 4.503 4.092 4.503 2.03 0 3.569-1.118 3.912-2.794h-1.669c-.262.855-1.081 1.446-2.226 1.446-1.425 0-2.374-.92-2.374-2.284v-.477h6.171c.033-.28.066-.657.066-.937 0-2.449-1.555-3.928-3.896-3.928-2.488 0-4.076 1.644-4.076 4.47zm1.735-.822v-.197c0-1.25.949-2.104 2.324-2.104 1.326 0 2.21.822 2.21 2.022v.279h-4.534zM121.389 46.089h-1.67c-.196 1.085-1.031 1.759-2.226 1.759-1.408 0-2.374-.888-2.374-2.334v-1.348c0-1.446.933-2.449 2.374-2.449 1.08 0 1.931.526 2.193 1.644h1.686c-.278-1.858-1.751-3.074-3.814-3.074-2.472 0-4.158 1.627-4.158 4.504 0 2.728 1.523 4.47 4.109 4.47 2.128 0 3.618-1.2 3.88-3.172zM125.422 41.865h1.784v-1.413h-1.784V37.64h-1.669v2.81h-1.556v1.414h1.556V47.7c0 .838.36 1.397 1.424 1.397h2.029v-1.38h-1.784v-5.852z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M4 23C4 9.5 15 0 32 0v9c-8 0-15 3.5-15 14h13v26h-8v-4h-4v4h-3v-4h-4v-4H7v4h4v4H4V33h4v-4H4v-6zm10 12h4v4h-4v-4z"></path> <path d="M4 29H0v4h4v-4z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M36 23C36 9.5 47 0 64 0v9c-8 0-15 3.5-15 14h13v18h4v4h-4v4h-5v-4h4v-4h-4v4h-4v4H43v-4h4v-4h-4v-4h-4v4h4v4h-4v4h-3V23zm15 13v-4h-4v4h4z"></path> <path d="M81.97 1.115H73V2.71h3.601v10.388h1.768V2.709h3.602V1.115zM83.388 13.097h1.686V8.51c0-1.676.933-2.794 2.373-2.794 1.212 0 1.9.723 1.9 2.252v5.128h1.702V7.804c0-2.136-1.065-3.517-2.98-3.517-1.276 0-2.34.641-2.88 1.742h-.115V1h-1.686v12.097zM92.113 8.758c0 2.744 1.523 4.503 4.093 4.503 2.03 0 3.568-1.118 3.912-2.794h-1.67c-.262.855-1.08 1.446-2.226 1.446-1.424 0-2.373-.92-2.373-2.284v-.477h6.171c.033-.28.065-.657.065-.937 0-2.449-1.555-3.928-3.896-3.928-2.488 0-4.076 1.644-4.076 4.47zm1.736-.822v-.197c0-1.25.949-2.104 2.324-2.104 1.326 0 2.21.822 2.21 2.021v.28h-4.534z"></path> </svg> </a> <button class="btn-link no-underline readme-nav__button readme-logo-link--inverted js-focus-on-dismiss js-details-target" type="button" aria-label="Open ReadME Project Menu" aria-expanded="false"> <div class="d-flex flex-items-center"> <svg height="20" aria-hidden="true" viewBox="0 0 16 16" version="1.1" width="20" data-view-component="true" class="octicon octicon-three-bars"> <path d="M1 2.75A.75.75 0 0 1 1.75 2h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 2.75Zm0 5A.75.75 0 0 1 1.75 7h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 7.75ZM1.75 12h12.5a.75.75 0 0 1 0 1.5H1.75a.75.75 0 0 1 0-1.5Z"></path> </svg> </div> </button> </div> </div> </div> <div class="container-readme p-responsive-readme position-relative width-full d-md-flex" data-hpc> <div class="col-md-7 mt-n6 text-center"> <div class="d-block mt-xl-n6 readme-link readme-link--focus-boost"> <figure class="position-relative readme-link__figure readme-mask--thumbnail-2 js-readme-rotate " data-animation-is-running="false" data-skew-x="0" data-skew-y="0" data-skew-target-x="0" data-skew-target-y="0"> <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/2aJ5GA3J4vBXLb79ZAst2H/a09e72619ddca5e194a55f729314dd24/AccessibilityIllustration.jpg?w=1200&fm=avif 1200w,//images.ctfassets.net/s5uo95nf6njh/2aJ5GA3J4vBXLb79ZAst2H/a09e72619ddca5e194a55f729314dd24/AccessibilityIllustration.jpg?w=960&fm=avif 960w,//images.ctfassets.net/s5uo95nf6njh/2aJ5GA3J4vBXLb79ZAst2H/a09e72619ddca5e194a55f729314dd24/AccessibilityIllustration.jpg?w=720&fm=avif 720w,//images.ctfassets.net/s5uo95nf6njh/2aJ5GA3J4vBXLb79ZAst2H/a09e72619ddca5e194a55f729314dd24/AccessibilityIllustration.jpg?w=600&fm=avif 600w,//images.ctfassets.net/s5uo95nf6njh/2aJ5GA3J4vBXLb79ZAst2H/a09e72619ddca5e194a55f729314dd24/AccessibilityIllustration.jpg?w=480&fm=avif 480w,//images.ctfassets.net/s5uo95nf6njh/2aJ5GA3J4vBXLb79ZAst2H/a09e72619ddca5e194a55f729314dd24/AccessibilityIllustration.jpg?w=240&fm=avif 240w" sizes="(max-width: 755px) 90vw, 45vw" type="image/avif"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/2aJ5GA3J4vBXLb79ZAst2H/a09e72619ddca5e194a55f729314dd24/AccessibilityIllustration.jpg?w=1200&fm=webp 1200w,//images.ctfassets.net/s5uo95nf6njh/2aJ5GA3J4vBXLb79ZAst2H/a09e72619ddca5e194a55f729314dd24/AccessibilityIllustration.jpg?w=960&fm=webp 960w,//images.ctfassets.net/s5uo95nf6njh/2aJ5GA3J4vBXLb79ZAst2H/a09e72619ddca5e194a55f729314dd24/AccessibilityIllustration.jpg?w=720&fm=webp 720w,//images.ctfassets.net/s5uo95nf6njh/2aJ5GA3J4vBXLb79ZAst2H/a09e72619ddca5e194a55f729314dd24/AccessibilityIllustration.jpg?w=600&fm=webp 600w,//images.ctfassets.net/s5uo95nf6njh/2aJ5GA3J4vBXLb79ZAst2H/a09e72619ddca5e194a55f729314dd24/AccessibilityIllustration.jpg?w=480&fm=webp 480w,//images.ctfassets.net/s5uo95nf6njh/2aJ5GA3J4vBXLb79ZAst2H/a09e72619ddca5e194a55f729314dd24/AccessibilityIllustration.jpg?w=240&fm=webp 240w" sizes="(max-width: 755px) 90vw, 45vw" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/2aJ5GA3J4vBXLb79ZAst2H/a09e72619ddca5e194a55f729314dd24/AccessibilityIllustration.jpg?w=1200&fm=jpg 1200w,//images.ctfassets.net/s5uo95nf6njh/2aJ5GA3J4vBXLb79ZAst2H/a09e72619ddca5e194a55f729314dd24/AccessibilityIllustration.jpg?w=960&fm=jpg 960w,//images.ctfassets.net/s5uo95nf6njh/2aJ5GA3J4vBXLb79ZAst2H/a09e72619ddca5e194a55f729314dd24/AccessibilityIllustration.jpg?w=720&fm=jpg 720w,//images.ctfassets.net/s5uo95nf6njh/2aJ5GA3J4vBXLb79ZAst2H/a09e72619ddca5e194a55f729314dd24/AccessibilityIllustration.jpg?w=600&fm=jpg 600w,//images.ctfassets.net/s5uo95nf6njh/2aJ5GA3J4vBXLb79ZAst2H/a09e72619ddca5e194a55f729314dd24/AccessibilityIllustration.jpg?w=480&fm=jpg 480w,//images.ctfassets.net/s5uo95nf6njh/2aJ5GA3J4vBXLb79ZAst2H/a09e72619ddca5e194a55f729314dd24/AccessibilityIllustration.jpg?w=240&fm=jpg 240w" sizes="(max-width: 755px) 90vw, 45vw" type="image/jpeg"></source> <img class="d-block width-full height-auto readme-link__img readme-img-build-in js-build-in" width="1200" height="1400" alt="" data-build-margin-bottom="20" src="//images.ctfassets.net/s5uo95nf6njh/2aJ5GA3J4vBXLb79ZAst2H/a09e72619ddca5e194a55f729314dd24/AccessibilityIllustration.jpg?w=1200&fm=jpg" /> </picture> </figure> </div> <div class="py-6"> <h2 class="readme-home-visually-hidden">Featured stories</h2> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2 d-inline-block"> Featured Article </p> <a class="d-block no-underline readme-underline--green" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta:Coding accessibility: Software by the blind for the blind;ref_loc:Story list" href="/readme/featured/nvda-coding-accessibility-software-blind"> <h3 class="mb-3 readme-heading-1 readme-heading--condensed" style="font-weight:400 !important"> <span>Coding accessibility: Software by the blind, for the blind</span> </h3></a> <p class="mb-0 f2-mktg text-normal"> The NVDA screen reader has helped empower a new generation of blind and low-vision developers </p> </div> </div> <div class="col-md-5 border-md-left ml-md-4 ml-xl-6"> <div class="d-flex flex-row-reverse flex-items-center flex-md-items-start border-top pl-md-4 pl-xl-6 pt-4 pt-xl-5 mb-4 mb-xl-7"> <div class="position-relative col-4 col-sm-3 col-md-4 pl-3 pl-md-2 pl-lg-3 pl-xl-4"> <div class="position-relative readme-img-build-in js-build-in" data-build-margin-bottom="5"> <div class="position-relative readme-link"> <figure class="readme-link__figure circle " style="height:0; padding-bottom:100%; -webkit-mask-image: -webkit-radial-gradient(#fff,#000);"> <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/9MBUXeNZV29Ix5IfPQ8rN/7f173d6cd8b536e9cba79bf8343a5cd1/Hero_art.jpg?w=360&fm=webp 360w,//images.ctfassets.net/s5uo95nf6njh/9MBUXeNZV29Ix5IfPQ8rN/7f173d6cd8b536e9cba79bf8343a5cd1/Hero_art.jpg?w=288&fm=webp 288w,//images.ctfassets.net/s5uo95nf6njh/9MBUXeNZV29Ix5IfPQ8rN/7f173d6cd8b536e9cba79bf8343a5cd1/Hero_art.jpg?w=216&fm=webp 216w,//images.ctfassets.net/s5uo95nf6njh/9MBUXeNZV29Ix5IfPQ8rN/7f173d6cd8b536e9cba79bf8343a5cd1/Hero_art.jpg?w=180&fm=webp 180w,//images.ctfassets.net/s5uo95nf6njh/9MBUXeNZV29Ix5IfPQ8rN/7f173d6cd8b536e9cba79bf8343a5cd1/Hero_art.jpg?w=144&fm=webp 144w,//images.ctfassets.net/s5uo95nf6njh/9MBUXeNZV29Ix5IfPQ8rN/7f173d6cd8b536e9cba79bf8343a5cd1/Hero_art.jpg?w=72&fm=webp 72w" sizes="160px" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/9MBUXeNZV29Ix5IfPQ8rN/7f173d6cd8b536e9cba79bf8343a5cd1/Hero_art.jpg?w=360&fm=jpg 360w,//images.ctfassets.net/s5uo95nf6njh/9MBUXeNZV29Ix5IfPQ8rN/7f173d6cd8b536e9cba79bf8343a5cd1/Hero_art.jpg?w=288&fm=jpg 288w,//images.ctfassets.net/s5uo95nf6njh/9MBUXeNZV29Ix5IfPQ8rN/7f173d6cd8b536e9cba79bf8343a5cd1/Hero_art.jpg?w=216&fm=jpg 216w,//images.ctfassets.net/s5uo95nf6njh/9MBUXeNZV29Ix5IfPQ8rN/7f173d6cd8b536e9cba79bf8343a5cd1/Hero_art.jpg?w=180&fm=jpg 180w,//images.ctfassets.net/s5uo95nf6njh/9MBUXeNZV29Ix5IfPQ8rN/7f173d6cd8b536e9cba79bf8343a5cd1/Hero_art.jpg?w=144&fm=jpg 144w,//images.ctfassets.net/s5uo95nf6njh/9MBUXeNZV29Ix5IfPQ8rN/7f173d6cd8b536e9cba79bf8343a5cd1/Hero_art.jpg?w=72&fm=jpg 72w" sizes="160px" type="image/jpeg"></source> <img class="d-block width-full readme-link__img height-auto position-absolute" width="360" height="420" alt="" src="//images.ctfassets.net/s5uo95nf6njh/9MBUXeNZV29Ix5IfPQ8rN/7f173d6cd8b536e9cba79bf8343a5cd1/Hero_art.jpg?w=360&fm=jpg" /> </picture> </figure> </div> </div> </div> <div class="col-8"> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2"> Featured Article </p> <a href="/readme/featured/disability-creativity" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta: Coding accessibility: Disability as catalyst for creativity;ref_loc:Story list" class="position-relative d-block no-underline readme-underline--green" > <h3 class="mb-3 readme-heading-3"> <span> Coding accessibility: Disability as catalyst for creativity</span> </h3> </a> <p class="d-none d-lg-block f4-mktg"> Faced with accessibility barriers, developer Paul Chiou turns obstacles into innovative solutions. </p> </div> </div> <div class="d-flex flex-row-reverse flex-items-center flex-md-items-start border-top pl-md-4 pl-xl-6 pt-4 pt-xl-5 mb-4 mb-xl-7"> <div class="position-relative col-4 col-sm-3 col-md-4 pl-3 pl-md-2 pl-lg-3 pl-xl-4"> <div class="position-relative readme-img-build-in js-build-in" data-build-margin-bottom="5"> <div class="position-relative readme-link"> <figure class="readme-link__figure circle " style="height:0; padding-bottom:100%; -webkit-mask-image: -webkit-radial-gradient(#fff,#000);"> <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=360&fm=avif 360w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=288&fm=avif 288w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=216&fm=avif 216w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=180&fm=avif 180w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=144&fm=avif 144w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=72&fm=avif 72w" sizes="160px" type="image/avif"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=360&fm=webp 360w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=288&fm=webp 288w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=216&fm=webp 216w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=180&fm=webp 180w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=144&fm=webp 144w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=72&fm=webp 72w" sizes="160px" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=360&fm=jpg 360w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=288&fm=jpg 288w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=216&fm=jpg 216w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=180&fm=jpg 180w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=144&fm=jpg 144w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=72&fm=jpg 72w" sizes="160px" type="image/jpeg"></source> <img class="d-block width-full readme-link__img height-auto position-absolute" width="360" height="420" alt="" src="//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=360&fm=jpg" /> </picture> </figure> </div> </div> </div> <div class="col-8"> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2"> Annalu Waller </p> <a href="/readme/stories/annalu-waller" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta:Champion accessibility to unleash untapped potential;ref_loc:Story list" class="position-relative d-block no-underline readme-underline--green" > <h3 class="mb-3 readme-heading-3"> <span>Champion accessibility to unleash untapped potential</span> </h3> </a> <p class="d-none d-lg-block f4-mktg"> Dr. Annalu Waller on the intricate, interdependent network of support that shapes our lives. </p> </div> </div> <div class="d-flex flex-row-reverse flex-items-center flex-md-items-start border-top pl-md-4 pl-xl-6 pt-4 pt-xl-5 mb-4 mb-xl-7"> <div class="position-relative col-4 col-sm-3 col-md-4 pl-3 pl-md-2 pl-lg-3 pl-xl-4"> <div class="position-relative readme-img-build-in js-build-in" data-build-margin-bottom="5"> <div class="position-relative readme-link"> <figure class="readme-link__figure circle " style="height:0; padding-bottom:100%; -webkit-mask-image: -webkit-radial-gradient(#fff,#000);"> <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/4mhPoQw1uGpqGG9YKy4jvH/7c1b96669654c4b324493bff9b9258db/ReadME_Project_Coding_Accessibility.jpg?w=360&fm=webp 360w,//images.ctfassets.net/s5uo95nf6njh/4mhPoQw1uGpqGG9YKy4jvH/7c1b96669654c4b324493bff9b9258db/ReadME_Project_Coding_Accessibility.jpg?w=288&fm=webp 288w,//images.ctfassets.net/s5uo95nf6njh/4mhPoQw1uGpqGG9YKy4jvH/7c1b96669654c4b324493bff9b9258db/ReadME_Project_Coding_Accessibility.jpg?w=216&fm=webp 216w,//images.ctfassets.net/s5uo95nf6njh/4mhPoQw1uGpqGG9YKy4jvH/7c1b96669654c4b324493bff9b9258db/ReadME_Project_Coding_Accessibility.jpg?w=180&fm=webp 180w,//images.ctfassets.net/s5uo95nf6njh/4mhPoQw1uGpqGG9YKy4jvH/7c1b96669654c4b324493bff9b9258db/ReadME_Project_Coding_Accessibility.jpg?w=144&fm=webp 144w,//images.ctfassets.net/s5uo95nf6njh/4mhPoQw1uGpqGG9YKy4jvH/7c1b96669654c4b324493bff9b9258db/ReadME_Project_Coding_Accessibility.jpg?w=72&fm=webp 72w" sizes="160px" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/4mhPoQw1uGpqGG9YKy4jvH/7c1b96669654c4b324493bff9b9258db/ReadME_Project_Coding_Accessibility.jpg?w=360&fm=jpg 360w,//images.ctfassets.net/s5uo95nf6njh/4mhPoQw1uGpqGG9YKy4jvH/7c1b96669654c4b324493bff9b9258db/ReadME_Project_Coding_Accessibility.jpg?w=288&fm=jpg 288w,//images.ctfassets.net/s5uo95nf6njh/4mhPoQw1uGpqGG9YKy4jvH/7c1b96669654c4b324493bff9b9258db/ReadME_Project_Coding_Accessibility.jpg?w=216&fm=jpg 216w,//images.ctfassets.net/s5uo95nf6njh/4mhPoQw1uGpqGG9YKy4jvH/7c1b96669654c4b324493bff9b9258db/ReadME_Project_Coding_Accessibility.jpg?w=180&fm=jpg 180w,//images.ctfassets.net/s5uo95nf6njh/4mhPoQw1uGpqGG9YKy4jvH/7c1b96669654c4b324493bff9b9258db/ReadME_Project_Coding_Accessibility.jpg?w=144&fm=jpg 144w,//images.ctfassets.net/s5uo95nf6njh/4mhPoQw1uGpqGG9YKy4jvH/7c1b96669654c4b324493bff9b9258db/ReadME_Project_Coding_Accessibility.jpg?w=72&fm=jpg 72w" sizes="160px" type="image/jpeg"></source> <img class="d-block width-full readme-link__img height-auto position-absolute" width="360" height="420" alt="" src="//images.ctfassets.net/s5uo95nf6njh/4mhPoQw1uGpqGG9YKy4jvH/7c1b96669654c4b324493bff9b9258db/ReadME_Project_Coding_Accessibility.jpg?w=360&fm=jpg" /> </picture> </figure> </div> </div> </div> <div class="col-8"> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2"> Featured Article </p> <a href="/readme/featured/open-source-aac" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta:Coding accessibility: How Della found her voice with open source AAC;ref_loc:Story list" class="position-relative d-block no-underline readme-underline--green" > <h3 class="mb-3 readme-heading-3"> <span>Coding accessibility: How Della found her voice with open source AAC</span> </h3> </a> <p class="d-none d-lg-block f4-mktg"> When proprietary apps failed, Della’s brother built an app that incorporated her needs and feedback into the design. </p> </div> </div> <div class="d-flex flex-row-reverse flex-items-center flex-md-items-start border-top pl-md-4 pl-xl-6 pt-4 pt-xl-5 mb-4 mb-xl-7"> <div class="position-relative col-4 col-sm-3 col-md-4 pl-3 pl-md-2 pl-lg-3 pl-xl-4"> <div class="position-relative readme-img-build-in js-build-in" data-build-margin-bottom="5"> <div class="position-relative readme-link"> <figure class="readme-link__figure circle " style="height:0; padding-bottom:100%; -webkit-mask-image: -webkit-radial-gradient(#fff,#000);"> <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/1l6G5uYIyNkyb7STGstVs4/ee9d4b293ddfb479989afc2bdb471f2b/Github_CodingAccessibility__1_.jpg?w=360&fm=webp 360w,//images.ctfassets.net/s5uo95nf6njh/1l6G5uYIyNkyb7STGstVs4/ee9d4b293ddfb479989afc2bdb471f2b/Github_CodingAccessibility__1_.jpg?w=288&fm=webp 288w,//images.ctfassets.net/s5uo95nf6njh/1l6G5uYIyNkyb7STGstVs4/ee9d4b293ddfb479989afc2bdb471f2b/Github_CodingAccessibility__1_.jpg?w=216&fm=webp 216w,//images.ctfassets.net/s5uo95nf6njh/1l6G5uYIyNkyb7STGstVs4/ee9d4b293ddfb479989afc2bdb471f2b/Github_CodingAccessibility__1_.jpg?w=180&fm=webp 180w,//images.ctfassets.net/s5uo95nf6njh/1l6G5uYIyNkyb7STGstVs4/ee9d4b293ddfb479989afc2bdb471f2b/Github_CodingAccessibility__1_.jpg?w=144&fm=webp 144w,//images.ctfassets.net/s5uo95nf6njh/1l6G5uYIyNkyb7STGstVs4/ee9d4b293ddfb479989afc2bdb471f2b/Github_CodingAccessibility__1_.jpg?w=72&fm=webp 72w" sizes="160px" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/1l6G5uYIyNkyb7STGstVs4/ee9d4b293ddfb479989afc2bdb471f2b/Github_CodingAccessibility__1_.jpg?w=360&fm=jpg 360w,//images.ctfassets.net/s5uo95nf6njh/1l6G5uYIyNkyb7STGstVs4/ee9d4b293ddfb479989afc2bdb471f2b/Github_CodingAccessibility__1_.jpg?w=288&fm=jpg 288w,//images.ctfassets.net/s5uo95nf6njh/1l6G5uYIyNkyb7STGstVs4/ee9d4b293ddfb479989afc2bdb471f2b/Github_CodingAccessibility__1_.jpg?w=216&fm=jpg 216w,//images.ctfassets.net/s5uo95nf6njh/1l6G5uYIyNkyb7STGstVs4/ee9d4b293ddfb479989afc2bdb471f2b/Github_CodingAccessibility__1_.jpg?w=180&fm=jpg 180w,//images.ctfassets.net/s5uo95nf6njh/1l6G5uYIyNkyb7STGstVs4/ee9d4b293ddfb479989afc2bdb471f2b/Github_CodingAccessibility__1_.jpg?w=144&fm=jpg 144w,//images.ctfassets.net/s5uo95nf6njh/1l6G5uYIyNkyb7STGstVs4/ee9d4b293ddfb479989afc2bdb471f2b/Github_CodingAccessibility__1_.jpg?w=72&fm=jpg 72w" sizes="160px" type="image/jpeg"></source> <img class="d-block width-full readme-link__img height-auto position-absolute" width="360" height="420" alt="" src="//images.ctfassets.net/s5uo95nf6njh/1l6G5uYIyNkyb7STGstVs4/ee9d4b293ddfb479989afc2bdb471f2b/Github_CodingAccessibility__1_.jpg?w=360&fm=jpg" /> </picture> </figure> </div> </div> </div> <div class="col-8"> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2"> Featured Article </p> <a href="/readme/featured/accessibility-artificial-intelligence" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta:Coding accessibility: Building autonomy with AI;ref_loc:Story list" class="position-relative d-block no-underline readme-underline--green" > <h3 class="mb-3 readme-heading-3"> <span>Coding accessibility: Building autonomy with AI</span> </h3> </a> <p class="d-none d-lg-block f4-mktg"> After bringing Braille to the digital world and creating the first screen reader for the web, Dr. Asakawa is now working on an AI-enabled suitcase to help blind people navigate the world independently. </p> </div> </div> </div> </div> <div class="js-build-in" data-build-margin-bottom="75"> <div class="color-bg-subtle position-fixed left-0 top-0 width-full z-2 readme-navbar-dropdown"> <div class="px-3 pl-md-8 pr-lg-6 py-4 py-lg-5 d-flex flex-justify-between flex-items-center"> <a href="/readme" tabindex="-1" class="d-flex flex-items-center f4-mktg link-blue-readme"><svg xmlns="http://www.w3.org/2000/svg" width="66" height="28" viewBox="0 0 66 49" fill="currentColor"> <path fill-rule="evenodd" clip-rule="evenodd" d="M4 23C4 9.5 15 0 32 0v9c-8 0-15 3.5-15 14h13v26h-8v-4h-4v4h-3v-4h-4v-4H7v4h4v4H4V33h4v-4H4v-6zm10 12h4v4h-4v-4z"></path> <path d="M4 29H0v4h4v-4z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M36 23C36 9.5 47 0 64 0v9c-8 0-15 3.5-15 14h13v18h4v4h-4v4h-5v-4h4v-4h-4v4h-4v4H43v-4h4v-4h-4v-4h-4v4h4v4h-4v4h-3V23zm15 13v-4h-4v4h4z"></path> </svg> The ReadME Project</a> <button aria-label="Open ReadME Project Menu" data-aria-label-closed="Open ReadME Project Menu" data-aria-label-open="Close ReadME Project Menu" aria-expanded="false" tabindex="-1" type="button" data-view-component="true" class="no-underline readme-nav__button js-details-target btn-link"> <div class="d-flex flex-items-center"> <svg height="20" aria-hidden="true" viewBox="0 0 16 16" version="1.1" width="20" data-view-component="true" class="octicon octicon-three-bars"> <path d="M1 2.75A.75.75 0 0 1 1.75 2h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 2.75Zm0 5A.75.75 0 0 1 1.75 7h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 7.75ZM1.75 12h12.5a.75.75 0 0 1 0 1.5H1.75a.75.75 0 0 1 0-1.5Z"></path> </svg> </div> </button> </div> </div> <nav class="position-fixed top-0 left-0 width-full height-full overflow-auto color-fg-on-emphasis readme-nav" aria-label="ReadME Project Navigation"> <div class="position-absolute top-0 right-0 bottom-0 left-0 readme-nav__overlay"></div> <div class="position-relative width-full box-shadow-default-mktg readme-bg-black--pattern readme-nav__body"> <div class="ml-md-6 border-left readme-border-fade--white d-flex flex-column flex-justify-between" style="min-height:60vh"> <div class="d-flex flex-items-center flex-justify-between px-3 pl-md-8 pr-lg-6 py-4 ml-md-n6 border-bottom readme-border-fade--white"> <a href="/readme" aria-label="ReadME Project Homepage" class="d-block readme-logo-link--inverted js-details-initial-focus"> <svg xmlns="http://www.w3.org/2000/svg" width="132" height="50" viewBox="0 0 137 52" fill="currentColor" aria-hidden="true" class="d-block readme-logo"> <path d="M74 31.097h1.784v-4.52h5.779v4.52h1.8v-4.175c0-.773-.278-1.282-1.178-1.282h-.606v-.115c1.048-.378 1.752-1.413 1.752-2.86 0-2.153-1.13-3.55-3.504-3.55H74v11.982zm1.784-6.016v-4.405h3.65c1.212 0 1.998.543 1.998 1.693v1.003c0 1.019-.704 1.71-1.997 1.71h-3.65zM85.073 26.758c0 2.744 1.523 4.503 4.093 4.503 2.03 0 3.568-1.118 3.912-2.794h-1.67c-.261.855-1.08 1.446-2.226 1.446-1.424 0-2.373-.92-2.373-2.284v-.477h6.17a8.99 8.99 0 00.066-.937c0-2.449-1.555-3.928-3.895-3.928-2.489 0-4.077 1.644-4.077 4.47zm1.736-.822v-.197c0-1.25.95-2.104 2.324-2.104 1.326 0 2.21.822 2.21 2.021v.28h-4.534zM94.392 28.615c0 1.594 1.032 2.646 2.75 2.646 1.392 0 2.505-.624 2.865-1.561h.115l.016.41c.049.625.328.987 1.228.987h1.555v-1.233h-1.211v-4.52c0-.937-.41-3.057-3.372-3.057-2.112 0-3.487 1.02-3.602 2.827h1.67c.049-.904.655-1.48 1.85-1.48 1.047 0 1.768.445 1.768 1.677v.625h-2.505c-1.915 0-3.127.97-3.127 2.679zm1.72-.362c0-.674.572-1.15 1.62-1.15h2.292v.41c0 1.43-.917 2.4-2.407 2.4-.9 0-1.506-.394-1.506-1.2v-.46zM107.489 31.261c1.358 0 2.471-.608 3.028-1.693h.114l.197 1.529h1.506V19h-1.703v5.079h-.114c-.508-1.036-1.555-1.677-3.028-1.677-2.21 0-3.536 1.595-3.536 4.438 0 2.794 1.309 4.421 3.536 4.421zm.54-1.397c-1.506 0-2.341-.887-2.341-2.219v-1.627c0-1.38.9-2.219 2.341-2.219 1.555 0 2.602 1.003 2.602 2.548v.97c0 1.528-1.031 2.547-2.602 2.547zM114.377 31.097h1.752v-6.098l-.148-3.484h.115l4.207 9.368 4.19-9.368h.099l-.131 3.468v6.114h1.735V19.115h-2.308l-3.552 8.152h-.099l-3.536-8.152h-2.324v11.982zM128.489 31.097h8.054v-1.595h-6.269v-3.83h5.483v-1.511h-5.483v-3.452h6.269v-1.594h-8.054v11.982zM74 49.097h1.784V44.84h3.503c2.488 0 3.814-1.447 3.814-3.863 0-2.366-1.244-3.862-3.814-3.862H74v11.982zm1.784-5.786V38.76h3.52c1.146 0 1.915.575 1.915 1.643v1.134c0 1.036-.72 1.775-2.063 1.775h-3.372zM86.37 40.452c-1.309 0-1.489.805-1.489 1.479v7.166h1.686v-7.232h2.783v-1.413h-2.98zM89.853 44.774c0 2.761 1.588 4.487 4.174 4.487 2.636 0 4.175-1.792 4.175-4.487 0-2.86-1.736-4.487-4.175-4.487-2.52 0-4.174 1.677-4.174 4.487zm1.719.707v-1.348c0-1.48.999-2.416 2.455-2.416 1.408 0 2.44.937 2.44 2.416v1.348c0 1.545-1.064 2.367-2.44 2.367-1.358 0-2.455-.806-2.455-2.367zM100.327 37v2.038h1.686V37h-1.686zm0 3.452v10.025h-1.85v1.364h2.03c1.489 0 1.489-1.084 1.489-1.495v-1.71l.017-8.184h-1.686zM103.889 44.758c0 2.744 1.522 4.503 4.092 4.503 2.03 0 3.569-1.118 3.912-2.794h-1.669c-.262.855-1.081 1.446-2.226 1.446-1.425 0-2.374-.92-2.374-2.284v-.477h6.171c.033-.28.066-.657.066-.937 0-2.449-1.555-3.928-3.896-3.928-2.488 0-4.076 1.644-4.076 4.47zm1.735-.822v-.197c0-1.25.949-2.104 2.324-2.104 1.326 0 2.21.822 2.21 2.022v.279h-4.534zM121.389 46.089h-1.67c-.196 1.085-1.031 1.759-2.226 1.759-1.408 0-2.374-.888-2.374-2.334v-1.348c0-1.446.933-2.449 2.374-2.449 1.08 0 1.931.526 2.193 1.644h1.686c-.278-1.858-1.751-3.074-3.814-3.074-2.472 0-4.158 1.627-4.158 4.504 0 2.728 1.523 4.47 4.109 4.47 2.128 0 3.618-1.2 3.88-3.172zM125.422 41.865h1.784v-1.413h-1.784V37.64h-1.669v2.81h-1.556v1.414h1.556V47.7c0 .838.36 1.397 1.424 1.397h2.029v-1.38h-1.784v-5.852z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M4 23C4 9.5 15 0 32 0v9c-8 0-15 3.5-15 14h13v26h-8v-4h-4v4h-3v-4h-4v-4H7v4h4v4H4V33h4v-4H4v-6zm10 12h4v4h-4v-4z"></path> <path d="M4 29H0v4h4v-4z"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M36 23C36 9.5 47 0 64 0v9c-8 0-15 3.5-15 14h13v18h4v4h-4v4h-5v-4h4v-4h-4v4h-4v4H43v-4h4v-4h-4v-4h-4v4h4v4h-4v4h-3V23zm15 13v-4h-4v4h4z"></path> <path d="M81.97 1.115H73V2.71h3.601v10.388h1.768V2.709h3.602V1.115zM83.388 13.097h1.686V8.51c0-1.676.933-2.794 2.373-2.794 1.212 0 1.9.723 1.9 2.252v5.128h1.702V7.804c0-2.136-1.065-3.517-2.98-3.517-1.276 0-2.34.641-2.88 1.742h-.115V1h-1.686v12.097zM92.113 8.758c0 2.744 1.523 4.503 4.093 4.503 2.03 0 3.568-1.118 3.912-2.794h-1.67c-.262.855-1.08 1.446-2.226 1.446-1.424 0-2.373-.92-2.373-2.284v-.477h6.171c.033-.28.065-.657.065-.937 0-2.449-1.555-3.928-3.896-3.928-2.488 0-4.076 1.644-4.076 4.47zm1.736-.822v-.197c0-1.25.949-2.104 2.324-2.104 1.326 0 2.21.822 2.21 2.021v.28h-4.534z"></path> </svg> </a> <button aria-label="Close ReadME Project Navigation" aria-expanded="false" type="button" data-view-component="true" class="readme-logo-link--inverted no-underline readme-nav__button js-details-target btn-link"> <div class="d-flex flex-items-center"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" class=""> <rect x="6.85742" y="6.85693" width="3.42859" height="3.42859"></rect> <rect x="10.2861" y="10.2856" width="3.42859" height="3.42859"></rect> <rect x="13.7139" y="13.7144" width="3.42859" height="3.42859"></rect> <rect x="13.7139" y="6.85693" width="3.42859" height="3.42859"></rect> <rect x="6.85742" y="13.7144" width="3.42859" height="3.42859"></rect> <rect x="3.42871" y="17.1431" width="3.42859" height="3.42859"></rect> <rect x="17.1426" y="17.1431" width="3.42859" height="3.42859"></rect> <rect x="20.5713" y="20.5713" width="3.42859" height="3.42859"></rect> <rect y="20.5713" width="3.42859" height="3.42859"></rect> <rect x="20.5713" width="3.42859" height="3.42859"></rect> <rect width="3.42859" height="3.42859"></rect> <rect x="3.42871" y="3.42871" width="3.42859" height="3.42859"></rect> <rect x="17.1426" y="3.42871" width="3.42859" height="3.42859"></rect> </svg> </div> </button> </div> <div class="flex-1 d-lg-flex width-full"> <div class="col-lg-7 col-xl-8 pb-3 pb-lg-0 border-lg-right border-bottom border-lg-bottom-0 readme-border-fade--white"> <h2 id="storyType" class="readme-heading--condensed f3-mktg text-semibold text-uppercase px-3 px-lg-4 py-3 border-bottom readme-border-fade--white"> Browse by story type </h2> <ul aria-labelledby="storyType" class="d-inline-block list-style-none py-2 py-lg-3 readme-nav__list"> <li class="readme-heading-1 readme-heading--condensed text-uppercase px-3 px-lg-4 py-2 py-lg-3 readme-nav__list-item"> <a class="d-block width-full color-fg-on-emphasis no-underline readme-underline--blue readme-nav__list-link" href="/readme/featured"> <span class="d-inline-block">Featured Articles</span> </a> </li> <li class="readme-heading-1 readme-heading--condensed text-uppercase px-3 px-lg-4 py-2 py-lg-3 readme-nav__list-item"> <a class="d-block width-full color-fg-on-emphasis no-underline readme-underline--blue readme-nav__list-link" href="/readme/stories"> <span class="d-inline-block">Developer Stories</span> </a> </li> <li class="readme-heading-1 readme-heading--condensed text-uppercase px-3 px-lg-4 py-2 py-lg-3 readme-nav__list-item"> <a class="d-block width-full color-fg-on-emphasis no-underline readme-underline--blue readme-nav__list-link" href="/readme/guides"> <span class="d-inline-block">Guides</span> </a> </li> <li class="readme-heading-1 readme-heading--condensed text-uppercase px-3 px-lg-4 py-2 py-lg-3 readme-nav__list-item"> <a class="d-block width-full color-fg-on-emphasis no-underline readme-underline--blue readme-nav__list-link" href="/readme/podcast"> <span class="d-inline-block">The ReadMe Podcast</span> </a> </li> </ul> </div> <div class="d-flex flex-column col-lg-5 col-xl-4"> <div class="d-flex flex-justify-between px-3 pr-lg-6 pl-lg-4 py-3 border-bottom readme-border-fade--white"> <h2 id="exploreTopics" class="readme-heading--condensed f3-mktg text-semibold text-uppercase">Explore Topics</h2> <a aria-labelledby="exploreTopics" href="/readme/topics" class="arrow-target-mktg no-underline text-mono text-uppercase f5-mktg lh-condensed readme-logo-link--inverted" style="letter-spacing:0.05em"> See all topics <svg xmlns="http://www.w3.org/2000/svg" class="octicon arrow-symbol-mktg octicon" width="16" height="16" viewBox="0 0 16 16" fill="none"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="octicon-chevrow-stem" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg> </a> </div> <ul class="py-2 py-lg-0 list-style-none height-full d-flex flex-column flex-justify-around readme-nav__list"> <li class="flex-1 d-flex flex-items-center readme-heading-3 px-3 px-lg-4 border-lg-bottom readme-border-fade--white readme-nav__list-item"> <a class="d-block width-full py-3 py-lg-4 color-fg-on-emphasis no-underline readme-underline--blue readme-nav__list-link" data-test-selector="topic-link" href="/readme/artificial-intelligence"> <span>AI</span> </a> </li> <li class="flex-1 d-flex flex-items-center readme-heading-3 px-3 px-lg-4 border-lg-bottom readme-border-fade--white readme-nav__list-item"> <a class="d-block width-full py-3 py-lg-4 color-fg-on-emphasis no-underline readme-underline--blue readme-nav__list-link" data-test-selector="topic-link" href="/readme/application-security"> <span>Application Security</span> </a> </li> <li class="flex-1 d-flex flex-items-center readme-heading-3 px-3 px-lg-4 border-lg-bottom readme-border-fade--white readme-nav__list-item"> <a class="d-block width-full py-3 py-lg-4 color-fg-on-emphasis no-underline readme-underline--blue readme-nav__list-link" data-test-selector="topic-link" href="/readme/career-development"> <span>Career Development</span> </a> </li> <li class="flex-1 d-flex flex-items-center readme-heading-3 px-3 px-lg-4 border-lg-bottom readme-border-fade--white readme-nav__list-item"> <a class="d-block width-full py-3 py-lg-4 color-fg-on-emphasis no-underline readme-underline--blue readme-nav__list-link" data-test-selector="topic-link" href="/readme/devops-automation"> <span>DevOps & Automation</span> </a> </li> <li class="flex-1 d-flex flex-items-center readme-heading-3 px-3 px-lg-4 border-lg-bottom readme-border-fade--white readme-nav__list-item"> <a class="d-block width-full py-3 py-lg-4 color-fg-on-emphasis no-underline readme-underline--blue readme-nav__list-link" data-test-selector="topic-link" href="/readme/maintainer"> <span>Maintainer</span> </a> </li> <li class="flex-1 d-flex flex-items-center readme-heading-3 px-3 px-lg-4 readme-nav__list-item"> <a class="d-block width-full py-3 py-lg-4 color-fg-on-emphasis no-underline readme-underline--blue readme-nav__list-link" data-test-selector="topic-link" href="/readme/programming"> <span>Programming</span> </a> </li> </ul> </div> </div> <div class="px-3 pl-md-8 pr-lg-4 py-4 ml-md-n6 border-top readme-border-fade--white"> <ul class="list-style-none text-mono text-uppercase f5-mktg readme-nav__list" style="letter-spacing:0.05em"> <li class="d-md-inline-block mb-2 mb-md-0 readme-nav__list-item"> <a class="color-fg-on-emphasis readme-nav__list-link" href="/readme/nominate">Nominate a developer</a><span class="d-none d-md-inline-block ml-4 mr-3" style="opacity:0.3">//</span> </li> <li class="d-md-inline-block readme-nav__list-item"> <a class="color-fg-on-emphasis readme-nav__list-link" href="/sponsors">Support the community</a> </li> </ul> </div> </div> </div> </nav> <div class="py-6 py-md-9 my-5 my-md-9 readme-bg-blue"> <h2 class="readme-home-visually-hidden">Stories by topic</h2> <div class="container-readme p-responsive-readme mx-auto color-fg-on-emphasis"> <div class="d-md-flex gutter-md gutter-xl-spacious"> <p class="col-md-4 col-md-3 lh-condensed mt-md-2 mb-6 mb-md-0 readme-heading-3"> The ReadME Project amplifies the voices of the developer community by telling stories about: </p> <ul class="col-md-8 col-lg-9 list-style-none lh-condensed readme-heading-1 readme-heading--condensed"> <li class="d-inline"> <a href="/readme/topics/artificial-intelligence" class="d-inline-block no-underline readme-underline-grow--green" > <span>AI</span> </a>, </li> <li class="d-inline"> <a href="/readme/topics/application-security" class="d-inline-block no-underline readme-underline-grow--green" > <span>Application Security</span> </a>, </li> <li class="d-inline"> <a href="/readme/topics/career-development" class="d-inline-block no-underline readme-underline-grow--green" > <span>Career Development</span> </a>, </li> <li class="d-inline"> <a href="/readme/topics/devops-automation" class="d-inline-block no-underline readme-underline-grow--green" > <span>DevOps & Automation</span> </a>, </li> <li class="d-inline">and <a href="/readme/topics" class="no-underline readme-underline-grow--green"><span>more topics</span></a>.</li> </ul> </div> </div> </div> <div class="container-readme p-responsive-readme"> <h2 class="readme-home-visually-hidden">Community stories</h2> <!-- TEASE GRID (2) --> <div class="d-sm-flex flex-wrap gutter-sm-spacious"> <div class="col-sm-6 mb-8"> <div class="position-relative mb-4"> <div class="position-relative readme-img-build-in js-build-in" data-build-margin-bottom="10"> <div class="position-relative readme-link"> <figure class="readme-link__figure " > <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/1yBuobTsmIBl6dCu0fArh5/247c85cc11475c51ddcc14b99f12b819/2000x1200-RMP-E_30-Slide-Cover.png?w=2000&fm=webp 2000w,//images.ctfassets.net/s5uo95nf6njh/1yBuobTsmIBl6dCu0fArh5/247c85cc11475c51ddcc14b99f12b819/2000x1200-RMP-E_30-Slide-Cover.png?w=1600&fm=webp 1600w,//images.ctfassets.net/s5uo95nf6njh/1yBuobTsmIBl6dCu0fArh5/247c85cc11475c51ddcc14b99f12b819/2000x1200-RMP-E_30-Slide-Cover.png?w=1200&fm=webp 1200w,//images.ctfassets.net/s5uo95nf6njh/1yBuobTsmIBl6dCu0fArh5/247c85cc11475c51ddcc14b99f12b819/2000x1200-RMP-E_30-Slide-Cover.png?w=1000&fm=webp 1000w,//images.ctfassets.net/s5uo95nf6njh/1yBuobTsmIBl6dCu0fArh5/247c85cc11475c51ddcc14b99f12b819/2000x1200-RMP-E_30-Slide-Cover.png?w=800&fm=webp 800w,//images.ctfassets.net/s5uo95nf6njh/1yBuobTsmIBl6dCu0fArh5/247c85cc11475c51ddcc14b99f12b819/2000x1200-RMP-E_30-Slide-Cover.png?w=400&fm=webp 400w" sizes="(max-width: 755px) 90vw, 45vw" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/1yBuobTsmIBl6dCu0fArh5/247c85cc11475c51ddcc14b99f12b819/2000x1200-RMP-E_30-Slide-Cover.png?w=2000&fm=png 2000w,//images.ctfassets.net/s5uo95nf6njh/1yBuobTsmIBl6dCu0fArh5/247c85cc11475c51ddcc14b99f12b819/2000x1200-RMP-E_30-Slide-Cover.png?w=1600&fm=png 1600w,//images.ctfassets.net/s5uo95nf6njh/1yBuobTsmIBl6dCu0fArh5/247c85cc11475c51ddcc14b99f12b819/2000x1200-RMP-E_30-Slide-Cover.png?w=1200&fm=png 1200w,//images.ctfassets.net/s5uo95nf6njh/1yBuobTsmIBl6dCu0fArh5/247c85cc11475c51ddcc14b99f12b819/2000x1200-RMP-E_30-Slide-Cover.png?w=1000&fm=png 1000w,//images.ctfassets.net/s5uo95nf6njh/1yBuobTsmIBl6dCu0fArh5/247c85cc11475c51ddcc14b99f12b819/2000x1200-RMP-E_30-Slide-Cover.png?w=800&fm=png 800w,//images.ctfassets.net/s5uo95nf6njh/1yBuobTsmIBl6dCu0fArh5/247c85cc11475c51ddcc14b99f12b819/2000x1200-RMP-E_30-Slide-Cover.png?w=400&fm=png 400w" sizes="(max-width: 755px) 90vw, 45vw" type="image/png"></source> <img class="d-block width-full readme-link__img height-auto position-relative" width="2000" height="1200" loading="lazy" decoding="async" alt="" src="//images.ctfassets.net/s5uo95nf6njh/1yBuobTsmIBl6dCu0fArh5/247c85cc11475c51ddcc14b99f12b819/2000x1200-RMP-E_30-Slide-Cover.png?w=2000&fm=png" /> </picture> </figure> </div> <a class="readme-link--focus-boost position-absolute top-0 left-0 px-2 px-lg-3 py-2 readme-bg-blue f5-mktg readme-heading--condensed text-uppercase text-semibold color-text-white" style="letter-spacing:0.025em;" data-test-selector="topic-tag" href="/readme/topics/maintainer">Maintainer</a> <div class="position-absolute px-2 pt-2 pb-1 readme-text-blue readme-bg-white" style="bottom:-1px; right:-1px"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-unmute"> <path d="M11.553 3.064A.75.75 0 0 1 12 3.75v16.5a.75.75 0 0 1-1.255.555L5.46 16H2.75A1.75 1.75 0 0 1 1 14.25v-4.5C1 8.784 1.784 8 2.75 8h2.71l5.285-4.805a.752.752 0 0 1 .808-.13ZM10.5 5.445l-4.245 3.86a.748.748 0 0 1-.505.195h-3a.25.25 0 0 0-.25.25v4.5c0 .138.112.25.25.25h3c.187 0 .367.069.505.195l4.245 3.86Zm8.218-1.223a.75.75 0 0 1 1.06 0c4.296 4.296 4.296 11.26 0 15.556a.75.75 0 0 1-1.06-1.06 9.5 9.5 0 0 0 0-13.436.75.75 0 0 1 0-1.06Z"></path><path d="M16.243 7.757a.75.75 0 1 0-1.061 1.061 4.5 4.5 0 0 1 0 6.364.75.75 0 0 0 1.06 1.06 6 6 0 0 0 0-8.485Z"></path> </svg> </div> </div> </div> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2 d-inline-block"> THE README PODCAST // EPISODE 31 </p> <a class="d-block no-underline readme-underline--green" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta:Bridging code and community;ref_loc:Story list" href="/readme/podcast/code-and-community"> <h3 class="mb-3 h4-mktg font-alt-mktg lh-condensed-mktg" style="font-weight:400 !important"> <span>Bridging code and community</span> </h3></a> <p class="mb-0 f4-mktg"> Navigating open source in a regulated environment, the crucial role of non-code contributions to open source success, and lessons from scaling projects like Kubernetes. </p> </div> <div class="col-sm-6 mb-8"> <div class="position-relative mb-4"> <div class="position-relative readme-img-build-in js-build-in" data-build-margin-bottom="10"> <div class="position-relative readme-link"> <figure class="readme-link__figure " > <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/3AeK3GGFkeG6NF02Xa9HJP/3777d9722a7b08dd18dd85a0c0fd8767/1920x1080-RMP-E_33-Web-Cover.png?w=2000&fm=webp 2000w,//images.ctfassets.net/s5uo95nf6njh/3AeK3GGFkeG6NF02Xa9HJP/3777d9722a7b08dd18dd85a0c0fd8767/1920x1080-RMP-E_33-Web-Cover.png?w=1600&fm=webp 1600w,//images.ctfassets.net/s5uo95nf6njh/3AeK3GGFkeG6NF02Xa9HJP/3777d9722a7b08dd18dd85a0c0fd8767/1920x1080-RMP-E_33-Web-Cover.png?w=1200&fm=webp 1200w,//images.ctfassets.net/s5uo95nf6njh/3AeK3GGFkeG6NF02Xa9HJP/3777d9722a7b08dd18dd85a0c0fd8767/1920x1080-RMP-E_33-Web-Cover.png?w=1000&fm=webp 1000w,//images.ctfassets.net/s5uo95nf6njh/3AeK3GGFkeG6NF02Xa9HJP/3777d9722a7b08dd18dd85a0c0fd8767/1920x1080-RMP-E_33-Web-Cover.png?w=800&fm=webp 800w,//images.ctfassets.net/s5uo95nf6njh/3AeK3GGFkeG6NF02Xa9HJP/3777d9722a7b08dd18dd85a0c0fd8767/1920x1080-RMP-E_33-Web-Cover.png?w=400&fm=webp 400w" sizes="(max-width: 755px) 90vw, 45vw" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/3AeK3GGFkeG6NF02Xa9HJP/3777d9722a7b08dd18dd85a0c0fd8767/1920x1080-RMP-E_33-Web-Cover.png?w=2000&fm=png 2000w,//images.ctfassets.net/s5uo95nf6njh/3AeK3GGFkeG6NF02Xa9HJP/3777d9722a7b08dd18dd85a0c0fd8767/1920x1080-RMP-E_33-Web-Cover.png?w=1600&fm=png 1600w,//images.ctfassets.net/s5uo95nf6njh/3AeK3GGFkeG6NF02Xa9HJP/3777d9722a7b08dd18dd85a0c0fd8767/1920x1080-RMP-E_33-Web-Cover.png?w=1200&fm=png 1200w,//images.ctfassets.net/s5uo95nf6njh/3AeK3GGFkeG6NF02Xa9HJP/3777d9722a7b08dd18dd85a0c0fd8767/1920x1080-RMP-E_33-Web-Cover.png?w=1000&fm=png 1000w,//images.ctfassets.net/s5uo95nf6njh/3AeK3GGFkeG6NF02Xa9HJP/3777d9722a7b08dd18dd85a0c0fd8767/1920x1080-RMP-E_33-Web-Cover.png?w=800&fm=png 800w,//images.ctfassets.net/s5uo95nf6njh/3AeK3GGFkeG6NF02Xa9HJP/3777d9722a7b08dd18dd85a0c0fd8767/1920x1080-RMP-E_33-Web-Cover.png?w=400&fm=png 400w" sizes="(max-width: 755px) 90vw, 45vw" type="image/png"></source> <img class="d-block width-full readme-link__img height-auto position-relative" width="2000" height="1200" loading="lazy" decoding="async" alt="" src="//images.ctfassets.net/s5uo95nf6njh/3AeK3GGFkeG6NF02Xa9HJP/3777d9722a7b08dd18dd85a0c0fd8767/1920x1080-RMP-E_33-Web-Cover.png?w=2000&fm=png" /> </picture> </figure> </div> <a class="readme-link--focus-boost position-absolute top-0 left-0 px-2 px-lg-3 py-2 readme-bg-blue f5-mktg readme-heading--condensed text-uppercase text-semibold color-text-white" style="letter-spacing:0.025em;" data-test-selector="topic-tag" href="/readme/topics/artificial-intelligence">AI</a> <div class="position-absolute px-2 pt-2 pb-1 readme-text-blue readme-bg-white" style="bottom:-1px; right:-1px"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-unmute"> <path d="M11.553 3.064A.75.75 0 0 1 12 3.75v16.5a.75.75 0 0 1-1.255.555L5.46 16H2.75A1.75 1.75 0 0 1 1 14.25v-4.5C1 8.784 1.784 8 2.75 8h2.71l5.285-4.805a.752.752 0 0 1 .808-.13ZM10.5 5.445l-4.245 3.86a.748.748 0 0 1-.505.195h-3a.25.25 0 0 0-.25.25v4.5c0 .138.112.25.25.25h3c.187 0 .367.069.505.195l4.245 3.86Zm8.218-1.223a.75.75 0 0 1 1.06 0c4.296 4.296 4.296 11.26 0 15.556a.75.75 0 0 1-1.06-1.06 9.5 9.5 0 0 0 0-13.436.75.75 0 0 1 0-1.06Z"></path><path d="M16.243 7.757a.75.75 0 1 0-1.061 1.061 4.5 4.5 0 0 1 0 6.364.75.75 0 0 0 1.06 1.06 6 6 0 0 0 0-8.485Z"></path> </svg> </div> </div> </div> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2 d-inline-block"> THE README PODCAST // EPISODE 33 </p> <a class="d-block no-underline readme-underline--green" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta:Powering public goods;ref_loc:Story list" href="/readme/podcast/powering-public-goods"> <h3 class="mb-3 h4-mktg font-alt-mktg lh-condensed-mktg" style="font-weight:400 !important"> <span>Powering public goods</span> </h3></a> <p class="mb-0 f4-mktg"> Exploring developer happiness through the vibrant Laravel community and the impact of digital public goods on open source, AI models, Wikipedia, and more. </p> </div> </div> <!-- TEASE GRID (3) --> <div class="d-sm-flex flex-wrap gutter-sm-spacious"> <div class="col-sm-6 col-lg-4 mb-8"> <div class="position-relative mb-4"> <div class="position-relative readme-img-build-in js-build-in" data-build-margin-bottom="10"> <div class="position-relative readme-link"> <figure class="readme-link__figure " > <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/2aLilxF4rsokt6n61jbrrs/9f13e5e5a69608391a38f46ca12f8175/ASSIGNED_Automation_Final_Tim_Peacock__1_.jpg?w=1000&fm=avif 1000w,//images.ctfassets.net/s5uo95nf6njh/2aLilxF4rsokt6n61jbrrs/9f13e5e5a69608391a38f46ca12f8175/ASSIGNED_Automation_Final_Tim_Peacock__1_.jpg?w=800&fm=avif 800w,//images.ctfassets.net/s5uo95nf6njh/2aLilxF4rsokt6n61jbrrs/9f13e5e5a69608391a38f46ca12f8175/ASSIGNED_Automation_Final_Tim_Peacock__1_.jpg?w=600&fm=avif 600w,//images.ctfassets.net/s5uo95nf6njh/2aLilxF4rsokt6n61jbrrs/9f13e5e5a69608391a38f46ca12f8175/ASSIGNED_Automation_Final_Tim_Peacock__1_.jpg?w=500&fm=avif 500w,//images.ctfassets.net/s5uo95nf6njh/2aLilxF4rsokt6n61jbrrs/9f13e5e5a69608391a38f46ca12f8175/ASSIGNED_Automation_Final_Tim_Peacock__1_.jpg?w=400&fm=avif 400w,//images.ctfassets.net/s5uo95nf6njh/2aLilxF4rsokt6n61jbrrs/9f13e5e5a69608391a38f46ca12f8175/ASSIGNED_Automation_Final_Tim_Peacock__1_.jpg?w=200&fm=avif 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/avif"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/2aLilxF4rsokt6n61jbrrs/9f13e5e5a69608391a38f46ca12f8175/ASSIGNED_Automation_Final_Tim_Peacock__1_.jpg?w=1000&fm=webp 1000w,//images.ctfassets.net/s5uo95nf6njh/2aLilxF4rsokt6n61jbrrs/9f13e5e5a69608391a38f46ca12f8175/ASSIGNED_Automation_Final_Tim_Peacock__1_.jpg?w=800&fm=webp 800w,//images.ctfassets.net/s5uo95nf6njh/2aLilxF4rsokt6n61jbrrs/9f13e5e5a69608391a38f46ca12f8175/ASSIGNED_Automation_Final_Tim_Peacock__1_.jpg?w=600&fm=webp 600w,//images.ctfassets.net/s5uo95nf6njh/2aLilxF4rsokt6n61jbrrs/9f13e5e5a69608391a38f46ca12f8175/ASSIGNED_Automation_Final_Tim_Peacock__1_.jpg?w=500&fm=webp 500w,//images.ctfassets.net/s5uo95nf6njh/2aLilxF4rsokt6n61jbrrs/9f13e5e5a69608391a38f46ca12f8175/ASSIGNED_Automation_Final_Tim_Peacock__1_.jpg?w=400&fm=webp 400w,//images.ctfassets.net/s5uo95nf6njh/2aLilxF4rsokt6n61jbrrs/9f13e5e5a69608391a38f46ca12f8175/ASSIGNED_Automation_Final_Tim_Peacock__1_.jpg?w=200&fm=webp 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/2aLilxF4rsokt6n61jbrrs/9f13e5e5a69608391a38f46ca12f8175/ASSIGNED_Automation_Final_Tim_Peacock__1_.jpg?w=1000&fm=jpg 1000w,//images.ctfassets.net/s5uo95nf6njh/2aLilxF4rsokt6n61jbrrs/9f13e5e5a69608391a38f46ca12f8175/ASSIGNED_Automation_Final_Tim_Peacock__1_.jpg?w=800&fm=jpg 800w,//images.ctfassets.net/s5uo95nf6njh/2aLilxF4rsokt6n61jbrrs/9f13e5e5a69608391a38f46ca12f8175/ASSIGNED_Automation_Final_Tim_Peacock__1_.jpg?w=600&fm=jpg 600w,//images.ctfassets.net/s5uo95nf6njh/2aLilxF4rsokt6n61jbrrs/9f13e5e5a69608391a38f46ca12f8175/ASSIGNED_Automation_Final_Tim_Peacock__1_.jpg?w=500&fm=jpg 500w,//images.ctfassets.net/s5uo95nf6njh/2aLilxF4rsokt6n61jbrrs/9f13e5e5a69608391a38f46ca12f8175/ASSIGNED_Automation_Final_Tim_Peacock__1_.jpg?w=400&fm=jpg 400w,//images.ctfassets.net/s5uo95nf6njh/2aLilxF4rsokt6n61jbrrs/9f13e5e5a69608391a38f46ca12f8175/ASSIGNED_Automation_Final_Tim_Peacock__1_.jpg?w=200&fm=jpg 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/jpeg"></source> <img class="d-block width-full readme-link__img height-auto position-relative" width="1000" height="600" loading="lazy" decoding="async" alt="" src="//images.ctfassets.net/s5uo95nf6njh/2aLilxF4rsokt6n61jbrrs/9f13e5e5a69608391a38f46ca12f8175/ASSIGNED_Automation_Final_Tim_Peacock__1_.jpg?w=1000&fm=jpg" /> </picture> </figure> </div> </div> </div> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2 d-inline-block"> Anton Mirhorodchenko </p> <a class="d-block no-underline readme-underline--green" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta:Harness the power of generative AI for software development;ref_loc:Story list" href="/readme/guides/coding-generative-ai"> <h3 class="mb-3 h4-mktg font-alt-mktg lh-condensed-mktg" style="font-weight:400 !important"> <span>Harness the power of generative AI for software development</span> </h3></a> <p class="mb-0 f4-mktg"> Tools like GitHub Copilot and ChatGPT can change the way you build software. </p> </div> <div class="col-sm-6 col-lg-4 mb-8"> <div class="position-relative mb-4"> <div class="position-relative readme-img-build-in js-build-in" data-build-margin-bottom="10"> <div class="position-relative readme-link"> <figure class="readme-link__figure " > <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/tmlOvgq3LjOU8IlQOi5Z7/97d0a755ccf48d50a88dd799dd12dff8/Open_source_staircase__1___1_.jpg?w=1000&fm=avif 1000w,//images.ctfassets.net/s5uo95nf6njh/tmlOvgq3LjOU8IlQOi5Z7/97d0a755ccf48d50a88dd799dd12dff8/Open_source_staircase__1___1_.jpg?w=800&fm=avif 800w,//images.ctfassets.net/s5uo95nf6njh/tmlOvgq3LjOU8IlQOi5Z7/97d0a755ccf48d50a88dd799dd12dff8/Open_source_staircase__1___1_.jpg?w=600&fm=avif 600w,//images.ctfassets.net/s5uo95nf6njh/tmlOvgq3LjOU8IlQOi5Z7/97d0a755ccf48d50a88dd799dd12dff8/Open_source_staircase__1___1_.jpg?w=500&fm=avif 500w,//images.ctfassets.net/s5uo95nf6njh/tmlOvgq3LjOU8IlQOi5Z7/97d0a755ccf48d50a88dd799dd12dff8/Open_source_staircase__1___1_.jpg?w=400&fm=avif 400w,//images.ctfassets.net/s5uo95nf6njh/tmlOvgq3LjOU8IlQOi5Z7/97d0a755ccf48d50a88dd799dd12dff8/Open_source_staircase__1___1_.jpg?w=200&fm=avif 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/avif"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/tmlOvgq3LjOU8IlQOi5Z7/97d0a755ccf48d50a88dd799dd12dff8/Open_source_staircase__1___1_.jpg?w=1000&fm=webp 1000w,//images.ctfassets.net/s5uo95nf6njh/tmlOvgq3LjOU8IlQOi5Z7/97d0a755ccf48d50a88dd799dd12dff8/Open_source_staircase__1___1_.jpg?w=800&fm=webp 800w,//images.ctfassets.net/s5uo95nf6njh/tmlOvgq3LjOU8IlQOi5Z7/97d0a755ccf48d50a88dd799dd12dff8/Open_source_staircase__1___1_.jpg?w=600&fm=webp 600w,//images.ctfassets.net/s5uo95nf6njh/tmlOvgq3LjOU8IlQOi5Z7/97d0a755ccf48d50a88dd799dd12dff8/Open_source_staircase__1___1_.jpg?w=500&fm=webp 500w,//images.ctfassets.net/s5uo95nf6njh/tmlOvgq3LjOU8IlQOi5Z7/97d0a755ccf48d50a88dd799dd12dff8/Open_source_staircase__1___1_.jpg?w=400&fm=webp 400w,//images.ctfassets.net/s5uo95nf6njh/tmlOvgq3LjOU8IlQOi5Z7/97d0a755ccf48d50a88dd799dd12dff8/Open_source_staircase__1___1_.jpg?w=200&fm=webp 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/tmlOvgq3LjOU8IlQOi5Z7/97d0a755ccf48d50a88dd799dd12dff8/Open_source_staircase__1___1_.jpg?w=1000&fm=jpg 1000w,//images.ctfassets.net/s5uo95nf6njh/tmlOvgq3LjOU8IlQOi5Z7/97d0a755ccf48d50a88dd799dd12dff8/Open_source_staircase__1___1_.jpg?w=800&fm=jpg 800w,//images.ctfassets.net/s5uo95nf6njh/tmlOvgq3LjOU8IlQOi5Z7/97d0a755ccf48d50a88dd799dd12dff8/Open_source_staircase__1___1_.jpg?w=600&fm=jpg 600w,//images.ctfassets.net/s5uo95nf6njh/tmlOvgq3LjOU8IlQOi5Z7/97d0a755ccf48d50a88dd799dd12dff8/Open_source_staircase__1___1_.jpg?w=500&fm=jpg 500w,//images.ctfassets.net/s5uo95nf6njh/tmlOvgq3LjOU8IlQOi5Z7/97d0a755ccf48d50a88dd799dd12dff8/Open_source_staircase__1___1_.jpg?w=400&fm=jpg 400w,//images.ctfassets.net/s5uo95nf6njh/tmlOvgq3LjOU8IlQOi5Z7/97d0a755ccf48d50a88dd799dd12dff8/Open_source_staircase__1___1_.jpg?w=200&fm=jpg 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/jpeg"></source> <img class="d-block width-full readme-link__img height-auto position-relative" width="1000" height="600" loading="lazy" decoding="async" alt="" src="//images.ctfassets.net/s5uo95nf6njh/tmlOvgq3LjOU8IlQOi5Z7/97d0a755ccf48d50a88dd799dd12dff8/Open_source_staircase__1___1_.jpg?w=1000&fm=jpg" /> </picture> </figure> </div> </div> </div> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2 d-inline-block"> Aaron Francis // PlanetScale </p> <a class="d-block no-underline readme-underline--green" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta:Finish your projects;ref_loc:Story list" href="/readme/guides/finish-your-projects"> <h3 class="mb-3 h4-mktg font-alt-mktg lh-condensed-mktg" style="font-weight:400 !important"> <span>Finish your projects</span> </h3></a> <p class="mb-0 f4-mktg"> Don’t let fear, or that last 10%, hold you back. </p> </div> <div class="col-sm-6 col-lg-4 mb-8"> <div class="position-relative mb-4"> <div class="position-relative readme-img-build-in js-build-in" data-build-margin-bottom="10"> <div class="position-relative readme-link"> <figure class="readme-link__figure " > <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/5hilneHZlmZfYj3hd9ERip/77adf7b8d87bb7ce1aa7ffe79bd6c846/GithubStockIllos_Hiring_final_copy__1_.jpg?w=1000&fm=avif 1000w,//images.ctfassets.net/s5uo95nf6njh/5hilneHZlmZfYj3hd9ERip/77adf7b8d87bb7ce1aa7ffe79bd6c846/GithubStockIllos_Hiring_final_copy__1_.jpg?w=800&fm=avif 800w,//images.ctfassets.net/s5uo95nf6njh/5hilneHZlmZfYj3hd9ERip/77adf7b8d87bb7ce1aa7ffe79bd6c846/GithubStockIllos_Hiring_final_copy__1_.jpg?w=600&fm=avif 600w,//images.ctfassets.net/s5uo95nf6njh/5hilneHZlmZfYj3hd9ERip/77adf7b8d87bb7ce1aa7ffe79bd6c846/GithubStockIllos_Hiring_final_copy__1_.jpg?w=500&fm=avif 500w,//images.ctfassets.net/s5uo95nf6njh/5hilneHZlmZfYj3hd9ERip/77adf7b8d87bb7ce1aa7ffe79bd6c846/GithubStockIllos_Hiring_final_copy__1_.jpg?w=400&fm=avif 400w,//images.ctfassets.net/s5uo95nf6njh/5hilneHZlmZfYj3hd9ERip/77adf7b8d87bb7ce1aa7ffe79bd6c846/GithubStockIllos_Hiring_final_copy__1_.jpg?w=200&fm=avif 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/avif"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/5hilneHZlmZfYj3hd9ERip/77adf7b8d87bb7ce1aa7ffe79bd6c846/GithubStockIllos_Hiring_final_copy__1_.jpg?w=1000&fm=webp 1000w,//images.ctfassets.net/s5uo95nf6njh/5hilneHZlmZfYj3hd9ERip/77adf7b8d87bb7ce1aa7ffe79bd6c846/GithubStockIllos_Hiring_final_copy__1_.jpg?w=800&fm=webp 800w,//images.ctfassets.net/s5uo95nf6njh/5hilneHZlmZfYj3hd9ERip/77adf7b8d87bb7ce1aa7ffe79bd6c846/GithubStockIllos_Hiring_final_copy__1_.jpg?w=600&fm=webp 600w,//images.ctfassets.net/s5uo95nf6njh/5hilneHZlmZfYj3hd9ERip/77adf7b8d87bb7ce1aa7ffe79bd6c846/GithubStockIllos_Hiring_final_copy__1_.jpg?w=500&fm=webp 500w,//images.ctfassets.net/s5uo95nf6njh/5hilneHZlmZfYj3hd9ERip/77adf7b8d87bb7ce1aa7ffe79bd6c846/GithubStockIllos_Hiring_final_copy__1_.jpg?w=400&fm=webp 400w,//images.ctfassets.net/s5uo95nf6njh/5hilneHZlmZfYj3hd9ERip/77adf7b8d87bb7ce1aa7ffe79bd6c846/GithubStockIllos_Hiring_final_copy__1_.jpg?w=200&fm=webp 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/5hilneHZlmZfYj3hd9ERip/77adf7b8d87bb7ce1aa7ffe79bd6c846/GithubStockIllos_Hiring_final_copy__1_.jpg?w=1000&fm=jpg 1000w,//images.ctfassets.net/s5uo95nf6njh/5hilneHZlmZfYj3hd9ERip/77adf7b8d87bb7ce1aa7ffe79bd6c846/GithubStockIllos_Hiring_final_copy__1_.jpg?w=800&fm=jpg 800w,//images.ctfassets.net/s5uo95nf6njh/5hilneHZlmZfYj3hd9ERip/77adf7b8d87bb7ce1aa7ffe79bd6c846/GithubStockIllos_Hiring_final_copy__1_.jpg?w=600&fm=jpg 600w,//images.ctfassets.net/s5uo95nf6njh/5hilneHZlmZfYj3hd9ERip/77adf7b8d87bb7ce1aa7ffe79bd6c846/GithubStockIllos_Hiring_final_copy__1_.jpg?w=500&fm=jpg 500w,//images.ctfassets.net/s5uo95nf6njh/5hilneHZlmZfYj3hd9ERip/77adf7b8d87bb7ce1aa7ffe79bd6c846/GithubStockIllos_Hiring_final_copy__1_.jpg?w=400&fm=jpg 400w,//images.ctfassets.net/s5uo95nf6njh/5hilneHZlmZfYj3hd9ERip/77adf7b8d87bb7ce1aa7ffe79bd6c846/GithubStockIllos_Hiring_final_copy__1_.jpg?w=200&fm=jpg 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/jpeg"></source> <img class="d-block width-full readme-link__img height-auto position-relative" width="1000" height="600" loading="lazy" decoding="async" alt="" src="//images.ctfassets.net/s5uo95nf6njh/5hilneHZlmZfYj3hd9ERip/77adf7b8d87bb7ce1aa7ffe79bd6c846/GithubStockIllos_Hiring_final_copy__1_.jpg?w=1000&fm=jpg" /> </picture> </figure> </div> </div> </div> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2 d-inline-block"> Cassidy Williams // Contenda </p> <a class="d-block no-underline readme-underline--green" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta:Get your first software developer job;ref_loc:Story list" href="/readme/guides/first-job-in-tech"> <h3 class="mb-3 h4-mktg font-alt-mktg lh-condensed-mktg" style="font-weight:400 !important"> <span>Get your first software developer job</span> </h3></a> <p class="mb-0 f4-mktg"> Tips, tricks, and general advice for how to get in the door in tech. </p> </div> </div> </div> <div class="container-readme p-responsive-readme"> <div class=" border-top pt-9"> <blockquote class="col-xl-11 offset-xl-1 text-center text-md-right lh-condensed readme-home-blockquote"> <a href="/readme/stories/annalu-waller" class="no-underline readme-underline--blue"> <span>We all have the potential to become who we're meant to be, even when societal and socioeconomic challenges get in our way.</span> </a> </blockquote> <div class="d-flex flex-column flex-md-row-reverse flex-items-center mt-6"> <div class="position-relative col-4 col-md-2 mb-4 mb-md-0 ml-md-4" style="max-width:120px"> <div class="position-relative readme-img-build-in js-build-in" data-build-margin-bottom="5"> <div class="position-relative readme-link"> <figure class="readme-link__figure circle " style="height:0; padding-bottom:100%; -webkit-mask-image: -webkit-radial-gradient(#fff,#000);"> <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=300&fm=avif 300w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=240&fm=avif 240w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=180&fm=avif 180w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=150&fm=avif 150w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=120&fm=avif 120w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=60&fm=avif 60w" sizes="120px" type="image/avif"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=300&fm=webp 300w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=240&fm=webp 240w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=180&fm=webp 180w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=150&fm=webp 150w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=120&fm=webp 120w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=60&fm=webp 60w" sizes="120px" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=300&fm=jpg 300w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=240&fm=jpg 240w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=180&fm=jpg 180w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=150&fm=jpg 150w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=120&fm=jpg 120w,//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=60&fm=jpg 60w" sizes="120px" type="image/jpeg"></source> <img class="d-block width-full readme-link__img height-auto position-absolute" width="300" height="350" loading="lazy" decoding="async" alt="" src="//images.ctfassets.net/s5uo95nf6njh/5OJIIppZBMucnpzjPXS9FG/c7f88b0e848503c0db0225bdd0b7694d/Annalu-135_Headshot__1_.jpg?w=300&fm=jpg" /> </picture> </figure> </div> <a class="readme-link--focus-boost position-absolute top-0 left-0 px-2 px-lg-3 py-2 readme-bg-blue f5-mktg readme-heading--condensed text-uppercase text-semibold color-text-white" style="letter-spacing:0.025em;" data-test-selector="topic-tag" href="/readme/topics/accessibility">Accessibility</a> </div> </div> <div class="col-12 col-md-10 text-center text-md-right "> <a href="/readme/stories/annalu-waller" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta:Champion accessibility to unleash untapped potential;ref_loc:Story list" class="position-relative d-block no-underline readme-underline--green" > <h3 class="mb-3 readme-heading-3"> <span>Champion accessibility to unleash untapped potential</span> </h3> </a> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2"> Annalu Waller </p> </div> </div> </div> </div> <div class="py-5 py-md-8"> <div class="container-readme p-responsive-readme mt-5 mt-md-6 mb-6 mb-md-8"> <div class="border-top readme-border--black d-sm-flex flex-justify-between"> <h2 class="d-inline-block pt-3 pt-md-4 readme-heading-2 readme-heading--condensed text-uppercase" style="border-top: 1rem solid"> The ReadMe Podcast </h2> <a class="d-block d-sm-inline no-underline text-semibold text-uppercase arrow-target-mktg readme-text-blue text-center py-3 f4-mktg" style="letter-spacing:0.05em;" href="/readme/podcast"> See all The ReadMe Podcast <svg xmlns="http://www.w3.org/2000/svg" class="octicon arrow-symbol-mktg octicon" width="16" height="16" viewBox="0 0 16 16" fill="none"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="octicon-chevrow-stem" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg> <span class="sr-only"> stories from The ReadMe Podcast</span> </a> </div> </div> <div class="container-readme p-responsive-readme"> <div class="d-md-flex flex-md-items-center mb-8 " data-build-margin-bottom="20"> <div class="position-relative col-md-5 overflow-hidden mb-4 mb-md-0 readme-img-build-in js-build-in"> <span class="position-relative d-block readme-link"> <figure class="position-relative readme-link__figure" data-animation-is-running="false"> <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/7IyLxVhYlTlfr4QvMpzVSt/1480354ec0f3cd7c99ac8c55f70331ef/1080x1920-ReadMe-IG_Story_Image_Only-EP32-DevStory_2x.png?w=1200&fm=webp 1200w,//images.ctfassets.net/s5uo95nf6njh/7IyLxVhYlTlfr4QvMpzVSt/1480354ec0f3cd7c99ac8c55f70331ef/1080x1920-ReadMe-IG_Story_Image_Only-EP32-DevStory_2x.png?w=960&fm=webp 960w,//images.ctfassets.net/s5uo95nf6njh/7IyLxVhYlTlfr4QvMpzVSt/1480354ec0f3cd7c99ac8c55f70331ef/1080x1920-ReadMe-IG_Story_Image_Only-EP32-DevStory_2x.png?w=720&fm=webp 720w,//images.ctfassets.net/s5uo95nf6njh/7IyLxVhYlTlfr4QvMpzVSt/1480354ec0f3cd7c99ac8c55f70331ef/1080x1920-ReadMe-IG_Story_Image_Only-EP32-DevStory_2x.png?w=600&fm=webp 600w,//images.ctfassets.net/s5uo95nf6njh/7IyLxVhYlTlfr4QvMpzVSt/1480354ec0f3cd7c99ac8c55f70331ef/1080x1920-ReadMe-IG_Story_Image_Only-EP32-DevStory_2x.png?w=480&fm=webp 480w,//images.ctfassets.net/s5uo95nf6njh/7IyLxVhYlTlfr4QvMpzVSt/1480354ec0f3cd7c99ac8c55f70331ef/1080x1920-ReadMe-IG_Story_Image_Only-EP32-DevStory_2x.png?w=240&fm=webp 240w" sizes="(max-width: 755px) 90vw, 40vw" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/7IyLxVhYlTlfr4QvMpzVSt/1480354ec0f3cd7c99ac8c55f70331ef/1080x1920-ReadMe-IG_Story_Image_Only-EP32-DevStory_2x.png?w=1200&fm=png 1200w,//images.ctfassets.net/s5uo95nf6njh/7IyLxVhYlTlfr4QvMpzVSt/1480354ec0f3cd7c99ac8c55f70331ef/1080x1920-ReadMe-IG_Story_Image_Only-EP32-DevStory_2x.png?w=960&fm=png 960w,//images.ctfassets.net/s5uo95nf6njh/7IyLxVhYlTlfr4QvMpzVSt/1480354ec0f3cd7c99ac8c55f70331ef/1080x1920-ReadMe-IG_Story_Image_Only-EP32-DevStory_2x.png?w=720&fm=png 720w,//images.ctfassets.net/s5uo95nf6njh/7IyLxVhYlTlfr4QvMpzVSt/1480354ec0f3cd7c99ac8c55f70331ef/1080x1920-ReadMe-IG_Story_Image_Only-EP32-DevStory_2x.png?w=600&fm=png 600w,//images.ctfassets.net/s5uo95nf6njh/7IyLxVhYlTlfr4QvMpzVSt/1480354ec0f3cd7c99ac8c55f70331ef/1080x1920-ReadMe-IG_Story_Image_Only-EP32-DevStory_2x.png?w=480&fm=png 480w,//images.ctfassets.net/s5uo95nf6njh/7IyLxVhYlTlfr4QvMpzVSt/1480354ec0f3cd7c99ac8c55f70331ef/1080x1920-ReadMe-IG_Story_Image_Only-EP32-DevStory_2x.png?w=240&fm=png 240w" sizes="(max-width: 755px) 90vw, 40vw" type="image/png"></source> <img class="d-block width-full height-auto readme-link__img" width="1200" height="1400" loading="lazy" decoding="async" alt="The ReadME Project" src="//images.ctfassets.net/s5uo95nf6njh/7IyLxVhYlTlfr4QvMpzVSt/1480354ec0f3cd7c99ac8c55f70331ef/1080x1920-ReadMe-IG_Story_Image_Only-EP32-DevStory_2x.png?w=1200&fm=png" /> </picture> </figure> </span> <div class="position-absolute px-2 pt-2 pb-1 readme-text-blue readme-bg-white" style="bottom:-1px; right:-1px"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-unmute"> <path d="M11.553 3.064A.75.75 0 0 1 12 3.75v16.5a.75.75 0 0 1-1.255.555L5.46 16H2.75A1.75 1.75 0 0 1 1 14.25v-4.5C1 8.784 1.784 8 2.75 8h2.71l5.285-4.805a.752.752 0 0 1 .808-.13ZM10.5 5.445l-4.245 3.86a.748.748 0 0 1-.505.195h-3a.25.25 0 0 0-.25.25v4.5c0 .138.112.25.25.25h3c.187 0 .367.069.505.195l4.245 3.86Zm8.218-1.223a.75.75 0 0 1 1.06 0c4.296 4.296 4.296 11.26 0 15.556a.75.75 0 0 1-1.06-1.06 9.5 9.5 0 0 0 0-13.436.75.75 0 0 1 0-1.06Z"></path><path d="M16.243 7.757a.75.75 0 1 0-1.061 1.061 4.5 4.5 0 0 1 0 6.364.75.75 0 0 0 1.06 1.06 6 6 0 0 0 0-8.485Z"></path> </svg> </div> </div> <div class="col-md-7 pl-md-6 pl-xl-8"> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2 d-inline-block"> THE README PODCAST // EPISODE 32 </p> <a class="d-block no-underline readme-underline--green" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta:(De)coding conventions;ref_loc:Story list" href="/readme/podcast/decoding-conventions"> <h3 class="mb-3 readme-heading-1 readme-heading--condensed" style="font-weight:400 !important"> <span>(De)coding conventions</span> </h3></a> <p class="mb-0 f2-mktg text-normal"> The evolution of TypeScript and the future of coding conventions, AI’s role in improving accessibility, and practical advice on encouraging non-code contributions. </p> </div> </div> <div class="d-md-flex flex-md-items-center mb-8 flex-row-reverse" data-build-margin-bottom="20"> <div class="position-relative col-md-5 overflow-hidden mb-4 mb-md-0 readme-img-build-in js-build-in"> <span class="position-relative d-block readme-link"> <figure class="position-relative readme-link__figure" data-animation-is-running="false"> <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/1nyeCSafHNjjSkWEhiemCe/43a308b7e94496ec77e4106c7a531923/1080x1920-Episode_Art-30_2x.png?w=1200&fm=webp 1200w,//images.ctfassets.net/s5uo95nf6njh/1nyeCSafHNjjSkWEhiemCe/43a308b7e94496ec77e4106c7a531923/1080x1920-Episode_Art-30_2x.png?w=960&fm=webp 960w,//images.ctfassets.net/s5uo95nf6njh/1nyeCSafHNjjSkWEhiemCe/43a308b7e94496ec77e4106c7a531923/1080x1920-Episode_Art-30_2x.png?w=720&fm=webp 720w,//images.ctfassets.net/s5uo95nf6njh/1nyeCSafHNjjSkWEhiemCe/43a308b7e94496ec77e4106c7a531923/1080x1920-Episode_Art-30_2x.png?w=600&fm=webp 600w,//images.ctfassets.net/s5uo95nf6njh/1nyeCSafHNjjSkWEhiemCe/43a308b7e94496ec77e4106c7a531923/1080x1920-Episode_Art-30_2x.png?w=480&fm=webp 480w,//images.ctfassets.net/s5uo95nf6njh/1nyeCSafHNjjSkWEhiemCe/43a308b7e94496ec77e4106c7a531923/1080x1920-Episode_Art-30_2x.png?w=240&fm=webp 240w" sizes="(max-width: 755px) 90vw, 40vw" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/1nyeCSafHNjjSkWEhiemCe/43a308b7e94496ec77e4106c7a531923/1080x1920-Episode_Art-30_2x.png?w=1200&fm=png 1200w,//images.ctfassets.net/s5uo95nf6njh/1nyeCSafHNjjSkWEhiemCe/43a308b7e94496ec77e4106c7a531923/1080x1920-Episode_Art-30_2x.png?w=960&fm=png 960w,//images.ctfassets.net/s5uo95nf6njh/1nyeCSafHNjjSkWEhiemCe/43a308b7e94496ec77e4106c7a531923/1080x1920-Episode_Art-30_2x.png?w=720&fm=png 720w,//images.ctfassets.net/s5uo95nf6njh/1nyeCSafHNjjSkWEhiemCe/43a308b7e94496ec77e4106c7a531923/1080x1920-Episode_Art-30_2x.png?w=600&fm=png 600w,//images.ctfassets.net/s5uo95nf6njh/1nyeCSafHNjjSkWEhiemCe/43a308b7e94496ec77e4106c7a531923/1080x1920-Episode_Art-30_2x.png?w=480&fm=png 480w,//images.ctfassets.net/s5uo95nf6njh/1nyeCSafHNjjSkWEhiemCe/43a308b7e94496ec77e4106c7a531923/1080x1920-Episode_Art-30_2x.png?w=240&fm=png 240w" sizes="(max-width: 755px) 90vw, 40vw" type="image/png"></source> <img class="d-block width-full height-auto readme-link__img" width="1200" height="1400" loading="lazy" decoding="async" alt="Kelsey Hightower" src="//images.ctfassets.net/s5uo95nf6njh/1nyeCSafHNjjSkWEhiemCe/43a308b7e94496ec77e4106c7a531923/1080x1920-Episode_Art-30_2x.png?w=1200&fm=png" /> </picture> </figure> </span> <div class="position-absolute px-2 pt-2 pb-1 readme-text-blue readme-bg-white" style="bottom:-1px; right:-1px"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-unmute"> <path d="M11.553 3.064A.75.75 0 0 1 12 3.75v16.5a.75.75 0 0 1-1.255.555L5.46 16H2.75A1.75 1.75 0 0 1 1 14.25v-4.5C1 8.784 1.784 8 2.75 8h2.71l5.285-4.805a.752.752 0 0 1 .808-.13ZM10.5 5.445l-4.245 3.86a.748.748 0 0 1-.505.195h-3a.25.25 0 0 0-.25.25v4.5c0 .138.112.25.25.25h3c.187 0 .367.069.505.195l4.245 3.86Zm8.218-1.223a.75.75 0 0 1 1.06 0c4.296 4.296 4.296 11.26 0 15.556a.75.75 0 0 1-1.06-1.06 9.5 9.5 0 0 0 0-13.436.75.75 0 0 1 0-1.06Z"></path><path d="M16.243 7.757a.75.75 0 1 0-1.061 1.061 4.5 4.5 0 0 1 0 6.364.75.75 0 0 0 1.06 1.06 6 6 0 0 0 0-8.485Z"></path> </svg> </div> </div> <div class="col-md-7 pr-md-6 pr-xl-8"> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2 d-inline-block"> THE README PODCAST // EPISODE 30 </p> <a class="d-block no-underline readme-underline--green" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta:Kelsey Hightower—Present;ref_loc:Story list" href="/readme/podcast/kelsey-hightower"> <h3 class="mb-3 readme-heading-1 readme-heading--condensed" style="font-weight:400 !important"> <span>Kelsey Hightower—Present</span> </h3></a> <p class="mb-0 f2-mktg text-normal"> Kelsey shares his origin story, insights on the future of Kubernetes, and advice on making complicated technology easier to understand. </p> </div> </div> </div> </div> <div class="py-5 py-md-8"> <div class="container-readme p-responsive-readme mt-5 mt-md-6 mb-6 mb-md-8"> <div class="border-top readme-border--black d-sm-flex flex-justify-between"> <h2 class="d-inline-block pt-3 pt-md-4 readme-heading-2 readme-heading--condensed text-uppercase" style="border-top: 1rem solid"> Featured Articles </h2> <a class="d-block d-sm-inline no-underline text-semibold text-uppercase arrow-target-mktg readme-text-blue text-center py-3 f4-mktg" style="letter-spacing:0.05em;" href="/readme/featured"> See all Featured Articles <svg xmlns="http://www.w3.org/2000/svg" class="octicon arrow-symbol-mktg octicon" width="16" height="16" viewBox="0 0 16 16" fill="none"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="octicon-chevrow-stem" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg> <span class="sr-only"> stories from Featured Articles</span> </a> </div> </div> <div class="container-readme p-responsive-readme"> <div class="d-md-flex flex-row-reverse"> <div class="col-md-6 col-xl-5 offset-md-n4 offset-xl-n3 mt-md-n4 mb-md-4 mt-lg-n6 mb-lg-6 z-1"> <div class="position-relative readme-img-build-in js-build-in" data-build-margin-bottom="20"> <div class="position-relative readme-link"> <figure class="readme-link__figure " style="height:0; padding-bottom:100%; -webkit-mask-image: -webkit-radial-gradient(#fff,#000);"> <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/6HWA7iqQ5aoq9SlmpzX2cr/2a24f1af39fef6074454dcc9cccf6f2d/Github_Laravel__1_.jpg?w=1200&fm=webp 1200w,//images.ctfassets.net/s5uo95nf6njh/6HWA7iqQ5aoq9SlmpzX2cr/2a24f1af39fef6074454dcc9cccf6f2d/Github_Laravel__1_.jpg?w=960&fm=webp 960w,//images.ctfassets.net/s5uo95nf6njh/6HWA7iqQ5aoq9SlmpzX2cr/2a24f1af39fef6074454dcc9cccf6f2d/Github_Laravel__1_.jpg?w=720&fm=webp 720w,//images.ctfassets.net/s5uo95nf6njh/6HWA7iqQ5aoq9SlmpzX2cr/2a24f1af39fef6074454dcc9cccf6f2d/Github_Laravel__1_.jpg?w=600&fm=webp 600w,//images.ctfassets.net/s5uo95nf6njh/6HWA7iqQ5aoq9SlmpzX2cr/2a24f1af39fef6074454dcc9cccf6f2d/Github_Laravel__1_.jpg?w=480&fm=webp 480w,//images.ctfassets.net/s5uo95nf6njh/6HWA7iqQ5aoq9SlmpzX2cr/2a24f1af39fef6074454dcc9cccf6f2d/Github_Laravel__1_.jpg?w=240&fm=webp 240w" sizes="(max-width: 755px) 90vw, 45vw" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/6HWA7iqQ5aoq9SlmpzX2cr/2a24f1af39fef6074454dcc9cccf6f2d/Github_Laravel__1_.jpg?w=1200&fm=jpg 1200w,//images.ctfassets.net/s5uo95nf6njh/6HWA7iqQ5aoq9SlmpzX2cr/2a24f1af39fef6074454dcc9cccf6f2d/Github_Laravel__1_.jpg?w=960&fm=jpg 960w,//images.ctfassets.net/s5uo95nf6njh/6HWA7iqQ5aoq9SlmpzX2cr/2a24f1af39fef6074454dcc9cccf6f2d/Github_Laravel__1_.jpg?w=720&fm=jpg 720w,//images.ctfassets.net/s5uo95nf6njh/6HWA7iqQ5aoq9SlmpzX2cr/2a24f1af39fef6074454dcc9cccf6f2d/Github_Laravel__1_.jpg?w=600&fm=jpg 600w,//images.ctfassets.net/s5uo95nf6njh/6HWA7iqQ5aoq9SlmpzX2cr/2a24f1af39fef6074454dcc9cccf6f2d/Github_Laravel__1_.jpg?w=480&fm=jpg 480w,//images.ctfassets.net/s5uo95nf6njh/6HWA7iqQ5aoq9SlmpzX2cr/2a24f1af39fef6074454dcc9cccf6f2d/Github_Laravel__1_.jpg?w=240&fm=jpg 240w" sizes="(max-width: 755px) 90vw, 45vw" type="image/jpeg"></source> <img class="d-block width-full readme-link__img height-auto position-absolute" width="1200" height="1400" alt="" src="//images.ctfassets.net/s5uo95nf6njh/6HWA7iqQ5aoq9SlmpzX2cr/2a24f1af39fef6074454dcc9cccf6f2d/Github_Laravel__1_.jpg?w=1200&fm=jpg" /> </picture> </figure> </div> <a class="readme-link--focus-boost position-absolute top-0 left-0 px-2 px-lg-3 py-2 readme-bg-blue f5-mktg readme-heading--condensed text-uppercase text-semibold color-text-white" style="letter-spacing:0.025em;" data-test-selector="topic-tag" href="/readme/topics/programming">Programming</a> </div> </div> <div class="position-relative d-flex flex-items-center col-md-10 col-md-10 readme-bg-black--pattern"> <div class="position-relative col-md-7 col-xl-8 p-4 pl-xl-6"> <h3 class="pb-1 readme-heading-1 readme-heading--condensed"> <a href="/readme/featured/laravel-community" class="no-underline readme-underline--green color-fg-on-emphasis"> <span>Is Laravel the happiest developer community on the planet?</span> </a> </h3> <p class="f3-mktg color-fg-on-emphasis mt-5">How the PHP framework maintains a perpetual honeymoon period.</p> </div> </div> </div> </div> </div> <div class="py-5 py-md-8"> <div class="container-readme p-responsive-readme mt-5 mt-md-6 mb-6 mb-md-8"> <div class="border-top readme-border--black d-sm-flex flex-justify-between"> <h2 class="d-inline-block pt-3 pt-md-4 readme-heading-2 readme-heading--condensed text-uppercase" style="border-top: 1rem solid"> Developer Stories </h2> <a class="d-block d-sm-inline no-underline text-semibold text-uppercase arrow-target-mktg readme-text-blue text-center py-3 f4-mktg" style="letter-spacing:0.05em;" href="/readme/stories"> See all Developer Stories <svg xmlns="http://www.w3.org/2000/svg" class="octicon arrow-symbol-mktg octicon" width="16" height="16" viewBox="0 0 16 16" fill="none"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="octicon-chevrow-stem" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg> <span class="sr-only"> stories from Developer Stories</span> </a> </div> </div> <div class="container-readme p-responsive-readme mb-n8 mb-md-n10"> <div class="mb-8"> <div class="position-relative mb-4"> <div class="position-relative readme-img-build-in js-build-in" data-build-margin-bottom="20"> <div class="position-relative readme-link"> <figure class="readme-link__figure " > <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/3wEjId7w5ENXVnCsWGwvAq/97ce8335a69dd0c05b5f61348decd286/MV_Anton_TheReadMeproject-19__1_.jpg?w=2000&fm=avif 2000w,//images.ctfassets.net/s5uo95nf6njh/3wEjId7w5ENXVnCsWGwvAq/97ce8335a69dd0c05b5f61348decd286/MV_Anton_TheReadMeproject-19__1_.jpg?w=1600&fm=avif 1600w,//images.ctfassets.net/s5uo95nf6njh/3wEjId7w5ENXVnCsWGwvAq/97ce8335a69dd0c05b5f61348decd286/MV_Anton_TheReadMeproject-19__1_.jpg?w=1200&fm=avif 1200w,//images.ctfassets.net/s5uo95nf6njh/3wEjId7w5ENXVnCsWGwvAq/97ce8335a69dd0c05b5f61348decd286/MV_Anton_TheReadMeproject-19__1_.jpg?w=1000&fm=avif 1000w,//images.ctfassets.net/s5uo95nf6njh/3wEjId7w5ENXVnCsWGwvAq/97ce8335a69dd0c05b5f61348decd286/MV_Anton_TheReadMeproject-19__1_.jpg?w=800&fm=avif 800w,//images.ctfassets.net/s5uo95nf6njh/3wEjId7w5ENXVnCsWGwvAq/97ce8335a69dd0c05b5f61348decd286/MV_Anton_TheReadMeproject-19__1_.jpg?w=400&fm=avif 400w" sizes="(max-width: 755px) 90vw, 45vw" type="image/avif"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/3wEjId7w5ENXVnCsWGwvAq/97ce8335a69dd0c05b5f61348decd286/MV_Anton_TheReadMeproject-19__1_.jpg?w=2000&fm=webp 2000w,//images.ctfassets.net/s5uo95nf6njh/3wEjId7w5ENXVnCsWGwvAq/97ce8335a69dd0c05b5f61348decd286/MV_Anton_TheReadMeproject-19__1_.jpg?w=1600&fm=webp 1600w,//images.ctfassets.net/s5uo95nf6njh/3wEjId7w5ENXVnCsWGwvAq/97ce8335a69dd0c05b5f61348decd286/MV_Anton_TheReadMeproject-19__1_.jpg?w=1200&fm=webp 1200w,//images.ctfassets.net/s5uo95nf6njh/3wEjId7w5ENXVnCsWGwvAq/97ce8335a69dd0c05b5f61348decd286/MV_Anton_TheReadMeproject-19__1_.jpg?w=1000&fm=webp 1000w,//images.ctfassets.net/s5uo95nf6njh/3wEjId7w5ENXVnCsWGwvAq/97ce8335a69dd0c05b5f61348decd286/MV_Anton_TheReadMeproject-19__1_.jpg?w=800&fm=webp 800w,//images.ctfassets.net/s5uo95nf6njh/3wEjId7w5ENXVnCsWGwvAq/97ce8335a69dd0c05b5f61348decd286/MV_Anton_TheReadMeproject-19__1_.jpg?w=400&fm=webp 400w" sizes="(max-width: 755px) 90vw, 45vw" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/3wEjId7w5ENXVnCsWGwvAq/97ce8335a69dd0c05b5f61348decd286/MV_Anton_TheReadMeproject-19__1_.jpg?w=2000&fm=jpg 2000w,//images.ctfassets.net/s5uo95nf6njh/3wEjId7w5ENXVnCsWGwvAq/97ce8335a69dd0c05b5f61348decd286/MV_Anton_TheReadMeproject-19__1_.jpg?w=1600&fm=jpg 1600w,//images.ctfassets.net/s5uo95nf6njh/3wEjId7w5ENXVnCsWGwvAq/97ce8335a69dd0c05b5f61348decd286/MV_Anton_TheReadMeproject-19__1_.jpg?w=1200&fm=jpg 1200w,//images.ctfassets.net/s5uo95nf6njh/3wEjId7w5ENXVnCsWGwvAq/97ce8335a69dd0c05b5f61348decd286/MV_Anton_TheReadMeproject-19__1_.jpg?w=1000&fm=jpg 1000w,//images.ctfassets.net/s5uo95nf6njh/3wEjId7w5ENXVnCsWGwvAq/97ce8335a69dd0c05b5f61348decd286/MV_Anton_TheReadMeproject-19__1_.jpg?w=800&fm=jpg 800w,//images.ctfassets.net/s5uo95nf6njh/3wEjId7w5ENXVnCsWGwvAq/97ce8335a69dd0c05b5f61348decd286/MV_Anton_TheReadMeproject-19__1_.jpg?w=400&fm=jpg 400w" sizes="(max-width: 755px) 90vw, 45vw" type="image/jpeg"></source> <img class="d-block width-full readme-link__img height-auto position-relative" width="2000" height="1200" loading="lazy" decoding="async" alt="" src="//images.ctfassets.net/s5uo95nf6njh/3wEjId7w5ENXVnCsWGwvAq/97ce8335a69dd0c05b5f61348decd286/MV_Anton_TheReadMeproject-19__1_.jpg?w=2000&fm=jpg" /> </picture> </figure> </div> </div> </div> <div class="position-relative col-md-10 col-xl-9 pt-md-6 pr-md-6 color-bg-default mt-md-n9"> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2 d-inline-block"> Anton Mirhorodchenko </p> <a class="d-block no-underline readme-underline--green" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta:Realizing potential with AI;ref_loc:Story list" href="/readme/stories/anton-mirhorodchenko"> <h3 class="mb-3 readme-heading-1 readme-heading--condensed" style="font-weight:400 !important"> <span>Realizing potential with AI</span> </h3></a> <p class="mb-0 f2-mktg text-normal"> Anton uses AI to write code and tackle more projects. </p> </div> </div> <div class="d-sm-flex flex-row-reverse flex-items-center flex-sm-items-start border-sm-top pt-sm-4 pt-xl-5 mb-8"> <div class="position-relative col-sm-4 offset-md-1 pl-sm-3 pl-md-4 mb-4"> <div class="position-relative readme-img-build-in js-build-in" data-build-margin-bottom="10"> <div class="position-relative readme-link"> <figure class="readme-link__figure " > <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/1Lfz7Gpg5GiF4zcP03gnyB/81da7676e7e609067e45d21957eef159/Hero_Kyler_May2023_0028-2.jpg?w=1000&fm=avif 1000w,//images.ctfassets.net/s5uo95nf6njh/1Lfz7Gpg5GiF4zcP03gnyB/81da7676e7e609067e45d21957eef159/Hero_Kyler_May2023_0028-2.jpg?w=800&fm=avif 800w,//images.ctfassets.net/s5uo95nf6njh/1Lfz7Gpg5GiF4zcP03gnyB/81da7676e7e609067e45d21957eef159/Hero_Kyler_May2023_0028-2.jpg?w=600&fm=avif 600w,//images.ctfassets.net/s5uo95nf6njh/1Lfz7Gpg5GiF4zcP03gnyB/81da7676e7e609067e45d21957eef159/Hero_Kyler_May2023_0028-2.jpg?w=500&fm=avif 500w,//images.ctfassets.net/s5uo95nf6njh/1Lfz7Gpg5GiF4zcP03gnyB/81da7676e7e609067e45d21957eef159/Hero_Kyler_May2023_0028-2.jpg?w=400&fm=avif 400w,//images.ctfassets.net/s5uo95nf6njh/1Lfz7Gpg5GiF4zcP03gnyB/81da7676e7e609067e45d21957eef159/Hero_Kyler_May2023_0028-2.jpg?w=200&fm=avif 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/avif"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/1Lfz7Gpg5GiF4zcP03gnyB/81da7676e7e609067e45d21957eef159/Hero_Kyler_May2023_0028-2.jpg?w=1000&fm=webp 1000w,//images.ctfassets.net/s5uo95nf6njh/1Lfz7Gpg5GiF4zcP03gnyB/81da7676e7e609067e45d21957eef159/Hero_Kyler_May2023_0028-2.jpg?w=800&fm=webp 800w,//images.ctfassets.net/s5uo95nf6njh/1Lfz7Gpg5GiF4zcP03gnyB/81da7676e7e609067e45d21957eef159/Hero_Kyler_May2023_0028-2.jpg?w=600&fm=webp 600w,//images.ctfassets.net/s5uo95nf6njh/1Lfz7Gpg5GiF4zcP03gnyB/81da7676e7e609067e45d21957eef159/Hero_Kyler_May2023_0028-2.jpg?w=500&fm=webp 500w,//images.ctfassets.net/s5uo95nf6njh/1Lfz7Gpg5GiF4zcP03gnyB/81da7676e7e609067e45d21957eef159/Hero_Kyler_May2023_0028-2.jpg?w=400&fm=webp 400w,//images.ctfassets.net/s5uo95nf6njh/1Lfz7Gpg5GiF4zcP03gnyB/81da7676e7e609067e45d21957eef159/Hero_Kyler_May2023_0028-2.jpg?w=200&fm=webp 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/1Lfz7Gpg5GiF4zcP03gnyB/81da7676e7e609067e45d21957eef159/Hero_Kyler_May2023_0028-2.jpg?w=1000&fm=jpg 1000w,//images.ctfassets.net/s5uo95nf6njh/1Lfz7Gpg5GiF4zcP03gnyB/81da7676e7e609067e45d21957eef159/Hero_Kyler_May2023_0028-2.jpg?w=800&fm=jpg 800w,//images.ctfassets.net/s5uo95nf6njh/1Lfz7Gpg5GiF4zcP03gnyB/81da7676e7e609067e45d21957eef159/Hero_Kyler_May2023_0028-2.jpg?w=600&fm=jpg 600w,//images.ctfassets.net/s5uo95nf6njh/1Lfz7Gpg5GiF4zcP03gnyB/81da7676e7e609067e45d21957eef159/Hero_Kyler_May2023_0028-2.jpg?w=500&fm=jpg 500w,//images.ctfassets.net/s5uo95nf6njh/1Lfz7Gpg5GiF4zcP03gnyB/81da7676e7e609067e45d21957eef159/Hero_Kyler_May2023_0028-2.jpg?w=400&fm=jpg 400w,//images.ctfassets.net/s5uo95nf6njh/1Lfz7Gpg5GiF4zcP03gnyB/81da7676e7e609067e45d21957eef159/Hero_Kyler_May2023_0028-2.jpg?w=200&fm=jpg 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/jpeg"></source> <img class="d-block width-full readme-link__img height-auto position-relative" width="1000" height="600" loading="lazy" decoding="async" alt="" src="//images.ctfassets.net/s5uo95nf6njh/1Lfz7Gpg5GiF4zcP03gnyB/81da7676e7e609067e45d21957eef159/Hero_Kyler_May2023_0028-2.jpg?w=1000&fm=jpg" /> </picture> </figure> </div> </div> </div> <div class="col-sm-8 col-md-7"> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2 d-inline-block"> Kyler Middleton </p> <a class="d-block no-underline readme-underline--green" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta:From fixing computers on farms to democratizing DevOps;ref_loc:Story list" href="/readme/stories/kyler-middleton"> <h3 class="mb-3 h4-mktg font-alt-mktg lh-condensed-mktg" style="font-weight:400 !important"> <span>From fixing computers on farms to democratizing DevOps</span> </h3></a> <p class="mb-0 f4-mktg"> Kyler discusses her path from rural tech repair jobs to revolutionizing tech education. </p> </div> </div> <div class="d-sm-flex flex-row-reverse flex-items-center flex-sm-items-start border-sm-top pt-sm-4 pt-xl-5 mb-8"> <div class="position-relative col-sm-4 offset-md-1 pl-sm-3 pl-md-4 mb-4"> <div class="position-relative readme-img-build-in js-build-in" data-build-margin-bottom="10"> <div class="position-relative readme-link"> <figure class="readme-link__figure " > <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/4cxrXjAroa8IXjN0xgX88P/42702e6c6583ac6deb995335c46b4711/Aaron_Gustafson___Color_5.jpg?w=1000&fm=avif 1000w,//images.ctfassets.net/s5uo95nf6njh/4cxrXjAroa8IXjN0xgX88P/42702e6c6583ac6deb995335c46b4711/Aaron_Gustafson___Color_5.jpg?w=800&fm=avif 800w,//images.ctfassets.net/s5uo95nf6njh/4cxrXjAroa8IXjN0xgX88P/42702e6c6583ac6deb995335c46b4711/Aaron_Gustafson___Color_5.jpg?w=600&fm=avif 600w,//images.ctfassets.net/s5uo95nf6njh/4cxrXjAroa8IXjN0xgX88P/42702e6c6583ac6deb995335c46b4711/Aaron_Gustafson___Color_5.jpg?w=500&fm=avif 500w,//images.ctfassets.net/s5uo95nf6njh/4cxrXjAroa8IXjN0xgX88P/42702e6c6583ac6deb995335c46b4711/Aaron_Gustafson___Color_5.jpg?w=400&fm=avif 400w,//images.ctfassets.net/s5uo95nf6njh/4cxrXjAroa8IXjN0xgX88P/42702e6c6583ac6deb995335c46b4711/Aaron_Gustafson___Color_5.jpg?w=200&fm=avif 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/avif"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/4cxrXjAroa8IXjN0xgX88P/42702e6c6583ac6deb995335c46b4711/Aaron_Gustafson___Color_5.jpg?w=1000&fm=webp 1000w,//images.ctfassets.net/s5uo95nf6njh/4cxrXjAroa8IXjN0xgX88P/42702e6c6583ac6deb995335c46b4711/Aaron_Gustafson___Color_5.jpg?w=800&fm=webp 800w,//images.ctfassets.net/s5uo95nf6njh/4cxrXjAroa8IXjN0xgX88P/42702e6c6583ac6deb995335c46b4711/Aaron_Gustafson___Color_5.jpg?w=600&fm=webp 600w,//images.ctfassets.net/s5uo95nf6njh/4cxrXjAroa8IXjN0xgX88P/42702e6c6583ac6deb995335c46b4711/Aaron_Gustafson___Color_5.jpg?w=500&fm=webp 500w,//images.ctfassets.net/s5uo95nf6njh/4cxrXjAroa8IXjN0xgX88P/42702e6c6583ac6deb995335c46b4711/Aaron_Gustafson___Color_5.jpg?w=400&fm=webp 400w,//images.ctfassets.net/s5uo95nf6njh/4cxrXjAroa8IXjN0xgX88P/42702e6c6583ac6deb995335c46b4711/Aaron_Gustafson___Color_5.jpg?w=200&fm=webp 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/4cxrXjAroa8IXjN0xgX88P/42702e6c6583ac6deb995335c46b4711/Aaron_Gustafson___Color_5.jpg?w=1000&fm=jpg 1000w,//images.ctfassets.net/s5uo95nf6njh/4cxrXjAroa8IXjN0xgX88P/42702e6c6583ac6deb995335c46b4711/Aaron_Gustafson___Color_5.jpg?w=800&fm=jpg 800w,//images.ctfassets.net/s5uo95nf6njh/4cxrXjAroa8IXjN0xgX88P/42702e6c6583ac6deb995335c46b4711/Aaron_Gustafson___Color_5.jpg?w=600&fm=jpg 600w,//images.ctfassets.net/s5uo95nf6njh/4cxrXjAroa8IXjN0xgX88P/42702e6c6583ac6deb995335c46b4711/Aaron_Gustafson___Color_5.jpg?w=500&fm=jpg 500w,//images.ctfassets.net/s5uo95nf6njh/4cxrXjAroa8IXjN0xgX88P/42702e6c6583ac6deb995335c46b4711/Aaron_Gustafson___Color_5.jpg?w=400&fm=jpg 400w,//images.ctfassets.net/s5uo95nf6njh/4cxrXjAroa8IXjN0xgX88P/42702e6c6583ac6deb995335c46b4711/Aaron_Gustafson___Color_5.jpg?w=200&fm=jpg 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/jpeg"></source> <img class="d-block width-full readme-link__img height-auto position-relative" width="1000" height="600" loading="lazy" decoding="async" alt="" src="//images.ctfassets.net/s5uo95nf6njh/4cxrXjAroa8IXjN0xgX88P/42702e6c6583ac6deb995335c46b4711/Aaron_Gustafson___Color_5.jpg?w=1000&fm=jpg" /> </picture> </figure> </div> </div> </div> <div class="col-sm-8 col-md-7"> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2 d-inline-block"> Aaron Gustafson </p> <a class="d-block no-underline readme-underline--green" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta:Advancing inclusion with progressive enhancement;ref_loc:Story list" href="/readme/stories/aaron-gustafson"> <h3 class="mb-3 h4-mktg font-alt-mktg lh-condensed-mktg" style="font-weight:400 !important"> <span>Advancing inclusion with progressive enhancement</span> </h3></a> <p class="mb-0 f4-mktg"> Aaron’s journey towards progressive enhancement and inclusive design. </p> </div> </div> <div class="d-sm-flex flex-row-reverse flex-items-center flex-sm-items-start border-sm-top pt-sm-4 pt-xl-5 mb-8"> <div class="position-relative col-sm-4 offset-md-1 pl-sm-3 pl-md-4 mb-4"> <div class="position-relative readme-img-build-in js-build-in" data-build-margin-bottom="10"> <div class="position-relative readme-link"> <figure class="readme-link__figure " > <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/2VmdR9x8w2ExD6dcK083ZU/3ab14817a95f1108120ae9568fa63442/20230305LAG030.jpg?w=1000&fm=avif 1000w,//images.ctfassets.net/s5uo95nf6njh/2VmdR9x8w2ExD6dcK083ZU/3ab14817a95f1108120ae9568fa63442/20230305LAG030.jpg?w=800&fm=avif 800w,//images.ctfassets.net/s5uo95nf6njh/2VmdR9x8w2ExD6dcK083ZU/3ab14817a95f1108120ae9568fa63442/20230305LAG030.jpg?w=600&fm=avif 600w,//images.ctfassets.net/s5uo95nf6njh/2VmdR9x8w2ExD6dcK083ZU/3ab14817a95f1108120ae9568fa63442/20230305LAG030.jpg?w=500&fm=avif 500w,//images.ctfassets.net/s5uo95nf6njh/2VmdR9x8w2ExD6dcK083ZU/3ab14817a95f1108120ae9568fa63442/20230305LAG030.jpg?w=400&fm=avif 400w,//images.ctfassets.net/s5uo95nf6njh/2VmdR9x8w2ExD6dcK083ZU/3ab14817a95f1108120ae9568fa63442/20230305LAG030.jpg?w=200&fm=avif 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/avif"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/2VmdR9x8w2ExD6dcK083ZU/3ab14817a95f1108120ae9568fa63442/20230305LAG030.jpg?w=1000&fm=webp 1000w,//images.ctfassets.net/s5uo95nf6njh/2VmdR9x8w2ExD6dcK083ZU/3ab14817a95f1108120ae9568fa63442/20230305LAG030.jpg?w=800&fm=webp 800w,//images.ctfassets.net/s5uo95nf6njh/2VmdR9x8w2ExD6dcK083ZU/3ab14817a95f1108120ae9568fa63442/20230305LAG030.jpg?w=600&fm=webp 600w,//images.ctfassets.net/s5uo95nf6njh/2VmdR9x8w2ExD6dcK083ZU/3ab14817a95f1108120ae9568fa63442/20230305LAG030.jpg?w=500&fm=webp 500w,//images.ctfassets.net/s5uo95nf6njh/2VmdR9x8w2ExD6dcK083ZU/3ab14817a95f1108120ae9568fa63442/20230305LAG030.jpg?w=400&fm=webp 400w,//images.ctfassets.net/s5uo95nf6njh/2VmdR9x8w2ExD6dcK083ZU/3ab14817a95f1108120ae9568fa63442/20230305LAG030.jpg?w=200&fm=webp 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/2VmdR9x8w2ExD6dcK083ZU/3ab14817a95f1108120ae9568fa63442/20230305LAG030.jpg?w=1000&fm=jpg 1000w,//images.ctfassets.net/s5uo95nf6njh/2VmdR9x8w2ExD6dcK083ZU/3ab14817a95f1108120ae9568fa63442/20230305LAG030.jpg?w=800&fm=jpg 800w,//images.ctfassets.net/s5uo95nf6njh/2VmdR9x8w2ExD6dcK083ZU/3ab14817a95f1108120ae9568fa63442/20230305LAG030.jpg?w=600&fm=jpg 600w,//images.ctfassets.net/s5uo95nf6njh/2VmdR9x8w2ExD6dcK083ZU/3ab14817a95f1108120ae9568fa63442/20230305LAG030.jpg?w=500&fm=jpg 500w,//images.ctfassets.net/s5uo95nf6njh/2VmdR9x8w2ExD6dcK083ZU/3ab14817a95f1108120ae9568fa63442/20230305LAG030.jpg?w=400&fm=jpg 400w,//images.ctfassets.net/s5uo95nf6njh/2VmdR9x8w2ExD6dcK083ZU/3ab14817a95f1108120ae9568fa63442/20230305LAG030.jpg?w=200&fm=jpg 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/jpeg"></source> <img class="d-block width-full readme-link__img height-auto position-relative" width="1000" height="600" loading="lazy" decoding="async" alt="" src="//images.ctfassets.net/s5uo95nf6njh/2VmdR9x8w2ExD6dcK083ZU/3ab14817a95f1108120ae9568fa63442/20230305LAG030.jpg?w=1000&fm=jpg" /> </picture> </figure> </div> </div> </div> <div class="col-sm-8 col-md-7"> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2 d-inline-block"> Ruth Ikegah </p> <a class="d-block no-underline readme-underline--green" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta:Putting the African open source community on the map;ref_loc:Story list" href="/readme/stories/ruth-ikegah"> <h3 class="mb-3 h4-mktg font-alt-mktg lh-condensed-mktg" style="font-weight:400 !important"> <span>Putting the African open source community on the map</span> </h3></a> <p class="mb-0 f4-mktg"> Ruth’s dream is to show people that Africans aren’t just consumers of open source: They’re creators as well. </p> </div> </div> </div> </div> <div class="pt-5 pb-3 py-md-8"> <div class="container-readme p-responsive-readme mt-5 mt-md-6 mb-6 mb-md-8"> <div class="border-top readme-border--black d-sm-flex flex-justify-between"> <h2 class="d-inline-block pt-3 pt-md-4 readme-heading-2 readme-heading--condensed text-uppercase" style="border-top: 1rem solid"> Guides </h2> <a class="d-block d-sm-inline no-underline text-semibold text-uppercase arrow-target-mktg readme-text-blue text-center py-3 f4-mktg" style="letter-spacing:0.05em;" href="/readme/guides"> See all Guides <svg xmlns="http://www.w3.org/2000/svg" class="octicon arrow-symbol-mktg octicon" width="16" height="16" viewBox="0 0 16 16" fill="none"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="octicon-chevrow-stem" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg> <span class="sr-only"> stories from Guides</span> </a> </div> </div> <div class="container-readme p-responsive-readme"> <div class="d-md-flex flex-lg-items-center gutter-md-spacious mb-8"> <div class="col-md-6 mb-4 mb-md-0"> <div class="position-relative readme-img-build-in js-build-in" data-build-margin-bottom="20"> <div class="position-relative readme-link"> <figure class="readme-link__figure " style="height:0; padding-bottom:100%; -webkit-mask-image: -webkit-radial-gradient(#fff,#000);"> <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=1200&fm=webp 1200w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=960&fm=webp 960w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=720&fm=webp 720w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=600&fm=webp 600w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=480&fm=webp 480w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=240&fm=webp 240w" sizes="(max-width: 755px) 90vw, 45vw" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=1200&fm=jpg 1200w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=960&fm=jpg 960w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=720&fm=jpg 720w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=600&fm=jpg 600w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=480&fm=jpg 480w,//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=240&fm=jpg 240w" sizes="(max-width: 755px) 90vw, 45vw" type="image/jpeg"></source> <img class="d-block width-full readme-link__img height-auto position-absolute" width="1200" height="1400" loading="lazy" decoding="async" alt="" src="//images.ctfassets.net/s5uo95nf6njh/3O4sciFrMmeOhWanc5BZ86/aa92def994ec9c353ce18be83c704f3a/Bettson_DevOps_Observability__1___1_.jpg?w=1200&fm=jpg" /> </picture> </figure> </div> <a class="readme-link--focus-boost position-absolute top-0 left-0 px-2 px-lg-3 py-2 readme-bg-blue f5-mktg readme-heading--condensed text-uppercase text-semibold color-text-white" style="letter-spacing:0.025em;" data-test-selector="topic-tag" href="/readme/topics/application-security">Application Security</a> </div> </div> <div class="col-md-6"> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2 d-inline-block"> Denys Lashchevskyi // Betsson </p> <a class="d-block no-underline readme-underline--green" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta:A beginner’s guide to running and managing custom CodeQL queries;ref_loc:Story list" href="/readme/guides/custom-codeql-queries"> <h3 class="mb-3 readme-heading-1 readme-heading--condensed" style="font-weight:400 !important"> <span>A beginner’s guide to running and managing custom CodeQL queries</span> </h3></a> <p class="mb-0 f2-mktg text-normal"> Transform your code into a structured database that you can use to surface security vulnerabilities and discover new insights. </p> </div> </div> <div class="d-sm-flex flex-wrap gutter-sm-spacious"> <div class="col-sm-6 col-lg-4 mb-8"> <div class="position-relative mb-4"> <div class="position-relative readme-img-build-in js-build-in" data-build-margin-bottom="10"> <div class="position-relative readme-link"> <figure class="readme-link__figure " > <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/510mz7QBLsVV7W5U4PrkGI/82ba7a5499493eb97f812abb655242c3/Career_development-Github_ladders_final_copy.jpg?w=1000&fm=webp 1000w,//images.ctfassets.net/s5uo95nf6njh/510mz7QBLsVV7W5U4PrkGI/82ba7a5499493eb97f812abb655242c3/Career_development-Github_ladders_final_copy.jpg?w=800&fm=webp 800w,//images.ctfassets.net/s5uo95nf6njh/510mz7QBLsVV7W5U4PrkGI/82ba7a5499493eb97f812abb655242c3/Career_development-Github_ladders_final_copy.jpg?w=600&fm=webp 600w,//images.ctfassets.net/s5uo95nf6njh/510mz7QBLsVV7W5U4PrkGI/82ba7a5499493eb97f812abb655242c3/Career_development-Github_ladders_final_copy.jpg?w=500&fm=webp 500w,//images.ctfassets.net/s5uo95nf6njh/510mz7QBLsVV7W5U4PrkGI/82ba7a5499493eb97f812abb655242c3/Career_development-Github_ladders_final_copy.jpg?w=400&fm=webp 400w,//images.ctfassets.net/s5uo95nf6njh/510mz7QBLsVV7W5U4PrkGI/82ba7a5499493eb97f812abb655242c3/Career_development-Github_ladders_final_copy.jpg?w=200&fm=webp 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/510mz7QBLsVV7W5U4PrkGI/82ba7a5499493eb97f812abb655242c3/Career_development-Github_ladders_final_copy.jpg?w=1000&fm=jpg 1000w,//images.ctfassets.net/s5uo95nf6njh/510mz7QBLsVV7W5U4PrkGI/82ba7a5499493eb97f812abb655242c3/Career_development-Github_ladders_final_copy.jpg?w=800&fm=jpg 800w,//images.ctfassets.net/s5uo95nf6njh/510mz7QBLsVV7W5U4PrkGI/82ba7a5499493eb97f812abb655242c3/Career_development-Github_ladders_final_copy.jpg?w=600&fm=jpg 600w,//images.ctfassets.net/s5uo95nf6njh/510mz7QBLsVV7W5U4PrkGI/82ba7a5499493eb97f812abb655242c3/Career_development-Github_ladders_final_copy.jpg?w=500&fm=jpg 500w,//images.ctfassets.net/s5uo95nf6njh/510mz7QBLsVV7W5U4PrkGI/82ba7a5499493eb97f812abb655242c3/Career_development-Github_ladders_final_copy.jpg?w=400&fm=jpg 400w,//images.ctfassets.net/s5uo95nf6njh/510mz7QBLsVV7W5U4PrkGI/82ba7a5499493eb97f812abb655242c3/Career_development-Github_ladders_final_copy.jpg?w=200&fm=jpg 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/jpeg"></source> <img class="d-block width-full readme-link__img height-auto position-relative" width="1000" height="600" loading="lazy" decoding="async" alt="" src="//images.ctfassets.net/s5uo95nf6njh/510mz7QBLsVV7W5U4PrkGI/82ba7a5499493eb97f812abb655242c3/Career_development-Github_ladders_final_copy.jpg?w=1000&fm=jpg" /> </picture> </figure> </div> <a class="readme-link--focus-boost position-absolute top-0 left-0 px-2 px-lg-3 py-2 readme-bg-blue f5-mktg readme-heading--condensed text-uppercase text-semibold color-text-white" style="letter-spacing:0.025em;" data-test-selector="topic-tag" href="/readme/topics/career-development">Career Development</a> </div> </div> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2 d-inline-block"> Nick Penston // Fidelity Investments </p> <a class="d-block no-underline readme-underline--green" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta:Scaling standards and community in your organization;ref_loc:Story list" href="/readme/guides/federated-model"> <h3 class="mb-3 h4-mktg font-alt-mktg lh-condensed-mktg" style="font-weight:400 !important"> <span>Scaling standards and community in your organization</span> </h3></a> <p class="mb-0 f4-mktg"> Learn how to implement open source community ideas to spread best practices. </p> </div> <div class="col-sm-6 col-lg-4 mb-8"> <div class="position-relative mb-4"> <div class="position-relative readme-img-build-in js-build-in" data-build-margin-bottom="10"> <div class="position-relative readme-link"> <figure class="readme-link__figure " > <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/1Q86ZWIOSgo94x945IrFrR/b16d3e184edf884f1a0ab5bbc0c3c73a/Colorway_2__1_.jpg?w=1000&fm=webp 1000w,//images.ctfassets.net/s5uo95nf6njh/1Q86ZWIOSgo94x945IrFrR/b16d3e184edf884f1a0ab5bbc0c3c73a/Colorway_2__1_.jpg?w=800&fm=webp 800w,//images.ctfassets.net/s5uo95nf6njh/1Q86ZWIOSgo94x945IrFrR/b16d3e184edf884f1a0ab5bbc0c3c73a/Colorway_2__1_.jpg?w=600&fm=webp 600w,//images.ctfassets.net/s5uo95nf6njh/1Q86ZWIOSgo94x945IrFrR/b16d3e184edf884f1a0ab5bbc0c3c73a/Colorway_2__1_.jpg?w=500&fm=webp 500w,//images.ctfassets.net/s5uo95nf6njh/1Q86ZWIOSgo94x945IrFrR/b16d3e184edf884f1a0ab5bbc0c3c73a/Colorway_2__1_.jpg?w=400&fm=webp 400w,//images.ctfassets.net/s5uo95nf6njh/1Q86ZWIOSgo94x945IrFrR/b16d3e184edf884f1a0ab5bbc0c3c73a/Colorway_2__1_.jpg?w=200&fm=webp 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/1Q86ZWIOSgo94x945IrFrR/b16d3e184edf884f1a0ab5bbc0c3c73a/Colorway_2__1_.jpg?w=1000&fm=jpg 1000w,//images.ctfassets.net/s5uo95nf6njh/1Q86ZWIOSgo94x945IrFrR/b16d3e184edf884f1a0ab5bbc0c3c73a/Colorway_2__1_.jpg?w=800&fm=jpg 800w,//images.ctfassets.net/s5uo95nf6njh/1Q86ZWIOSgo94x945IrFrR/b16d3e184edf884f1a0ab5bbc0c3c73a/Colorway_2__1_.jpg?w=600&fm=jpg 600w,//images.ctfassets.net/s5uo95nf6njh/1Q86ZWIOSgo94x945IrFrR/b16d3e184edf884f1a0ab5bbc0c3c73a/Colorway_2__1_.jpg?w=500&fm=jpg 500w,//images.ctfassets.net/s5uo95nf6njh/1Q86ZWIOSgo94x945IrFrR/b16d3e184edf884f1a0ab5bbc0c3c73a/Colorway_2__1_.jpg?w=400&fm=jpg 400w,//images.ctfassets.net/s5uo95nf6njh/1Q86ZWIOSgo94x945IrFrR/b16d3e184edf884f1a0ab5bbc0c3c73a/Colorway_2__1_.jpg?w=200&fm=jpg 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/jpeg"></source> <img class="d-block width-full readme-link__img height-auto position-relative" width="1000" height="600" loading="lazy" decoding="async" alt="" src="//images.ctfassets.net/s5uo95nf6njh/1Q86ZWIOSgo94x945IrFrR/b16d3e184edf884f1a0ab5bbc0c3c73a/Colorway_2__1_.jpg?w=1000&fm=jpg" /> </picture> </figure> </div> </div> </div> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2 d-inline-block"> Niek Palm // Philips </p> <a class="d-block no-underline readme-underline--green" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta:Provisioning self-hosted GitHub Actions runners on demand;ref_loc:Story list" href="/readme/guides/github-runners-philips"> <h3 class="mb-3 h4-mktg font-alt-mktg lh-condensed-mktg" style="font-weight:400 !important"> <span>Provisioning self-hosted GitHub Actions runners on demand</span> </h3></a> <p class="mb-0 f4-mktg"> How Philips optimized their CI/CD process using GitHub Actions and self-hosted runners. </p> </div> <div class="col-sm-6 col-lg-4 mb-8"> <div class="position-relative mb-4"> <div class="position-relative readme-img-build-in js-build-in" data-build-margin-bottom="10"> <div class="position-relative readme-link"> <figure class="readme-link__figure " > <picture> <source srcset="//images.ctfassets.net/s5uo95nf6njh/5f5300A0bPWGYkGyDrJAts/0afc7ba8086caa8dfac60300cfd66092/Testing_III__1_.jpg?w=1000&fm=webp 1000w,//images.ctfassets.net/s5uo95nf6njh/5f5300A0bPWGYkGyDrJAts/0afc7ba8086caa8dfac60300cfd66092/Testing_III__1_.jpg?w=800&fm=webp 800w,//images.ctfassets.net/s5uo95nf6njh/5f5300A0bPWGYkGyDrJAts/0afc7ba8086caa8dfac60300cfd66092/Testing_III__1_.jpg?w=600&fm=webp 600w,//images.ctfassets.net/s5uo95nf6njh/5f5300A0bPWGYkGyDrJAts/0afc7ba8086caa8dfac60300cfd66092/Testing_III__1_.jpg?w=500&fm=webp 500w,//images.ctfassets.net/s5uo95nf6njh/5f5300A0bPWGYkGyDrJAts/0afc7ba8086caa8dfac60300cfd66092/Testing_III__1_.jpg?w=400&fm=webp 400w,//images.ctfassets.net/s5uo95nf6njh/5f5300A0bPWGYkGyDrJAts/0afc7ba8086caa8dfac60300cfd66092/Testing_III__1_.jpg?w=200&fm=webp 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/webp"></source> <source srcset="//images.ctfassets.net/s5uo95nf6njh/5f5300A0bPWGYkGyDrJAts/0afc7ba8086caa8dfac60300cfd66092/Testing_III__1_.jpg?w=1000&fm=jpg 1000w,//images.ctfassets.net/s5uo95nf6njh/5f5300A0bPWGYkGyDrJAts/0afc7ba8086caa8dfac60300cfd66092/Testing_III__1_.jpg?w=800&fm=jpg 800w,//images.ctfassets.net/s5uo95nf6njh/5f5300A0bPWGYkGyDrJAts/0afc7ba8086caa8dfac60300cfd66092/Testing_III__1_.jpg?w=600&fm=jpg 600w,//images.ctfassets.net/s5uo95nf6njh/5f5300A0bPWGYkGyDrJAts/0afc7ba8086caa8dfac60300cfd66092/Testing_III__1_.jpg?w=500&fm=jpg 500w,//images.ctfassets.net/s5uo95nf6njh/5f5300A0bPWGYkGyDrJAts/0afc7ba8086caa8dfac60300cfd66092/Testing_III__1_.jpg?w=400&fm=jpg 400w,//images.ctfassets.net/s5uo95nf6njh/5f5300A0bPWGYkGyDrJAts/0afc7ba8086caa8dfac60300cfd66092/Testing_III__1_.jpg?w=200&fm=jpg 200w" sizes="(max-width: 755px) 90vw, 30vw" type="image/jpeg"></source> <img class="d-block width-full readme-link__img height-auto position-relative" width="1000" height="600" loading="lazy" decoding="async" alt="" src="//images.ctfassets.net/s5uo95nf6njh/5f5300A0bPWGYkGyDrJAts/0afc7ba8086caa8dfac60300cfd66092/Testing_III__1_.jpg?w=1000&fm=jpg" /> </picture> </figure> </div> <a class="readme-link--focus-boost position-absolute top-0 left-0 px-2 px-lg-3 py-2 readme-bg-blue f5-mktg readme-heading--condensed text-uppercase text-semibold color-text-white" style="letter-spacing:0.025em;" data-test-selector="topic-tag" href="/readme/topics/open-source">Open Source</a> </div> </div> <p class="text-mono text-uppercase readme-text-gray-dark f5-mktg mb-2 d-inline-block"> Mike Gifford // CivicActions </p> <a class="d-block no-underline readme-underline--green" data-ga-click="ReadME Stories, click, ref_page:/readme;ref_cta:Treat accessibility issues as bugs not feature requests;ref_loc:Story list" href="/readme/guides/fix-accessibility-bugs"> <h3 class="mb-3 h4-mktg font-alt-mktg lh-condensed-mktg" style="font-weight:400 !important"> <span>Treat accessibility issues as bugs, not feature requests</span> </h3></a> <p class="mb-0 f4-mktg"> Follow Drupal’s lead: Prioritize and systematically squash accessibility bugs. </p> </div> </div> </div> </div> </div> </div> <div id="newsletter"> <div class="py-4 py-lg-6 readme-bg-white overflow-hidden"> <div class="container-readme p-responsive-readme"> <div class="d-lg-flex"> <div class="position-relative d-flex flex-items-center col-md-11 col-lg-10 readme-bg-black--pattern"> <div class="position-relative col-lg-7 px-3 py-6 p-md-6 pb-md-8 pt-lg-8 pl-xl-8"> <h2 class="readme-heading-1 readme-heading--condensed mb-6 color-text-white">About The <br class="d-none d-sm-inline">ReadME Project</h2> <p class="f3-mktg mb-6 color-text-white">Coding is usually seen as a solitary activity, but it’s actually the world’s largest community effort led by open source maintainers, contributors, and teams. These unsung heroes put in long hours to build software, fix issues, field questions, and manage communities.</p> <p class="f3-mktg mb-6 color-text-white">The ReadME Project is part of GitHub’s ongoing effort to amplify the voices of the developer community. It’s an evolving space to engage with the community and explore the stories, challenges, technology, and culture that surround the world of open source.</p> <div class="d-flex"> <h3 class="readme-heading--condensed f3-mktg text-semibold text-uppercase color-text-white mr-4">Follow us:</h3> <ul class="list-style-none d-flex flex-items-center"> <li class="mr-4"> <a href="https://twitter.com/github" target="_blank" rel="noopener" aria-label="Follow on Twitter" class="d-flex flex-justify-center flex-items-center"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 16 16" width="16" height="20" aria-hidden="true" class="d-block readme-icon-link--inverted"><path fill="currentColor" d="M9.332 6.925 14.544 1h-1.235L8.783 6.145 5.17 1H1l5.466 7.78L1 14.993h1.235l4.78-5.433 3.816 5.433H15L9.332 6.925ZM7.64 8.848l-.554-.775L2.68 1.91h1.897l3.556 4.975.554.775 4.622 6.466h-1.897L7.64 8.848Z"></path></svg> </a> </li> <li class="mr-4"> <a href="https://www.facebook.com/GitHub" target="_blank" rel="noopener" aria-label="Follow on Facebook" class="d-flex flex-justify-center flex-items-center"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15.3 15.4" aria-hidden="true" class="d-block readme-icon-link--inverted" height="20"><path d="M14.5 0H.8a.88.88 0 0 0-.8.9v13.6a.88.88 0 0 0 .8.9h7.3v-6h-2V7.1h2V5.4a2.87 2.87 0 0 1 2.5-3.1h.5a10.87 10.87 0 0 1 1.8.1v2.1h-1.3c-1 0-1.1.5-1.1 1.1v1.5h2.3l-.3 2.3h-2v5.9h3.9a.88.88 0 0 0 .9-.8V.8a.86.86 0 0 0-.8-.8z" fill="currentColor"></path></svg> </a> </li> <li class="mr-4"> <a href="https://www.instagram.com/github" target="_blank" rel="noopener" aria-label="Follow on Instagram" class="d-flex flex-justify-center flex-items-center"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 25 24" fill="currentColor" aria-hidden="true" class="d-block readme-icon-link--inverted" height="20"> <path d="M7.65241 0.0884315C6.65471 0.108122 5.66763 0.297424 4.73344 0.648234C3.93562 0.953396 3.21108 1.4233 2.60708 2.0273C2.00308 2.63131 1.53317 3.35584 1.22801 4.15366C0.878679 5.08365 0.689401 6.0661 0.668206 7.05931C0.614891 8.33886 0.601562 8.75204 0.601562 12.0042C0.601562 15.2697 0.614891 15.6696 0.668206 16.9492C0.734849 18.2287 0.934778 19.0951 1.22801 19.8681C1.53014 20.6698 2.00052 21.3975 2.60748 22.0022C3.21445 22.6069 3.94391 23.0745 4.74677 23.3736C5.67676 23.7229 6.6592 23.9122 7.65241 23.9334C8.93196 23.9867 9.33182 24 12.584 24C15.8495 24 16.2627 23.9867 17.5423 23.9334C18.5355 23.9122 19.5179 23.7229 20.4479 23.3736C21.2476 23.067 21.914 22.6538 22.5805 21.9874C23.2469 21.3209 23.6468 20.6545 23.9533 19.8548C24.3027 18.9248 24.4919 17.9424 24.5131 16.9492C24.5664 15.6696 24.5798 15.2697 24.5798 12.0176C24.5798 8.75204 24.5798 8.33886 24.5131 7.05931C24.4919 6.0661 24.3027 5.08365 23.9533 4.15366C23.6468 3.35395 23.2336 2.68752 22.5671 2.02108C21.9007 1.35465 21.2343 0.954793 20.4479 0.648234C19.5179 0.298905 18.5355 0.109627 17.5423 0.0884315C16.2627 0.035117 15.8495 0.0217883 12.5973 0.0217883C10.9488 -0.0220065 9.29917 0.000225717 7.65241 0.0884315ZM17.4356 2.24767C18.6085 2.30098 19.2483 2.50091 19.6615 2.64753C20.1788 2.85208 20.6483 3.1613 21.0405 3.55579C21.4327 3.95029 21.7392 4.42156 21.9407 4.94005C22.2044 5.65302 22.3441 6.40584 22.3539 7.16594C22.4072 8.43216 22.4205 8.80536 22.4205 12.0042C22.4205 15.2031 22.4205 15.5896 22.3539 16.8559C22.3489 17.6152 22.2137 18.3681 21.954 19.0817C21.7539 19.5991 21.4448 20.0673 21.0477 20.4546C20.6212 20.8811 20.2213 21.1343 19.6615 21.3609C19.2483 21.5209 18.6085 21.7208 17.4356 21.7608C16.1694 21.8274 15.7962 21.8408 12.5973 21.8408C9.39846 21.8408 9.01193 21.8274 7.74571 21.7741C6.98556 21.7649 6.23265 21.6251 5.51983 21.3609C5.00029 21.1651 4.5312 20.8554 4.14698 20.4546C3.74616 20.0704 3.43647 19.6013 3.24063 19.0817C3.08069 18.6552 2.88076 18.0154 2.84077 16.8559C2.77413 15.5896 2.7608 15.2164 2.7608 12.0042C2.7608 8.80536 2.77413 8.43216 2.82744 7.16594C2.83722 6.40584 2.97696 5.65302 3.24063 4.94005C3.46722 4.38025 3.72046 3.98039 4.14698 3.55388C4.56017 3.14069 4.96003 2.88744 5.51983 2.66086C5.94634 2.50091 6.58612 2.30098 7.74571 2.24767C9.01193 2.19436 9.38513 2.18103 12.5973 2.18103C15.7962 2.18103 16.1694 2.18103 17.4356 2.24767Z"></path> <path d="M12.5959 16.003C11.5354 16.003 10.5183 15.5817 9.76844 14.8318C9.01856 14.0819 8.59728 13.0649 8.59728 12.0044C8.59728 10.9439 9.01856 9.92684 9.76844 9.17696C10.5183 8.42708 11.5354 8.0058 12.5959 8.0058C13.6564 8.0058 14.6734 8.42708 15.4233 9.17696C16.1732 9.92684 16.5945 10.9439 16.5945 12.0044C16.5945 13.0649 16.1732 14.0819 15.4233 14.8318C14.6734 15.5817 13.6564 16.003 12.5959 16.003ZM12.5959 5.84656C11.7872 5.84656 10.9865 6.00584 10.2394 6.3153C9.49227 6.62476 8.81344 7.07834 8.24163 7.65014C7.66982 8.22195 7.21624 8.90079 6.90678 9.64789C6.59732 10.395 6.43805 11.1957 6.43805 12.0044C6.43805 12.813 6.59732 13.6138 6.90678 14.3609C7.21624 15.108 7.66982 15.7868 8.24163 16.3586C8.81344 16.9304 9.49227 17.384 10.2394 17.6935C10.9865 18.0029 11.7872 18.1622 12.5959 18.1622C14.229 18.1622 15.7953 17.5134 16.9501 16.3586C18.1049 15.2038 18.7537 13.6375 18.7537 12.0044C18.7537 10.3712 18.1049 8.80496 16.9501 7.65014C15.7953 6.49533 14.229 5.84656 12.5959 5.84656ZM20.4331 5.60664C20.4331 5.98842 20.2814 6.35456 20.0115 6.62452C19.7415 6.89447 19.3754 7.04614 18.9936 7.04614C18.6118 7.04614 18.2457 6.89447 17.9757 6.62452C17.7058 6.35456 17.5541 5.98842 17.5541 5.60664C17.5541 5.22487 17.7058 4.85873 17.9757 4.58877C18.2457 4.31881 18.6118 4.16715 18.9936 4.16715C19.3754 4.16715 19.7415 4.31881 20.0115 4.58877C20.2814 4.85873 20.4331 5.22487 20.4331 5.60664Z"></path> <path d="M9.85322 14.747C10.5806 15.4744 11.5672 15.8831 12.5959 15.8831C13.6246 15.8831 14.6111 15.4744 15.3385 14.747C16.0659 14.0196 16.4746 13.0331 16.4746 12.0044C16.4746 10.9757 16.0659 9.98913 15.3385 9.26173C14.6111 8.53434 13.6246 8.12569 12.5959 8.12569C11.5672 8.12569 10.5806 8.53434 9.85322 9.26173C9.12582 9.98913 8.71718 10.9757 8.71718 12.0044C8.71718 13.0331 9.12582 14.0196 9.85322 14.747ZM10.1935 6.20453C10.9551 5.88905 11.7715 5.72667 12.5959 5.72667C14.2608 5.72667 15.8576 6.38807 17.0349 7.56537C18.2122 8.74267 18.8736 10.3394 18.8736 12.0044C18.8736 13.6693 18.2122 15.2661 17.0349 16.4434C15.8576 17.6207 14.2608 18.2821 12.5959 18.2821C11.7715 18.2821 10.9551 18.1197 10.1935 17.8042C9.43185 17.4888 8.7398 17.0263 8.15686 16.4434C7.57392 15.8605 7.1115 15.1684 6.79602 14.4068C6.48053 13.6451 6.31815 12.8288 6.31815 12.0044C6.31815 11.18 6.48053 10.3637 6.79602 9.60201C7.1115 8.84036 7.57392 8.14831 8.15686 7.56537C8.7398 6.98243 9.43185 6.52002 10.1935 6.20453ZM20.553 5.60664C20.553 6.02022 20.3887 6.41685 20.0963 6.70929C19.8038 7.00173 19.4072 7.16603 18.9936 7.16603C18.58 7.16603 18.1834 7.00173 17.891 6.70929C17.5985 6.41685 17.4342 6.02022 17.4342 5.60664C17.4342 5.19307 17.5985 4.79643 17.891 4.50399C18.1834 4.21155 18.58 4.04726 18.9936 4.04726C19.4072 4.04726 19.8038 4.21155 20.0963 4.50399C20.3887 4.79643 20.553 5.19307 20.553 5.60664ZM9.76844 14.8318C10.5183 15.5817 11.5354 16.003 12.5959 16.003C13.6564 16.003 14.6734 15.5817 15.4233 14.8318C16.1732 14.0819 16.5945 13.0649 16.5945 12.0044C16.5945 10.9439 16.1732 9.92684 15.4233 9.17696C14.6734 8.42708 13.6564 8.0058 12.5959 8.0058C11.5354 8.0058 10.5183 8.42708 9.76844 9.17696C9.01856 9.92684 8.59728 10.9439 8.59728 12.0044C8.59728 13.0649 9.01856 14.0819 9.76844 14.8318ZM10.2394 6.3153C10.9865 6.00584 11.7872 5.84656 12.5959 5.84656C14.229 5.84656 15.7953 6.49533 16.9501 7.65014C18.1049 8.80496 18.7537 10.3712 18.7537 12.0044C18.7537 13.6375 18.1049 15.2038 16.9501 16.3586C15.7953 17.5134 14.229 18.1622 12.5959 18.1622C11.7872 18.1622 10.9865 18.0029 10.2394 17.6935C9.49227 17.384 8.81344 16.9304 8.24163 16.3586C7.66982 15.7868 7.21624 15.108 6.90678 14.3609C6.59732 13.6138 6.43805 12.813 6.43805 12.0044C6.43805 11.1957 6.59732 10.395 6.90678 9.64789C7.21624 8.90079 7.66982 8.22195 8.24163 7.65014C8.81344 7.07834 9.49227 6.62476 10.2394 6.3153ZM20.0115 6.62452C20.2814 6.35456 20.4331 5.98842 20.4331 5.60664C20.4331 5.22487 20.2814 4.85873 20.0115 4.58877C19.7415 4.31881 19.3754 4.16715 18.9936 4.16715C18.6118 4.16715 18.2457 4.31881 17.9757 4.58877C17.7058 4.85873 17.5541 5.22487 17.5541 5.60664C17.5541 5.98842 17.7058 6.35456 17.9757 6.62452C18.2457 6.89447 18.6118 7.04614 18.9936 7.04614C19.3754 7.04614 19.7415 6.89447 20.0115 6.62452Z"></path> </svg> </a> </li> <li class="mr-4"> <a href="https://www.linkedin.com/company/github" target="_blank" rel="noopener" aria-label="Follow on LinkedIn" class="d-flex flex-justify-center flex-items-center"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 18" aria-hidden="true" class="d-block readme-icon-link--inverted" height="20"><path d="M3.94 2A2 2 0 1 1 2 0a2 2 0 0 1 1.94 2zM4 5.48H0V18h4zm6.32 0H6.34V18h3.94v-6.57c0-3.66 4.77-4 4.77 0V18H19v-7.93c0-6.17-7.06-5.94-8.72-2.91z" fill="currentColor"></path></svg> </a> </li> <li class="mr-4"> <a href="/readme.rss" target="_blank" rel="noopener" aria-label="Grab the ReadME Project RSS link" class="d-flex flex-justify-center flex-items-center"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" aria-hidden="true" class="d-block readme-icon-link--inverted" height="20"><path d="M4.87725 15.564C4.87725 16.9095 3.78525 18 2.439 18C1.092 18 0 16.9095 0 15.564C0 14.2185 1.092 13.128 2.439 13.128C3.78525 13.1288 4.87725 14.2185 4.87725 15.564ZM1.81214 6.28433C0.821676 6.12662 0 6.95184 0 7.95478V7.95478C0 8.94548 0.80745 9.7311 1.77335 9.95134C4.88751 10.6614 7.34477 13.1147 8.05723 16.2246C8.27873 17.1915 9.06526 18 10.0572 18V18C11.0614 18 11.8877 17.1772 11.729 16.1856C10.9163 11.1056 6.89914 7.09432 1.81214 6.28433ZM0 1.81156C0 2.80552 0.807508 3.60066 1.79343 3.72683C8.29332 4.55863 13.4443 9.69716 14.2712 16.2022C14.3968 17.1901 15.193 18 16.1889 18V18C17.1885 18 18.0077 17.1862 17.9062 16.1918C17.0415 7.71196 10.2969 0.968855 1.80862 0.0956699C0.814393 -0.00660638 0 0.81208 0 1.81156V1.81156Z" fill="currentColor"></path></svg> </a> </li> </ul> </div> </div> </div> <div class="position-relative col-md-11 col-lg-6 col-xl-5 float-md-right float-lg-none offset-lg-n4 offset-xl-n3 mt-md-n4 mt-lg-8 mb-lg-n4 mb-lg-n8 px-3 py-6 px-md-6 py-md-8 pl-xl-8 pr-xl-8 py-xl-9 z-1 readme-bg-blue color-text-white"> <h4 class="readme-heading-3 readme-heading--condensed text-uppercase"> <a href="https://github.com/readme/nominate" data-ga-click="Nominate a person or project, click, ref_page:/readme;ref_cta:Nominate a person or project;ref_loc:readme homepage" class="readme-focus-on-blue no-underline color-text-white arrow-target-mktg">Nominate a developer<span class="ml-1 d-inline-flex flex-items-start" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" class="octicon arrow-symbol-mktg octicon" width="16" height="16" viewBox="0 0 16 16" fill="none"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="octicon-chevrow-stem" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg> </span> </a> </h4> <p class="f3-mktg mb-0">Nominate inspiring developers and projects you think we should feature in The ReadME Project.</p> <h4 class="readme-heading-3 readme-heading--condensed text-uppercase pt-6 pt-md-8"> <a href="https://github.com/sponsors" data-ga-click="Support the community, click to support the community, ref_page:/readme;ref_cta:Support the community;ref_loc:readme homepage" class="readme-focus-on-blue no-underline color-text-white arrow-target-mktg">Support the community<span class="ml-1 d-inline-flex flex-items-start" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" class="octicon arrow-symbol-mktg octicon" width="16" height="16" viewBox="0 0 16 16" fill="none"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="octicon-chevrow-stem" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg> </span> </a> </h4> <p class="f3-mktg mb-0">Recognize developers working behind the scenes and help open source projects get the resources they need.</p> <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-newsletter-signup-form" data-turbo="false" action="/readme/subscriptions" accept-charset="UTF-8" data-remote="true" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="B1qsFBmU8gJXGK0q7vNDc9Xr7RL2VoNPDOX3oJnO0xoZEza2gR8V/g2oez42WvAox06c/B0MvssPyyYACKuX3A==" /> <h3 class="readme-heading-3 readme-heading--condensed text-uppercase pt-6 pt-md-8"> Sign Up For Newsletter </h3> <p class="f3-mktg mb-0"> Every month we’ll share new articles from The ReadME Project, episodes of The ReadME Podcast, and other great developer content from around the community. </p> <label for="readme" class="d-block mt-4 mt-lg-5 mb-2">Email Address <sup class="f5" style="top: -0.1em;">*</sup></label> <div class="position-relative readme-input-container"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 18" fill="currentColor" aria-hidden="true" class="d-inline-block position-absolute top-0 left-0 mt-1 color-text-white" height="16"><path fill-rule="evenodd" clip-rule="evenodd" d="M2.625 0A2.625 2.625 0 000 2.625v12.75A2.625 2.625 0 002.625 18h18.75A2.625 2.625 0 0024 15.375V3.769 2.625A2.625 2.625 0 0021.375 0H2.625zM21.75 3.105v-.48a.375.375 0 00-.375-.375H2.625a.375.375 0 00-.375.375v.48L12 8.821l9.75-5.716zM2.25 5.714v9.661c0 .207.168.375.375.375h18.75a.375.375 0 00.375-.375V5.714l-9.18 5.381a1.125 1.125 0 01-1.139 0l-9.18-5.381z"></path></svg> <input id="readme" type="email" name="email" placeholder="you@company.com" class="readme-input border-top-0 border-left-0 border-right-0 d-block width-full border-bottom color-text-white pr-9 pb-2 pl-5 js-newsletter-email-input readme-focus-on-blue" required> <span class="readme-input-border position-relative width-full d-block color-bg-default z-1"></span> <button type="submit" class="readme-focus-on-blue position-absolute top-0 right-0 f3-mktg color-text-white text-uppercase readme-heading--condensed readme-button-reset"> Subscribe </button> </div> </form> <span aria-live="assertive" class="position-absolute mt-2 text-mono text-uppercase f5-mktg js-newsletter-flash v-hidden"> Thank you! <span class="sr-only">for subscribing</span> </span> </div> </div> </div> </div> </div> </div> </main> </div> <footer role="contentinfo" class="footer pt-6 position-relative" data-analytics-visible="{"category":"Footer","action":"visible","label":"text: Marketing footer"}" > <h2 class="sr-only">Site-wide Links</h2> <div class="container-xl p-responsive"> <div class="d-flex flex-wrap py-5 mb-5"> <section class="col-12 col-lg-4 mb-5"> <a href="/" data-analytics-event="{"category":"Footer","action":"go to home","label":"text:home"}" class="color-fg-default d-inline-block" aria-label="Go to GitHub homepage"> <svg height="30" aria-hidden="true" viewBox="0 0 68 24" version="1.1" width="85" data-view-component="true" class="octicon octicon-logo-github footer-logo-mktg width-auto d-block"> <path d="M27.8 17.908h-.03c.013 0 .022.014.035.017l.01-.002-.016-.015Zm.005.017c-.14.001-.49.073-.861.073-1.17 0-1.575-.536-1.575-1.234v-4.652h2.385c.135 0 .24-.12.24-.283V9.302c0-.133-.12-.252-.24-.252H25.37V5.913c0-.119-.075-.193-.21-.193h-3.24c-.136 0-.21.074-.21.193V9.14s-1.636.401-1.741.416a.255.255 0 0 0-.195.253v2.021c0 .164.12.282.255.282h1.665v4.876c0 3.627 2.55 3.998 4.29 3.998.796 0 1.756-.252 1.906-.327.09-.03.135-.134.135-.238v-2.23a.264.264 0 0 0-.219-.265Zm35.549-3.272c0-2.69-1.095-3.047-2.25-2.928-.9.06-1.62.505-1.62.505v5.232s.735.506 1.83.536c1.545.044 2.04-.506 2.04-3.345ZM67 14.415c0 5.099-1.665 6.555-4.576 6.555-2.46 0-3.78-1.233-3.78-1.233s-.06.683-.135.773c-.045.089-.12.118-.21.118h-2.22c-.15 0-.286-.119-.286-.252l.03-16.514a.26.26 0 0 1 .255-.252h3.196a.26.26 0 0 1 .255.252v5.604s1.23-.788 3.03-.788l-.015-.03c1.8 0 4.456.67 4.456 5.767ZM53.918 9.05h-3.15c-.165 0-.255.119-.255.282v8.086s-.826.58-1.95.58c-1.126 0-1.456-.506-1.456-1.62v-7.06a.262.262 0 0 0-.255-.254h-3.21a.262.262 0 0 0-.256.253v7.596c0 3.27 1.846 4.087 4.381 4.087 2.085 0 3.78-1.145 3.78-1.145s.076.58.12.67c.03.074.136.133.24.133h2.011a.243.243 0 0 0 .255-.253l.03-11.103c0-.133-.12-.252-.285-.252Zm-35.556-.015h-3.195c-.135 0-.255.134-.255.297v10.91c0 .297.195.401.45.401h2.88c.3 0 .375-.134.375-.401V9.287a.262.262 0 0 0-.255-.252ZM16.787 4.01c-1.155 0-2.07.907-2.07 2.051 0 1.145.915 2.051 2.07 2.051a2.04 2.04 0 0 0 2.04-2.05 2.04 2.04 0 0 0-2.04-2.052Zm24.74-.372H38.36a.262.262 0 0 0-.255.253v6.08H33.14v-6.08a.262.262 0 0 0-.255-.253h-3.196a.262.262 0 0 0-.255.253v16.514c0 .133.135.252.255.252h3.196a.262.262 0 0 0 .255-.253v-7.06h4.966l-.03 7.06c0 .134.12.253.255.253h3.195a.262.262 0 0 0 .255-.253V3.892a.262.262 0 0 0-.255-.253Zm-28.31 7.313v8.532c0 .06-.015.163-.09.193 0 0-1.875 1.323-4.966 1.323C4.426 21 0 19.84 0 12.2S3.87 2.986 7.651 3c3.27 0 4.59.728 4.8.862.06.075.09.134.09.208l-.63 2.646c0 .134-.134.297-.3.253-.54-.164-1.35-.49-3.255-.49-2.205 0-4.575.623-4.575 5.543s2.25 5.5 3.87 5.5c1.38 0 1.875-.164 1.875-.164V13.94H7.321c-.165 0-.285-.12-.285-.253v-2.735c0-.134.12-.252.285-.252h5.61c.166 0 .286.118.286.252Z"></path> </svg> </a> <h3 class="h5 mt-4 mb-0" id="subscribe-to-newsletter">Subscribe to our developer newsletter</h3> <p class="f5 color-fg-muted mb-3">Get tips, technical guides, and best practices. Twice a month. Right in your inbox.</p> <a class="btn-mktg mb-4 btn-muted-mktg" data-analytics-event="{"category":"Subscribe","action":"click to Subscribe","label":"ref_cta:Subscribe;"}" href="https://resources.github.com/newsletter/"> Subscribe </a> </section> <nav class="col-6 col-sm-3 col-lg-2 mb-6 mb-md-2 pr-3 pr-lg-0 pl-lg-4" aria-labelledby="footer-title-product"> <h3 class="h5 mb-3 text-mono color-fg-muted text-normal" id="footer-title-product"> Product </h3> <ul class="list-style-none color-fg-muted f5"> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"features","context":"product","tag":"link","label":"features_link_product_footer"}" href="/features">Features</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"enterprise","context":"product","tag":"link","label":"enterprise_link_product_footer"}" href="/enterprise">Enterprise</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"copilot","context":"product","tag":"link","label":"copilot_link_product_footer"}" href="/features/copilot">Copilot</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"security","context":"product","tag":"link","label":"security_link_product_footer"}" href="/security">Security</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"pricing","context":"product","tag":"link","label":"pricing_link_product_footer"}" href="/pricing">Pricing</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"team","context":"product","tag":"link","label":"team_link_product_footer"}" href="/team">Team</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"resources","context":"product","tag":"link","label":"resources_link_product_footer"}" href="https://resources.github.com">Resources</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"roadmap","context":"product","tag":"link","label":"roadmap_link_product_footer"}" href="https://github.com/github/roadmap">Roadmap</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"compare","context":"product","tag":"link","label":"compare_link_product_footer"}" href="https://resources.github.com/devops/tools/compare">Compare GitHub</a> </li> </ul> </nav> <nav class="col-6 col-sm-3 col-lg-2 mb-6 mb-md-2 pr-3 pr-md-0 pl-md-4" aria-labelledby="footer-title-platform"> <h3 class="h5 mb-3 text-mono color-fg-muted text-normal" id="footer-title-platform"> Platform </h3> <ul class="list-style-none f5"> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"dev-api","context":"platform","tag":"link","label":"dev-api_link_platform_footer"}" href="https://docs.github.com/get-started/exploring-integrations/about-building-integrations">Developer API</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"partners","context":"platform","tag":"link","label":"partners_link_platform_footer"}" href="https://partner.github.com">Partners</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"edu","context":"platform","tag":"link","label":"edu_link_platform_footer"}" href="https://github.com/edu">Education</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"cli","context":"platform","tag":"link","label":"cli_link_platform_footer"}" href="https://cli.github.com">GitHub CLI</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"desktop","context":"platform","tag":"link","label":"desktop_link_platform_footer"}" href="https://desktop.github.com">GitHub Desktop</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"mobile","context":"platform","tag":"link","label":"mobile_link_platform_footer"}" href="https://github.com/mobile">GitHub Mobile</a> </li> </ul> </nav> <nav class="col-6 col-sm-3 col-lg-2 mb-6 mb-md-2 pr-3 pr-md-0 pl-md-4" aria-labelledby="footer-title-support"> <h3 class="h5 mb-3 text-mono color-fg-muted text-normal" id="footer-title-support"> Support </h3> <ul class="list-style-none f5"> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"docs","context":"support","tag":"link","label":"docs_link_support_footer"}" href="https://docs.github.com">Docs</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"community","context":"support","tag":"link","label":"community_link_support_footer"}" href="https://github.community">Community Forum</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"services","context":"support","tag":"link","label":"services_link_support_footer"}" href="https://services.github.com">Professional Services</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"premium_support","context":"support","tag":"link","label":"premium_support_link_support_footer"}" href="/enterprise/premium-support">Premium Support</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"skills","context":"support","tag":"link","label":"skills_link_support_footer"}" href="https://skills.github.com">Skills</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"status","context":"support","tag":"link","label":"status_link_support_footer"}" href="https://www.githubstatus.com">Status</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"contact_github","context":"support","tag":"link","label":"contact_github_link_support_footer"}" href="https://support.github.com?tags=dotcom-footer">Contact GitHub</a> </li> </ul> </nav> <nav class="col-6 col-sm-3 col-lg-2 mb-6 mb-md-2 pr-3 pr-md-0 pl-md-4" aria-labelledby="footer-title-company"> <h3 class="h5 mb-3 text-mono color-fg-muted text-normal" id="footer-title-company"> Company </h3> <ul class="list-style-none f5"> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"about","context":"company","tag":"link","label":"about_link_company_footer"}" href="https://github.com/about">About</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"customer_stories","context":"company","tag":"link","label":"customer_stories_link_company_footer"}" href="/customer-stories?type=enterprise">Customer stories</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"blog","context":"company","tag":"link","label":"blog_link_company_footer"}" href="https://github.blog">Blog</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"readme","context":"company","tag":"link","label":"readme_link_company_footer"}" href="/readme">The ReadME Project</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"careers","context":"company","tag":"link","label":"careers_link_company_footer"}" href="https://github.careers">Careers</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"newsroom","context":"company","tag":"link","label":"newsroom_link_company_footer"}" href="/newsroom">Newsroom</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"inclusion","context":"company","tag":"link","label":"inclusion_link_company_footer"}" href="/about/diversity">Inclusion</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"social_impact","context":"company","tag":"link","label":"social_impact_link_company_footer"}" href="https://socialimpact.github.com">Social Impact</a> </li> <li class="lh-condensed mb-3"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"shop","context":"company","tag":"link","label":"shop_link_company_footer"}" href="https://shop.github.com">Shop</a> </li> </ul> </nav> </div> </div> <div class="color-bg-subtle"> <div class="container-xl p-responsive f6 py-4 d-md-flex flex-justify-between flex-items-center"> <nav aria-label="Legal and Resource Links"> <ul class="list-style-none d-flex flex-wrap color-fg-muted"> <li class="mx-2"> © <time datetime="2024">2024</time> GitHub, Inc. </li> <li class="mx-2"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"terms","context":"subfooter","tag":"link","label":"terms_link_subfooter_footer"}" href="https://docs.github.com/site-policy/github-terms/github-terms-of-service">Terms</a> </li> <li class="mx-2"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"privacy","context":"subfooter","tag":"link","label":"privacy_link_subfooter_footer"}" href="https://docs.github.com/site-policy/privacy-policies/github-privacy-statement">Privacy</a> (<a href="https://github.com/github/site-policy/pull/582" class="Link--secondary">Updated <time datetime="2022-08">02/2024</time></a>) </li> <li class="mx-2"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"sitemap","context":"subfooter","tag":"link","label":"sitemap_link_subfooter_footer"}" href="/sitemap">Sitemap</a> </li> <li class="mx-2"> <a class="Link--secondary" data-analytics-event="{"location":"footer","action":"what_is_git","context":"subfooter","tag":"link","label":"what_is_git_link_subfooter_footer"}" href="/git-guides">What is Git?</a> </li> <li class="mx-2" > <cookie-consent-link> <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{"location":"footer","action":"cookies","context":"subfooter","tag":"link","label":"cookies_link_subfooter_footer"}" > Manage cookies </button> </cookie-consent-link> </li> <li class="mx-2"> <cookie-consent-link> <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{"location":"footer","action":"dont_share_info","context":"subfooter","tag":"link","label":"dont_share_info_link_subfooter_footer"}" > Do not share my personal information </button> </cookie-consent-link> </li> </ul> </nav> <nav aria-label="GitHub's Social Media Links" class="mt-3 mt-md-0"> <ul class="list-style-none d-flex flex-items-center lh-condensed-ultra"> <li class="ml-md-3"> <a href="https://x.com/github" class="footer-social-icon d-block Link--outlineOffset" data-analytics-event="{"category":"Footer","action":"go to X","label":"text:text:x"}"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 1227" fill="currentColor" aria-hidden="true" class="d-block" width="16" height="16"><path d="M714.163 519.284 1160.89 0h-105.86L667.137 450.887 357.328 0H0l468.492 681.821L0 1226.37h105.866l409.625-476.152 327.181 476.152H1200L714.137 519.284h.026ZM569.165 687.828l-47.468-67.894-377.686-540.24h162.604l304.797 435.991 47.468 67.894 396.2 566.721H892.476L569.165 687.854v-.026Z"></path></svg> <span class="sr-only">GitHub on X</span> </a> </li> <li class="ml-3"> <a href="https://www.facebook.com/GitHub" class="footer-social-icon d-block Link--outlineOffset" data-analytics-event="{"category":"Footer","action":"go to Facebook","label":"text:text:facebook"}"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15.3 15.4" aria-hidden="true" class="d-block" width="18" height="18"><path d="M14.5 0H.8a.88.88 0 0 0-.8.9v13.6a.88.88 0 0 0 .8.9h7.3v-6h-2V7.1h2V5.4a2.87 2.87 0 0 1 2.5-3.1h.5a10.87 10.87 0 0 1 1.8.1v2.1h-1.3c-1 0-1.1.5-1.1 1.1v1.5h2.3l-.3 2.3h-2v5.9h3.9a.88.88 0 0 0 .9-.8V.8a.86.86 0 0 0-.8-.8z" fill="currentColor"></path></svg> <span class="sr-only">GitHub on Facebook</span> </a> </li> <li class="ml-3"> <a href="https://www.linkedin.com/company/github" class="footer-social-icon d-block Link--outlineOffset" data-analytics-event="{"category":"Footer","action":"go to Linkedin","label":"text:text:linkedin"}"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19 18" aria-hidden="true" class="d-block" width="19" height="18"><path d="M3.94 2A2 2 0 1 1 2 0a2 2 0 0 1 1.94 2zM4 5.48H0V18h4zm6.32 0H6.34V18h3.94v-6.57c0-3.66 4.77-4 4.77 0V18H19v-7.93c0-6.17-7.06-5.94-8.72-2.91z" fill="currentColor"></path></svg> <span class="sr-only">GitHub on LinkedIn</span> </a> </li> <li class="ml-3"> <a href="https://www.youtube.com/github" class="footer-social-icon d-block Link--outlineOffset" data-analytics-event="{"category":"Footer","action":"go to YouTube","label":"text:text:youtube"}"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 19.17 13.6" aria-hidden="true" class="d-block" width="23" height="16"><path d="M18.77 2.13A2.4 2.4 0 0 0 17.09.42C15.59 0 9.58 0 9.58 0a57.55 57.55 0 0 0-7.5.4A2.49 2.49 0 0 0 .39 2.13 26.27 26.27 0 0 0 0 6.8a26.15 26.15 0 0 0 .39 4.67 2.43 2.43 0 0 0 1.69 1.71c1.52.42 7.5.42 7.5.42a57.69 57.69 0 0 0 7.51-.4 2.4 2.4 0 0 0 1.68-1.71 25.63 25.63 0 0 0 .4-4.67 24 24 0 0 0-.4-4.69zM7.67 9.71V3.89l5 2.91z" fill="currentColor"></path></svg> <span class="sr-only">GitHub on YouTube</span> </a> </li> <li class="ml-3"> <a href="https://www.twitch.tv/github" class="footer-social-icon d-block Link--outlineOffset" data-analytics-event="{"category":"Footer","action":"go to Twitch","label":"text:text:twitch"}"> <svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24" aria-hidden="true" class="d-block" width="18" height="18"><title>Twitch</title><path d="M11.571 4.714h1.715v5.143H11.57zm4.715 0H18v5.143h-1.714zM6 0L1.714 4.286v15.428h5.143V24l4.286-4.286h3.428L22.286 12V0zm14.571 11.143l-3.428 3.428h-3.429l-3 3v-3H6.857V1.714h13.714Z" fill="currentColor"></path></svg> <span class="sr-only">GitHub on Twitch</span> </a> </li> <li class="ml-3"> <a href="https://www.tiktok.com/@github" class="footer-social-icon d-block Link--outlineOffset" data-analytics-event="{"category":"Footer","action":"go to tiktok","label":"text:text:tiktok"}"> <svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24" aria-hidden="true" class="d-block" width="18" height="18"><title>TikTok</title><path d="M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z" fill="currentColor"></path></svg> <span class="sr-only">GitHub on TikTok</span> </a> </li> <li class="ml-3"> <a href="https://github.com/github" class="footer-social-icon d-block Link--outlineOffset" data-analytics-event="{"category":"Footer","action":"go to github's org","label":"text:text:github"}"> <svg xmlns="http://www.w3.org/2000/svg" height="20" viewBox="0 0 16 16" width="20" aria-hidden="true" class="d-block"><path fill="currentColor" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg> <span class="sr-only">GitHub’s organization on GitHub</span> </a> </li> </ul> </nav> </div> </div> </footer> <fullstory-capture data-fs-script-domain="https://github.githubassets.com"> </fullstory-capture> <ghcc-consent id="ghcc" class="position-fixed bottom-0 left-0" style="z-index: 999999" data-initial-cookie-consent-allowed="" data-cookie-consent-required="false"></ghcc-consent> <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> You can’t perform that action at this time. </div> <template id="site-details-dialog"> <details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open> <summary role="button" aria-label="Close dialog"></summary> <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal"> <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div class="octocat-spinner my-6 js-details-dialog-spinner"></div> </details-dialog> </details> </template> <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;"> <div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;"> </div> </div> <template id="snippet-clipboard-copy-button"> <div class="zeroclipboard-container position-absolute right-0 top-0"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn js-clipboard-copy m-2 p-0" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> <template id="snippet-clipboard-copy-button-unpositioned"> <div class="zeroclipboard-container"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> </div> <div id="js-global-screen-reader-notice" class="sr-only mt-n1" aria-live="polite" aria-atomic="true" ></div> <div id="js-global-screen-reader-notice-assertive" class="sr-only mt-n1" aria-live="assertive" aria-atomic="true"></div> </body> </html>