diff options
| author | Craig Jennings <c@cjennings.net> | 2024-04-07 13:41:34 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2024-04-07 13:41:34 -0500 |
| commit | 754bbf7a25a8dda49b5d08ef0d0443bbf5af0e36 (patch) | |
| tree | f1190704f78f04a2b0b4c977d20fe96a828377f1 /devdocs/c/numeric%2Fmath%2Fround.html | |
new repository
Diffstat (limited to 'devdocs/c/numeric%2Fmath%2Fround.html')
| -rw-r--r-- | devdocs/c/numeric%2Fmath%2Fround.html | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/devdocs/c/numeric%2Fmath%2Fround.html b/devdocs/c/numeric%2Fmath%2Fround.html new file mode 100644 index 00000000..119c6750 --- /dev/null +++ b/devdocs/c/numeric%2Fmath%2Fround.html @@ -0,0 +1,124 @@ + <h1 id="firstHeading" class="firstHeading">round, roundf, roundl, lround, lroundf, lroundl, llround, llroundf, llroundl</h1> <table class="t-dcl-begin"> <tr class="t-dsc-header"> <th> Defined in header <code><math.h></code> </th> <th> </th> <th> </th> </tr> <tr class="t-dcl t-since-c99"> <td> <pre data-language="c">float roundf( float arg );</pre> +</td> <td> (1) </td> <td> <span class="t-mark-rev t-since-c99">(since C99)</span> </td> </tr> <tr class="t-dcl t-since-c99"> <td> <pre data-language="c">double round( double arg );</pre> +</td> <td> (2) </td> <td> <span class="t-mark-rev t-since-c99">(since C99)</span> </td> </tr> <tr class="t-dcl t-since-c99"> <td> <pre data-language="c">long double roundl( long double arg );</pre> +</td> <td> (3) </td> <td> <span class="t-mark-rev t-since-c99">(since C99)</span> </td> </tr> <tr class="t-dsc-header"> <th> Defined in header <code><tgmath.h></code> </th> <th> </th> <th> </th> </tr> <tr class="t-dcl t-since-c99"> <td> <pre data-language="c">#define round( arg )</pre> +</td> <td> (4) </td> <td> <span class="t-mark-rev t-since-c99">(since C99)</span> </td> </tr> <tr class="t-dsc-header"> <th> Defined in header <code><math.h></code> </th> <th> </th> <th> </th> </tr> <tr class="t-dcl t-since-c99"> <td> <pre data-language="c">long lroundf( float arg );</pre> +</td> <td> (5) </td> <td> <span class="t-mark-rev t-since-c99">(since C99)</span> </td> </tr> <tr class="t-dcl t-since-c99"> <td> <pre data-language="c">long lround( double arg );</pre> +</td> <td> (6) </td> <td> <span class="t-mark-rev t-since-c99">(since C99)</span> </td> </tr> <tr class="t-dcl t-since-c99"> <td> <pre data-language="c">long lroundl( long double arg );</pre> +</td> <td> (7) </td> <td> <span class="t-mark-rev t-since-c99">(since C99)</span> </td> </tr> <tr class="t-dsc-header"> <th> Defined in header <code><tgmath.h></code> </th> <th> </th> <th> </th> </tr> <tr class="t-dcl t-since-c99"> <td> <pre data-language="c">#define lround( arg )</pre> +</td> <td> (8) </td> <td> <span class="t-mark-rev t-since-c99">(since C99)</span> </td> </tr> <tr class="t-dsc-header"> <th> Defined in header <code><math.h></code> </th> <th> </th> <th> </th> </tr> <tr class="t-dcl t-since-c99"> <td> <pre data-language="c">long long llroundf( float arg );</pre> +</td> <td> (9) </td> <td> <span class="t-mark-rev t-since-c99">(since C99)</span> </td> </tr> <tr class="t-dcl t-since-c99"> <td> <pre data-language="c">long long llround( double arg );</pre> +</td> <td> (10) </td> <td> <span class="t-mark-rev t-since-c99">(since C99)</span> </td> </tr> <tr class="t-dcl t-since-c99"> <td> <pre data-language="c">long long llroundl( long double arg );</pre> +</td> <td> (11) </td> <td> <span class="t-mark-rev t-since-c99">(since C99)</span> </td> </tr> <tr class="t-dsc-header"> <th> Defined in header <code><tgmath.h></code> </th> <th> </th> <th> </th> </tr> <tr class="t-dcl t-since-c99"> <td> <pre data-language="c">#define llround( arg )</pre> +</td> <td> (12) </td> <td> <span class="t-mark-rev t-since-c99">(since C99)</span> </td> </tr> </table> <div class="t-li1"> +<span class="t-li">1-3)</span> Computes the nearest integer value to <code>arg</code> (in floating-point format), rounding halfway cases away from zero, regardless of the current rounding mode.</div> <div class="t-li1"> +<span class="t-li">5-7, 9-11)</span> Computes the nearest integer value to <code>arg</code> (in integer format), rounding halfway cases away from zero, regardless of the current rounding mode.</div> <div class="t-li1"> +<span class="t-li">4,8,12)</span> Type-generic macros: If <code>arg</code> has type <code>long double</code>, <code>roundl</code>, <code>lroundl</code>, <code>llroundl</code> is called. Otherwise, if <code>arg</code> has integer type or the type <code>double</code>, <code>round</code>, <code>lround</code>, <code>llround</code> is called. Otherwise, <code>roundf</code>, <code>lroundf</code>, <code>llroundf</code> is called, respectively.</div> <h3 id="Parameters"> Parameters</h3> <table class="t-par-begin"> <tr class="t-par"> <td> arg </td> <td> - </td> <td> floating point value </td> +</tr> +</table> <h3 id="Return_value"> Return value</h3> <p>If no errors occur, the nearest integer value to <code>arg</code>, rounding halfway cases away from zero, is returned.</p> +<div class="t-plot"> <div class="t-plot-left">Return value</div> <div class="t-plot-image-left"><img alt="math-round away zero.svg" src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjwhLS0gQ3JlYXRlZCB3aXRoIG1hdHBsb3RsaWIgKGh0dHA6Ly9tYXRwbG90bGliLnNvdXJjZWZvcmdlLm5ldC8pIC0tPgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIGhlaWdodD0iMjAwcHgiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDIwMCAyMDAiIHdpZHRoPSIyMDBweCI+CiA8ZGVmcz4KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoqe3N0cm9rZS1saW5lY2FwOnNxdWFyZTtzdHJva2UtbGluZWpvaW46cm91bmQ7fQogIDwvc3R5bGU+CiA8L2RlZnM+CiA8ZyBpZD0iZmlndXJlXzEiPgogIDxnIGlkPSJwYXRjaF8xIj4KICAgPHBhdGggZD0iIE0wIDIwMCBMMjAwIDIwMCBMMjAwIDAgTDAgMCB6ICIgc3R5bGU9ImZpbGw6I2ZmZmZmZjsiLz4KICA8L2c+CiAgPGcgaWQ9ImF4ZXNfMSI+CiAgIDxnIGlkPSJwYXRjaF8yIj4KICAgIDxwYXRoIGQ9IiBNMjUgMTc3LjUgTDE4MCAxNzcuNSBMMTgwIDIyLjUgTDI1IDIyLjUgeiAiIHN0eWxlPSJmaWxsOiNmZmZmZmY7Ii8+CiAgIDwvZz4KICAgPGcgaWQ9Im1hdHBsb3RsaWIuYXhpc18xIj4KICAgIDxnIGlkPSJ4dGlja18xIj4KICAgICA8ZyBpZD0ibGluZTJkXzEiPgogICAgICA8cGF0aCBjbGlwLXBhdGg9InVybCgjcDQwZmVjMTE1M2YpIiBkPSIgTTM2LjA3MTQgMTc3LjUgTDM2LjA3MTQgMjIuNSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2UtZGFzaGFycmF5OjEuMDAwMDAwLDMuMDAwMDAwO3N0cm9rZS1kYXNob2Zmc2V0OjAuMDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS13aWR0aDowLjU7Ii8+CiAgICAgPC9nPgogICAgIDxnIGlkPSJsaW5lMmRfMiI+CiAgICAgIDxkZWZzPgogICAgICAgPHBhdGggZD0iIE0wIDAgTDAgLTQiIGlkPSJtMDAxMmRkNGVlZiIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KICAgICAgPC9kZWZzPgogICAgICA8Zz4KICAgICAgIDx1c2Ugc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiIHg9IjM2LjA3MTQyODU3MTQiIHhsaW5rOmhyZWY9IiNtMDAxMmRkNGVlZiIgeT0iMTc3LjUiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgICA8ZyBpZD0ibGluZTJkXzMiPgogICAgICA8ZGVmcz4KICAgICAgIDxwYXRoIGQ9IiBNMCAwIEwwIDQiIGlkPSJtNDc2MzQ0OTY5YyIgc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KICAgICAgPC9kZWZzPgogICAgICA8Zz4KICAgICAgIDx1c2Ugc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiIHg9IjM2LjA3MTQyODU3MTQiIHhsaW5rOmhyZWY9IiNtNDc2MzQ0OTY5YyIgeT0iMjIuNSIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgIDxnIGlkPSJ0ZXh0XzEiPgogICAgICA8IS0tIOKIkjMgLS0+CiAgICAgIDxkZWZzPgogICAgICAgPHBhdGggZD0iIE00MC41NzgxIDM5LjMxMjUgUTQ3LjY1NjIgMzcuNzk2OSA1MS42MjUgMzMgUTU1LjYwOTQgMjguMjE4OCA1NS42MDk0IDIxLjE4NzUgUTU1LjYwOTQgMTAuNDA2MiA0OC4xODc1IDQuNDg0MzggUTQwLjc2NTYgLTEuNDIxODggMjcuMDkzOCAtMS40MjE4OCBRMjIuNTE1NiAtMS40MjE4OCAxNy42NTYyIC0wLjUxNTYyNSBRMTIuNzk2OSAwLjM5MDYyNSA3LjYyNSAyLjIwMzEyIEw3LjYyNSAxMS43MTg4IFExMS43MTg4IDkuMzI4MTIgMTYuNTkzOCA4LjEwOTM4IFEyMS40ODQ0IDYuODkwNjIgMjYuODEyNSA2Ljg5MDYyIFEzNi4wNzgxIDYuODkwNjIgNDAuOTM3NSAxMC41NDY5IFE0NS43OTY5IDE0LjIwMzEgNDUuNzk2OSAyMS4xODc1IFE0NS43OTY5IDI3LjY0MDYgNDEuMjgxMiAzMS4yNjU2IFEzNi43NjU2IDM0LjkwNjIgMjguNzE4OCAzNC45MDYyIEwyMC4yMTg4IDM0LjkwNjIgTDIwLjIxODggNDMuMDE1NiBMMjkuMTA5NCA0My4wMTU2IFEzNi4zNzUgNDMuMDE1NiA0MC4yMzQ0IDQ1LjkyMTkgUTQ0LjA5MzggNDguODI4MSA0NC4wOTM4IDU0LjI5NjkgUTQ0LjA5MzggNTkuOTA2MiA0MC4xMDk0IDYyLjkwNjIgUTM2LjE0MDYgNjUuOTIxOSAyOC43MTg4IDY1LjkyMTkgUTI0LjY1NjIgNjUuOTIxOSAyMC4wMTU2IDY1LjAzMTIgUTE1LjM3NSA2NC4xNTYyIDkuODEyNSA2Mi4zMTI1IEw5LjgxMjUgNzEuMDkzOCBRMTUuNDM3NSA3Mi42NTYyIDIwLjM0MzggNzMuNDM3NSBRMjUuMjUgNzQuMjE4OCAyOS41OTM4IDc0LjIxODggUTQwLjgyODEgNzQuMjE4OCA0Ny4zNTk0IDY5LjEwOTQgUTUzLjkwNjIgNjQuMDE1NiA1My45MDYyIDU1LjMyODEgUTUzLjkwNjIgNDkuMjY1NiA1MC40Mzc1IDQ1LjA5MzggUTQ2Ljk2ODggNDAuOTIxOSA0MC41NzgxIDM5LjMxMjUiIGlkPSJEZWphVnVTYW5zLTMzIi8+CiAgICAgICA8cGF0aCBkPSIgTTEwLjU5MzggMzUuNSBMNzMuMTg3NSAzNS41IEw3My4xODc1IDI3LjIwMzEgTDEwLjU5MzggMjcuMjAzMSB6ICIgaWQ9IkRlamFWdVNhbnMtMjIxMiIvPgogICAgICA8L2RlZnM+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMwLjI3NDg2NjA3MTQgMTkxLjY3OTY4NzUpc2NhbGUoMC4wOSAtMC4wOSkiPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0yMjEyIi8+CiAgICAgICA8dXNlIHg9IjgzLjc4OTA2MjUiIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMzIi8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyBpZD0ieHRpY2tfMiI+CiAgICAgPGcgaWQ9ImxpbmUyZF80Ij4KICAgICAgPHBhdGggY2xpcC1wYXRoPSJ1cmwoI3A0MGZlYzExNTNmKSIgZD0iIE01OC4yMTQzIDE3Ny41IEw1OC4yMTQzIDIyLjUiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLWRhc2hhcnJheToxLjAwMDAwMCwzLjAwMDAwMDtzdHJva2UtZGFzaG9mZnNldDowLjA7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2Utd2lkdGg6MC41OyIvPgogICAgIDwvZz4KICAgICA8ZyBpZD0ibGluZTJkXzUiPgogICAgICA8Zz4KICAgICAgIDx1c2Ugc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiIHg9IjU4LjIxNDI4NTcxNDMiIHhsaW5rOmhyZWY9IiNtMDAxMmRkNGVlZiIgeT0iMTc3LjUiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgICA8ZyBpZD0ibGluZTJkXzYiPgogICAgICA8Zz4KICAgICAgIDx1c2Ugc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiIHg9IjU4LjIxNDI4NTcxNDMiIHhsaW5rOmhyZWY9IiNtNDc2MzQ0OTY5YyIgeT0iMjIuNSIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgIDxnIGlkPSJ0ZXh0XzIiPgogICAgICA8IS0tIOKIkjIgLS0+CiAgICAgIDxkZWZzPgogICAgICAgPHBhdGggZD0iIE0xOS4xODc1IDguMjk2ODggTDUzLjYwOTQgOC4yOTY4OCBMNTMuNjA5NCAwIEw3LjMyODEyIDAgTDcuMzI4MTIgOC4yOTY4OCBRMTIuOTM3NSAxNC4xMDk0IDIyLjYyNSAyMy44OTA2IFEzMi4zMjgxIDMzLjY4NzUgMzQuODEyNSAzNi41MzEyIFEzOS41NDY5IDQxLjg0MzggNDEuNDIxOSA0NS41MzEyIFE0My4zMTI1IDQ5LjIxODggNDMuMzEyNSA1Mi43ODEyIFE0My4zMTI1IDU4LjU5MzggMzkuMjM0NCA2Mi4yNSBRMzUuMTU2MiA2NS45MjE5IDI4LjYwOTQgNjUuOTIxOSBRMjMuOTY4OCA2NS45MjE5IDE4LjgxMjUgNjQuMzEyNSBRMTMuNjcxOSA2Mi43MDMxIDcuODEyNSA1OS40MjE5IEw3LjgxMjUgNjkuMzkwNiBRMTMuNzY1NiA3MS43ODEyIDE4LjkzNzUgNzMgUTI0LjEyNSA3NC4yMTg4IDI4LjQyMTkgNzQuMjE4OCBRMzkuNzUgNzQuMjE4OCA0Ni40ODQ0IDY4LjU0NjkgUTUzLjIxODggNjIuODkwNiA1My4yMTg4IDUzLjQyMTkgUTUzLjIxODggNDguOTIxOSA1MS41MzEyIDQ0Ljg5MDYgUTQ5Ljg1OTQgNDAuODc1IDQ1LjQwNjIgMzUuNDA2MiBRNDQuMTg3NSAzMy45ODQ0IDM3LjY0MDYgMjcuMjE4OCBRMzEuMTA5NCAyMC40NTMxIDE5LjE4NzUgOC4yOTY4OCIgaWQ9IkRlamFWdVNhbnMtMzIiLz4KICAgICAgPC9kZWZzPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1Mi41MDc3MjMyMTQzIDE5MS42Nzk2ODc1KXNjYWxlKDAuMDkgLTAuMDkpIj4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMjIxMiIvPgogICAgICAgPHVzZSB4PSI4My43ODkwNjI1IiB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMiIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgPC9nPgogICAgPGcgaWQ9Inh0aWNrXzMiPgogICAgIDxnIGlkPSJsaW5lMmRfNyI+CiAgICAgIDxwYXRoIGNsaXAtcGF0aD0idXJsKCNwNDBmZWMxMTUzZikiIGQ9IiBNODAuMzU3MSAxNzcuNSBMODAuMzU3MSAyMi41IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS1kYXNoYXJyYXk6MS4wMDAwMDAsMy4wMDAwMDA7c3Ryb2tlLWRhc2hvZmZzZXQ6MC4wO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KICAgICA8L2c+CiAgICAgPGcgaWQ9ImxpbmUyZF84Ij4KICAgICAgPGc+CiAgICAgICA8dXNlIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS13aWR0aDowLjU7IiB4PSI4MC4zNTcxNDI4NTcxIiB4bGluazpocmVmPSIjbTAwMTJkZDRlZWYiIHk9IjE3Ny41Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9ImxpbmUyZF85Ij4KICAgICAgPGc+CiAgICAgICA8dXNlIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS13aWR0aDowLjU7IiB4PSI4MC4zNTcxNDI4NTcxIiB4bGluazpocmVmPSIjbTQ3NjM0NDk2OWMiIHk9IjIyLjUiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgICA8ZyBpZD0idGV4dF8zIj4KICAgICAgPCEtLSDiiJIxIC0tPgogICAgICA8ZGVmcz4KICAgICAgIDxwYXRoIGQ9IiBNMTIuNDA2MiA4LjI5Njg4IEwyOC41MTU2IDguMjk2ODggTDI4LjUxNTYgNjMuOTIxOSBMMTAuOTg0NCA2MC40MDYyIEwxMC45ODQ0IDY5LjM5MDYgTDI4LjQyMTkgNzIuOTA2MiBMMzguMjgxMiA3Mi45MDYyIEwzOC4yODEyIDguMjk2ODggTDU0LjM5MDYgOC4yOTY4OCBMNTQuMzkwNiAwIEwxMi40MDYyIDAgeiAiIGlkPSJEZWphVnVTYW5zLTMxIi8+CiAgICAgIDwvZGVmcz4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzQuNjE1NDI0MTA3MSAxOTEuNTYxNTYyNSlzY2FsZSgwLjA5IC0wLjA5KSI+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTIyMTIiLz4KICAgICAgIDx1c2UgeD0iODMuNzg5MDYyNSIgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzEiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJ4dGlja180Ij4KICAgICA8ZyBpZD0ibGluZTJkXzEwIj4KICAgICAgPHBhdGggY2xpcC1wYXRoPSJ1cmwoI3A0MGZlYzExNTNmKSIgZD0iIE0xMDIuNSAxNzcuNSBMMTAyLjUgMjIuNSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2UtZGFzaGFycmF5OjEuMDAwMDAwLDMuMDAwMDAwO3N0cm9rZS1kYXNob2Zmc2V0OjAuMDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS13aWR0aDowLjU7Ii8+CiAgICAgPC9nPgogICAgIDxnIGlkPSJsaW5lMmRfMTEiPgogICAgICA8Zz4KICAgICAgIDx1c2Ugc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiIHg9IjEwMi41IiB4bGluazpocmVmPSIjbTAwMTJkZDRlZWYiIHk9IjE3Ny41Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9ImxpbmUyZF8xMiI+CiAgICAgIDxnPgogICAgICAgPHVzZSBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2Utd2lkdGg6MC41OyIgeD0iMTAyLjUiIHhsaW5rOmhyZWY9IiNtNDc2MzQ0OTY5YyIgeT0iMjIuNSIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgIDxnIGlkPSJ0ZXh0XzQiPgogICAgICA8IS0tIDAgLS0+CiAgICAgIDxkZWZzPgogICAgICAgPHBhdGggZD0iIE0zMS43ODEyIDY2LjQwNjIgUTI0LjE3MTkgNjYuNDA2MiAyMC4zMjgxIDU4LjkwNjIgUTE2LjUgNTEuNDIxOSAxNi41IDM2LjM3NSBRMTYuNSAyMS4zOTA2IDIwLjMyODEgMTMuODkwNiBRMjQuMTcxOSA2LjM5MDYyIDMxLjc4MTIgNi4zOTA2MiBRMzkuNDUzMSA2LjM5MDYyIDQzLjI4MTIgMTMuODkwNiBRNDcuMTI1IDIxLjM5MDYgNDcuMTI1IDM2LjM3NSBRNDcuMTI1IDUxLjQyMTkgNDMuMjgxMiA1OC45MDYyIFEzOS40NTMxIDY2LjQwNjIgMzEuNzgxMiA2Ni40MDYyIE0zMS43ODEyIDc0LjIxODggUTQ0LjA0NjkgNzQuMjE4OCA1MC41MTU2IDY0LjUxNTYgUTU2Ljk4NDQgNTQuODI4MSA1Ni45ODQ0IDM2LjM3NSBRNTYuOTg0NCAxNy45Njg4IDUwLjUxNTYgOC4yNjU2MiBRNDQuMDQ2OSAtMS40MjE4OCAzMS43ODEyIC0xLjQyMTg4IFExOS41MzEyIC0xLjQyMTg4IDEzLjA2MjUgOC4yNjU2MiBRNi41OTM3NSAxNy45Njg4IDYuNTkzNzUgMzYuMzc1IFE2LjU5Mzc1IDU0LjgyODEgMTMuMDYyNSA2NC41MTU2IFExOS41MzEyIDc0LjIxODggMzEuNzgxMiA3NC4yMTg4IiBpZD0iRGVqYVZ1U2Fucy0zMCIvPgogICAgICA8L2RlZnM+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwMC4yMzI0MjE4NzUgMTkxLjY3OTY4NzUpc2NhbGUoMC4wOSAtMC4wOSkiPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMCIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgPC9nPgogICAgPGcgaWQ9Inh0aWNrXzUiPgogICAgIDxnIGlkPSJsaW5lMmRfMTMiPgogICAgICA8cGF0aCBjbGlwLXBhdGg9InVybCgjcDQwZmVjMTE1M2YpIiBkPSIgTTEyNC42NDMgMTc3LjUgTDEyNC42NDMgMjIuNSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2UtZGFzaGFycmF5OjEuMDAwMDAwLDMuMDAwMDAwO3N0cm9rZS1kYXNob2Zmc2V0OjAuMDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS13aWR0aDowLjU7Ii8+CiAgICAgPC9nPgogICAgIDxnIGlkPSJsaW5lMmRfMTQiPgogICAgICA8Zz4KICAgICAgIDx1c2Ugc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiIHg9IjEyNC42NDI4NTcxNDMiIHhsaW5rOmhyZWY9IiNtMDAxMmRkNGVlZiIgeT0iMTc3LjUiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgICA8ZyBpZD0ibGluZTJkXzE1Ij4KICAgICAgPGc+CiAgICAgICA8dXNlIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS13aWR0aDowLjU7IiB4PSIxMjQuNjQyODU3MTQzIiB4bGluazpocmVmPSIjbTQ3NjM0NDk2OWMiIHk9IjIyLjUiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgICA8ZyBpZD0idGV4dF81Ij4KICAgICAgPCEtLSAxIC0tPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjIuNjg5NTc1ODkzIDE5MS41NjE1NjI1KXNjYWxlKDAuMDkgLTAuMDkpIj4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzEiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJ4dGlja182Ij4KICAgICA8ZyBpZD0ibGluZTJkXzE2Ij4KICAgICAgPHBhdGggY2xpcC1wYXRoPSJ1cmwoI3A0MGZlYzExNTNmKSIgZD0iIE0xNDYuNzg2IDE3Ny41IEwxNDYuNzg2IDIyLjUiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLWRhc2hhcnJheToxLjAwMDAwMCwzLjAwMDAwMDtzdHJva2UtZGFzaG9mZnNldDowLjA7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2Utd2lkdGg6MC41OyIvPgogICAgIDwvZz4KICAgICA8ZyBpZD0ibGluZTJkXzE3Ij4KICAgICAgPGc+CiAgICAgICA8dXNlIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS13aWR0aDowLjU7IiB4PSIxNDYuNzg1NzE0Mjg2IiB4bGluazpocmVmPSIjbTAwMTJkZDRlZWYiIHk9IjE3Ny41Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9ImxpbmUyZF8xOCI+CiAgICAgIDxnPgogICAgICAgPHVzZSBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2Utd2lkdGg6MC41OyIgeD0iMTQ2Ljc4NTcxNDI4NiIgeGxpbms6aHJlZj0iI200NzYzNDQ5NjljIiB5PSIyMi41Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9InRleHRfNiI+CiAgICAgIDwhLS0gMiAtLT4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTQ0LjcwMzA1ODAzNiAxOTEuNjc5Njg3NSlzY2FsZSgwLjA5IC0wLjA5KSI+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMyIi8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyBpZD0ieHRpY2tfNyI+CiAgICAgPGcgaWQ9ImxpbmUyZF8xOSI+CiAgICAgIDxwYXRoIGNsaXAtcGF0aD0idXJsKCNwNDBmZWMxMTUzZikiIGQ9IiBNMTY4LjkyOSAxNzcuNSBMMTY4LjkyOSAyMi41IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS1kYXNoYXJyYXk6MS4wMDAwMDAsMy4wMDAwMDA7c3Ryb2tlLWRhc2hvZmZzZXQ6MC4wO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KICAgICA8L2c+CiAgICAgPGcgaWQ9ImxpbmUyZF8yMCI+CiAgICAgIDxnPgogICAgICAgPHVzZSBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2Utd2lkdGg6MC41OyIgeD0iMTY4LjkyODU3MTQyOSIgeGxpbms6aHJlZj0iI20wMDEyZGQ0ZWVmIiB5PSIxNzcuNSIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgIDxnIGlkPSJsaW5lMmRfMjEiPgogICAgICA8Zz4KICAgICAgIDx1c2Ugc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiIHg9IjE2OC45Mjg1NzE0MjkiIHhsaW5rOmhyZWY9IiNtNDc2MzQ0OTY5YyIgeT0iMjIuNSIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgIDxnIGlkPSJ0ZXh0XzciPgogICAgICA8IS0tIDMgLS0+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2Ni43NjkyNzQ1NTQgMTkxLjY3OTY4NzUpc2NhbGUoMC4wOSAtMC4wOSkiPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMyIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgPC9nPgogICA8L2c+CiAgIDxnIGlkPSJtYXRwbG90bGliLmF4aXNfMiI+CiAgICA8ZyBpZD0ieXRpY2tfMSI+CiAgICAgPGcgaWQ9ImxpbmUyZF8yMiI+CiAgICAgIDxwYXRoIGNsaXAtcGF0aD0idXJsKCNwNDBmZWMxMTUzZikiIGQ9IiBNMjUgMTY2LjQyOSBMMTgwIDE2Ni40MjkiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLWRhc2hhcnJheToxLjAwMDAwMCwzLjAwMDAwMDtzdHJva2UtZGFzaG9mZnNldDowLjA7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2Utd2lkdGg6MC41OyIvPgogICAgIDwvZz4KICAgICA8ZyBpZD0ibGluZTJkXzIzIj4KICAgICAgPGRlZnM+CiAgICAgICA8cGF0aCBkPSIgTTAgMCBMNCAwIiBpZD0ibWU4YTg1ZjdiZjYiIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS13aWR0aDowLjU7Ii8+CiAgICAgIDwvZGVmcz4KICAgICAgPGc+CiAgICAgICA8dXNlIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS13aWR0aDowLjU7IiB4PSIyNS4wIiB4bGluazpocmVmPSIjbWU4YTg1ZjdiZjYiIHk9IjE2Ni40Mjg1NzE0MjkiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgICA8ZyBpZD0ibGluZTJkXzI0Ij4KICAgICAgPGRlZnM+CiAgICAgICA8cGF0aCBkPSIgTTAgMCBMLTQgMCIgaWQ9Im0xYTMyMDA1ZGVhIiBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2Utd2lkdGg6MC41OyIvPgogICAgICA8L2RlZnM+CiAgICAgIDxnPgogICAgICAgPHVzZSBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2Utd2lkdGg6MC41OyIgeD0iMTgwLjAiIHhsaW5rOmhyZWY9IiNtMWEzMjAwNWRlYSIgeT0iMTY2LjQyODU3MTQyOSIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgIDxnIGlkPSJ0ZXh0XzgiPgogICAgICA8IS0tIOKIkjMgLS0+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUuOTA2ODc1IDE2OS43MDQ0MzA4MDQpc2NhbGUoMC4wOSAtMC4wOSkiPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0yMjEyIi8+CiAgICAgICA8dXNlIHg9IjgzLjc4OTA2MjUiIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMzIi8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyBpZD0ieXRpY2tfMiI+CiAgICAgPGcgaWQ9ImxpbmUyZF8yNSI+CiAgICAgIDxwYXRoIGNsaXAtcGF0aD0idXJsKCNwNDBmZWMxMTUzZikiIGQ9IiBNMjUgMTQ0LjI4NiBMMTgwIDE0NC4yODYiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLWRhc2hhcnJheToxLjAwMDAwMCwzLjAwMDAwMDtzdHJva2UtZGFzaG9mZnNldDowLjA7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2Utd2lkdGg6MC41OyIvPgogICAgIDwvZz4KICAgICA8ZyBpZD0ibGluZTJkXzI2Ij4KICAgICAgPGc+CiAgICAgICA8dXNlIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS13aWR0aDowLjU7IiB4PSIyNS4wIiB4bGluazpocmVmPSIjbWU4YTg1ZjdiZjYiIHk9IjE0NC4yODU3MTQyODYiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgICA8ZyBpZD0ibGluZTJkXzI3Ij4KICAgICAgPGc+CiAgICAgICA8dXNlIHN0eWxlPSJzdHJva2U6IzAwMDAwMDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS13aWR0aDowLjU7IiB4PSIxODAuMCIgeGxpbms6aHJlZj0iI20xYTMyMDA1ZGVhIiB5PSIxNDQuMjg1NzE0Mjg2Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9InRleHRfOSI+CiAgICAgIDwhLS0g4oiSMiAtLT4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi4wODY4NzUgMTQ3LjYyNTU1ODAzNilzY2FsZSgwLjA5IC0wLjA5KSI+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTIyMTIiLz4KICAgICAgIDx1c2UgeD0iODMuNzg5MDYyNSIgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzIiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJ5dGlja18zIj4KICAgICA8ZyBpZD0ibGluZTJkXzI4Ij4KICAgICAgPHBhdGggY2xpcC1wYXRoPSJ1cmwoI3A0MGZlYzExNTNmKSIgZD0iIE0yNSAxMjIuMTQzIEwxODAgMTIyLjE0MyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2UtZGFzaGFycmF5OjEuMDAwMDAwLDMuMDAwMDAwO3N0cm9rZS1kYXNob2Zmc2V0OjAuMDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS13aWR0aDowLjU7Ii8+CiAgICAgPC9nPgogICAgIDxnIGlkPSJsaW5lMmRfMjkiPgogICAgICA8Zz4KICAgICAgIDx1c2Ugc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiIHg9IjI1LjAiIHhsaW5rOmhyZWY9IiNtZThhODVmN2JmNiIgeT0iMTIyLjE0Mjg1NzE0MyIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgIDxnIGlkPSJsaW5lMmRfMzAiPgogICAgICA8Zz4KICAgICAgIDx1c2Ugc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiIHg9IjE4MC4wIiB4bGluazpocmVmPSIjbTFhMzIwMDVkZWEiIHk9IjEyMi4xNDI4NTcxNDMiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgICA8ZyBpZD0idGV4dF8xMCI+CiAgICAgIDwhLS0g4oiSMSAtLT4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNi4wMTY1NjI1IDEyNS40MjM2MzgzOTMpc2NhbGUoMC4wOSAtMC4wOSkiPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0yMjEyIi8+CiAgICAgICA8dXNlIHg9IjgzLjc4OTA2MjUiIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMxIi8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyBpZD0ieXRpY2tfNCI+CiAgICAgPGcgaWQ9ImxpbmUyZF8zMSI+CiAgICAgIDxwYXRoIGNsaXAtcGF0aD0idXJsKCNwNDBmZWMxMTUzZikiIGQ9IiBNMjUgMTAwIEwxODAgMTAwIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS1kYXNoYXJyYXk6MS4wMDAwMDAsMy4wMDAwMDA7c3Ryb2tlLWRhc2hvZmZzZXQ6MC4wO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KICAgICA8L2c+CiAgICAgPGcgaWQ9ImxpbmUyZF8zMiI+CiAgICAgIDxnPgogICAgICAgPHVzZSBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2Utd2lkdGg6MC41OyIgeD0iMjUuMCIgeGxpbms6aHJlZj0iI21lOGE4NWY3YmY2IiB5PSIxMDAuMCIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgIDxnIGlkPSJsaW5lMmRfMzMiPgogICAgICA8Zz4KICAgICAgIDx1c2Ugc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiIHg9IjE4MC4wIiB4bGluazpocmVmPSIjbTFhMzIwMDVkZWEiIHk9IjEwMC4wIi8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9InRleHRfMTEiPgogICAgICA8IS0tIDAgLS0+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyLjk2NDg0Mzc1IDEwMy4yNzU4NTkzNzUpc2NhbGUoMC4wOSAtMC4wOSkiPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMCIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgPC9nPgogICAgPGcgaWQ9Inl0aWNrXzUiPgogICAgIDxnIGlkPSJsaW5lMmRfMzQiPgogICAgICA8cGF0aCBjbGlwLXBhdGg9InVybCgjcDQwZmVjMTE1M2YpIiBkPSIgTTI1IDc3Ljg1NzEgTDE4MCA3Ny44NTcxIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS1kYXNoYXJyYXk6MS4wMDAwMDAsMy4wMDAwMDA7c3Ryb2tlLWRhc2hvZmZzZXQ6MC4wO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KICAgICA8L2c+CiAgICAgPGcgaWQ9ImxpbmUyZF8zNSI+CiAgICAgIDxnPgogICAgICAgPHVzZSBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2Utd2lkdGg6MC41OyIgeD0iMjUuMCIgeGxpbms6aHJlZj0iI21lOGE4NWY3YmY2IiB5PSI3Ny44NTcxNDI4NTcxIi8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9ImxpbmUyZF8zNiI+CiAgICAgIDxnPgogICAgICAgPHVzZSBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2Utd2lkdGg6MC41OyIgeD0iMTgwLjAiIHhsaW5rOmhyZWY9IiNtMWEzMjAwNWRlYSIgeT0iNzcuODU3MTQyODU3MSIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgIDxnIGlkPSJ0ZXh0XzEyIj4KICAgICAgPCEtLSAxIC0tPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMy41OTM0Mzc1IDgxLjEzNzkyNDEwNzEpc2NhbGUoMC4wOSAtMC4wOSkiPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMSIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgPC9nPgogICAgPGcgaWQ9Inl0aWNrXzYiPgogICAgIDxnIGlkPSJsaW5lMmRfMzciPgogICAgICA8cGF0aCBjbGlwLXBhdGg9InVybCgjcDQwZmVjMTE1M2YpIiBkPSIgTTI1IDU1LjcxNDMgTDE4MCA1NS43MTQzIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS1kYXNoYXJyYXk6MS4wMDAwMDAsMy4wMDAwMDA7c3Ryb2tlLWRhc2hvZmZzZXQ6MC4wO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KICAgICA8L2c+CiAgICAgPGcgaWQ9ImxpbmUyZF8zOCI+CiAgICAgIDxnPgogICAgICAgPHVzZSBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2Utd2lkdGg6MC41OyIgeD0iMjUuMCIgeGxpbms6aHJlZj0iI21lOGE4NWY3YmY2IiB5PSI1NS43MTQyODU3MTQzIi8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9ImxpbmUyZF8zOSI+CiAgICAgIDxnPgogICAgICAgPHVzZSBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2Utd2lkdGg6MC41OyIgeD0iMTgwLjAiIHhsaW5rOmhyZWY9IiNtMWEzMjAwNWRlYSIgeT0iNTUuNzE0Mjg1NzE0MyIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgIDxnIGlkPSJ0ZXh0XzEzIj4KICAgICAgPCEtLSAyIC0tPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMy4zMzQ2ODc1IDU5LjA1NDEyOTQ2NDMpc2NhbGUoMC4wOSAtMC4wOSkiPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMiIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgPC9nPgogICAgPGcgaWQ9Inl0aWNrXzciPgogICAgIDxnIGlkPSJsaW5lMmRfNDAiPgogICAgICA8cGF0aCBjbGlwLXBhdGg9InVybCgjcDQwZmVjMTE1M2YpIiBkPSIgTTI1IDMzLjU3MTQgTDE4MCAzMy41NzE0IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS1kYXNoYXJyYXk6MS4wMDAwMDAsMy4wMDAwMDA7c3Ryb2tlLWRhc2hvZmZzZXQ6MC4wO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KICAgICA8L2c+CiAgICAgPGcgaWQ9ImxpbmUyZF80MSI+CiAgICAgIDxnPgogICAgICAgPHVzZSBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2Utd2lkdGg6MC41OyIgeD0iMjUuMCIgeGxpbms6aHJlZj0iI21lOGE4NWY3YmY2IiB5PSIzMy41NzE0Mjg1NzE0Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9ImxpbmUyZF80MiI+CiAgICAgIDxnPgogICAgICAgPHVzZSBzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2Utd2lkdGg6MC41OyIgeD0iMTgwLjAiIHhsaW5rOmhyZWY9IiNtMWEzMjAwNWRlYSIgeT0iMzMuNTcxNDI4NTcxNCIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgIDxnIGlkPSJ0ZXh0XzE0Ij4KICAgICAgPCEtLSAzIC0tPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMy4xODE0MDYyNSAzNi44NDcyODc5NDY0KXNjYWxlKDAuMDkgLTAuMDkpIj4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzMiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgIDwvZz4KICAgPC9nPgogICA8ZyBpZD0ibGluZTJkXzQzIj4KICAgIDxwYXRoIGNsaXAtcGF0aD0idXJsKCNwNDBmZWMxMTUzZikiIGQ9IiBNMjUgMTY2LjQyOSBMNDcuMTQyOSAxNjYuNDI5IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMGZmO3N0cm9rZS13aWR0aDowLjU7Ii8+CiAgIDwvZz4KICAgPGcgaWQ9ImxpbmUyZF80NCI+CiAgICA8cGF0aCBjbGlwLXBhdGg9InVybCgjcDQwZmVjMTE1M2YpIiBkPSIgTTQ3LjE0MjkgMTQ0LjI4NiBMNjkuMjg1NyAxNDQuMjg2IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMGZmO3N0cm9rZS13aWR0aDowLjU7Ii8+CiAgIDwvZz4KICAgPGcgaWQ9ImxpbmUyZF80NSI+CiAgICA8cGF0aCBjbGlwLXBhdGg9InVybCgjcDQwZmVjMTE1M2YpIiBkPSIgTTY5LjI4NTcgMTIyLjE0MyBMOTEuNDI4NiAxMjIuMTQzIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMGZmO3N0cm9rZS13aWR0aDowLjU7Ii8+CiAgIDwvZz4KICAgPGcgaWQ9ImxpbmUyZF80NiI+CiAgICA8cGF0aCBjbGlwLXBhdGg9InVybCgjcDQwZmVjMTE1M2YpIiBkPSIgTTkxLjQyODYgMTAwIEwxMTMuNTcxIDEwMCIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDBmZjtzdHJva2Utd2lkdGg6MC41OyIvPgogICA8L2c+CiAgIDxnIGlkPSJsaW5lMmRfNDciPgogICAgPHBhdGggY2xpcC1wYXRoPSJ1cmwoI3A0MGZlYzExNTNmKSIgZD0iIE0xMTMuNTcxIDc3Ljg1NzEgTDEzNS43MTQgNzcuODU3MSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDBmZjtzdHJva2Utd2lkdGg6MC41OyIvPgogICA8L2c+CiAgIDxnIGlkPSJsaW5lMmRfNDgiPgogICAgPHBhdGggY2xpcC1wYXRoPSJ1cmwoI3A0MGZlYzExNTNmKSIgZD0iIE0xMzUuNzE0IDU1LjcxNDMgTDE1Ny44NTcgNTUuNzE0MyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDBmZjtzdHJva2Utd2lkdGg6MC41OyIvPgogICA8L2c+CiAgIDxnIGlkPSJsaW5lMmRfNDkiPgogICAgPHBhdGggY2xpcC1wYXRoPSJ1cmwoI3A0MGZlYzExNTNmKSIgZD0iIE0xNTcuODU3IDMzLjU3MTQgTDE4MCAzMy41NzE0IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMGZmO3N0cm9rZS13aWR0aDowLjU7Ii8+CiAgIDwvZz4KICAgPGcgaWQ9ImxpbmUyZF81MCI+CiAgICA8cGF0aCBjbGlwLXBhdGg9InVybCgjcDQwZmVjMTE1M2YpIiBkPSIgTTI1IDE2Ni40MjkiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwZmY7Ii8+CiAgICA8ZGVmcz4KICAgICA8cGF0aCBkPSIgTTAgMy43NSBDMC45OTQ1MTIgMy43NSAxLjk0ODQyIDMuMzU0ODggMi42NTE2NSAyLjY1MTY1IEMzLjM1NDg4IDEuOTQ4NDIgMy43NSAwLjk5NDUxMiAzLjc1IDAgQzMuNzUgLTAuOTk0NTEyIDMuMzU0ODggLTEuOTQ4NDIgMi42NTE2NSAtMi42NTE2NSBDMS45NDg0MiAtMy4zNTQ4OCAwLjk5NDUxMiAtMy43NSAwIC0zLjc1IEMtMC45OTQ1MTIgLTMuNzUgLTEuOTQ4NDIgLTMuMzU0ODggLTIuNjUxNjUgLTIuNjUxNjUgQy0zLjM1NDg4IC0xLjk0ODQyIC0zLjc1IC0wLjk5NDUxMiAtMy43NSAwIEMtMy43NSAwLjk5NDUxMiAtMy4zNTQ4OCAxLjk0ODQyIC0yLjY1MTY1IDIuNjUxNjUgQy0xLjk0ODQyIDMuMzU0ODggLTAuOTk0NTEyIDMuNzUgMCAzLjc1IHogIiBpZD0ibWUyNzgwNjQyZTIiIHN0eWxlPSJzdHJva2U6IzAwMDBmZjtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS13aWR0aDowLjU7Ii8+CiAgICA8L2RlZnM+CiAgICA8ZyBjbGlwLXBhdGg9InVybCgjcDQwZmVjMTE1M2YpIj4KICAgICA8dXNlIHN0eWxlPSJmaWxsOiNmZmZmZmY7c3Ryb2tlOiMwMDAwZmY7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2Utd2lkdGg6MC41OyIgeD0iMjUuMCIgeGxpbms6aHJlZj0iI21lMjc4MDY0MmUyIiB5PSIxNjYuNDI4NTcxNDI5Ii8+CiAgICA8L2c+CiAgIDwvZz4KICAgPGcgaWQ9ImxpbmUyZF81MSI+CiAgICA8cGF0aCBjbGlwLXBhdGg9InVybCgjcDQwZmVjMTE1M2YpIiBkPSIgTTQ3LjE0MjkgMTY2LjQyOSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwODAwMDsiLz4KICAgIDxkZWZzPgogICAgIDxwYXRoIGQ9IiBNMCAzLjc1IEMwLjk5NDUxMiAzLjc1IDEuOTQ4NDIgMy4zNTQ4OCAyLjY1MTY1IDIuNjUxNjUgQzMuMzU0ODggMS45NDg0MiAzLjc1IDAuOTk0NTEyIDMuNzUgMCBDMy43NSAtMC45OTQ1MTIgMy4zNTQ4OCAtMS45NDg0MiAyLjY1MTY1IC0yLjY1MTY1IEMxLjk0ODQyIC0zLjM1NDg4IDAuOTk0NTEyIC0zLjc1IDAgLTMuNzUgQy0wLjk5NDUxMiAtMy43NSAtMS45NDg0MiAtMy4zNTQ4OCAtMi42NTE2NSAtMi42NTE2NSBDLTMuMzU0ODggLTEuOTQ4NDIgLTMuNzUgLTAuOTk0NTEyIC0zLjc1IDAgQy0zLjc1IDAuOTk0NTEyIC0zLjM1NDg4IDEuOTQ4NDIgLTIuNjUxNjUgMi42NTE2NSBDLTEuOTQ4NDIgMy4zNTQ4OCAtMC45OTQ1MTIgMy43NSAwIDMuNzUgeiAiIGlkPSJtZTUzYjdiYjZkMiIgc3R5bGU9InN0cm9rZTojMDAwMGZmO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KICAgIDwvZGVmcz4KICAgIDxnIGNsaXAtcGF0aD0idXJsKCNwNDBmZWMxMTUzZikiPgogICAgIDx1c2Ugc3R5bGU9ImZpbGw6IzAwMDBmZjtzdHJva2U6IzAwMDBmZjtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS13aWR0aDowLjU7IiB4PSI0Ny4xNDI4NTcxNDI5IiB4bGluazpocmVmPSIjbWU1M2I3YmI2ZDIiIHk9IjE2Ni40Mjg1NzE0MjkiLz4KICAgIDwvZz4KICAgPC9nPgogICA8ZyBpZD0ibGluZTJkXzUyIj4KICAgIDxwYXRoIGNsaXAtcGF0aD0idXJsKCNwNDBmZWMxMTUzZikiIGQ9IiBNNDcuMTQyOSAxNDQuMjg2IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojZmYwMDAwOyIvPgogICAgPGcgY2xpcC1wYXRoPSJ1cmwoI3A0MGZlYzExNTNmKSI+CiAgICAgPHVzZSBzdHlsZT0iZmlsbDojZmZmZmZmO3N0cm9rZTojMDAwMGZmO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiIHg9IjQ3LjE0Mjg1NzE0MjkiIHhsaW5rOmhyZWY9IiNtZTI3ODA2NDJlMiIgeT0iMTQ0LjI4NTcxNDI4NiIvPgogICAgPC9nPgogICA8L2c+CiAgIDxnIGlkPSJsaW5lMmRfNTMiPgogICAgPHBhdGggY2xpcC1wYXRoPSJ1cmwoI3A0MGZlYzExNTNmKSIgZD0iIE02OS4yODU3IDE0NC4yODYiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMGJmYmY7Ii8+CiAgICA8ZyBjbGlwLXBhdGg9InVybCgjcDQwZmVjMTE1M2YpIj4KICAgICA8dXNlIHN0eWxlPSJmaWxsOiMwMDAwZmY7c3Ryb2tlOiMwMDAwZmY7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2Utd2lkdGg6MC41OyIgeD0iNjkuMjg1NzE0Mjg1NyIgeGxpbms6aHJlZj0iI21lNTNiN2JiNmQyIiB5PSIxNDQuMjg1NzE0Mjg2Ii8+CiAgICA8L2c+CiAgIDwvZz4KICAgPGcgaWQ9ImxpbmUyZF81NCI+CiAgICA8cGF0aCBjbGlwLXBhdGg9InVybCgjcDQwZmVjMTE1M2YpIiBkPSIgTTY5LjI4NTcgMTIyLjE0MyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I2JmMDBiZjsiLz4KICAgIDxnIGNsaXAtcGF0aD0idXJsKCNwNDBmZWMxMTUzZikiPgogICAgIDx1c2Ugc3R5bGU9ImZpbGw6I2ZmZmZmZjtzdHJva2U6IzAwMDBmZjtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS13aWR0aDowLjU7IiB4PSI2OS4yODU3MTQyODU3IiB4bGluazpocmVmPSIjbWUyNzgwNjQyZTIiIHk9IjEyMi4xNDI4NTcxNDMiLz4KICAgIDwvZz4KICAgPC9nPgogICA8ZyBpZD0ibGluZTJkXzU1Ij4KICAgIDxwYXRoIGNsaXAtcGF0aD0idXJsKCNwNDBmZWMxMTUzZikiIGQ9IiBNOTEuNDI4NiAxMjIuMTQzIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojYmZiZjAwOyIvPgogICAgPGcgY2xpcC1wYXRoPSJ1cmwoI3A0MGZlYzExNTNmKSI+CiAgICAgPHVzZSBzdHlsZT0iZmlsbDojMDAwMGZmO3N0cm9rZTojMDAwMGZmO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiIHg9IjkxLjQyODU3MTQyODYiIHhsaW5rOmhyZWY9IiNtZTUzYjdiYjZkMiIgeT0iMTIyLjE0Mjg1NzE0MyIvPgogICAgPC9nPgogICA8L2c+CiAgIDxnIGlkPSJsaW5lMmRfNTYiPgogICAgPHBhdGggY2xpcC1wYXRoPSJ1cmwoI3A0MGZlYzExNTNmKSIgZD0iIE05MS40Mjg2IDEwMCIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDsiLz4KICAgIDxnIGNsaXAtcGF0aD0idXJsKCNwNDBmZWMxMTUzZikiPgogICAgIDx1c2Ugc3R5bGU9ImZpbGw6I2ZmZmZmZjtzdHJva2U6IzAwMDBmZjtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS13aWR0aDowLjU7IiB4PSI5MS40Mjg1NzE0Mjg2IiB4bGluazpocmVmPSIjbWUyNzgwNjQyZTIiIHk9IjEwMC4wIi8+CiAgICA8L2c+CiAgIDwvZz4KICAgPGcgaWQ9ImxpbmUyZF81NyI+CiAgICA8cGF0aCBjbGlwLXBhdGg9InVybCgjcDQwZmVjMTE1M2YpIiBkPSIgTTExMy41NzEgMTAwIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMGZmOyIvPgogICAgPGcgY2xpcC1wYXRoPSJ1cmwoI3A0MGZlYzExNTNmKSI+CiAgICAgPHVzZSBzdHlsZT0iZmlsbDojZmZmZmZmO3N0cm9rZTojMDAwMGZmO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiIHg9IjExMy41NzE0Mjg1NzEiIHhsaW5rOmhyZWY9IiNtZTI3ODA2NDJlMiIgeT0iMTAwLjAiLz4KICAgIDwvZz4KICAgPC9nPgogICA8ZyBpZD0ibGluZTJkXzU4Ij4KICAgIDxwYXRoIGNsaXAtcGF0aD0idXJsKCNwNDBmZWMxMTUzZikiIGQ9IiBNMTEzLjU3MSA3Ny44NTcxIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDA4MDAwOyIvPgogICAgPGcgY2xpcC1wYXRoPSJ1cmwoI3A0MGZlYzExNTNmKSI+CiAgICAgPHVzZSBzdHlsZT0iZmlsbDojMDAwMGZmO3N0cm9rZTojMDAwMGZmO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiIHg9IjExMy41NzE0Mjg1NzEiIHhsaW5rOmhyZWY9IiNtZTUzYjdiYjZkMiIgeT0iNzcuODU3MTQyODU3MSIvPgogICAgPC9nPgogICA8L2c+CiAgIDxnIGlkPSJsaW5lMmRfNTkiPgogICAgPHBhdGggY2xpcC1wYXRoPSJ1cmwoI3A0MGZlYzExNTNmKSIgZD0iIE0xMzUuNzE0IDc3Ljg1NzEiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNmZjAwMDA7Ii8+CiAgICA8ZyBjbGlwLXBhdGg9InVybCgjcDQwZmVjMTE1M2YpIj4KICAgICA8dXNlIHN0eWxlPSJmaWxsOiNmZmZmZmY7c3Ryb2tlOiMwMDAwZmY7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2Utd2lkdGg6MC41OyIgeD0iMTM1LjcxNDI4NTcxNCIgeGxpbms6aHJlZj0iI21lMjc4MDY0MmUyIiB5PSI3Ny44NTcxNDI4NTcxIi8+CiAgICA8L2c+CiAgIDwvZz4KICAgPGcgaWQ9ImxpbmUyZF82MCI+CiAgICA8cGF0aCBjbGlwLXBhdGg9InVybCgjcDQwZmVjMTE1M2YpIiBkPSIgTTEzNS43MTQgNTUuNzE0MyIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwYmZiZjsiLz4KICAgIDxnIGNsaXAtcGF0aD0idXJsKCNwNDBmZWMxMTUzZikiPgogICAgIDx1c2Ugc3R5bGU9ImZpbGw6IzAwMDBmZjtzdHJva2U6IzAwMDBmZjtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS13aWR0aDowLjU7IiB4PSIxMzUuNzE0Mjg1NzE0IiB4bGluazpocmVmPSIjbWU1M2I3YmI2ZDIiIHk9IjU1LjcxNDI4NTcxNDMiLz4KICAgIDwvZz4KICAgPC9nPgogICA8ZyBpZD0ibGluZTJkXzYxIj4KICAgIDxwYXRoIGNsaXAtcGF0aD0idXJsKCNwNDBmZWMxMTUzZikiIGQ9IiBNMTU3Ljg1NyA1NS43MTQzIiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojYmYwMGJmOyIvPgogICAgPGcgY2xpcC1wYXRoPSJ1cmwoI3A0MGZlYzExNTNmKSI+CiAgICAgPHVzZSBzdHlsZT0iZmlsbDojZmZmZmZmO3N0cm9rZTojMDAwMGZmO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiIHg9IjE1Ny44NTcxNDI4NTciIHhsaW5rOmhyZWY9IiNtZTI3ODA2NDJlMiIgeT0iNTUuNzE0Mjg1NzE0MyIvPgogICAgPC9nPgogICA8L2c+CiAgIDxnIGlkPSJsaW5lMmRfNjIiPgogICAgPHBhdGggY2xpcC1wYXRoPSJ1cmwoI3A0MGZlYzExNTNmKSIgZD0iIE0xNTcuODU3IDMzLjU3MTQiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNiZmJmMDA7Ii8+CiAgICA8ZyBjbGlwLXBhdGg9InVybCgjcDQwZmVjMTE1M2YpIj4KICAgICA8dXNlIHN0eWxlPSJmaWxsOiMwMDAwZmY7c3Ryb2tlOiMwMDAwZmY7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2Utd2lkdGg6MC41OyIgeD0iMTU3Ljg1NzE0Mjg1NyIgeGxpbms6aHJlZj0iI21lNTNiN2JiNmQyIiB5PSIzMy41NzE0Mjg1NzE0Ii8+CiAgICA8L2c+CiAgIDwvZz4KICAgPGcgaWQ9ImxpbmUyZF82MyI+CiAgICA8cGF0aCBjbGlwLXBhdGg9InVybCgjcDQwZmVjMTE1M2YpIiBkPSIgTTE4MCAzMy41NzE0IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwOyIvPgogICAgPGcgY2xpcC1wYXRoPSJ1cmwoI3A0MGZlYzExNTNmKSI+CiAgICAgPHVzZSBzdHlsZT0iZmlsbDojZmZmZmZmO3N0cm9rZTojMDAwMGZmO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLXdpZHRoOjAuNTsiIHg9IjE4MC4wIiB4bGluazpocmVmPSIjbWUyNzgwNjQyZTIiIHk9IjMzLjU3MTQyODU3MTQiLz4KICAgIDwvZz4KICAgPC9nPgogICA8ZyBpZD0icGF0Y2hfMyI+CiAgICA8cGF0aCBkPSIgTTI1IDIyLjUgTDE4MCAyMi41IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwOyIvPgogICA8L2c+CiAgIDxnIGlkPSJwYXRjaF80Ij4KICAgIDxwYXRoIGQ9IiBNMTgwIDE3Ny41IEwxODAgMjIuNSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDsiLz4KICAgPC9nPgogICA8ZyBpZD0icGF0Y2hfNSI+CiAgICA8cGF0aCBkPSIgTTI1IDE3Ny41IEwxODAgMTc3LjUiIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7Ii8+CiAgIDwvZz4KICAgPGcgaWQ9InBhdGNoXzYiPgogICAgPHBhdGggZD0iIE0yNSAxNzcuNSBMMjUgMjIuNSIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDsiLz4KICAgPC9nPgogIDwvZz4KIDwvZz4KIDxkZWZzPgogIDxjbGlwUGF0aCBpZD0icDQwZmVjMTE1M2YiPgogICA8cmVjdCBoZWlnaHQ9IjE1NS4wIiB3aWR0aD0iMTU1LjAiIHg9IjI1LjAiIHk9IjIyLjUiLz4KICA8L2NsaXBQYXRoPgogPC9kZWZzPgo8L3N2Zz4K" width="200" height="200"></div> <div class="t-plot-bottom">Argument</div> </div> <p>If a domain error occurs, an implementation-defined value is returned.</p> +<h3 id="Error_handling"> Error handling</h3> <p>Errors are reported as specified in <a href="math_errhandling" title="c/numeric/math/math errhandling">math_errhandling</a>.</p> +<p>If the result of <code>lround</code> or <code>llround</code> is outside the range representable by the return type, a domain error or a range error may occur.</p> +<p>If the implementation supports IEEE floating-point arithmetic (IEC 60559), For the <code>round</code>, <code>roundf</code>, and <code>roundl</code> function:</p> +<ul> +<li> The current <a href="../fenv/fe_round" title="c/numeric/fenv/FE round">rounding mode</a> has no effect. </li> +<li> If <code>arg</code> is ±∞, it is returned, unmodified </li> +<li> If <code>arg</code> is ±0, it is returned, unmodified </li> +<li> If <code>arg</code> is NaN, NaN is returned </li> +</ul> For <code>lround</code> and <code>llround</code> families of functions: <ul> +<li> <code><a href="../fenv/fe_exceptions" title="c/numeric/fenv/FE exceptions">FE_INEXACT</a></code> is never raised </li> +<li> The current <a href="../fenv/fe_round" title="c/numeric/fenv/FE round">rounding mode</a> has no effect. </li> +<li> If <code>arg</code> is ±∞, <code><a href="../fenv/fe_exceptions" title="c/numeric/fenv/FE exceptions">FE_INVALID</a></code> is raised and an implementation-defined value is returned </li> +<li> If the result of the rounding is outside the range of the return type, <code><a href="../fenv/fe_exceptions" title="c/numeric/fenv/FE exceptions">FE_INVALID</a></code> is raised and an implementation-defined value is returned </li> +<li> If <code>arg</code> is NaN, <code><a href="../fenv/fe_exceptions" title="c/numeric/fenv/FE exceptions">FE_INVALID</a></code> is raised and an implementation-defined value is returned </li> +</ul> <h3 id="Notes"> Notes</h3> <p><code><a href="../fenv/fe_exceptions" title="c/numeric/fenv/FE exceptions">FE_INEXACT</a></code> may be (but isn't required to be) raised by <code>round</code> when rounding a non-integer finite value.</p> +<p>The largest representable floating-point values are exact integers in all standard floating-point formats, so <code>round</code> never overflows on its own; however the result may overflow any integer type (including <code><a href="../../types/integer" title="c/types/integer">intmax_t</a></code>), when stored in an integer variable.</p> +<p><a rel="nofollow" class="external text" href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/lround.html">POSIX specifies</a> that all cases where <code>lround</code> or <code>llround</code> raise <code><a href="../fenv/fe_exceptions" title="c/numeric/fenv/FE exceptions">FE_INVALID</a></code> are domain errors.</p> +<p>The <code>double</code> version of <code>round</code> behaves as if implemented as follows:</p> +<div class="c source-c"><pre data-language="c">#include <math.h> +double round(double x) +{ + return signbit(x) ? ceil(x - 0.5) : floor(x + 0.5); +}</pre></div> <h3 id="Example"> Example</h3> <div class="t-example"> <div class="c source-c"><pre data-language="c">#include <stdio.h> +#include <math.h> +#include <fenv.h> +#include <limits.h> + +// #pragma STDC FENV_ACCESS ON + +int main(void) +{ + // round + printf("round(+2.3) = %+.1f ", round(2.3)); + printf("round(+2.5) = %+.1f ", round(2.5)); + printf("round(+2.7) = %+.1f\n", round(2.7)); + printf("round(-2.3) = %+.1f ", round(-2.3)); + printf("round(-2.5) = %+.1f ", round(-2.5)); + printf("round(-2.7) = %+.1f\n", round(-2.7)); + + printf("round(-0.0) = %+.1f\n", round(-0.0)); + printf("round(-Inf) = %+f\n", round(-INFINITY)); + + // lround + printf("lround(+2.3) = %ld ", lround(2.3)); + printf("lround(+2.5) = %ld ", lround(2.5)); + printf("lround(+2.7) = %ld\n", lround(2.7)); + printf("lround(-2.3) = %ld ", lround(-2.3)); + printf("lround(-2.5) = %ld ", lround(-2.5)); + printf("lround(-2.7) = %ld\n", lround(-2.7)); + + printf("lround(-0.0) = %ld\n", lround(-0.0)); + printf("lround(-Inf) = %ld\n", lround(-INFINITY)); // FE_INVALID raised + + // error handling + feclearexcept(FE_ALL_EXCEPT); + printf("lround(LONG_MAX+1.5) = %ld\n", lround(LONG_MAX+1.5)); + if(fetestexcept(FE_INVALID)) puts(" FE_INVALID was raised"); +}</pre></div> <p>Possible output:</p> +<div class="text source-text"><pre data-language="c">round(+2.3) = +2.0 round(+2.5) = +3.0 round(+2.7) = +3.0 +round(-2.3) = -2.0 round(-2.5) = -3.0 round(-2.7) = -3.0 +round(-0.0) = -0.0 +round(-Inf) = -inf +lround(+2.3) = 2 lround(+2.5) = 3 lround(+2.7) = 3 +lround(-2.3) = -2 lround(-2.5) = -3 lround(-2.7) = -3 +lround(-0.0) = 0 +lround(-Inf) = -9223372036854775808 +lround(LONG_MAX+1.5) = -9223372036854775808 + FE_INVALID was raised</pre></div> </div> <h3 id="References"> References</h3> <ul> +<li> C17 standard (ISO/IEC 9899:2018): </li> +<ul> +<li> 7.12.9.6 The round functions (p: 184) </li> +<li> 7.12.9.7 The lround and llround functions (p: 184-185) </li> +<li> 7.25 Type-generic math <tgmath.h> (p: 272-273) </li> +<li> F.10.6.6 The round functions (p: 384) </li> +<li> F.10.6.7 The lround and llround functions (p: 385) </li> +</ul> +<li> C11 standard (ISO/IEC 9899:2011): </li> +<ul> +<li> 7.12.9.6 The round functions (p: 253) </li> +<li> 7.12.9.7 The lround and llround functions (p: 253) </li> +<li> 7.25 Type-generic math <tgmath.h> (p: 373-375) </li> +<li> F.10.6.6 The round functions (p: 527) </li> +<li> F.10.6.7 The lround and llround functions (p: 528) </li> +</ul> +<li> C99 standard (ISO/IEC 9899:1999): </li> +<ul> +<li> 7.12.9.6 The round functions (p: 233) </li> +<li> 7.12.9.7 The lround and llround functions (p: 234) </li> +<li> 7.22 Type-generic math <tgmath.h> (p: 335-337) </li> +<li> F.9.6.6 The round functions (p: 464) </li> +<li> F.9.6.7 The lround and llround functions (p: 464) </li> +</ul> +</ul> <h3 id="See_also"> See also</h3> <table class="t-dsc-begin"> <tr class="t-dsc"> <td> <div><a href="floor" title="c/numeric/math/floor"> <span class="t-lines"><span>floor</span><span>floorf</span><span>floorl</span></span></a></div> +<div><span class="t-lines"><span><span class="t-mark-rev t-since-c99">(C99)</span></span><span><span class="t-mark-rev t-since-c99">(C99)</span></span></span></div> </td> <td> computes largest integer not greater than the given value <br> <span class="t-mark">(function)</span> </td> +</tr> <tr class="t-dsc"> <td> <div><a href="ceil" title="c/numeric/math/ceil"> <span class="t-lines"><span>ceil</span><span>ceilf</span><span>ceill</span></span></a></div> +<div><span class="t-lines"><span><span class="t-mark-rev t-since-c99">(C99)</span></span><span><span class="t-mark-rev t-since-c99">(C99)</span></span></span></div> </td> <td> computes smallest integer not less than the given value <br> <span class="t-mark">(function)</span> </td> +</tr> <tr class="t-dsc"> <td> <div><a href="trunc" title="c/numeric/math/trunc"> <span class="t-lines"><span>trunc</span><span>truncf</span><span>truncl</span></span></a></div> +<div><span class="t-lines"><span><span class="t-mark-rev t-since-c99">(C99)</span></span><span><span class="t-mark-rev t-since-c99">(C99)</span></span><span><span class="t-mark-rev t-since-c99">(C99)</span></span></span></div> </td> <td> rounds to nearest integer not greater in magnitude than the given value <br> <span class="t-mark">(function)</span> </td> +</tr> <tr class="t-dsc"> <td colspan="2"> <span><a href="https://en.cppreference.com/w/cpp/numeric/math/round" title="cpp/numeric/math/round">C++ documentation</a></span> for <code>round</code> </td> +</tr> </table> <div class="_attribution"> + <p class="_attribution-p"> + © cppreference.com<br>Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.<br> + <a href="https://en.cppreference.com/w/c/numeric/math/round" class="_attribution-link">https://en.cppreference.com/w/c/numeric/math/round</a> + </p> +</div> |
