linutil/contributing/index.html

1 line
24 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><link href=../userguide/ rel=prev><link href=../roadmap/ rel=next><link rel=icon href=../assets/favicon.png><meta name=generator content="mkdocs-1.6.0, mkdocs-material-9.5.31"><title>Contributing Guide - Chris Titus LinUtil Official Documentation</title><link rel=stylesheet href=../assets/stylesheets/main.3cba04c6.min.css><link rel=stylesheet href=../assets/stylesheets/palette.06af60db.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#1-install-rust class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=.. title="Chris Titus LinUtil Official Documentation" class="md-header__button md-logo" aria-label="Chris Titus LinUtil Official Documentation" data-md-component=logo> <img src=../assets/favicon.png alt=logo> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> Chris Titus LinUtil Official Documentation </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Contributing Guide </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media=(prefers-color-scheme) data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="m14.3 16-.7-2h-3.2l-.7 2H7.8L11 7h2l3.2 9h-1.9M20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69m-9.15 3.96h2.3L12 9l-1.15 3.65Z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=blue aria-label="Switch to dark mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_2 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=black data-md-color-accent=blue aria-label="Switch to light mode" type=radio name=__palette id=__palette_2> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3 3.19.09m3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95 2.06.05m-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31Z"/></svg> </label> </form> <script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg> </button> </nav> <div class=md-search__suggest data-md-component=search-suggest></div> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href=https://github.com/ChrisTitusTech/linutil title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> </div> <div class=md-source__repository> GitHub </div> </a> </div> </nav> </header> <div style="color: red; text-align: center; padding: 10px; font-size: 20px;"> <strong>Announcement:</strong> This documentation is still in progress. </div> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=.. class=md-tabs__link> Introduction </a> </li> <li class=md-tabs__item> <a href=../userguide/ class=md-tabs__link> User Guide </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href=./ class=md-tabs__link> Contributing </a> </li> <li class=md-tabs__item> <a href=../KnownIssues/ class=md-tabs__link> Documentation </a> </li> <li class=md-tabs__item> <a href=../faq/ class=md-tabs__link> FAQ </a> </li> </ul> </div> </nav> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted md-nav--integrated" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=.. title="Chris Titus LinUtil Official Documentation" class="md-nav__button md-logo" aria-label="Chris Titus LinUtil Official Documentation" data-md-component=logo> <img src=../assets/favicon.png alt=logo> </a> Chris Titus LinUtil Official Documentation </label> <div class=md-nav__source> <a href=https://github.com/ChrisTitusTech/linutil title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg> </div> <div class=md-source__repository> GitHub </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=.. class=md-nav__link> <span class=md-ellipsis> Introduction </span> </a> </li> <li class=md-nav__item> <a href=../userguide/ class=md-nav__link> <span class=md-ellipsis> User Guide </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_3 checked> <label class=md-nav__link for=__nav_3 id=__nav_3_label tabindex> <span class=md-ellipsis> Contributing </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_3_label aria-expanded=true> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> Contributing </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Contributing Guide </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Contributing Guide </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#1-install-rust class=md-nav__link> <span class=md-ellipsis> 1. Install Rust: </span> </a> </li> <li class=md-nav__item> <a href=#2-fork-and-clone-the-repo class=md-nav__link> <span class=md-ellipsis> 2. Fork and Clone the repo </span> </a> </li> <li class=md-nav__item> <a href=#3-make-your-changes class=md-nav__link> <span class=md-ellipsis> 3. Make your changes </span> </a> </li> <li class=md-nav__item> <a href=#4-understand-the-existing-code class=md-nav__link> <span class=md-ellipsis> 4. Understand the existing code </span> </a> </li> <li class=md-nav__item> <a href=#5-learn-from-past-pull-requests-prs class=md-nav__link> <span class=md-ellipsis> 5. Learn from Past Pull Requests (PRs) </span> </a> </li> <li class=md-nav__item> <a href=#6-write-clean-descriptive-commit-messages class=md-nav__link> <span class=md-ellipsis> 6. Write Clean, Descriptive Commit Messages </span> </a> </li> <li class=md-nav__item> <a href=#7-keep-your-pull-requests-prs-small-and-focused class=md-nav__link> <span class=md-ellipsis> 7. Keep Your Pull Requests (PRs) Small and Focused </span> </a> </li> <li class=md-nav__item> <a href=#8-understand-and-test-the-code-you-write class=md-nav__link> <span class=md-ellipsis> 8. Understand and Test the Code You Write </span> </a> </li> <li class=md-nav__item> <a href=#9-code-review-and-feedback class=md-nav__link> <span class=md-ellipsis> 9. Code Review and Feedback </span> </a> </li> <li class=md-nav__item> <a href=#10-contributing-is-more-than-just-code class=md-nav__link> <span class=md-ellipsis> 10. Contributing Is More Than Just Code </span> </a> </li> <li class=md-nav__item> <a href=#11-documentation class=md-nav__link> <span class=md-ellipsis> 11. Documentation </span> </a> </li> <li class=md-nav__item> <a href=#12-license class=md-nav__link> <span class=md-ellipsis> 12. License </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../roadmap/ class=md-nav__link> <span class=md-ellipsis> Roadmap </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4 id=__nav_4_label tabindex=0> <span class=md-ellipsis> Documentation </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_4_label aria-expanded=false> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> Documentation </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../KnownIssues/ class=md-nav__link> <span class=md-ellipsis> Known Issues </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <h1>Contributing Guide</h1> <p>\n\n# Contributing Guidelines for Linutil</p> <p>Thank you for considering contributing to Linutil! We appreciate your effort in helping improve this project. To ensure that your contributions align with the goals and quality standards of Linutil, please follow these guidelines:</p> <h2 id=1-install-rust>1. <strong>Install Rust</strong>:<a class=headerlink href=#1-install-rust title="Permanent link">&para;</a></h2> <p>Make sure you have Rust installed on your machine. You can install it by following the instructions at <a href=https://www.rust-lang.org/tools/install>rust-lang.org</a>.</p> <h2 id=2-fork-and-clone-the-repo>2. <strong>Fork and Clone the repo</strong><a class=headerlink href=#2-fork-and-clone-the-repo title="Permanent link">&para;</a></h2> <ol> <li>Make a fork of the repo in GitHub</li> <li>Clone the fork <code>bash git clone https://github.com/YOUR_USERNAME_HERE/linutil.git cd linutil</code></li> </ol> <h2 id=3-make-your-changes>3. Make your changes<a class=headerlink href=#3-make-your-changes title="Permanent link">&para;</a></h2> <ul> <li><strong>Edit the files you want to change</strong>: Make your changes to the relevant files.</li> <li><strong>Test your changes</strong>: Run <code>cargo run</code> to test your modifications in a local environment and ensure everything works as expected.</li> </ul> <h2 id=4-understand-the-existing-code>4. Understand the existing code<a class=headerlink href=#4-understand-the-existing-code title="Permanent link">&para;</a></h2> <ul> <li><strong>Have a clear reason</strong>: Dont change the way things are done without a valid reason. If you propose an alteration, be prepared to explain why its necessary and how it improves the project.</li> <li><strong>Respect existing conventions</strong>: Changes should align with the existing code style, design patterns, and overall project philosophy. If you want to introduce a new way of doing things, justify it clearly.</li> </ul> <h2 id=5-learn-from-past-pull-requests-prs>5. Learn from Past Pull Requests (PRs)<a class=headerlink href=#5-learn-from-past-pull-requests-prs title="Permanent link">&para;</a></h2> <ul> <li><strong>Check merged PRs</strong>: Reviewing merged pull requests can give you an idea of what kind of contributions are accepted and how they are implemented.</li> <li><strong>Study rejected PRs</strong>: This is especially important as it helps you avoid making similar mistakes or proposing changes that have already been considered and declined.</li> </ul> <h2 id=6-write-clean-descriptive-commit-messages>6. Write Clean, Descriptive Commit Messages<a class=headerlink href=#6-write-clean-descriptive-commit-messages title="Permanent link">&para;</a></h2> <ul> <li><strong>Be descriptive</strong>: Your commit messages should clearly describe what the change does and why it was made.</li> <li><strong>Use the imperative mood</strong>: For example, "Add feature X" or "Fix bug in Y", rather than "Added feature X" or "Fixed bug in Y".</li> <li><strong>Keep commits clean</strong>: Avoid committing a change and then immediately following it with a fix for that change. Instead, amend your commit or squash it if needed.</li> </ul> <h2 id=7-keep-your-pull-requests-prs-small-and-focused>7. Keep Your Pull Requests (PRs) Small and Focused<a class=headerlink href=#7-keep-your-pull-requests-prs-small-and-focused title="Permanent link">&para;</a></h2> <ul> <li><strong>Make small, targeted PRs</strong>: Focus on one feature or fix per pull request. This makes it easier to review and increases the likelihood of acceptance.</li> <li><strong>Avoid combining unrelated changes</strong>: PRs that tackle multiple unrelated issues are harder to review and might be rejected because of a single problem.</li> </ul> <h2 id=8-understand-and-test-the-code-you-write>8. Understand and Test the Code You Write<a class=headerlink href=#8-understand-and-test-the-code-you-write title="Permanent link">&para;</a></h2> <ul> <li><strong>Review your code</strong>: Before submitting your changes, take the time to review your code for readability, efficiency and performance. Consider how your changes affect the project.</li> <li><strong>Avoid using LLMs</strong>: Don't submit AI-generated code without reviewing and testing it first. Ensure that any code you submit is thoroughly understood and meets the project's standards.</li> <li><strong>Testing Requirements</strong>: Failure to conduct testing after multiple requests may result in the closure of your Pull Request.</li> </ul> <h2 id=9-code-review-and-feedback>9. Code Review and Feedback<a class=headerlink href=#9-code-review-and-feedback title="Permanent link">&para;</a></h2> <ul> <li><strong>Expect feedback</strong>: PRs will undergo code review. Be open to feedback and willing to make adjustments as needed.</li> <li><strong>Participate in reviews</strong>: If you feel comfortable, review other contributors' PRs as well. Peer review is a great way to learn and ensure high-quality contributions.</li> </ul> <h2 id=10-contributing-is-more-than-just-code>10. Contributing Is More Than Just Code<a class=headerlink href=#10-contributing-is-more-than-just-code title="Permanent link">&para;</a></h2> <ul> <li><strong>Test the tool</strong>: Running tests and providing feedback on how the tool works in different environments is a valuable contribution.</li> <li><strong>Write well-formed issues</strong>: Clearly describe bugs or problems you encounter, providing as much detail as possible, including steps to reproduce the issue.</li> <li><strong>Propose reasonable feature requests</strong>: When suggesting new features, ensure they fit within the scope, style, and design of the project. Provide clear reasoning and use cases.</li> </ul> <h2 id=11-documentation>11. Documentation<a class=headerlink href=#11-documentation title="Permanent link">&para;</a></h2> <ul> <li><strong>Update the documentation</strong>: If your change affects the functionality, please update the relevant documentation files to reflect this.</li> </ul> <h2 id=12-license>12. License<a class=headerlink href=#12-license title="Permanent link">&para;</a></h2> <ul> <li><strong>Agree to the license</strong>: By contributing to Linutil, you agree that your contributions will be licensed under the project's MIT license.</li> </ul> <p>We appreciate your contributions and look forward to collaborating with you to make Linutil better!</p> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1-2.1-2M12.5 7v5.2l4 2.4-1 1L11 13V7h1.5M11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2v1.8Z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">October 8, 2024</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z"/></svg> Back to top </button> </main> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"base": "..", "features": ["navigation.tabs", "navigation.sections", "toc.integrate", "navigation.top", "search.suggest", "search.highlight", "content.tabs.link", "content.code.annotation", "content.code.copy"], "search": "../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script> <script src=../assets/javascripts/bundle.fe8b6f2b.min.js></script> </body> </html>