From bfb204cba72e9fa47ef85ca9664f025049f3752b Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 4 Sep 2024 20:52:57 +0000 Subject: [PATCH] Deploy Sphinx documentation --- .buildinfo | 4 + .nojekyll | 0 _images/compiler_pipeline.svg | 561 +++ _images/core_dem.png | Bin 0 -> 8509 bytes _images/core_fluid.png | Bin 0 -> 8514 bytes _images/core_graph_capture.png | Bin 0 -> 8913 bytes _images/core_marching_cubes.png | Bin 0 -> 6403 bytes _images/core_mesh.png | Bin 0 -> 16813 bytes _images/core_nvdb.png | Bin 0 -> 34170 bytes _images/core_raycast.png | Bin 0 -> 10539 bytes _images/core_raymarch.png | Bin 0 -> 2132 bytes _images/core_sph.png | Bin 0 -> 19348 bytes _images/core_torch.png | Bin 0 -> 82853 bytes _images/core_wave.png | Bin 0 -> 21345 bytes _images/fem_apic_fluid.png | Bin 0 -> 30515 bytes _images/fem_convection_diffusion.png | Bin 0 -> 5784 bytes _images/fem_diffusion.png | Bin 0 -> 2567 bytes _images/fem_diffusion_3d.png | Bin 0 -> 18518 bytes _images/fem_mixed_elasticity.png | Bin 0 -> 63815 bytes _images/fem_navier_stokes.png | Bin 0 -> 74114 bytes _images/fem_stokes.png | Bin 0 -> 2150 bytes _images/fem_stokes_transfer.png | Bin 0 -> 5528 bytes _images/header.jpg | Bin 0 -> 310191 bytes _images/joint_transforms.png | Bin 0 -> 479613 bytes _images/kernel_jacobian_ad.svg | 1300 ++++++ _images/kernel_jacobian_ad_subset.svg | 902 ++++ _images/optim_bounce.png | Bin 0 -> 9647 bytes _images/optim_cloth_throw.png | Bin 0 -> 9974 bytes _images/optim_diffray.png | Bin 0 -> 6443 bytes _images/optim_drone.png | Bin 0 -> 3992 bytes _images/optim_inverse_kinematics.png | Bin 0 -> 2536 bytes _images/optim_spring_cage.png | Bin 0 -> 4509 bytes _images/optim_trajectory.png | Bin 0 -> 2745 bytes _images/optim_walker.png | Bin 0 -> 60313 bytes _images/profiling_nosync.png | Bin 0 -> 71354 bytes _images/profiling_sync.png | Bin 0 -> 73073 bytes _images/sim_cartpole.png | Bin 0 -> 4322 bytes _images/sim_cloth.png | Bin 0 -> 7838 bytes _images/sim_granular.png | Bin 0 -> 18896 bytes _images/sim_granular_collision_sdf.png | Bin 0 -> 20884 bytes _images/sim_jacobian_ik.png | Bin 0 -> 4630 bytes _images/sim_quadruped.png | Bin 0 -> 7849 bytes _images/sim_rigid_chain.png | Bin 0 -> 856 bytes _images/sim_rigid_contact.png | Bin 0 -> 13720 bytes _images/sim_rigid_force.png | Bin 0 -> 4876 bytes _images/sim_rigid_gyroscopic.png | Bin 0 -> 1717 bytes _images/sim_rigid_soft_contact.png | Bin 0 -> 7063 bytes _images/sim_soft_body.png | Bin 0 -> 2721 bytes _images/tape.svg | 218 + _sources/basics.rst.txt | 313 ++ _sources/configuration.rst.txt | 163 + _sources/debugging.rst.txt | 89 + _sources/faq.rst.txt | 135 + _sources/index.rst.txt | 391 ++ _sources/installation.rst.txt | 142 + _sources/limitations.rst.txt | 142 + _sources/modules/allocators.rst.txt | 262 ++ _sources/modules/concurrency.rst.txt | 590 +++ _sources/modules/devices.rst.txt | 254 ++ _sources/modules/differentiability.rst.txt | 1064 +++++ _sources/modules/fem.rst.txt | 493 +++ _sources/modules/functions.rst.txt | 2181 ++++++++++ _sources/modules/generics.rst.txt | 306 ++ _sources/modules/interoperability.rst.txt | 509 +++ _sources/modules/render.rst.txt | 50 + _sources/modules/runtime.rst.txt | 1197 +++++ _sources/modules/sim.rst.txt | 190 + _sources/modules/sparse.rst.txt | 36 + _sources/profiling.rst.txt | 277 ++ _static/basic.css | 925 ++++ _static/check-solid.svg | 4 + _static/clipboard.min.js | 7 + _static/copy-button.svg | 5 + _static/copybutton.css | 94 + _static/copybutton.js | 248 ++ _static/copybutton_funcs.js | 73 + _static/custom.css | 56 + _static/debug.css | 69 + _static/doctools.js | 156 + _static/documentation_options.js | 13 + _static/file.png | Bin 0 -> 286 bytes _static/language_data.js | 199 + _static/logo-dark-mode.png | Bin 0 -> 8504 bytes _static/logo-light-mode.png | Bin 0 -> 10324 bytes _static/minus.png | Bin 0 -> 90 bytes _static/plus.png | Bin 0 -> 90 bytes _static/pygments.css | 258 ++ _static/scripts/furo-extensions.js | 0 _static/scripts/furo.js | 3 + _static/scripts/furo.js.LICENSE.txt | 7 + _static/scripts/furo.js.map | 1 + _static/searchtools.js | 620 +++ _static/skeleton.css | 296 ++ _static/sphinx_highlight.js | 154 + _static/styles/furo-extensions.css | 2 + _static/styles/furo-extensions.css.map | 1 + _static/styles/furo.css | 2 + _static/styles/furo.css.map | 1 + basics.html | 667 +++ configuration.html | 630 +++ debugging.html | 473 ++ faq.html | 508 +++ genindex.html | 2472 +++++++++++ index.html | 976 +++++ installation.html | 514 +++ limitations.html | 530 +++ modules/allocators.html | 718 +++ modules/concurrency.html | 887 ++++ modules/devices.html | 817 ++++ modules/differentiability.html | 1748 ++++++++ modules/fem.html | 2367 ++++++++++ modules/functions.html | 3325 ++++++++++++++ modules/generics.html | 642 +++ modules/interoperability.html | 1153 +++++ modules/render.html | 1123 +++++ modules/runtime.html | 3019 +++++++++++++ modules/sim.html | 4595 ++++++++++++++++++++ modules/sparse.html | 1093 +++++ objects.inv | Bin 0 -> 7454 bytes profiling.html | 823 ++++ py-modindex.html | 364 ++ search.html | 348 ++ searchindex.js | 1 + 123 files changed, 44756 insertions(+) create mode 100644 .buildinfo create mode 100644 .nojekyll create mode 100644 _images/compiler_pipeline.svg create mode 100644 _images/core_dem.png create mode 100644 _images/core_fluid.png create mode 100644 _images/core_graph_capture.png create mode 100644 _images/core_marching_cubes.png create mode 100644 _images/core_mesh.png create mode 100644 _images/core_nvdb.png create mode 100644 _images/core_raycast.png create mode 100644 _images/core_raymarch.png create mode 100644 _images/core_sph.png create mode 100644 _images/core_torch.png create mode 100644 _images/core_wave.png create mode 100644 _images/fem_apic_fluid.png create mode 100644 _images/fem_convection_diffusion.png create mode 100644 _images/fem_diffusion.png create mode 100644 _images/fem_diffusion_3d.png create mode 100644 _images/fem_mixed_elasticity.png create mode 100644 _images/fem_navier_stokes.png create mode 100644 _images/fem_stokes.png create mode 100644 _images/fem_stokes_transfer.png create mode 100644 _images/header.jpg create mode 100644 _images/joint_transforms.png create mode 100644 _images/kernel_jacobian_ad.svg create mode 100644 _images/kernel_jacobian_ad_subset.svg create mode 100644 _images/optim_bounce.png create mode 100644 _images/optim_cloth_throw.png create mode 100644 _images/optim_diffray.png create mode 100644 _images/optim_drone.png create mode 100644 _images/optim_inverse_kinematics.png create mode 100644 _images/optim_spring_cage.png create mode 100644 _images/optim_trajectory.png create mode 100644 _images/optim_walker.png create mode 100644 _images/profiling_nosync.png create mode 100644 _images/profiling_sync.png create mode 100644 _images/sim_cartpole.png create mode 100644 _images/sim_cloth.png create mode 100644 _images/sim_granular.png create mode 100644 _images/sim_granular_collision_sdf.png create mode 100644 _images/sim_jacobian_ik.png create mode 100644 _images/sim_quadruped.png create mode 100644 _images/sim_rigid_chain.png create mode 100644 _images/sim_rigid_contact.png create mode 100644 _images/sim_rigid_force.png create mode 100644 _images/sim_rigid_gyroscopic.png create mode 100644 _images/sim_rigid_soft_contact.png create mode 100644 _images/sim_soft_body.png create mode 100644 _images/tape.svg create mode 100644 _sources/basics.rst.txt create mode 100644 _sources/configuration.rst.txt create mode 100644 _sources/debugging.rst.txt create mode 100644 _sources/faq.rst.txt create mode 100644 _sources/index.rst.txt create mode 100644 _sources/installation.rst.txt create mode 100644 _sources/limitations.rst.txt create mode 100644 _sources/modules/allocators.rst.txt create mode 100644 _sources/modules/concurrency.rst.txt create mode 100644 _sources/modules/devices.rst.txt create mode 100644 _sources/modules/differentiability.rst.txt create mode 100644 _sources/modules/fem.rst.txt create mode 100644 _sources/modules/functions.rst.txt create mode 100644 _sources/modules/generics.rst.txt create mode 100644 _sources/modules/interoperability.rst.txt create mode 100644 _sources/modules/render.rst.txt create mode 100644 _sources/modules/runtime.rst.txt create mode 100644 _sources/modules/sim.rst.txt create mode 100644 _sources/modules/sparse.rst.txt create mode 100644 _sources/profiling.rst.txt create mode 100644 _static/basic.css create mode 100644 _static/check-solid.svg create mode 100644 _static/clipboard.min.js create mode 100644 _static/copy-button.svg create mode 100644 _static/copybutton.css create mode 100644 _static/copybutton.js create mode 100644 _static/copybutton_funcs.js create mode 100644 _static/custom.css create mode 100644 _static/debug.css create mode 100644 _static/doctools.js create mode 100644 _static/documentation_options.js create mode 100644 _static/file.png create mode 100644 _static/language_data.js create mode 100644 _static/logo-dark-mode.png create mode 100644 _static/logo-light-mode.png create mode 100644 _static/minus.png create mode 100644 _static/plus.png create mode 100644 _static/pygments.css create mode 100644 _static/scripts/furo-extensions.js create mode 100644 _static/scripts/furo.js create mode 100644 _static/scripts/furo.js.LICENSE.txt create mode 100644 _static/scripts/furo.js.map create mode 100644 _static/searchtools.js create mode 100644 _static/skeleton.css create mode 100644 _static/sphinx_highlight.js create mode 100644 _static/styles/furo-extensions.css create mode 100644 _static/styles/furo-extensions.css.map create mode 100644 _static/styles/furo.css create mode 100644 _static/styles/furo.css.map create mode 100644 basics.html create mode 100644 configuration.html create mode 100644 debugging.html create mode 100644 faq.html create mode 100644 genindex.html create mode 100644 index.html create mode 100644 installation.html create mode 100644 limitations.html create mode 100644 modules/allocators.html create mode 100644 modules/concurrency.html create mode 100644 modules/devices.html create mode 100644 modules/differentiability.html create mode 100644 modules/fem.html create mode 100644 modules/functions.html create mode 100644 modules/generics.html create mode 100644 modules/interoperability.html create mode 100644 modules/render.html create mode 100644 modules/runtime.html create mode 100644 modules/sim.html create mode 100644 modules/sparse.html create mode 100644 objects.inv create mode 100644 profiling.html create mode 100644 py-modindex.html create mode 100644 search.html create mode 100644 searchindex.js diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 00000000..a04eb55f --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: fbf87ecf4aa3321a13aa764fc39e2bcd +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/_images/compiler_pipeline.svg b/_images/compiler_pipeline.svg new file mode 100644 index 00000000..64033a34 --- /dev/null +++ b/_images/compiler_pipeline.svg @@ -0,0 +1,561 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_images/core_dem.png b/_images/core_dem.png new file mode 100644 index 0000000000000000000000000000000000000000..aa4fa845b13eb233be1e982c3464030498b7d1d8 GIT binary patch literal 8509 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 literal 0 HcmV?d00001 diff --git a/_images/core_fluid.png b/_images/core_fluid.png new file mode 100644 index 0000000000000000000000000000000000000000..27afe69c6b8f1b2f647ea2f952f33f2dc06c4202 GIT binary patch literal 8514 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 literal 0 HcmV?d00001 diff --git a/_images/core_graph_capture.png b/_images/core_graph_capture.png new file mode 100644 index 0000000000000000000000000000000000000000..225fce7876e54a90075bc90da762ed4bd52b976f GIT binary patch literal 8913 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 literal 0 HcmV?d00001 diff --git a/_images/core_raymarch.png b/_images/core_raymarch.png new file mode 100644 index 0000000000000000000000000000000000000000..433d094ab562c2d2fadbc0485964ab78ac41c2ba GIT binary patch literal 2132 zcmV-a2&?yrP)Px#Hc(7dMcMZMgqEoQ007wa|Am&RgO#Y)^#A_<|FFc- z!`S4}>GO}GvYoKN93CJ_Qdl!NJ$8hUWN>;_R3YL300+EDL_t(|+U?!lx~d=$2H+8p zC7=lRf3pjJDl|33L9r*!_OlQ2T{CW}CLvt+k99rpnOQi-07Slr4FT#tp5tv5xfdb-Oy|1St(!7`@2avRr@p z2nai=Ad8?@TeIA6`&)~hUXXW=)0FHmgk4pTDaX~uzmynAI*BE_Mpv5W)#L=(Q4p^( zX6UjQ$S7f~R;X);CQ-u`##!Patd@TQvpS|BvBTAc6%i0NFx;rnBxR||kY}l zesH|zvJE*l8oN=I6^IglNX{1_3jU@Ngb9KMA)569Racdej=(wPE0AeL z+=M?WF}iKB9Hj9GuK}OtI)bF^9B2h0t>hFar6CX{F(pQ07KGG%X{^L=&F7Nn3D2BE z;}&EGWI+;J6Jt9FUO_6p3*xQqkL-$CPnfaRVmdV631Q=|@iibqQW^)*8n3Y$L3cx# zs%DgGXM4FlLI<&k1u;AV!b(<)1MTG&t)j08o}(2s2C`6=Ds;cXy4{27OM=%}L{YjT z`3UJIi*KP}6!!e<=ucN3Y1Y4^5#8kuLkK_KK=!?55F4webVCx7TJOpF z3g_`1+I+VR<0L_BEX$KXyqVK|tl=fWDCs8&=29r>VF=q?_SEpE*}d0+Sw%#dVuGwl zVj+)N;@%uk7{_Gi53aQk8>{9R5Vl+d?k=9X7l7xOltdslRylPXgRqexhd%NFOA^k~ zO!O5=7^I)gJ;D8@`I2A`0YGdlE$MNH*GF_i@Gik?tX5F^Q36{X1oJK+_NHyf{Z#K0mxE${gl?+1pz7wIwO>&@7k`7`a;gBl0zgoxO zl*U66#nw)W?wV?+V+KhTTd((x)u&IbT3hWk%p^TTB!;+`6KeIN-KI5_n;LK&k}$UX zvdG%ZzqHjf+SFn=8=wdfbq1t61n7?Fnd!d^VU6iNH5$Gj6Az&ih=sGpa2mkJYo8o& zU_cVbRw(k21cuKZz63%9+*dMzRB-!}3=s7#5DT~OEg<>C)}fLB$tSiDAeqD#9EVhJ z_mYed^(~N0V(WkeNKUbJ9Fj?F9fvgH?!5&htJsQ$$OnYMttDJMAok{v>H*R8-jMnM zY2=+t!limb#I1WvFd&)5R$N7@@(IZ%wjgSXydd_*5I03$kZfWLqNd0Tl22?w#1tt! zh`2GN_8|Gh7DP;uqIf~_i7nVaMSO_8EyPU`ACgaO?S`lcB%|1Zol}HOA>yvRC5j0o zquAQ{oq=iwQE*dw%ok7%fEma@8W$FxKu3?Dk@Qq(*kPFVX_AKAwkkfZt@@Pw~K+gSa zfg`lk3gpDtI+C>k5OrSG#w~oI5OZEjl?CRQL(<0_<)G9!lsEFr;1^8D3O*Gqsz#ulBlRGttO+EQia5EHU|mwWHb zegR}Nwz{lUF}Ik%0J0ui!{;$;)womwBs{i;9bxoc|Iddk#ui=3+MFScHk#Di%Xj{e zM%%JrW*%Gf_xq8yQ*>9N{n+AxEtLtRd&=|k0V(zsTj4F01*Fx+f6PmvMMO(o z4(Xp#JsnnTFW*^0Ou6(p+U?~#M+ub6kGNn_)wmME(8mvQX#4{ef)#d#MVm?h0000< KMNUMnLSTY|^x?k% literal 0 HcmV?d00001 diff --git a/_images/core_sph.png b/_images/core_sph.png new file mode 100644 index 0000000000000000000000000000000000000000..02392566daa55743a5d288179cbc4d963986c216 GIT binary patch literal 19348 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 Tsg61n00000NkvXXu0mjfLp_Gr literal 0 HcmV?d00001 diff --git a/_images/core_torch.png b/_images/core_torch.png new file mode 100644 index 0000000000000000000000000000000000000000..d05efe38fa2010600a591c7e5ebd5478722f46c8 GIT binary patch literal 82853 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%0DCm0X5q`lBSJgdE6>J^`)w7$X)>k&npfK#M~p1 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 literal 0 HcmV?d00001 diff --git a/_images/core_wave.png b/_images/core_wave.png new file mode 100644 index 0000000000000000000000000000000000000000..da9b2582a570197940bc79a9fff5fc54b4ba3701 GIT binary patch literal 21345 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 literal 0 HcmV?d00001 diff --git a/_images/fem_apic_fluid.png b/_images/fem_apic_fluid.png new file mode 100644 index 0000000000000000000000000000000000000000..619d010f6430e062201d1bbe472b5ee1a01b8c23 GIT binary patch literal 30515 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

!C}1QfHwGmhDwU!|`7& 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 Pb4`@um>hNq77qOn-i~3> literal 0 HcmV?d00001 diff --git a/_images/joint_transforms.png b/_images/joint_transforms.png new file mode 100644 index 0000000000000000000000000000000000000000..d39d15336b282345b653aee0ef67115a967c076e GIT binary patch literal 479613 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

G7Q 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≥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 |J9Ft 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 F{uctL%I*LF literal 0 HcmV?d00001 diff --git a/_images/kernel_jacobian_ad.svg b/_images/kernel_jacobian_ad.svg new file mode 100644 index 00000000..beff1a3e --- /dev/null +++ b/_images/kernel_jacobian_ad.svg @@ -0,0 +1,1300 @@ + + + + + + + + 2024-06-10T12:09:07.177123 + image/svg+xml + + + Matplotlib v3.8.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_images/kernel_jacobian_ad_subset.svg b/_images/kernel_jacobian_ad_subset.svg new file mode 100644 index 00000000..ee017900 --- /dev/null +++ b/_images/kernel_jacobian_ad_subset.svg @@ -0,0 +1,902 @@ + + + + + + + + 2024-06-10T14:54:41.664662 + image/svg+xml + + + Matplotlib v3.8.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_images/optim_bounce.png b/_images/optim_bounce.png new file mode 100644 index 0000000000000000000000000000000000000000..a7362b794bfdc00b8ed9e967ba5073d3cbfb009b GIT binary patch literal 9647 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 lA|SH^A3K9Sw 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 pAoU-t?;Ucd4l(`zS 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 y1WCDmt=wb_s|)@(uV3h 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 literal 0 HcmV?d00001 diff --git a/_images/optim_trajectory.png b/_images/optim_trajectory.png new file mode 100644 index 0000000000000000000000000000000000000000..017e5972c069e54e4bbf57ffbbdc7338b1c1f322 GIT binary patch literal 2745 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 z z7UZYRy|_R@4Esw8y^E=P9DViBK~Lg;w5tDe!6xd?p~_fEa=)(BWfMEA&qEiFD#1#j zg|kSzJ^ov>*ki)H_#O2)Y`JHx=2R!f;q!5?lqj5+TQ8 zBX)az+h*QQ@$SWdo`<}|EO{}Wb7HZC6iIr2y0J;aqku%eOueRseb&b^J|o#@9dAwn zHWNr|pdzE-+e_Gu)SWp+v7J!?hEE#M11mXq9zj22BeN5?O_HzNq&FI0=G1(*{UK`I zeg^R)f@3?U_XA;HTL~sHQDDc}=?SeQ8?jJ6U~I_e95(F!qJ-+}C&s3Pn6o?ovghE1 ze|%+&5=C$J%c4!AFVQ`I|E1M-!jiSB&`TtoMRbr;uQmiI*>%vD7~cEH@jv7`LLTT^ zLg;z;x3K^D44K-6G*eJgwkJ46z3>Iox_4`~RJuJ5dGv@$3bVH+8OSZ?%bR>~&~O-$ zzV>41)2UlNA`4R9(BIcfAdh7v$pd=#k+jEl6c0har}W+ZjVdO5mzcQ6nprsB_MsS-;R*SWv+1eNlgc+RW16&Cnu{cHGLLialpML${rm{_<0^;T?)KG8BN1f`4-}lHbK~uUA=J+qpx99uhlrn1D^^!1{zrsU2 zm$X;JC~bhcf|d}gNWW<%u0r8`bCRCfVW?xVz73a5VSiDm;udd72crfTWYB1 zuQ3~0exIo0mp4hKKA@}zX}f`r4&{tyPw|YNpu-Nnq(^a^KcMGIE&acld~rXLCBm}T z@1euPfI56nPojTf1;N#W`Xf*n6UU2L+zOQSD#rq75{}GRu()Fxo~DyXvcGGDV<jo3qcOYe^O%9h-3DE6j^)Op|@a0nZQ6XndBc#zM}_h7V%V(r(U;g?42S0>P25TxV_AU+S#y&J&m8_ zxz_Kqfxj0QQl~NQQcu}zC#=4_XyM>JSNy#;e(OYYVK`iVYFPEVXpfuuo!|euosC&p zUBkwCapNSDBU5ukP=|?Vk0wX@QADzZEiB;6DrYJ69Qn3o9F~xNdUW@%H`&VzmVcd9 z(ZCxbbespL{_}CUIrj!|WEC%($1y7;Jpst!bU|2MwDyMxV#j{K?>O>ZNLNAulTl=6 zZ_bn{r@T_-rhPHRj37Z-zgOS^(@!bBs>d@PYK8Vs(T?{c*;Hh}gVWl<)l0@!DmoK+ zUm^(mIyQA9tI4wGiLx!TmFR*%KO)bA@_wa!+a>mb#U%1pc0lI%?NK19Zj zPs0np114tU<2nLxo}3ykTN#BDKEJvjj`|7fdD?4L@{e4L&s5FlT`REjjvG6Npet}# zu!csI40!C1KaIr$kIj-R^b?cim(NnMtu*}6B~d!b)ko{zPlN8^2%`O?39TO)bAda< zJ;aWqdww}NO`jxnEC$KM6>n+1B*QF~p~0&bMpnPjSc{+f?Mz!MYs6Mx>{ z=I%Z=_~=3OVr~C^fK85yB*je)du2RrxKDj<>yB(#EWZch*S>qnwtf@^5o*Islc?sb z>ovQ9LP^96vi+fVFjWoDG!^t44-V2>&O8ueU(_v zmRo}OeNzMCWI|BySo$|F(pDIsdtBrpWyU(-PR965w(S9=v?#CNouB!&dE;LE@x1+6 zOeW%|4vyuEkpiO`&Cu&@ksbWuA@{6o!ve=T@a<*G`D$&Pr&N_neI_7W=$Jxq-Y-GD z8%43-_sL!nl-#i_z7vv6PxqZVP7u&t$I(0oRPT60y@H1iM3F`}d9qW$_y3H4TSS)D zyu;qzK(b#rsx&6xp97)TkyytK7C38I1%3{-&+MaCA*v17!yh?SoX1@$cgaBJFs1u= zl4*rQhkQft!G7Zf(VgUTdAUYkafJbF0k;D^@uA6B4}8>bxA83&Y)NDvxOb$xX=&no z?o~@)TX;LGGpc3w9WT{eE1P8oerxdG9-uE?0rCGFWF$44Tl^UhG-x@pM1?edOhAsU z7o8u@Uxh6SG)cpB4>9WmM;L+#Dm?ypv+UcOKH2IGqF9D3NoK7R=ywWSzaZn@;kKgN z-$joKMI*IX+#AU7a)y@aIOQ7!V9(w-pMR8^q~j*fzgldF?*HP!pKyt<)yUcO9-cDh zb;4WyM8>x0hB1$&oiNvHwe_=o8*7H*|ga=fht%DLK#t&8io2%S`%^spSF* zu`zp54#0+u$+Yn=^OF<9@RVFj)*fgl1{Fxq+6TbU!Tnl44j{=K_qGwytIa@@*7V*56Aqc&#HlpVHA7i*%_Dd>XN`l@8vRyPZI z?LIt|AQgtmS50~0S0b$OIt?~oDGkR zIC=;dG+|)HpW|S4IrJAn4tiu{x>>-qL63O+i?vonU^Y|oI8QUFSC2nI+NsI6x?##+ z+-}8-gq@X$>MTGHyj^zuI^#VQ*S2`Evs2DhVTASxF!3H_6~?Ri_V&>NRXR6~%uM;M z>H78$SbN5>yJUu3@r*olB}N;tkNh;yAFUl21c#MthNi(CK2_+5@ilz=UORHdyva6F#?g%c{zLI3QuK_agrsV6k4XTmNr>U)8(b@F5# z@mI1Nch>@Gr%gC&b5;qve41!F$H+gmieA~1EmhI=s(Dwe||y4hlL z>5XA5w)=Z4_1}LncN28=vy3~)RT}3a6LR6E5-NZFF>{@=>m;sJV7knt-%r20P#d@# z7YkvtYnp8@gh=t(TkzCuRbSIo-#*;Qgjb`Hlwdfhdaw@HmoDJh45%WW<74`gDnd7{ z-%vjS#|dFxU}%)}xowoTP;4Z}t07YG?=U$qlr9jD+3@!KqNsRW-@D+o#IO;Fq8(pF zSQ~c6(hvH|IBoD;W2v0MXd#3wN+(2I{KZ04Z#-2FRi5jmrMFxw+Dz=MvwF6MT&8}g zs4HB^Ud{)aarA1e>hmv{p4_bp5NLO|jT0+oMUz&~dJ1*^_kf&q7m^kSU{ec_Jv1fv zpAqEr=ol@2=%cY<0B`8SwxG)QfZq2VA_WcW$H}^OK$xIO&M=iwMrVNMB>9V(U#;cw0#zy zV>q~KE`A$QBCU%QN|I^?_x<4|Cm4|M6-5o`eM%{|rx07c3G*HlWLB~HyMX~0>o>#eX$6v(Q&;>c6hLbz23(}70StUFv-(UPdxEN!z2_ZIhR&?DjVgRu20A&k7Bfm*Pq8tNmWS7 zPt!}o4{1MYm4NeY1?UH>#6w9RX8oOsD~>XUIn9bXILlEEd>W9V=>456|#DcL0~vR)he-=NKN9EXSUChO#X3!+5GcE zDumhpCzsp?21F~sguaZEMXU@1*QKeC3Hi3MB9r)c--NPgGcjSBXlpfFT7Y#d;Cp^z z@_q7iO(nC81xwykHHb10w0)jdJdoaT4zkaRj?5!izub$xvh_m`8>nEq&01Osza8Nz zzXmVh&W*GfqL#7@=o})NeZo%DLfN0Cm?D-fez!}#XR(R^zSlav1#o3Tp$bT~)D8b! zN^;Jnsig4JpB?ZMoehgo zX$Q87QumG|7@I9On8m9(Tpms@xm&N=+}^jQ4YbopvK7Bmu(xD^4-4jBx0IK~;k%7+ z-V+;MU%q}wlw2L6wZ}qc%R!Ts0}*gy7+n3ILNja`P;1ydp`*7SOmgQtxQQJ|bz{Y# zM<522`b{>ss8ur?CkT$*hrrg9M%|~vIo7}V=a%~V%n;V0mD37o@i9E$iQHPXw2iK$ zZE&wVL=7PEEKADirzhZ`+G)_>P9NHp^$W4N_ofm2%j{7VRaRO;9v2NI&XlCoUpET< z8RNtTR*K+43uY6csw;hxMgqg|EhanBeH19bXPjpHYSUuW-<;0fE_Q9Cj9^6d_`P=G zXeA|~yap+#1~psLM^*1%ex9UxT+GeYPhzq8F6QEzj>j=@T`WgE#Hkvv7R6Dk%x*;B z21NVigkEnIzOYM`QUOf=Q~d?*ehI@H)v-rNAL^I>o6cehXEZ!td?OF4<}yAJmf(f7 zwy_y$Gauu|`KrgMK}i@T$=YB+rx%IQwLZ(H)#f2t&Opm6LdH>Y+s%wM6!2#a*_8c9 zr@J67ZhSH~x4$6O7rvtncCu9(l#R~Kx1Nz7*Yg`-SoOEDC(cCUO=UB zW_0kfMZx$}DA0NWtg}}+Y&nlm*xU>C_xGFzUf-*FLm&5PQVA$ttQ@HLIv-LIr8}`G zAb1va8)k39mIFBrSZ`547+B~uqxB;I9N>1N?^2Y==m%gQM*-MJ3`~=^o|MC6YBw4; zuVxo`g9B(eDrb~OxZnGdvpVxnQhPjhQv;BzDa;w5N=i#iMIud)LfZ3)6$pbdmy|#L zTN?(SC}msKcxNI;caLoY7{0aTyhDu(E%s~LE~IczB^7DMpDmo@!Y=^3XMMn5LqlCM zVAK?uN?&X~_QMg}UN9WM^}c3GVHHZ$jPn%$4X%bQ-X8&CuC2mXpbwZ zm)yp=zxW)w9Yc;~V^;dMCZar*wSNO?{mno|W?if3$JV$Hn!|YeiXJRhkF0u>lppfV zP(JHuAC0bn{7UGkUXiVcy^DK)8p*buP9cUi|78l24dU;r%g-%$1|72sqhcdk*#64N4G|DDm74h&bR${=W)0ju47L!j1^67rTZq7DTdAfH($%l}dXzZ&5aU!1N<4 zs5?~#xb6N(|2=b`i`V*6qzfXK3fXs1-FFRR@#u{axK3@-B`1*`~+kl={*nfB6-@@?=7WP)WJ!{j^Be3h~X7I-gWE&gbbzZdOC#H{JpTA?$o9O*{T;t-B zQdE8NzJ}n!%+x+>`K|r3PbTBy1NhfN`F%(R)vF5f>u_aw)<;H42z6FN7W`AMi+2j? zX|PQU=bs;{ms7YCY!S!7KAQ8>!@;3)R}cT~&uJ^4p*iSZyi{vFw|e8?=f9< zEk_cG&XiJQ%)trl+WUkt6I=8``9!o$t%ppzmbwXv6e8KLW+1by-rpvWF&nV=Gbcbz3Y#Q#hH&c#{Gh zOq0T_M(<@DF;eg{LzZ{jwuCMa^I{}Z<>g!*SKUWX$)USJk92ZU#&ea&chop(ImjO` zf+Y+8s!E+E?qO?9l7mU!WZr#66-B^)-r0N=DR%h@YF&iNsSb&bDZ>5CI#ey`j@h7V zN9QoID8Ix)_R)j7vvLnh4mo@qASPS(r9O`oq@;RfoOvHZO6*Yezs}=>{-D zj8i^G@rbvdp{Mq)QOE0Z8itXJ#U7F4u*V|BlrcVWpDOYsS_r(BSmZHT-do}9!{|Y5 zCJ1+%hacXEd8#i6w}x+=0pyRvMQ^a!vn6iEaJDUfh$!(rdE}P{f2|FF7GWxV|^iS&{ADNkOsdxom`u!)7_|0vt94wDqz&ZU7KbIm8v70 z?i?QOp#n3>_PWG-Cl11&Xn4h;OZI#%HCF*>q#Yp#Iwl)pwe{+o(^ZC5ruh;YWCMzm+!H(5B3!7|)Y*YTIygmxrLrp?8Tc*-a35C_J z>%0jiV`i~;)1#{}FQ+xLH*3pG5)f}IbcF<7gse)T^St;UBK>!>QGal@_w%rQCjlm1 zi=X)+Om^F+jt{wifZDv-hqD)20Pe5tgi)Wd&Kf}eE#<66a1^fh%NBcrf;0+)nqo4V>Nj{7pDlm*p_o41{l*_TXPX@qqr_o2Ybws(Ejy%>@w!(ts zZ@~LXboojOo_R)o!4}`!FI;OVS640(?_>$DmBwSNXu>n8DrG3@@_;{HO$NF%ftfAs z@a*@xelR0l1$n>d10Ehk|DA$3Q8>{!qyTNpi6Iw3X2>5f+Ty1XBV4E#iM_T?`0{eU zX`Q_ySydto`-c}*d=4Xo9zi}C2g7ZNN=)$u_{x|Hy1AFN9KY;ZZ80PBW{+bq>+sy5 zd!FkeaVGo*IkD#wI!QP^zXj-30mJS*FY1626Ksps4QF6OU2pHbuHL@FirzC-W)F32 z<__R&eE#4p4{%v1+pzhYDRNE?ww9_CK;J)7&Ewz7Sr+*gyb)bstX=GZJk9FuWzlhy zruGaW8esUeo4Qyid^nQQ@n~0I6us=f*&uQ=UeY*h6D@s-Gxy=2x3}1GW9K4(qJA&f=Y+Z1n&EwRbe>)V9 z=JePSZl~kjO8rg=zgh7da+8R>JH3MR5%|@O!-vQ175wQ`PQcqV&g#(Yfw9});HSpH zWK$N#?(laYRA7z?zV~l#0otK@Nkw)GO#1{o^R&KWem7%Go~SeJQ}d|_Q6?NE{|Vb;3zWdfdYrLrc7iCG`a5AWiPMYZdha6k znK!7F(B|qPIFnIzW__%A^@}w(!ZSTI z;V24iUPE!aRUD$`boUCigoiV!ogGx;RZYL%v)Y0oh!1CY)PUVAm2LAU1711e_hl6 zc0m@(iO<1A(7Q_I2DrwfXP0C?aa@;kFFXyq#%}&CrK1}5;{%NpEbN+M4PViKMS96# z6<0}#{Q^>>CP~bY(q62(4}^c3HR-`t`?-9LzL;!vhgca6Uf#}mpL&QUin-P>9hC@-P^)SV0JI09%tL^c?MzwLikYM%oUN(^g z&|D8$HGCNAc2ey`PUAln|0O3@HTPG+;on&BRdacAJ$ms^$q;b{jYRKSX7Q9SO2zYb zGmGc-upP!=?HNqv_gS*XM#$em+r|G9nnU?zgRH-1O7~E{jo{;J0>-Q-mu&X-6`TiN z$)Rf?p||wF<6YFCy@bjpC}|ZBWw(6VHAGL*=n$on65cvqW<4E}jL2s$R^jin%Nj!g! zJL3}%GZC*+jTH>YuE)W}=L=}RKP3}-FIaV&SrB_`r_YFlbpE@lifl)D#T$2+K0X59 ztGFeMw-$#Shu?FN3+mZ$j+)K3{W|*!)$%-T1RV_YHhn zk6%ZWMC`)-J{0jCYm<$$)eQFoJ1+jj7B7Ui#|uZDvzNf;n_ZU(l>t#08!g3{NkL39 z;Ex52yEKQz_YPq58!=J;6~ZSJkYBUwW$4}y2l(eZ$huen<`+x)@%^M0GBZecio`d= z%lFmyk5C+-N@(YFm0HP?>|L1BqK1}4P^vj$C%UL+ElNo>7G2G;ZG5{OU3<@BG7O-k z3;nRGx(r{I0x#Wk@uG^JZG(nB=E5gDpWT9*RlV4EAN+;)5O^#Wezee=fP80I%F5!s zhcek+hmpU- zKCrp+EwuS>9CCrw&V+Za6k0(NC_S+7Ep&+uUvi^&0wcv*Tm-?EWw)rgO%oEJ=LCWY z@{Cbe>*e4+luGwN!VS`kRP<$GE}Au~PYMV6(6P_)<8gEkSDa%DPXbPy>5t<7d7~#K z46{IL!03~QvE&VKcw{JtlU@~;13WCn`V(=X?;5epCwhsu{|W-`wPIaZ*xBb3%is;)E)I*J{c#FQmAv@E99P^PpbdeiutDRt>REq;2JiUohXI|+4L@mkP) zBZDMu({eeCWp2qV1iFYoS;#Y74dyJ6Aja{&oAlh8nIK6gl>OTXTac$G+l|WWotXEQ3k?&~zJwv- z*8YBR+X42ajs5j)2c@_Kdd~tQy0jltj1B@mJUrY@>#O7AZj}m;?PpK4IF=Ihwur4g zg=eakG{DdDhQ)r5Y05Y5VP;qM629)yIN>f{x$FixfOYR-hV$-GvlhMZE@p*!RCYGb zO`*CFU%~C>l&BdDO_FXMPlK$FycZUn(08d(uVJU-r8;tSKs!05$;UV_usu>pJ#X$= zDfII$3U*XM=1ye9F?IpubpqDG(dTtvU3DYPekc=&xjIor`<*=9%+q)2ZCP-siAR;1 z{P^!l9K6<3Kr2g9w#k3IC#4(0$5B6mG~}FL=D@^ZWX{<-@hUIm$ogC2kdKnR)$rUV z_(THQ4_><(+q^-TWZ}IGc?$}lpI4x3mleccxADvN7xa{a)F)tBdrJh4`NBfoWzIj7 zf=Qh4B@?+dGx!lX=Ee4#-~{I1IpB`9Qn2Hfi+66U1Eadl=S>tVfDnDnTPL9>lS-`B zID6C`zTkl5O}KJLN9TZF`4&ixn!J5r1pZFe(HSxjjgZA(5>(jy+L}jHW|t;kDW7;~ zMf>MuM6bo8aDkRdD_v zIfHj#vAqJn51Jvny(^2P5IVY-&eqNSj-3*O1{OI^J8j z+f5VJy$h4oc+%t+rv~8<-@wV=iLz5tG-%+Mh8Ow_Va$IGZbudr!r>iu@C=#lT&kQJ zBk|i`l8||^6Eq7!?@pKaaR<5H$z!mWhM94KEa~7H7+r~)L+r!P6|>1y=|R1Oiwbu+ z&`m}ub3}fRBgjkmk7X`TF+?=B%Fd~Y!7DUQ_d;~!TcE%*U&$S#{eIh~vqmZ%c&o6V zuxO-7n6q;L`{0u>>%4X~(Ud<&L#N6dymkO(SONRqB;C&j5;lAdLo`0HSQpxylT(W7 z1oPT{2^U~1RQLm+P5^5t*hWj$Z@NWZxcycM?9my=Z7v6OKg2<6t8(G@`(xKQ8Lc=FYg;YJZY(LOAcK;hV?`}1>)!1v42HIutUQ@ioucr(7iy@bs}Zo z4*aqRG?}<_RKNG5$d4JeyYeH&4xg{wRX%hpqU^tU%}&j?Py|D*W0Pv%->Jq#KLaU&avi zHS+p+`2JROr=l&q|FSbq{GBG*N?h{RmF?G!hoW}%5ok3>nCda`ZKhmez7 z>O8>Q-PkfrBZt9kDIqy5c zJRAM|%B4Ha_OQsEKn#8D+(W!;w64=A0Lx_rT}4|c9+PO9@RuXdVVnbY zL_6vmF4TB7i3nEwBZhd5jg;G?-#6OZnEzAPoHw)B(U~7U&rzOwS^)2@RVh>EwED=G zo2+5iDQ0a*v6YyI6wv3oixTwv((g?3Fd`fp-U=P-6BgGi6`%2ur}x6!aMBNxRGzOP ze_4+|*AhQcPAvb2ttr$`xc(!K`yFd?7+1L$GGrx#Q6E{g(|BfB0U+&IP3!sbE_`x) zK$rLLw>xiy=qMKtABOL*hc^zYQcjEK^Tr?@p4w4saI#}A(xUgpl&h0-lE^#_$#t3sXKwoJ=nz24+dJn#7(Sv!;CmHsukGj@v?gO0MPb6W*e`Lr zwG{9BofSE%u?XZiP`*m%$}a0wWG7OMN(Um7P)`M{eX~w%dEA!wad1JpX?c~X+x8AH zLK@V|fO&`UhBU|B5OvD}Kcu`5a@l)|5$nD*_*MxEniIAij6B;pRW&?D-P4ba(z zpcAJB%Pc;z3UE=~IRShPl{LNYX9d!0mxH1A;G@JLkAROxJ-cT~OKOEWW#UFeDf-?2 z9c$@w2r05bT%~K^pYN5-eoU+_kZZZ?SPRDBHy+PswFXlWyT%@KDBTUY0|m;0d+BS6Dc5%?Pa9 zp~k~H6%M>Tn+FFoVI`SYJTfvOp0|S| z|NO!Z9t%_jK_^zKE-cXa@0&XR_2t#yp+Z6%12Mo=wN{+YJ7BWGA9gV4O^XhP8fJ6P zW(7FlH#rZ5=BQ-T#KlxMUyi45nQ$zBKJS+{LkHuJ-i4A#j59#D+8xo~rSe|6pdATG z6>I8bi@nYY_gcsf?z)v|0?*lKw2&CQfilc>1V+Xury{N8yrtZJ96#f^9rAkLySOUa zq`((55e`y22$grHscV8e!;-?azJj(}B8V$*IH8Oa<~m?&s-GZQ_Od1_LH{+n3&STTDAlS6K%z?wU4SY1 zIIy(#rTp8T6jE1mo;Fi>0hl zOyP_ymDE@dKzlWJZ(o_}afa3@LtpNtjqqGRa zOVxdU38KA$Md4tFb0W4<6;80_&5Z6fm6&3g+bEkF0RI)}@Xmth7V(S9^FX0nOLjyO z_a4LN^pA$@y#Ltpc9A_UO zkdn*{*Fa%s?~K?g#muN_;sNw-ovxZ8C3eh{YynLCG~B4<-iMgqzN(`JiCTtM)My%w z?=e>{&*&U+#yZX;N?A>6A6(UY!&HC&qi~7F{KwP!h@}l;2Ad+h@o(TLJ#_`!TJVUz z!lFbt%79!gdw{f##U}E}kC_2qcta4h;(j-Id?5n&zn6 z++qFFPdlvNWL0r!^Ip0K6h$;uk?YN)+pTn+YDrw!L< zOD3mhCjoTlE%-f=L4wZ2$HBjL%a-m!_CWO4D(v1p;O%1U$+PV9-h=y;N7IZ9OWq`*2pp!@C=P%pK|^~28LL{CT<3cBV+T9 zO$G5cK&5=d0_h(`7~mM5-8LjhssV;Y!FXGbL|m{nA@-0x3yeH#nwORZB-$os;MFJMZfx0V(kT#bUQdjIeq^ad?6gE?`H3GO)G`GI?AE8Ud|OJx&v_| z@z`KZE?9k9+vU{c7oF(0_L3u$U+9t_gqr+R!>(9dj)8+`WlJO>|_y>4k zdm@hEJjA(k`8RD(Knr-S%jL2C6Jhj9hu!vx;lz*vucM&aW$-HLxwoGAqGsVzhxr6N zyNIs-L_IMYTquI(n44EVh60|me`bo#eTmsn|5bVEd!|Zt>L%(}#U(z|H>e({B!-pkf#dlWxJDyCs4??M`xf5eyCoafq%M>fW7!n6m3Jn!UM{VLL`j0&?Y zkuVbY|M6;=ov{HTEK~wk{`LAFMbsbZB?+DFP2@^fwy{87dK8}056B|AHUDJshR021 zHRY@Vx^3?yb$AKrd=Q9Xqdqa^o2^_+?C*YJSwyStaJ|{WAHZ-mSoMHFNxO#~IlS{5 zq4b{`a}$-%cy7w=A2yX^YFTyjjANIX93%ip>uA3RkpB_m-yKC*_Kfyk7f$lDL`tpu z>uL#Q76PJ+5qWsf{)I!L&TAm2;ogp`yDm3nl})~K1b%EK?J+)Z)$HI?M5Q82jMLgf z%R=Qxv?7|tSHhOi$64TX*TMte;V!7sWYOTftppQt>azRne9!%8pXFv2;BT3DxCp4$ zJ5l(@MDh>p`-}^|ST7&(keneiGl8BcF1B*0?8xzl1DataQzw>>{o(z;|gl; z`*9UZeo+&-KA#Lt|fquH4 z8v;@}uVmDoZcL;Lfg7(@z!nJHD6vY6e-zR9Gzz)@tmjln=zZIqIJajIFgcGg`G60h z5^v>mqO`!yAK0}7CGp(QEwN40e7IwoJe5y~C&&ob1n}l(g5;Erk-50Y1cXD0eGbnk z*v(}r9m7E7lh4a=9grV3O2T5Vv&M~UyGSGG?0j$*_z54M#stg*fku@Hwayv9<-7LL_5+DyiTg=c0GkAs~(`408q{+eVP4@ASrH9a+ zC=gciz%pya31b&5fk`Dv14iw5+7^bq+8-l=1;{+jLE(MGpX+@LAN-hFBR^d`gF zUgP&Jy{`I2k~>{XXh)ToBC%41O4T#!w8=H%x;@B0(h$hK_odqk*>%1@&QXFYuqYuZ zdM}0R_7TrFAzs&o^b~Drf>FYGJ^A?R07p^QITEveyjnR~AC_WJ!kFUj23wGi{w$75I3w8MveRm!ubuOQz ztHXQdq{Az34dZDN+QkYXoHLgv`}}h*xBef6e}pPgVcpW^@E0@CahQggriX@l4|=vd z7%{0<(|AgsR(oK&9{nTgwn)US}&WuJ1p)Nimprx)#h0(yL*$qSRlHG<0PY#YhTIw1t`N?;411fdNB_K{)YH&J=$aL{!62H+``OOl%rac~ep$mj32(v=R-{RYM_OP45;>7|s2`@b61v#4~9n~-@R$+rv=4+|- za&f(J9myDnPJsC)OPhaJ&C!bS25{DE#qHfS$=gkltwC(o*(Ey|xvEZcR=vs+78g@% zoQhpn{4Y_CS|-x8Qo}p?$LVk1fe1 ztIxqoV}>JU;+K>9{;)^X>rPXS3ZyfrOaq!254~T7QoB1lp2zc^IH~*+i<{B+DbLJ`DXz}Mz zhO(hL_@fz`-xVqFp|75+HK^uYOJWFrvxs{ucO1nAtI$xK5n#I<$k|~JP*Ej<39Y%~ z5Ul_~XI-I=jKrk7r315VcI4Lv|B;P$pb~RJ@PofP(mU!s!P?YGa&I~b73$2OZbu#O z^a*%pmx^%$;}^S;@Vx3Uq^^|!4x`eAL=wqL4)5k>{OczoD_vFSm|oU5tb%V|6B1W5 z9EBbD^F%b;5FCkp9ATP}K+#z^EY?4X%{AT;iQDJ71NUiy;?|*-VC*P)^n6-Zip(ik z&+)m0jqAYWxC0OABE99<8QT)^2eqC=pd+-d#$8`}nl8Pml~8OGU8uY^0}pghk*kCg z^Ad5Pb>pT(=ZpRO9fB3Sq5%`$?AvQ$Vv;wVem?jJc}WE1)m7I;BlA5NzH&t*f+^dL zzRhdgjrp15=xs1B%=v*Mw1uhwLZ6I}ILk3H928K7hYZF>EVcPN)PA4++2HO5!&9MRJVX1^Dl)m{ z9ATjmy>(&DpD2T~PD<0RW6|p6K3%h$b?8*U6?AA|1O4d2X`3H`c(Z4P>_h zgPwO$I|yZQGsFZ;iW}oEw3JMhs1t&3w-K1Od9y!{5M<|$)IsrPb$!PHJCQcVvgi{0 zs-%wGxrGE~_zE+kK%Mv3a&M9C%4Q=2K7R?99-J#pnwW4WtXz*;V-VjDrrcu1ME4ok zJh==E9LGL9mva6b^gDrIlNaGe^;o6VRj(X7U@l3=gnGQ7yl3LOFttyN9I7d67?Sq~ zxz`M;FXIyA*ov^`cJkvf4OAb^aJ+j*=u@FgQGhp;TiI8M@T2 znyJe#nZ33%PvjAG{o6gtGT+vitz@)g{16uh6La&UZwc?c8ld?dYIIHL1ji*Nw;tM%ydF8UX&vwSvlg{&gbrNav*&7$BXp`q zC{Fi4gF{gY+`jXSd)VS7@KtqldFHFIy1l}s>bxK0{oUlw5oS1__aC;g*)R}#NnDTc z7V{qAcoD;Pa{1%(u&?xeA;(_wzR;~i7mGYZ7$rw92)m zi>FL^>%QAPacQJ(wdUSCW9(x3M+7+4XuhxzpEjya`0mbAY{wOBofIl(l>-i-6`FL- zGOVGXuFKcsh6%N_dv3gPqWt@fIPrx(XXM+Wus+ad1UgfqVm}a(Hi2m|qzXOsDJ=7VDx<}Bzq zFZ!z%lbW)d8QZ7}el}AhEZMuWf^*e&Bf(V?@cL zXTvS$XEgzn_@of85^Fkev?&XN!wjs3N0JdBWQPA!%PL~_rlSFb#Wn$#i6RWRgx zYsZ&P`AG9Fg6w=xoq&DKB-36oMPPm>e%-Q6re)9TBwn&dW40{h(~t_qB9&vyKH_Vd z6{xf->4f+~D00db{$?P);-I()w+W!Zb+by!V||lNgDA(57?~#!yHaK6w<4E~Dg@7; zTatraXHEiqCq4AXIbgU&_EdOxoGjo!6JFY117FIP(vl(X3*vZ`k<`{Jj4y;64U~+U zCx?%7QfD-ImyhFJChMPJKAf8(@^9)!x77Bxf3{k1 zCg3_D9J&(c9X+bK+Hr;t#Atc9XTunqZv#0QQ8wO}Z#6(RarSHn%pS{~+|(}1?0|fD z*)vB*gIh=*TeOQ7V48}T^46WjCs>)u`&fG1!D5gfh>=gCHuhH+RdvwJ;$*B{9q?d6 zxc(XD@!nb1rG*k4uF?{p{{a33sf5N~%T4QV#?zth)uP|)R8xP5jVGQ6XzRkJJH=)s zW|9`)uj}T79ZFCfJ$w_DW43D?Su zrB#MOl@3_+Pz`Ro`AnTT*qtj3e0^eoB;PbHfYm)@Pk*Gmu7ySP8Yt#YEf9l2{@jE) z80{-A1kPOaYAdGmp*Db@}}Knl2?)18YaXhpNciLbyK-o|!F}*DR;;553cu z9eE7b;I};()s()NG9ALjaKrK2>}L&8M6+f)*|P-xC50QmN>ddymzBXZrGs!?Obw}I z7#x3JTY_IU0+AL7Z{mZFToLMIk3e(^U-cLxzZz=05qVY$Z?EVZbx=&!H}fcbSD7PX zq6&n)ocbK%fhq~+-QVmrnM~~3mW72tG0i23vE%j}$??+#9Hf=@l7Is38zP`PGv1>en^&XuWmH)T5M|1AfeY?bZmkUv=1h2;&BuYwW8>XjO22;LSX`ML(v ze&Mw;@Zl+kdzi!2M7#5>O^%uu~=-h{EFwDUmD zfa%A*T)~iyytgtKSux*{m&~Q}&T4i!;WYnX1GPZ^5QUQ7WpR{j@(6o~1r?IfK|}EP z-*2CE(y3L#mi^gq2#F?U6AZL^vsy0d?k%Xw$!@J{NZ zSE)CK$Uc}F2zgbR3NQJXLMN>$$Q_mdddQr`P#B5f(jzmL3>`2=rc%w@eqMM-&!4$>Fcbq3J9+1IqL4wX?V5sqe|TRy;XIX;yAH+u!<9zwpF-q1`M$qC%6#NtLr4e>BGN2cpZ_J{K1X#Fg7u; zBpma}kNWsyYPqR&(1?E@XFj=MGqMb$cZ6$6$iZR<13g$SYBg+PkRQfs|0BrUL;zje zqQo29;D)<1)iC~n5#URbz2`=>?ta13WT~mWgO<_7l>D37g(`Od+Yxd`efH6EZd0cpMWPan+ zLwMCnWS3&~fxqN-rh=S^olh>8Liq=shel4R+vSi1Lb17LQ)NUyte+(37!)R!Y=L^`7JW0jr-STz7jH zQ2Org%p#OIfGl3c6=)RfhptsgAiKBWqS$Bnt1dEZb3Z(`qaX62&Ej9Ez{<$lKV>5H zXtF}pN_L&pa5~?qwhdBS{8DImK2>=CqJ_L{tg64({#FeN3g-yT58bjPH-rhBPbhUU zIVk}3#+R>L%rDo$jpMr}lcNmf9sfq)b(3Jask0t7SC>F3gT}KGliJW)rLe8u{5kR; zy-EHXK9c^^l+*or7IgM25Z@=7*Omx3Qv~1Ht&~l_kD0ALNVxn@Ew*5iKjj3)FEIx% z>QnULQ!Gx7XeYtQ)uffZ@XRUgNPM-RLG8y3L%7>pHwtQkX|$ex=#r(W;EsKw(z?;C z{U&)|l?qq+b#}s3dQ+3n2jqGz#P=l~xs#91mjhYg!}X4d#6t~X%kgD#W3wdw`^k|w zxVBjbnb%ciipmmpJMiwRIn*Rh2!VtZgHcG@`EsHD&t8nl?qqGgkBc?KT;8(C(Ra6j zLyL6hesI48*ez4j*WxKW9qifa4)kX0x9-V0=VZXq;| zEslia*VZ={sG#Pr3y(mLAJHNzh7wntveTe)1zU+2^JsH=Osr?Vx4{tyCb$7OIfL0ReuP@ zz`GBPvZUwr&gAVtbmr_tK+3UE^{kYf6PR~-{j`4;Z|US=NPTuJE}A^rSbr&pHG}+x?ggyG*=Ft@opv*`8_#)0{M)_ONO-RRTKZ=<^1e0}PAe{f zpW2$a2fgn>W&>guWomB=a9|)N?;EaDEz#cwwrxRnw!GfzmQI>PXMX)Ez2F{I6s#$p zD$-u7siA+Fuo&7#X2-ly`Mz9|w^lWvxlUGkRD9oyB|J7i`JS3R6R>@JY_z|Svt5mU zUPu1A;9+?vII#`P{dX#YX!{6rJ`;XQE$_d_KxNCu7P=zXxK#kh?^h`z&|k^f8Emg| zitaMdqG6=%_HPb`-GUJK#qOT2@a?3O5J&OjkF_mH1eJ<0K-kS~B;MxXM zm}j%Xn#KZI*}7>CqsgJxzoC-R{obN6%W`N)jn+5tmVo_QkPu zAe!*v(XEP@J1||lsNQT!d&66WiW*br;CVh1Jb8rbmL~Ga8~6}~;2l|KY2>qH;fzhC zV@=XgiVJBL)n|Qt2xlrgC8Jn#(dT=HX!r8Wu6gf5$%&^okfU;zgiHVZXNcZY_VlTG z>xB134k8zM$y(PV3y^^*cwiNGQA?`RU+jSe(bsW0l2oFxuI7J+v-k`nIqoR;N6nW3 zAHpB~?ez8qX#aA_q|on0H(1OTPZ`K0ceUiVZtzi*9`gCD{zjpQ1TWnRTfQ>o?tNx% zKw<{3D;#)V_#R$>>UMs>w{J8Yu!Tnt&(ixsKQ_w0wRt0up*8Qx65g{rQsc%9YjLQO{(FSV>y4w+e5V9ahrjCUMb=bLwO zjmwO7Hkn*-AiH|Ca?)|`OB){n>K7jffT;?@dtv$Z;i+@6Q(EaB6aJ8 zK%Qq2@RfCWMau9;(8LeCHKD{%gSlF|JEaN}DQoIP9#|@ z|F8_e6ZWr6M%zr!;`^b)QNc3{+F(-6lc25M+Aa^VZif2&I#=G;GY9@a#N|<`=x`-3@8Swb&dFw^|{o;!ebr6 zSuNC(E`X9#?}ws@swshRp!Mlb_+VH&eDz&e zdS@K;gd$upJ^1i&{ZfM=y}r(oPzS}6BV_}Bb|Skc;Mb~oymzY3EI)D})C^&*QES;> ze#NNJt5d8tP2Bez+9$_`>}*tHRu`#D2eRqXRAP^K=j5zrLX{#ey&O({Ybti{=}Cjo z&bm;W8$bG0WJMkvN!o!VCl(EW|8h71qkl~${m;pLeeEyI$jqx}3-M=NA>syxWBp9G z>Ov0GWEBx&{I0`!YoW-EuCe{^%CM;hmzWpiOt0TKBdTNinMPU)9DO8SF(^7n*ikR=r!tyV-3);XY|Bz zpx9j8v6z=RS9)=R#2b_iR`t^+k8o}t7LrB_3XoqBd4*=%IULO5W2zLZbK$lMs__fL zZ+~E$Mv>R#4E1gxzS=>L-?UVuJ`qD$d)*nfe!manQwW)F&lblYyAWFV+ zLcdD^_U-Jr*eU-qrh`1Lj6*Z%XtkrS9A59bMY3Iq8QhzUnb;=5T9LN0iBTfA-|esA z73APbY>5-jc-6EapE3UPArn1QmxA8NHy3K(J;xFi#=wM&wR-~0fSVY?kFVAsMfvoi zR*q(j9eadVU*YG^g;c^$hky0FXnr{xbd1w6D0uI~ytsP{m` z`vdiUHE<#5QiXjyM6K{WH>v{?+Z?&MMpBnt&4eiTp@Ma?%^mQn705T13iV%dpeHj* zY*m$#)LTk4_^=E6yA`ufK?s#CqLd&4^?gSaKu3>?7&1cWGa);X_@Q>vI`GBrjhvw!ipYBLN+X=UAi^xzh+5T)$E?=PyGdcvL4cL!;56pz}`z z#`|&w3M9`PUP)P0VG@v)>Dx}0|7YkrEPOKuo?Dq$^vy2z0D1(?BP=s1fW7W$eWBH_ zb%`Dz{+a{icZxEC=iPRfxJlAvo?uai3LAgIf_Lo3B?sPVt)5OUQ1(yF7Molb#r^(( z_?X0B`L}a6@8bdC&#UYV7xb}lv;JkAMlW>#3{ZW4ZuQv`(1mSw%a~fCE}+!J?RN$% zrk(?_%UTQ0Io3R`HRQK;0)&9gc8kMN7JvyXA9ImQQNb(6gkn!{-Rqd{Uk-gd!7)A{ zo9`q3sBGxfcsVGauhCPNcWPrq-r3C&2&S)4&DsK9x~SqE5K?cm81152G+?%MEkteU zTudZx9d9iVo0H<+FJ1$*qW8=1i(IyZFDh?I&DpyzRoka>vJ+-V=-*in3~;|KjMPni z3@jhJ;@{*KZ0f>oVEIqUAA&381@dp8nm zds)HzvXs~N6$e(Ja$A0VZss;yM*d%HR1->0Tem!F$9K%S1205XoJqyFHSfF;|Dp!3 zq9E)An&Ftl8@UmF2jM6ypz%v}M>T_MJNU%|tv8*?{dFjths<31=g$XYa)15!zHq- zD9e@~h#Xnep0_jflp}!|&vrzYD^_{o0bO4LNbi$1)sG(CbzY^Si&2uAr?zgTe4Sf; z&GE)8T7$~|E^XZ<)lO#}hbBUHbifa_=i-}0$h}*v4xGI>0Fc+TWXsP|_Jk^k{ttxn zje8TZ+mxm)lbX*ERD-rCgTbB-mYZkLXyR#ABjE#$J*t6#+U#ki*RU2azUAB_r9Dr@ zY=Ijoy$>{u=0^f1f1l4AdM+Pz=bacqMbnwExxY#=NoICoT*^AWQJC!rk+-{TE%#c9 zy3~)#ZQlm`;r|#S8{O&aT49vG-Hxj%JtA!Ly@eS}pj#iq5x~2}BwMTad24 z+5CQbr3!;0d)v>NLW5&>u{z7FrFED^CT4A`AQ4V%02SwR2rjP{k&TY;+KGRQYeym% zF7!|~HjulH2^R!#zhicp@#<2tv^}gT|2=^^ED4LeZZ$>Xu31R8@GKm6crPu>ZpgHH z8Gbce<-6Bs*x>r9EbdaH!p0iaejElo{e@m{yYOA4e1aWV*^)rpa^KiA<%1Kz$bcDz+DiHO#Sqj;r2IP+BK zwTXQEvj#Z@cE8&ha;y#I*c^2?WQg`-tOzQ$-BsW}LdRML)@P)L&OYq=0z+KF7an#L zxpj#_MuGU{Jjn?Bb`h9hL3OxD?7)d7!X4i7)7svd287IQ1Og%Y&3SFk&XdfG8!%wy z!N8W$j=Uaj({;UPN2@*atJjElqk?G7H4RKPmuMO znlH}rXi?N5QX$SH_OoX14LG+eI{K zTyT_&YSLaV!Fv!ib%^QC{=&cuA#N|sfMIYJQ#pv$bX4JIh+lmzQ4fp}d}dn{q@Vl( zW5vS%KTUr(mbj&dJ%`ydC@}yxZD(8gqAFQL(Wq7^7d^8wUt&ZH-#xd18^IyhS_b#^J;^OhI1aN>PG?OcQdQ{1?8(m zCElR@*-+vd(8$I+MyyLk2_EZ(dNrsWun`6D%dL6;2JMP%)y%VC}QSD<^p(~+M*DAQG~EIbPATYM$XqIcn8T>S z_x|QMQ7vB-w|X*Q*=idd%vK zH9xm(7^^bp!CgSLmC^zstRpt?!{C%_?`-?LF`ARb78F#lmv!Ov7(%01l+@7vx){GP z43^ZSZT3GX(IEyB~wrD)Ay;kCzTxXxtP<=QW*rBfbVqt2Jh1=P9+79GQf22@~ zo@xcO=mHt0^TiZ-4p_5?&j@@+Jls5k`xGjM;uqoNC600GT1TO+xaxUa+n>xHRRTSlA@|e?{5@tF)O`8P7X^Ak1(1rlzx(v{ysLe^t;G9S4yfrhY_p)&$BtzZ<4?ST4Pw z4_{-NA7`55Ysnp!jC9F*Z7lYYR}RppdDzgeIP*1v^2&0_c6~24S*a+O2#rfxZdYP!@ zjbICK=`uG=)0N9gTElwbgpl_NGAal?S@KmjIGA@Okp?N^jukkk$I0VEF#G@JX4jM# zrIuI=U344ma8*Pifvmq|r)L7FLZWv^2@4NE&m5Uec!f7TO%!4{d6RLiNCX|jYmz`W zvcG?INca7jJ&nnXn)`W&*cBw^TX;Rnb z(K?Et3;t>jJ{{RrJr+{n6Z5!RE?c|w&{*%UgNLXXOtkjK%|Bb>x_$RRzOtd!?3_G1 zB=+x*kguCHn?6~PvzM5gf{aV@$S@)XV~&MhGvvvu7k1ybjCrm}x)mNRpyzCvZ9Um% znp{G{w0GZ;*4-rgbU(9b;q^bDf5(csC8Mw^azitSF&1H_wG!S?#X-I*%{rsju&+@2 zjJufYU#dtA=&Y-}+4DZP>k>iplG63x-~)kcm22Ukot%yJzEA$#%KvGP;ADZgV?@tH zbAp91aeQR9+&M)NY%34s?ERon%vNjcF7JRJ06)Zu5$?lJ^MG9E6{$o-WJhw@?edEu zmL^iI87V&Ki#$#)Ia!6!Kf3fk!ZFhI0kd0I~xe&vS%-q@XKTk`QSwHj0kOCh2WGtes;KwrgK4ZQ* zC4epdVT#K&hR}7sUl|#mdrQf8Qm=EpB-Evoo*LL)0KYpY0%C5u5R28@SN98@hfi7GYEEP>>g0X6vx&Ue9tR8ten+_t_db+=SFoo%#xad)s)o}05$}@ z!J6W|*y2mHvTtKq^>v?j2+i(3Fh^~av!~Fer|HcuBw26VCScib@c)mK9-~9{pZ)iT zWe)3XerkJGqW!^?rW|ikHz6Z7-RZ$*Y`<$X6C;MGI#~3)@@0-)fh!Nn93s+sP;X06 z6$*NRei>RIWMsJLr4#&w5?faWtx&U!&n!9ke8@FsFdDkl(KLh>5!80KV{vV9p zWC46-Ra&L?KO#cxSbWH+XiVp)XuSj3}LF}5czD3ftwFmT7##y)9*CBw_GMH7)DCt7WKA(8*B))ou6 zwv)KPK>?*36r2TI5w}p_VW0=H1rZ>Srj$k5($87V-$FP%ciwY}*v%ul7rNQMeOzKQ znre09JS+k^>Cp8G+WGV~u3(b`$JUsVtWEfrC-X00y6u5~vm(kD8MHsqD@{omOZop6 z&*?huws~J@h=$k$eXN9^3gfTIVQs!aR6zm`(=C*;zC=(UxQz;GB@($nF)kH@{S#E= z`co&1b+%~-ekN{CoDK2H&+3{~QqfMiUnGd+C1XW{5sRi+gaRn<<+tj#S8+{ql@XgQ zV&<|-$PWHx`=>}*j(xwjCwHMS$va`FOMFeQl^(nYW>*jkHdsFMS$;2xU^aS9`=CU0 z0-OIvN=If!r5SWZA%^NfMM>Cx?Pa7RpKQy;$tvSCB?N+JWC>8;$bS$COSeSB!2+$; z?uOXIh`_?!av;=z$^6ACbgg@Y_m8z{9?|!0Ga^t6Kh@hd`0>>LwecF5=ijJ5r`f?w zKLWM-`$~+W33zM(d}Bo333}jdk*F(v$0RB5qjW(LLCw4)JvwkptCdbr^_cIt0Tf1c zaURP}w8pX7UVvdcUai??+@KU{Q7LmZK7r9Tx^%BcL3aKo%MR543Irc!$V$HSl8*p} z=B&ex#}3|et6REo0dA)E(C>%o)Q)Zjfu@7ax%#)=HgOih&C&r~T#2a85&A&+;Wmh4jH z_`7Q(ZMFrPaw4=&7m@=`V>CBloS=3bEEeg!@RaSH4N9dc9wT&UZ2`g@+)?Daw0N6^ z;&#RXzJkYR?Vih?GJdNTfhGUNJ6eGPPh0dncKQ?kQwf(^a%n9z23>>`A}N-uXR#C? zHn;noRU_;akzm)#b&hw59tfdpf2cLvZ7!7Sr5Wq#I=a^|pyXJEP*{GCsm{iGmK$h` zSGqg`x3`VZdfhF-|3CM@&#P^#+;+LQll3D#VD=f>q+ya1{^bEbW z74kRg&qxA+d^M2ReF5$LY&JxjPvNqpA^tGfJqBP1S2q=xIEXJ=X3R;ViSIrt5_!o& zmCtAXidYH-w*43b^N+50H~#TK0Sk?tGM7x&>`+pE&L+Cm5jg4!c{r5s*6dMu6y zU62Ps7x1Vwy2_fraF();b!R^~WGlZJ6Z()mrd6OMiu03KVF$AqO!TK%%4wwl{#DR{ z`Q(M13xi$MFt<>fwkN;i>Ch|i@^bwe4UN(n|E)T#-!m0@+nsZ)dkVURIZqCn8A7S^ zGEm?lH-xcf<3bGthRmwZPO%kL6kja&2}tO6r6ikt@UYSOxuW9obo8JBx7ESuL1@7@ znTRSnk}_;J-UP$Ll^D);)d$Q}p=NKz=KuM=&>=l$_Xv_f7G&QHEfp2w}PtG?=V|T(Hn~qq{NI zJZHpdr}=5ztg?B#6T#=E;6apnOl_hu+#VGxQBi_lH9964z&l-z1 zK)CN&D71_pb$WZh9fucWP5Bb|8;g&@L>Z-AWx;CNe`D`;oN(@bT5FQ@oNaUC=Jww( z(?D$q!3dpr$mdl~{K80@E9S=kc-{VK46K<0gxb8!6ESi1IYQRE%nS6T?gJDx8nKWM~Pl+^&M-J9JBh2D|uP6Fe3 zLYFe)2s(AWRtH&ok8O=)PZjT$0hADXj=S+}e04&@$^vS3%BZ4d!8E}p-Qf*kR5DH$ zGCU?^rBNeKOy<(zFYx*%2Fx12rVHj$J4GmXQFPE146y^q-N=n=>DmJ)`Jn8dMp3S* zXnwwrY|Bmln7qx#kulg0L9;|o{YKPnoN6e5&8kh*c<$s@gaD+ zS1F3}C9~K**Dg#oC@?${vTfF}c_$ecas6d*YP`po7fV+zDlT=6kgIQ*oC0e9Ar8I0 z>GFfvj@m6o)yVi+ihyE|t=#<~G&RjE7|; zya?2eDa{cO+qLJ_r9@cRN2sAup4B9s7mbxImWj+0Uc>Wfq?d<5&dY=Z%srAo?%c>- zKAVuVQ=FA2B|zqv6Y)UxYxg#xPJv422A>q^Fh6az{X ztGGVg@>8MRx|UUh!zXNo$eS4fr_s;iU}#g^x)dNQxvVr=l`Fr5w_L@*x;>UMAyDIr zKp6TLSePXb?=n(EoWg#H+uUqvQ`PNl4UG!?3O`D7RS;(`<(#dOC5N_c*K#Y;CdO#x zHNe*{=VRwncT|PEA=X68^qz1XF`RHT~U{wYP1Dff3Cxc&d7)Nmp)I>&kqG!9gkDYLk&- zV~@6;j80 zw2)M~buC&c)-~c|WHfbWB}h3w*ReW;#{csZp+*iSBn2FN;7ftQ4!?A&{h^(Netj-+ zEPvkbOf^R9H~GDfDn@|wY}-Z`l-CGa?!vBz&iqa1L)!LyijU}^r) z3YZ{%C-y;k$LJyBj8^KpnClVQL_`5X60P;ZQASNMZw7&-B1GH2fu!{}0h5O1x*DLSmV)*~9I2niwg*iyF^UUuR2H4{ zp}_Dz*QT$k*$c}bF8+Q`{eq)~-5+{B6IW3oP5<0Rte%@BjaNg8jpV-U<+o6Mc3kTm zyhqj-xB0gre$}2w-Oo{jH?qS@0lJ|w7v)XthIcgVevfpFy<&^{sT3=Pe1;`Baj4dn z0_%aSn$bJZV9lk8N^yP)yVI;s6L}u28b?Ps==iM3=>Ai7kquY7L$CO%BawA%Z5S%R zS0Juuyh+^W6MV|F0{hV*8Fn<2#*)l4uxkxWIHK(kW(c{q&1jJ!=cKj+qVZVN?!Brr zz5A7#UMMVoGv8IK2$1&+3}>A~x>Qc_|5&^|EErEjSJ`O3x%JF~7|g_+Xw_=!3hU07 z-N822Ay|7!frr-yV(@`p#Y=lmOz5zxfp@*q3pWH?X9@U*^&VI{nfxbz;>WT~ixke& z)?*0hV%$l z1k;|BqzcLU?04lpakA8+P@XQ0i)5mg92mKVnOEIc(E{?Gd?P)W7HX=(s)vu z{fDTL9caU{hFHdKcHM$!5<~`s)r9OoVLr7k1df-Oy~SzQA-Dq3n=-SYs_fk$LkzY5 zpR(%@5$Y)axYPkpZ5C`~S8+lm{7=rQlXo}~*>>4?B+y3Os?y5dDAaw$XZX3F+!)1l z_sa;C7u)Q$2xXIE3;f|pNvADB{hM6|$GK(t;9U+Y zBDmJBUOD2`1dROyj@*Z5x~#l9XtlV&uKxp}5q|j#gN{p>QwGWBO9y(N`9hz1+qHIW zIU=kDMTK`Q%Pre($?s2rBeibM5BOUY!jkZxM^5yF+TyQ(srE6($@UmWRrD=YK&JmJ zA&-^BS0`D!Us5XUN!~a;#+Y9-V$9c^Nc`e*CBtIbzjAHE$G#AfjM1K1{;;a$QX{0&{(IEW+PF|{3F zh!?TgUlHuCR}5ok?lL?WbjLOK$k8{A99ak7_wbK;nGC43Te*rmJa%8c8ao^WZOMmL zVMI!@PfNu}M5Xf|;*y3@bDnhAU2_YUw(w`3g~b~^!Lu6vQ(3T6Z8kh};XaCC9dHg;%&$k3Z)l*HGLv$rYW}$ za~H9M6hu5EmlS|4l#@pNyB>JP!?vuPlW4Zw&y;qUYK36Q8{;hB@Y0WsXgv?1++i@W zJB2I2$@+uTSi`!AlW@xXW&FjVAQ3g~k?-74?ADJOK#QD%>0GpWx=GPwbQzQpEQK0u94bU67ktmJ~*I2q9%L`x2Gn=G0o6w1=Y=I zsKMc=ZPR&%eb(TS1p|uDB+7%dFvHKTTH4n2b{9*2Wkn)dC*ojLJch;Nv&uT8u140- zM|yToFByFbEE%)5@-B3o+ht%roXL|03QNVvd%WyoR=D6*ak{F>DA-Q^&KcUHV7|R# z9=J?-onxrcYi^P$Ft|OZPpK-lzfKbh)wbj(AnkW;boCp0!?qF8cm!KRT#T|~y=1f) z;RnjS6;HNsPjNW&sAu)h(|6q9%X14j4mN^Fp#i3DqA|fV8?f|Om_NN+@ce& z;)Y=uV_|ic7p3XcU=bp1f-F=WQQ-BV*YKznDgPxGhYb^IV8B2N#?aMNkZz|86u*MR;h^ac~k>uRc)mexn`9d86Hh_J#b9W^xwGY?iMchP&xzgb;gAn>N=_i>=`l$*Ie z+dn4aj)Rzn0g_@7YOQWcy9s90D>dfQ_H22jV3UvEji1X(?YzC5%~ar9DLSk%d-0U` zAbMFFbr;inb$l#q-3>en*KlIu*pXaE#U8sO5N4g)+*BM zZkGRz``w2!%drH9(z>kaGlDZ~g!M+;&;r%s$L|9XEXY5PsNX5A8j@;JXcapk- z-VGNIyFZlHMH0s5A}G0k!CyLO#ULvWf|v+^0ub298x3+EA-`YSBcb3{XSR$Y4 z?`Akkb5NtZ!R!<%^^Ksz+KKg|HQdS0QyRXPv7A0~8kArE*h2U>t@b;S=HSo1G57wC zgB!~c-tuB1_GoH8RzV2ZE8V7vwax(Kno7K6G4PA!$nX{kmL}YFpU54n4Di07G=68y zLOzbAoCY;0X7Jm%!<&^p)lG!43$Q_gj#y#|5I5iaAsNrG+T#6RTrJx8+Z&KoH(z5w zrdiv%A<}?zSI0KAcN>o7oX$0EF-j2e>)kXbw4$f8<@;L1%4~TK2EjQatM}vTi37bB zs}vHf2(6`FC3X`DYa9T52~qqS?+{_;d!jDc;oIaTEi&M8A^i7`l8<`W@k3zhUZ}xZ z@uB9-kLub~@_XqbOH)9rtF7tRl;?#aI>&Hqag%O)ZqSujMD5#hpG@zVkx`HoSTuOx z5^Y_>!mjP21NaR-o$GoOPkjY^)<+lTe+rM5gTiAD0l=OD2Saje(`u#hXHr{%yyCsk7@_3$^6y)P}eU!xB! zwyf*@QsRKg^0LjmuUnsMk^K&oE2m^%x*xuv-0mKMds+TTi7^!d9CaMOes)lQ2w29a z$HQ!Pyow!(QAfS+_90)zcF$J#RMR|JrI^%3ma(I2q;UvM--my6lBC%Oc4U}I?i)~k z1p##acf`XWruBS9nj?vxg^uRL_og~`hiS)|p_r0;7`g4`_l>|BUF&fiPqKe>mrwuS zs36a|LSY;LLu_Nfy-V*PD`oLcZS{cjZQ5SX`FZj^@q8Ov!%p)(*b;Sot8G!0Q{A3F zBFccM>FTg^S|)1gue{MRKY2ZhaJUdLMG^%W*P2<)xy=n7ZdqoyGnhw z2$7yquC3Mhjq^8L_Pk+c!;!g0#u3|-<8iQadzo(~U`{rt;Hx{XHpKMe ztwb*2I=C3}Fucn7>W$((5X@S#+tz7VQG=ywcyto%XpqM}?0zqhcHvg`dmfK!_+!Xs z5FDJ&o~|y4(QQ?nP^lqDZQ0^2Hn(Qfm75wErTV`lm;mD(e-%vIG@EeEY5~GyM02iA zHWrs=KEjR)ctdVxi?R5l%E62C`uCE1wU%MjOm*W*!r0^#X<2-{@h6C@bT;LfG1FHk z)VK4PZ$Rb+DaGYYfluAmFxaiWotjgFHNSsip8knzmRUWr=KB6bK70bsCbaHHHz{fk zT%0%>F>;mj8sYr+M1@p_zn%l@u)C~~_TVVqdxB|xPIm&M6rBK`&1t6)Jo^x%qp~-a zq_T2kBn4JfoDea`{UC<6MX78LgL~~D5E|4Th+dnFHog6LoaheZ5f7tEzim`BwF#aw zmPV-izmpzv%3hoWHD&0!ZpGVtPU{SEi%B9v$PS_`y(u zXT6q=8{v=ue}QD zE#*m_HIeZyL9x@aoFGRGPk$hVHqGjxWq6N6>P{;QdHbPo+Qz=rfQl$;uxvnHxBc{K zEq~ufBo$NS@6Qdf8Qj_5kHL^T)=EJAUVB~)H_rG6V_n%=MmP;vLiTC@2b?LNmhBI3L?hjZH@JBZ&Wo8ND#T40%-zr^X>r4D0H0? zlnHD$dm3>n!*|lbF6JVC2MYBth%5uVm5et`fl&wVW2%q!kVF)xwyz{uC(G)}H_~9H zk54W_6~&zFL!A*2iGo7p<|qf@ONgV3y1{BFAfSJ67SSe#l;R?CEm@p&y6g#Vv4;}V zFIxUc9XjPQ!BOl~^Yh?7PbC<&Cr>qP;eaA9&yw1NS&&y8zGDX@<};FjN*;XEjCMUH z(E@tNg7Q*g`ty+BnV(->-eL!j#;VidMbAIPNr;etHy$f4l$0KwfYxJz&k?jAIRjk~+MYjB4^a3{FCySux)v*GTX_dO@)`~Ir` z-l{uQi^ZP3_DoMtPxsTZLKWo15nyp)!N9-}Bqcsl8q6D?DqJ_w2fvN;D z3_w2$1j(@QpBtJs7y4C48(XC%{w2gPUOt>WoYYMcp>NW#^m@FUXZ_9Y(ap|2?b=4g zIQS4>Mn5TqHhdo}hs{=loQ&3%A*Ene&O+-YC!>2OO$^-8ZMlNc&D*f$<3J!x>)N0ClRGs+GP{lfs_3 z9!1evs`V^ejm?%`4SF?=>&%zH&GfooBaW%U5;`c-$R9t8VUWk`eiSPa3kyX*?dN;( zj{=Y-$&{mFb73m@!VX^gzjdBljlT3Wq@hPa5HQvOnc)MRe8ooV+M_L-ZQns=`qGx| zR?PUO$WNKm)4M_5SU_OS)61?wFgW}8QhxhHCJsAsvwz+3jN_?{dC>g6X>MgL^_kNX zY-&d33W}2xQVce}_3ZL&>~8IqZ~EjMdU@Y&k|rDr9<(h`deY(|U{hcvV5#H2fDBO2 z2O9|udoVBt(%%=jOP+ues1w>jQdSiD01^v@>%C>L)H0|G$3axxLD<^T($LBQOxVs) z*TK+$*xA&pU{dcc|PmBWEvfGRSw?)cN1fpKrU8 z7VV72?8kVUQz(u5Y&h{LNOl*Z2zUy=)|bEgNb+}68nMVP!VQcE1nKIeQg9=R{L{j+ z!qAn@iX{H^?58ie-|gf@VNw2WF|oSJFd{=$BY`b%XXokM`?}I19E43}T#4P`k5A9H z_`@~Ztb9ez!=5)KCe$w9mQsskv{OF2$uZ=Y!Fm#5O9J5xF`i-h-OS$?8PEHBq}iT7 zoIRM34Rv~Obw1%tYt(Thlxm^DX}`Y?t$9Kfdz`=c^Xj3O=Q@<&>4_ z_H)9EOaVG?!a;3`v6 z#i-E6ZltT@WPbc&rJf)~`KGh!#q#zD_a3(+;|Ss`M;?Rpyt`{Js@XJ$?hE2x_%V7B zSKG|tgs<4Fu+7=mp=jyE>(O+xh;wC0q97keD%{DxZhmbH)=n|Son%^T0 zq3sq%W^u5}0xL)j{aXCj<7isq8eF@0ssw{wrnuOcNX54e zX&)!K169oS!xdxXgo86oX=*siI9j{6dVriGVGB;O`xzRPg__g7zI>E}y^$Lf5C;U6 zVb)3gafguiA$1Yht5G&^23BdKxmor0UAlg{ItUg+7ggViewc};;5z?iev(iYEmUW1 z8nQ`R$b9Y+=*)JJ1>)lX0zSp)PtW?JIw~W<<3l{r(_vxGjJae@@bPp^?YC!z3 z?ff}WDr4Zj^lPYScUW_9f695rBPD(U<lTd z_tCzu$U~9NAwVK@knaj_eO#-Tc{*B(&0Lr4On1ImBeyAtxk*2-MXDa1XdXrNbf81C z2+w={NR7w69Vnp9fndRpqBXBi{LRb_gEuYCB_QN=8~fWPQ#F4^Zv}veoX&`8d-=Iq z|H$~|mko3O@v6i`UzUdJOt6!F-y{X(6p|%rr|e>z%xKbz%UuT3Wuap2hW`MoybVpZd=D`At7${JV4PIkpeIv(w*E{k!CwZ~*$ zsqYN!RuU*#0b^<4?Vf$jw8}Oq6goeJ3a~xEldeP>3B7mWMw6}yj3-YB)PIUkF6|r7 zWxC@EKjvsfHD3kn4L6R|sI)vkNmaTbtG5yWpV=vUa(J`<5_+!ZTj+(jy)Hfzfw$*& zjNE;{Sz5n6&)~_T;^r$+=1I``WqzLPwdI}fs2GfdKU787^4`5ZJeF9xfOgkZ$t}Mo zF2SPH?e-;`vZrrwe@0QNCFiq_pjc>VdbT?yfF69g+QhPu5oq=nxSTt-zaqRS?Z0St zS3E2wI}8K#X3{wq*OrIco&m6uAKw}~isPn{zB!Nw)_#gitLvvNMg<=eVP|-bTsM~M zypCe7xg2(nD^sGhD%^||M9@^VHFox3bE_)}2nI(;4Z1#F`PsuG^UhKgex4fDsXy+B zNK_|JY^IT-|8gmv(IyOG{bj(b*iOG*3Ohe^7_$3lTKh9+WbqafCLxn z)iHJQml^hK7oWs>br5;`+fXi%ANG0$HqqHKBNAACoG1Nq5qB{itZ_qys->>i4PV|r{NLJC>?0H z)|)vCJ#bknc|6qjcuA$s?CMJ*nys#_lN2%3<4~0TCX7-1#n$!)h+(mqE_^)q_+fCF z@eQJ_NVob4k ze3iz;|M26sP>}V4*ZvcDHw2*ma1| zd`r}%`wad}8_ycS2&83xD;bjg@HEEk?6!a)CsMjoeg20_W3#o@w6GzxUAGt7uknna z1C+{`a{Q<(%bj42D~i!gmQ*dzdEhSUO5p5SG2y{=Z{OQ4=w2=W6y7a{%xfKwhd7qB z5j%7j=10&=R&oNcR3Qb#&gQe`(>PuHG1Bg`*8A6uqSuQNK&i(ErTct#m6F*8Q zT3l4LO1C?RJlYgf3T7Rw1zVD11Y323Gc9w@enk3`&`hX!obd$UIJ*Ebc z9WJW1Yx^rxQO9o2AuE`1HkV%6M3}F>rY~(=cNNQ{*RBU9d&JhBgy$u#^j~PhE_*zI zC5w?_L78jM1~r>kvAntxlPbw5X5-)4Yn0;&9d zTOzIXd=Or-iy6njQio^ywvaK_GLF3)dd2ga^uz<=^c5Q*LZYh`0WprF4{F0MW47)} z^e?E1k zyOrA?8p&uVo;r}Q{eI1zu|a9;h9=A$*th6fvUv5Z*+YAh_DVdtD;<}-VXwDIGJi%q zpLs8MGBo&+r#~pIncmtpmln&tJPzMjTXZ=yPB!W=sCo2VxhLJD7r~q=@K9k^=&Ws) zPWr=7-BB11d~x-58*<5q$t4tBb?;TbS~1UJ@rUndZ#?Z5obTIiLw==#4u|JU z#%~jBJep+2hr`AV(SK+U+3aofl!}jwh$C^#M7syR8*aySHr6_X271i1oUGcm*Qr#| zu@H4@tmqqUay>2H*Sx1MtT(MWE75=HKJ=&7*(3@Ch|sUiVefg0C)jA>YQvFqoGZjy zbg)+cvu)IpNn=Ow;aGF=uhQ?QS-?sdd_s^+1}`(&^gdG_ zez@A^ykZ3QXW|fDfv>R=x1eZpB`TE|l#wh6 z&-TJo&UBggT+6Z$C2E|^Kr51=91lgUh?$u$3AVW+I~3&xPtH|jo8oz?7|f{mHV3(q zHr222#|pmjvn=WkbUsqq;4T_+Ro2s(Q3mfPECx)twG2Yzhj+Ic_cMPwoi0TX@;&7| z>r|;PROv(4n$OSqg#6RcSxCvrMMYt$KQhRj0)~I7d<~T!?7D%^kpj+XtrtVRs>a3f zBwZe#KTB|@2+A=uJO?V$H}TDLl!VNyEJ0vU|KnYWNJW9%tMdQhUfDTpTTsuJ??qOt zm1{wKUal(}a+JYOF9!beB?>k~uL*)oY;0!Z(+-@LZE-@jA% zDHe(9`ZjA;kh`s*x%H?9`uk*C+b7%~9EC(cl!}##HI&B9@8EIpFmai^{on4VwKCUi z*X$Mz^fHi}cWPFi%h^2o>&5F<7^omHgLM1T<4*YU%kTgG+wq@UuQKRssVyLT^J2FJ+MJ@`@b`e!i~c1$`TO$FG4)e z=UOIO6xQg%E>G*%&8P$a;eJR6I#2h^ZDwwIcw{6w1%;R|^52dq3bj#_Z5_<_l$0Xk zke%zhJ5}WPeO7Cc9mai}-S;SpnJ6*8GOgo{MZ$tbKmPd@N=)nzl7CMS5A*Lm63G=Q z{FnbrLP9R|FXtBpg&KuM>0i`Igo3=JKRYZU6%dC0x1SBVE0KK3{rA+U+5dCukWZSq zmDR70bq-$o&|~dO@%C8Oj;4cgRa~hE{~D&ZP$7ndn)*a7x>WWV5QC@xsv%Y8XZow-qGh7}GHMJQPD6)3TW{#Bq-A)Gsu%eMr zyUs|`3&{jSz!D7KoDmVQo;-2j{K|JkuFCT|!q6O&^@?M@1i#%!{BwfE=!iGdmCaWZ zVP(uKeg+4L`AL|kew0h1uc*~S;DWOv(jzQT!}S?+L7$Ug&U0+WlVKF*A9+BD(Nijv zh)GZP*bNMevv)mgR9|Z4i>tRb75-Amu_ibhf^&neOc_P?;y}=;*K1V0iK3MS{&pf= z+x>MR^^P);Az6|xy*{%qV|i2gAk-nT{eiVvOjgGsp}N^H){V+H-3S6_mK7%LD;4uk zXuEGm3{H7FSmZ6sQ;mldd-R-Pn9Bc>4D{&hGfCULKv?mW3c68~@gHk3*!z6$ucQrA z51w}<-35w+jN1ojjDC4ErI))ZYMdcpHM5Z=R1osQPSib z94YIRqdIEagbon{=WUzPr%jtD3k?XtdjWsul&GS*>RTKf9Q1fPEJ&L5p=C>9J!cYX zWw@h>iy!PR!o`tP*LmM054+J8owef@El|~89+%F!8(A@~K_0eZDdXWnL9gu^k3CMp zjk6dgND%8vPJxaT&9u~Nx%ujRo}GOvgY5xq;Yx5)qWza%6A6=y5e@tP9oecKcsFcL zOcl^ELKgcAG_C)S*Ehq{AOs7(WTB%qfJ>e@8D@uGmCv+jcC%nILplT8T+ZFtmb?#u z;t;1`_yfb8_bW`6nrotQ(*xEe6lK~veqUKT>sGg=>B6b0g5 zwU0p1|6D(31w1k;YS(tOfSifRfg#(*+zu4?6W#uER#;P3cZxXtIWY+-2@Kp#m)qQ) zKWSGL8UDui>yc(HN$AjVL~@dr5SqX;hDk@|h1%zvVrb}NOh&_Vd1th5A7ck#5nN3a zDUJbF^0zU{lFX+T(aVB){PoiXbwsKq0=H0+*#(v#uIG0FD}yq|^HKUUmRd+0qaXe) zo{ELAHhJ%1!CtJl28}fo`!d0i2pr+*Dd@eG`=xAt6I#&J1?9#cL#ZTd}C?f+0WHvElpVWnxjeVVcY4miqVw(6YV2W zl7YpbE^qh@?i0zq-DbQ9oxypt29v4+Pf{vJdG>O}nIYyt{(x!>j2zhX;M~@I*G?e$ z6PfX)_61Q(!hZ8l@Q9xD_aE8 zO;0Cp%@c5?n?%4n_X*!ROJa%7{`(n`S0A5asgLB+OA(#S^ZtHB;7*=qPT zTJB(h%+nsySHQ1}%_j9XDdn-%mT7%Rae#IoZ5b~c=}`8^9L`o62llZTwc$S}(5Rr({Ub@#weZudvVnp_)u44g-JO3&^PLYFk*)F*7s6{!tkc%+tG> zB0f7i2JZ#`v0}N&Ac*oVARvGW<`46GM{4B47Wrm07*6Ss$gdK%$?dcLxYlP8x>Uv{}S#BuEque0b+{eP6 ztl~#$J9B|j{drr+p%G)S*Seq?zT7vznU+)#V`6soXHO&^of1@)TqgEQ(DCo+qAK13 z$}it^XWI8|j#iSmGB_*p4pNFn9&aek5C}eF!1;v7lRA|*Ka+Z`;*Pf^oKNp|(84!a zLs3)s2D~wq6 z0bcR^WoZf(kEC>iat51lKvS)cVCz1xBKPi@fT(opZwvQt196^d3e*!wZxd9SYy5#g zh7R6ABBE8f;MDAgM<`|BQ*%lS-y5oQIpiMyTHF(gAS6_vLbjZ-w)QsI$w{gk5`lRT z3O2fkNnQ~AgU(m&>>ZNRl)>Q?rVVZysQ0Mo_;Rdj#ohyba4Q-xOP+;si z*6yMGLE7>^i&4IqOoSJlwfmMjR-JIIik{awST%*Z!bRou{tL4xWiEmlji&aNYE*}L z2)26x59TY@4LMAVEVlcz>Ni!k!D-ZeR|rPF-XjkuwaLjMQ9=ux3SUcZ%Dm9We8fO| zJUh#bz*ml0-+zfSYxKUbdt;_MxFT$k zJCi|(w~6`Bj!&7Krtw|~Bdo37pz(EY?zB0c+*bT0gV?Qg3%dBb7?n4wS63|Zn*AhZU{g_^uc;Q3&&(nl@n@Q^!rOqWhWs@aq zHreGgmVF`rtIF#n6<7&twcG?e9M5Ww z^{#Y%#1~C&#qVe$M-UtHTJN;c#@?B9e?XP}gjcF=Q#LPOHuQ?OeZD--G}rxcOL@l) z9ZP(lzlT7%o1nzAWnZS23W+EA_E^zl9>S-HjgK%NZk*T@EhuM5t+ zk;3h=1`-JMFZ7UTn6d3RYN+CID}`EYIXc~mmBnA~B(@H0DaU?_OB5^ko9<+7Rqc z#L%&~O!`CJ9w}C6^Bu9ZWf1+c8|2*Vn%i3UxRr5C6qrlE)txord%^JH+j=)n*z(B{ ze{DVTr{%1TnIrCS&umdLmL-ze+AYd?&FUa6@CZ$@iW-=i+^a2)(s_;4!9kl5ac#w@ z8{2YV>$YCy3qGB1>-??0nn(DlNX7%=g_-s3&)((YS7!jb8%4v0jWmqiA*#B?$bsqpZ0((IU#Y+ zzBLc~?jx`J?wql6*O#ZQ4X1f?CtmGvCJv$^QMlubv(oxI>CjmAIn&fEDMD@Bq7Mh>I0*NK8w~82tFkydQZ>RCb|L%g zvL20gz2tWN(!4oQzzNmqRXMAo76o29H)SYYAW?D7g424#X6>r((oeqL5QIDD>v5Dl z1gR1a4ExP$_ONBNEZOS^L(o0bbG=Q;Qkc?a6^u`4h{(TW?k_*a#%0LL$uYbSr~jo| zMOOZi!zp}5>QAl^g?gT@x3#fYpI?7!LZ5e;`(69R9Iw3t6TsVvXO_;#9WFEV@Cu&f!)$LR>$ix@V+!2{TF`xDQI zE~T1QuZUV@BbI;ECX^O^(M( zt!|Eye@u6X1ec-(Ej7F4l8A=~?`pGifm(%jjpcG;o#paWv$M6^-N~RY1oXl$!{I=@ zfs|2t!L@)dMUwX%^&51(f^5;UMg|#X0naXzr$0qT+MUhGyk;UhI@iDFJ<|O-0EQA( z=+tv%U&W1#C|6c78$%;8$PObINCr(-MwT*IHrC%QDv$!Ldgp3Yp#w# z?(t10^vSszY7JHDOIA7^n zUR|y5Vj^h2RLFqhtz%cKR{NuchHBbdC1O%jrG$jum1)+}xLEW@5%69Okp8|-RvN1} zEFdR;KtX{42YKn*8N=zz$;^3Z=cB`Z?|K>Cf3T9gaD2B%WDee zBn#enqyT!LguDS|&4MY~`+@(h)cs7QLPp7$x90%qbcKDN7^mRw3fQsT!hS`KX#^fb zG)YRy?r)?|%O#W|E?E35#)it~K2^ZR!D zq2SsbdaP!5rAwNghRLpvd2fXycKq&q@26L7NLX?AMa2~ZrQwn@%V{Q}$onT`*) zaRE)66lxYnw(|%x$pm77m#(8J;O6U@D)M%OvUKS&$p zu~|zoMsKcEW5w;bO!PI4&0IC+TvASsf{ZM8W1r`|B`%fC92Erxgq|VU%w}{}8f@Q> z2L}Xv2Sp)n-BX)`*}T(p1moP2Z0l{{6d}&?ov$n?`txGb(nikXj4DfPk+{Xu5mWpV zd{PRuqto_u}sj=&TrI=+o-*b5F z1r)syx1xT1OyJuoh~f~vY{EDK3VlDiKAAP*j| z)CtT8R)C)=d4Aej|I8PS%sO3So7|b{BvLlLP3Oy47_*!2)jI8; z(|N_wltUu=HzX85+}PVwRmfFuv?K5A>}+VxYE<(N4u%E?2Y+8eEhH>lwP>MMpS1Tu zmERlh`~vI^=PU3Rw`HhB?+?Vm7F4vbU~%lzwK|)(=KG0Co%xjzR}cQ^zIH$Ds?E(l2L5`@L{Z8u#qXIOWi|3hhiE|deF@7wo z(bm}vUam?^eoV$Acp|YheZ0kZJ)u3+{P7QZBh_zYOY45_fmXc01%wlz6UFjXIPuwO zpN$%vH$1!_k8{D};eFU2b@vik{$M8$f=djlKfpkxH1BCim+CB~&CF<=np-y>)6?CEN$`sBT1-^2fy2HPzRQ}0s%6;`w0=&b3W?dFIlp-~wQ?yNJCgqE zaCFQ!uorm%!|+j1TFkxnACZn}pU%?!Wn&eyr6&hyJG?OqixzlI1|{w=UeaS@yKWAr z;k3QacC%ko;kVXs2YeWdFYg%7Cri3^=L}B%6Z9aO_#O24vG#-c#=`^odY%j0Del?z zoM}|+?wrdfjv@)?3uW*fQI{keosa7kF|=I31o_N67h7QAtHByqeP3p5=5{+R8w<#KlLppX$snE0-tUd+dSPn z$3c2luhZ}SicL4d?~6{W;d^p&vfqBa^}3ut6as@iqZX&#ufZ|f4Vs%bFbxYgYo^w< z+wDf2a~u0)|C197JA7j+%TtG)?-`bq^9gTnTwFU%U@N9GIUj?Ky$4r-DaqvyPNOfe zS#f5Qm5CTEryLZX>{$(-{amh}Vnzjcho_b0CYtnFRv38v7!YOOkccd~0}mw(HixaN zY23hCi+2%1-AiKN>tqaH^s8YAKc(jv&=MsQ3%yfXsDInpouzK!Vcy9{Z}T{muFFf~ zMD^ayd!x&J>hPLT`*&Db>ih2b+Ghm?WR>DC)D8QPpFt~kIjx=leHAMH6zklkRVyc> zp$YTx@fkMf-Np-g@3#4En;)})aXWj7-{n1`-q44RD&LCr=fD8qI!m3efVQ@_i>oUN zrvdIESh;`8`YaLSI%Z1)bB4xG|I4fLk&N~QaN66m=UAlXlZ~pxO_yhpsk0P+hqnus zvm*WX;r_tt%pcw|=-Jt9hc5%L#RBa9jD4z&em+f;W+GTl5!O;7>U@2Db=&QLh=Q@h zF5j{b-N8YX`f83rh?buP`8qX|bdlCZGK0-fv9aaO<&gj_>bj8A=NZ;69jC%gDtDv} zliy0s-@uiLEF)yE0e>v5)OX!fqpB4To$I|(GIH|CBIN>-EI^G33I@%WA6~#GQ4XD~ zalTt?{V2AO1NSz=IiPVy1Eb-{_B6JAw>_OKzi74E-1VtI7c*=tNia?~Y082Z8r*r2 zhi_Mqh4YpGyh{`L}nBZg?f(nXA3dO z5DSUY+;!wtgv2FPoj|_zOd-ni{kie$%j3?@4l*t-?9M6`2sLCp-5x80_6&|=W6l5m z9)Az`3Hb}D1vbC}|85?4aBaw#s3PxFK!8H({lCC-BNWClhIdX*PDof72|0OSZY~+v z(QJvhjZLN47Tw+Bb|IS!cjh;MQD0?mLQYN< z`OgM~rGUa^pCu$h{D}Xt4N4=RL`TdgMiv${A7eG1;htCi^(D>xJ2l(*DWpz^%q2D3(j4XNIJCf96xXrYzaEo_B8j!_Xj}X` zsow7Hy|&#vzgTMr%E$Yz-v`{?PEBxmbhvacLAnKJ*Jn%Zl?)%%^gqs2bKh` ztXGk;Y>2{Gflp(r=hxB9*G12BP_c1d`w2rVjfNuy_%`6_J4xOMhC)m9FX&lAuQ(7~ zH#f+cnyD%GM$hLhyeA*)Rxa3@m7^;Uv|YRxJV#{M!Q*<0oLRP{0fYeC_;|~#DYMbl z2p3PZMy%s}THnEFFA=Aose#redT=>{70@pC;lZY-PDSe9%$Ac5<}qr?|A% zdit>Rc<m_2b*vOB9WNurs&Awd@Lv@PV(5 zLC*8sSAb1}<(WYXlS}KhS8?QanWxKgd1YcJ+DlBz5TR`q!8;fz102( z(i$UMMyWKFF! zlFAnT)w;EIz`NRLwCTW|z_$Gt>rXy^H*veyMyqYc)195z83(1ATUl$S)H+DL@ zkWx6EYG$Co^lnj>0hCSDgH?-8K+=?$>V}LB*8bj z0?8mZPB&G3ilw6;`rMD>>&4|Q84Dk%Dk(1WFfw{Pr7L=KJG?$c&@KOi@0kOT*muUy zm_>tSbNyxQO@FP_((nxUj&uU7*XdjS6IPh);s3aK2RjV^4;N zm)B=68Uw?IsTIJ~{e)mfA}FchY#6UF)af?tFka)_rVqPJtF$~!LudnY4PampJA^3O z<({H)qZlU({J_QZgW!w0@!|@80oy1|b?A%1ow-|E{N$gXF?nOzp5;h4z1Jqw2E=IX!f{sV-JUmwiq{cbz zE8toDZ|E33Jn69cy&jTr3=9OdXS>Nr`5-(zE}7-B7RHIE$-Gg*!bc)3TKqkkBk(<1 zt2u4wG`v|z{bjnL0q58EV^xQigqh2kAKKZv{o7p@5xVztmfKv~%S+3;?2?&z0|ci( zF;&^F+Iu74Tj(45DxIvmqcJ|c1mMQN#tyJqy^)6b{x+3bjfEWO5TLS#E$ddw-ovh* zT}&#lmDH8b;#s>MZ_|?`R(h82G6RC2V_k>|pEbq}dWnd+$YLwQZ>XH-EsU%yWR~kx zs?uKqC99*pH$I@0mmq_Za^y{~>rQs;GKNDzaH}I79V`u~3AAbq4{Fp4B?_ILt&g`o z2BmtPYSIf!HGHEhoiJvyX_d8f4`$5A-Aj|@ZZR0hrHYfRHp|0f57VMxc#e3pB(~S8 zO4t6ngzH_2xl63Y=G~gL;I}PKm8Q#w?iLG+b+(jVw|EMZddTYS;3)1Kzu0KsO!uwW zEm?||3n^5;TH?+P8XfNe-;)PNl%;VhG=9AG9FKOt8X_-U2eNgW?e-P}hmQxfZjd97 z)`l7HXw$Ki7VdhV9Stop_Bwrv4jW|9rX31D|H*7Bb-mu<83QDJ-+{fQxm=}Smb%yw zBgt!bch=DTnnJvKc4lPucrl1dIjg~$!5Y^Xe?L^7(|fBX zxU(L;jdZ%&bq_C`D`#s1o5QV%l-w-2_v&11f{>Mhi7(Nd;HLyf_>wd_~Ncd5EV!Y)p@MW<+aq)E_uFzJy%S3u2-3 zV6bkf4T@ipagy~)8INA;Imi^m7UOIcb2MD1thfNS(cw!Dy8=hwi$r3Jq2Zyo+13d@ z&`&Sc8%ukY&M_aiiMiCeNA(T^a(?poz=_MTFLEJj1-=T%XM;HR+bSjZRF_BAzo1i5#{j+(}JTnL{eMGa9akw;gaN6LcV6np($3=5Z@u zGO>%r`~B3ze(6H>J4^2!st8tIlrWf^hx>rT zmMO?a8X7V3rnbr57ttJpwl1sZI+qn`Vz^XWA!hbVpltce5K<+N>~cNv@d9xqj+TehLB{@JQZWT@Y901M!y#-S1j2%590lr;{!f zEQwm)K{M})td*lT+1`=YdtQ2Rp(S1%HVgb(wdJz>6QPqZHB8PorGd{2F-JPT#TV=f zmrj`&Qof{us;a8$>FJ?D&ij4_%HB6o{#DMT6?%d73H$<72gM{JG6Vyxay8X28f?f|wSdHQ*6wDLZKqf}9 zn_}tj?czo2>r+y;bnV;eX;9QG9k%HBnhzAeCl|GW1OLhyfcVbbXX_&fv>arD-g`RC zM9-U_zLdoBD4&e+e=iyqAIH^lHA!S(u&0NesI-WcG#pqFoltNV)@hiU=jAO;+gtS# zSzR%mL2B(!3pc?O4kC9zv|Yll7mkL%P$)1&LL(;uokYn@qik;2ZFMHgDJI2I&+(e7 z*0TyMWwBA_(G)u0H2w*wf}d9tasA`OM9YbZb>ugJb~rLTWTOEgUoqf7`u=wb8g=W3 zqfg=Jp^_;LjqV9guj*x1_*|Lq6)67eV?~X$v&}=S7!+~Axvkx75_Ov(G@%6#XH)|DDnyckYuVe&^k|$f^jkY}j?JIMO z&+cr?e9IN~qkI0(#?vKTLxa4QVLw)a3dr)kCfL4#L*m zS-s%!)MN{mzhga-sqac7S#8)B~3`@q*B((vSqiv@bT@H{kk8ZR4`n}e8!`Yq_ zuPx3w*i3&jXy;c#SoO7}q+~$QYp6h+gL&ulaN@=1+b-v+5pCW~w^ja+R|&E&cNN^~ zZ$13Ggz4RI_X4B);dOQ^htdX-CQIwL6o9o=_~E+`HK#3c#z-DxvS)eDHjx)GGHZ)T z)Ii$Hz`dsUUPwofP3rNyXK}cJy1LP_OGJbyiaf%6Fce?1r#k3EiUl z)Rv^@1^EehVh44tuezg9M4pXpOs?(r2pU$<@)^?QAWBq@F-2Zsj{#IlBUyKlq(l#x zC9{#P%CE8#2K2vJrZ_=)eT-tU>653gU=k7QBj?g>#Pc!!zJev?&d3^UPw$p1bszD< z(5Z{u)vGV`-Bz!>$p}|^mPE5qwHv`T3StLkCqCqyC{T@H$NuWfX2hScR5 zYI}26UPr>PRFwnqJX(MCs={`Uo9UYzZaslev_3AKeTCn4cl0#^kE;%I5FMIM6{kjLPP#^?xc6i6wveMcK zo38wwDa=LYFU_DNB^pD*#r0T>K{Ha5_2^a?C}_knnLeV*M*zk)2D3u zLSpnv>VFu$-hZvEW>3|h1?8E!;UBtfa%R1;a)qOR?&S|)C)h&&DDo!YeosIkddqI} z!qdEXqb&ggE`*dFu-43)C(TGAn;Hf)_5LzABn&}BP&5}-szOQhbJGo`8%#j#+VR=Q zvv?P30HmJ@d&T%Z{@6#JYUeZ0v(-g|%tnwqHQci3Uw8s$aH1>H0V6}ojlz9y?uAtS z^XPjc9bV=b7DQj=g$X3XZGYv%z9g%IiUc=vw63s#!F4Yrt3O)rvUgYCx%);z95@3k z`!~X~u=&HAXf4?WZ_1V&Dyq+Mh}#pa2?^IwO65c0*rlfntyWO<&27<1)?BQzUf1hNaaXz4t^qSz}u z!ZQ46aSo{uZiCW~!x1y&g5?T~$Ajbx)l1OwXxl!^h`^*JMdb~DKc8ex@J!<`uv{Ov zvArjK=&3kaeV{&l9vv!`{z5g%Bi}bT8@$W`dVAn{zvi5Sw%_S=ktq&!7jG(O?+cic z@)pZ+0o4I|YhyVqtW;grn-@OO4M&(?nz3#1%(0-*$+tQ>ym0Tvr(BBu-J*8KFhtS8 zi1k6>@Z>Rq10iel&5Z#&18!)6Gxdwq>;_YDDbY*G1hro z)z9l?^Pxzx$^rL*jXNWO%PTA=`8bx#$RUNr(7_G#YC=@2KM#o9k8I?bjsh)FX~xVB z+TM&MnCI6*-+j%MCm`IR3IGfdQb%n7{ksm zC}**WC&lQ===C>7*1($$FQ!ql7$Y9&_P!F?{&L8lwbjnw7PbAuw1-vv2mf;Ng23;OwId0l|3gxKB$V!eufIaMR8@<}va(bCAC{)~>Zk7TS zBbMe2wB&p#Qlce8u3uq31|SRVoIXY6ecAEKA^CK5&bul>YB!Bqx9I%CxSsIF!XpWg zNJvay(W|bKt33)oC*vBfQR21##RR|ac^UrJ#d{Ikuchf~I}cf?++z3iDy2QJ;B-~) z!Dkkq&pqW zT_oBKOqssbW4cY=_}hkaXEuAS5Y8dIw*s(0){y)PtK2IN%8-WoERG1kr@Q9iywkmwMhR9xRc?pefL+BW#4W?FZYSahmeN@9*b|xG4#WIc6S4~O0jxG9&J){ zpREmDwy-gULi}VD9av#Z`p&MG7u1MOXtz$ zG{`!kf`bbOntoJcQ@nYQxkS8PA^ZosZe!YV@rghiYCfs zEd3Qk?A8?;#r)Fi3kI(og^MsaR6@TcmSmjnD0EU$QE?wo2BSO7g zT9Ng>q*62%HkT1~voULatuW!xB*tDsZ*vu>oDkDvA-ZVa`e(dHXuZ*>pgLsytueT%52JT38eHHy}u^gDB|)X4}6U&}+ZTuPF8>)`H>m>cTzfXvTLH5DDf;$!-`;86ZjJ-u=1NVHOH z?LuD)wI#&rkiCKG0uIao!D$)HuWFukO*B4FNV6)6pH*tLvbKK|FGiJ_niNy-18dV6 z?G7Bc2b@quR3hKBy=h@ni-BcVtg^y`-6NSN%|_PddvDj7qN)y0!CS_kaF}^#w1w+D zi9mZ-S3#}Wgel8yzySWssuM3+2B(p5cy0~Dzm{HiK5A2?!9w*}MGBHV$8GMDY4pn{ z-O9lvX1W06w>nk9Q=D2Cb;kimX?;JN79}Fkh_AVU_3#ydd5+{ zMtNoWMa=ry=SffMS{lAg+~wvM%W$_bEIEfx8ZdjYITkO*Am1XH_qYgKIC6Wnx@JD!ECjaLy_*%WJ~ zgS$rNuzWhz)JtoC1s6WQ;tYwhL!^=Nc*A$Bgkd3e89MIjFU7rqwp_1JaBhmkpFe}3 zVK7Putqx0lSQxWizor7G3K`e8Y*eaKnTdVPTvDO)W!6=Uj*T8}1rLa~*R{lo({XgSOADMEhjQ`5 z#?Ig$Q9kj{w3@p-K&_u(h;C;{?Eci^ZbEZDlLwguBTvH1P47Dr?3-<`D6Lj+Rp#m= zUC?QVn{tjuD^@B>;>>mRzF2`pV`4}<2nM?X8w=BRdBHw31AMo8$iWz=6h1UH@~u5J zi-wrJ2QI*;3cINxtBk)0#~>@&N1S*jNn1jH=H(0zUP>YdF)N9;d=&KLkry{Uz?fBA zk6@q?U_K>$8PSz~F7#eyr!Nm;*AgTmDGhmfq??DT)FoDI!7%NwJ@we7mZq~W5LZ`R z_~ET5#C-wA_#!OGu6LJAH{Ig#U5Gkg)1H*2o{wKB#D%9HAKyXcR6SY zSu)k-*e(?TknNNjaP5-kCpBQniYPEe7rQ6wGDd*@K%pSJi!qKNj6sj`*mf0)^b?KW z=PIY-*{xzfW3ezR@O$?v9G6RzG94JM1+JK+`}xZEGC@nHjHiV7YXe0o!|5s|MJhRU zDBq92Ma`w0+K4nDD5!tUgESx{j4IKVoFkqIFSPpmpa%^HE%wXQsG#Fa^<0?TA?rp6g2l&prwxf7+#G(u4F_t%QB>b@#FNv}DKhY-z9x^?rC=yL_K zP{5Og^P}2RgYM-NtE6(=heh6$q~`YCu6!<+)I>Btu(O#A!UGUA`_Trp~ zn>rcgDREM_Lj^3IqXnC-V)Om%(M8Xr5uJ*{Z0Tc4^{v9_l1HdgHh-D4g(@pLDkK$E zng&67Syr}DU9;^|74E_#S^?6lue7mHj?-Ck5~tb1t|dU73nGpJf=h%AWLsL6hpBAX zX|UJF@SSQ36ilZz?Bv=$G2kxWB49*X^MiYVNSgf$bS z8u2ShX*5?RB?sf|Hort2KV}vqxGR)O;vsK!Jy?!9JVq?t`?K@zpB;O~qv0hifN1@^IAZ)0VWkBY00Gq;4H)v&=6Pn;Es6r49uO5s68N{df%{!nbe_A9DO@ zdwmC4`U?2K*@||mMPjlHfG2^#L2-NdyadP$k0>JoiE^Q;BV6&C-;26YmHq6~K0u~%?RaQ}a*)sASKglHXO;+20B|P8Jo-nE22g1t?sMJ(fUNiN)l85EoA|$OdCF9R< zccX^)&%ETJzTd2MbmBgt+S0sE0Cq1Wqh60Kwua)RnNn(QP~@lLCXcRLR`sY8!j#6- zWed8337%r2vB#In$hIuDjA*xdhcdob8Y9+;vyMEp6m{MMwL~hW_2s4F@5*`#THE^9 za+p(L4il}qW|VR;Z$0T!RV=!P>)h;LR+Y5gHqgM{c~DK&jD59VI-7s$OfudDirKBA z|53ZHSthCZJI*A+QTQ2m?}dH|KcZ)d)pfTsRr@1`lO=1^fva zpH-J^YfJ%z04FOqTvuDGyp!Su!ppe93@1%_%Wsl2A})yeBo`wko{~(zSFv059UVV6 z^0j(VclxfAI7p_+990jSIy*sIqmF9$Zk;yJz$`pqJ1aYZ0&ZLHom%BGz}W(;o}V^m zt|sGLo~WP34oxSPgAz`LE)>!fEO4|?Jr5y`8Y;#YYKt^}@%ZZH^MrrE3|UIeX(2Fx z%&p2VK(fb9*WEh;>{k<>lNVO*aeb+lreBc$e&zH`E1FaHlFoD%2%Qp4psa~TM1nrN9?svPY zAh$!h1b><&a@=Hc1hIwFsMRC+O_)zc)GSnrAtc}4GxNB zAL{`_T@F^L)ttS1er*QpJ2vw0r}2fWfp^N|xj7}i*>%P}KZM}n?DjM@h5BCFf?lIg zH+$fi*cj}Gmf(wSc?reb(mkmrT+aKMO%BB7??`JN>hcxU6#cubdQH`u&~LqX6^3D! zSp2}d-EFwAEO@A<4{EIU)dh{@f_=wL+#Z+CGi%4%@+dysC`k!3OV#cFRP(@PDeH)k z3WLw_m;FGw%eo+1aQhU}Jx-^F4>bZVdI0XhBATrszU?u;kL};l+BiQh5C+ zKG%vCto3-c(XRhRnSMQ>=r~0D$FCr=?+<2#DPk9xjB#CdqrsA6w(5iCok*j(Ha3?Y zR{bmOj;s_R3`ng;d;7vKb40IBi()V_VB=+N&I02$w*#pnS{2`qc5sszD1-Z-3pSHe zk;e(r+FiCC*N|sFl&+o<6uAR%uhww4#+!j;#4Nq*A%6~nk1{kw@<#F>2nD~%+r**r zbCbp9R%#F|hmG5+r{JiJh=mT;M12J6DSiI6ZIRUEuk@{`qDOAqnGZ>-Jb=;}67IK) z6wEz=^<%&##P1_NDyp5M$Oql3Os6I?0vWFC^1hsD^;-%l7Q=P*WdtQ9I6+U6$S&l^ zMM_9{I=?R~AfpPzs7zm@_edsdmF8+m;1ih`g(-QcA#aqB zf)qPD=KgFwd~v?2hbPS~5@N`fS2++*%H|19Rsrn5=r=JRVvf#Yel$SbC6R!(w_Nmq zoy;bmOrm?W28uwJ{W3Z#V7O%&<*S7U=P)azJsGGhd*2|;EGVg&r!C<4V5J_HR(cLy zTU&y}_WA6#h63@6ir)pkfuLCUA4+?2;PG|N!K220I48RN=GqrA*b5+;80?>+|Na;t zs9uiy_*F4}IhE?qU4MVPv5Lum0C#b55&ihj%bVJyzwhrI8fK!%-kSQ}c7W{sC64AY z1vQ}c7&Kj6t1;I9QpA9sJ^wY3JMNEs@o#smgDVGg)WGd)6661wE)zwMS0*<|h@{%E zQnuo5Ow6D2BZNWyYvoj9t(b1KjaS+7ntoMu%a)a<3*>NZ5K#kOfvUw z9#Pq%CQglO%2Q?K|6_F%5o63dn}IzbnqgrOO3)&deA1z^{LLtcM zZxYx;pHKI~iRu4CJoi9wJm%jE1mdmRuboUV2j##Z!0W*9vRAqZXqD?BnmuIz&H9_ddV4InmTOd32oT z>ziulxp$fdCD6EKppnjsssdphDi(p&t3F`qFkF#hEOL4KalrZdjqUODHpg)1C4e5l z@@UZ!x2-Me?w2R2pYWfM1UE~VsJx)C@aDn8_zG!?gBy5`7O;=bYgLFsK8bg_-O%Wc zaRDsZs>bt|&1yd4(rUqD-f z#uBxt;X6wH~b}vb3zLsQmNI<~4}*UB7gohpuo8IWy2gv)ySix@wX(v^dlW)GNIwAq?Zy<6#UUrgZ1h$)AKUipypgpG+1>Zp5Aq#~6Fux= z`K#Uuz1b|GQOP>|kA0y3Nh}nL$%tOJ%b%N+k}()jrlTmDtLYUny*kOcxurX$yxqpl zTr<9#V7kWG*(jc8WTx1S-wX3=RByS*&lggjuz;$|8)*jut#lNsp9-Rb>Z&RjEyIUH zSL{FYP)nNUw)|)`Ri`Fn;)#ItH)h)Co-qQx??hLgXf^wQ1$#2ks`Itv;@gI=%Z{kE z1@J*eJ%y^edBZ`7is^+jpjuWy!TSJB1Y!-1!DReaSF-aj5}fP;k3h*YhERLFdE1=^ zNG27hg8hnOD4J?l6c-*8@y57M$QD>kj)6 z{oB{qiyT%(>#3;Z^N*YQT_1|){qzhEx0~A0GVp~4TNZ#ZnO#|U_8~3qklylWsq#(I zD&89UPg^3EA3&CK&w@K~&q|K`$=L2s?#RL9&dD_lo4q~?hfsVBB)(J!%>IpxwT)xt zf*svU_<{Zo)r5E+rdRE`e-aoj2>efz$RBsm<*q&Q^g z=BHe>$5#4Q3eBgaSk&QimT7W@BFLTM+TE!lOAYP^s?>Zv{XPDdIqS`R`Ct?;Y9ii8 z)?%YCEEI{9H|};0cfPp&=S-fX1HH6_f&hgdN(r~e?Cmj!dFCkSc%k`)s5jR^rEoV` zeGcfyDcvb)WYtC#?=OXiZ81wrU5yuYhA@hH2603}#DjmhuK*U*xhh{5#(PNm>9+&q zn91kiy_wjen7r;RrWobrPy=*F*Rt%Y4r|lpGFES(ZP`v)o%Or-)tc#UhFCX}1j0T< zwGZRa^n-s)LmiDK_*vt!AZ!6&A62^rkne@%`5n3KbvIVE*TdpDyft2Gx+zQ@YFZ*Q zMP7)lS8A@@T#tHoI#mH1LPy-bLD#RUsfXq{PxAM_OrHPi)O11qt^S0Bc6j8ndaDlV z!1~s##Lr$|4(4-6(3S}-BQK880j=}lMO$eKGvFqykqv31x+AeflErF1JZZNIxp!KR z%1+&|Y;H0h392{f)eJ2-5UmN^@k(LpgwEu0HQY{|B9zKDx}6c^GvPQMEE}IKjV$vF zBInhWx@3T)+45{q4b%}Oh~)Ay7>~;DI~+FP++=N2 zfAlIOYqQI$e*BQZ6q9-%BLYFSKshglLe%^4va)+x{tRvWU8D z^)<99=WwIkWcj6@WQUbaFaOSn_kM?33_!6J=99Oe6v|A4v2BY}u)se@&yB`!Xnkpm~H5Fx`YZS$P;Z}10| zMl*~ns{p3eBihNc{cAzPW?!Bk?yn03nr0~hIfov>)gJ=wi~D8p%P>3{TbO`db3Zo@ z0$9S!ly`N*GsdHnhPjw=3$|87G=9JAZg&SqQXt&ESG|d(A7?zcts{f&p5BK$_9so3 zotBVu28%@+IK2f3k_j`~Xc=?P9`?>dB-uQSL9S}^1P1zy21`Wh{`yrVdGtyG-i9W} zlCWKyJ972oT`z3H5AA8)o`N0*2Y?JEYRQPiEEfal5m2q?q)v0U796dC`Dp6;=H^ce zPUMe4<0aq#w1=B*wNN*-0>=bI1I+1zc>{K^AlfrSnR6$jJMG}I&d4Y>$=w3KE36rd z_o0Z9T1(?p_DiY5;$kxS@{`5?a~L!CT?v+`?Ft68YkiPv?nsg76In}AS53{7_aSNWIR9YV zM~{dn^~1p%nvgGCU;hNjwIrKx-s-$aDM_!teY5P&%V0Pw%)fw}J+bXsG*QYrdIv_>jMRC9luGvV)8_k ziE-2s`az(SY#g2Vlvqpb;xu3N4FmQkf?I7e-AVikb%1pxN~*r^&}cJTL&bRgHnsmZ ztn>dBtYfrVnycWz{);nZxKKU+6WEv&ZTtnyI{yMzxVk(J!bvgD zi+xC~M!pq6J0LmVr>wH3UPKP{m*UaL#Zl1cl6hkB_!Jv!${T_iD?e1|A4h0_DT73b z6jbWMzKOq z4mm;~?Y5-675Icg+dNK-;sPwat>X@VQqcYYGhg+y{%u?IE_Y>CkeeKgPwi6qA02x9|#BmsrK|FH!oih7$KP-t`TKueioV| zLD*G}H#`SOK=z4nDY_$TnR!C_b)6y>^s3Es4`5!{9{vq3da0NExTRj;37X;sMmgo^8g?o~16dLJ3*I`Jn~@Ects2F3iLK^2m2`FCnf zNk8~^J{P}F=%(3#-76Q4Mbue~M^XWZE^0y)ZY%iz+!8REs6uA7I&CE96o-F}$>Z5d zdEmEg8FnygvQ}4XY~DD%P1bI+r-7?18R&RuX7{)T!{I9(KDcY|aymw(w8ZOwx)4~b ze8b?>#_o=%35hcG0dLQ@KHoXyYqTK?Y=+L?Xg6nX<>LrpNIJcu-j10Kp>(!dC3GDZ zJWNFT{0F+i4u9(QW?(=>iwJH7PFARrh@;bp+rHUdYhy{t>s3EgCylM3+?9UH`o5%h zwC&UX(w>KkV`0fCDlz`R59}O-1AfUXTr`B&oG!RJ9Ern}v$1jT&Lxf=wN?_77Vll1 zluL9&ei-@(n$-(AE2w7HrO?i|y$QGq_XFWbUFAS}>##=87!bNNUf0$;G_!Gekg?0P zFg+bBD<#vmV6A`TUm_w$3tWNxonRt&SH7`>=?uqq z4;f5l?4)nBq|tRrTXl(ZQ?-$LFS4Ai-Ko7?x;((-!5ig2xd0&{jo@GPG}tFU5$<|! zW?Q8`fqg!Hgo#DT0UHpNA>7`4^*B5GLQ?$6LyyS>8{}zd@Z8}Di7Sq>)Zb}x*5P^I z@6&@oI8ci|Z;i)BR?sL+cSkSx9L*2NC|IekP%KzYc$Ye*XcrYj5facNOVwl;Q}QUb zH`Iwr4LCji+Fp9<2y^wdhp#>l4|qs@t4<);f+;Eo8{{HAq&#k{y)J(s?7320t|5NG zM#@on@rkl1QON&9g-A=xLUe_j1d89672>#3w)<+Ml?P~(-ruT%fxK`38JDZuGBT!i z{qAgmCYL?joiGDlmBFk}0i%Y%ubHbWxs{un;lI3=~ zrsmI9&Tt@IZBAg+!y)I`Y+&_zR8|U~+1>XA-e|iUv#nw1pQRyD%~TT8lgwDwYMH`Ss-&tMPt3GcVu(zRSY}n?@Vcm>|E?qcCVvi#a0GaDTjbn815W$@!?n zl2ynFQcns>SG=kDS;drdtcc7f%rOv4ZKOmzkQvf48R!D`9?{kLDPN~YcAo2vI5VI| zdwaX1&MS4KkJW{Pz*C%)fd9V+%$N_NT^kN!G}jdBbge@ZiUdF#;WzNtZi@r_*bn`Z z(Hd3#F1$GPa(S&dKif3rqC~!(EXZlZaMrm3T=u8Dy~j(*F1EVT=&_2F!eXTfu_*=2 zjF)YXpJkL>lQdi8Yn%7%8q&9dhOU*8_Yq4`Sq3`#{B#5cOXG1>RgOK2qZlkDR^M*i zE4_xPoyy$^T07A}j=p_s3CnSJjOLZCEuAkY6Q+TmWJG_nN}tsHnSzstu7x{gZQiS= z^TfXBrORB=@*Z}{DH6+m)?qv^yuvd$~Y*gRO;LmoiN(-#*=p z-R@zflI~gl6=G)#%{P5$+Z@}U%(=?^F`>6eUkl|qzaZbfRC0YZA9TwCr++mNDa;>< z`+2c~QONQONAB)AvhxgVaoBXzn~y-YLV$} zPac=YEgsZiWN5MD|3xrv;0Ye~YgN{!IiEd1+0nz&era+bLTc-PZSTEqQDnTuMA$+5 z7(E%RW{k+n~j0An0#Q-b50OXpg+vGbM8 zf)*=NOIzz|fp&%NOqo$v{;>(VgTu=(qX?{%R=MDKhG5WzaT8X-rYw83a4UMXha%*) zw`I*n3(uWWD#jyn+4`cyR`lE6(E?JIqer_9SBD?8e$kF7DcrQll`b|ES`iriWgBrmLQF~7)#Zb^J4{#? zYAWI$m=T%>%HbLpcy#VVdNN;}g{P<20`GDiZ)v2y6;_xrW}6lZ&ChOb6`Dd?S*RIc zlK6vQCJyrrhQ02>o)3Lx*uH6g(B0S(G4}a?Y;|%QYCRBI@*rj;|GgY5W{|^*%9Z9m zD+Lu%I&=J_@u^{ql!Re7YyKE_rEtxyXN{JNf)IJVY4*-)A8QO>^=jY<&Ac^zi%}Tz zBKb`bS3zO(LH`OPs^wHY8{21g>4nH~JWBsHP5;^T?#e$mACvpjUlv}Gq2Q3@AFu`l zmAqaNi|ID;Hevv`>KWO}ljBh1j0p&NdyBu;4ldH#!<6{SYlq|voB{AtHQdo zD50OKf1SXPqaW&pND%*EQNU;Z4`GIGL&QQAPKGJGcQUc^Q?jTThOgPBsWvwB6D5{d zic&TAk7~yRxXAr)8hl)->$ey`^1-G?|4iu1{2I|WYv@xt2@p=0{W)eQ6NGJ1-x)NK z2Kw(c(vUwVx;Bw{FWfsMTEgy13&MVy97LZ*q;q!nfLokyw&c)AFQsW~OBCO{Upp~Y zz!fZq+Ts}qj>Uxet;K>xu(&(cA@DQ4ol#$ae)p#we}a4b!5)PFMh8JK1>A28?4SSoqAeQx z_lWj{pgi7!kzCf`?S)s$Bbk4i{IKBbznmFk9~*li%pw2vcR#N_AQ;pg9B_m z&T(JUBl4#k7QHWT24;>Wd#G8=tSy^jFXQFeyEkQ6PgqKGc5!(5R8+17_B`V5zw|Bl zzNL`*rFb#=j94)aVtxH5KQ3d0h$)Olk}uLx&`3ACazr6MXP)RcU&&c$v#x{_8b}#i zNuBmJyT=l|DO0h%TZ%Nejmjy~cX5fk7^h3QH^xy0vJXCv?IqtYf-{2AIN_Xm7U|DC z(by{4l_dG@d5;q36~v+1rtqP+2?fASn=ZN#FXhw~n9SjIb-^i=*Aj_?V;hj_zmh=A zoV$}p^i^+1Ni6@Yjx*hfI=>x`TS!Y?B>2~AT}FWj2KDR6l*sNvb&fe%lgc&L^b)^$ zOmU}-u1(7`FWYA^#Z=O?w5fPNkNcT-H5}WT%S-#YP3nNJ5ofdnweys2zA}PMAcRKY zlNS{a01ZMEu2n2GvBw9gz}9%(ffK_mG;EcVM_E~Uf!$56TAJ;(;gAff#`_M?nC`0G zjy_&x4Lw;IPbM9C8gIg!ZrE8A-4-V|tF613p)g`07aChfX8)Nd_T;QC#|?%~12^NM zd?9gA-P(9Gklq&HCKZaXB<41kRd@bS>vS>_ntO~k)!2Nm6j%|la~~8zad0Nnw2@YW z%)NLU`m0}r4tnEgH#E(i5R?WPWNB+^fj^l>z+ZlD**|svl$5u(*^D_3_!^`=`_a7XoO(OFv|)UO=Ce%1d8c_R2b zPk1C#9A@P!WmT2RecqNM>Gf+einu*5Uwv}s>bLL}*MvVI!XLWYx}UF*RzGvTvby)N z*Ob0}pX=Yrdk4$wiE$xCrcx}m++7#_krprwl@@f%V0-bz;GvJ%oz+|gNJ2%Z=gPFoZ=SVoF@Fv_M>XJ zTN5X*s>)(r?)z9&Xx!t|cA3u3N$^-?v8hXCKF_?EkptI&mmBJ)w!UcwCx|p! zUZX+c-Y}>YPWjn>{MNA;?^WyRl`V3w^kJ7Vo*bP@)@Y|a?gH8sBBiPV(b?krrQJ)! zpj~(@Y<~#vTYslTl>&t*PE^NQ{wf;jC1)tv*Za28_fXzw;GTU`1uaBwLBI2pMJ-}( z!!6IEGFB5(HMMd@&nakmHmWeO=93s4wzaSU&$Oe*+ud~kWfBPXA03LN+}haa{PE2% z)6SY`lF+ybbxU-S^xJz#rR>^*8zOfKL}_*tG2*;$V9@fbdR;%A>@_jHM76q%T7KJ$O10gb{)w4cESpdmY~ny`#cm&^?kvxKV@maI zZ>1tVBp%h>t&hj(R}e@MJZz;fJ9F(3F-{yr^sG(qC(a)aqa2X4T&o)e$ZT{+?i|Ev zr02h^ZC%}Q$ukzna=31|dT|Cm`a9)m81=?qcvQW+9~5lK_#`DvJIcDEHeAVy5`xnd!?F@Kz%TPpy{HRLy{lFRia4Q= zN_I?7Us0@WNQOm4*i39Ez{t`tI{(#=Nm#|}@Eh914%Uat0F$4X^dh!R1I|E~Bxtw=SnBrZ&JfLPEBB9QM@ATR`E_VQ9S|YS*52QuKMy z`rahZ$Et$43tiUQVml`!jNSE(W3!Q13v^%941eo0S%cM2FE>SvZhZ1T|Z|$pMvT@B&-#<9EfYQ!1GSH zr+xJtY&zQOEie7l=bg^!J5xbg6F%bg~Pph+JG;$G9bztF}Y~+5g(HF%_s%)66h__jFut*W@hbbMgN&%s}R?6$!?F z#ToQXuq~SSpArtbbQwVWZxi@K4BhY4t$#1%|A|#h1>^JaBN`gXw}1W9D+Tm8Fi=$l z@rQqod_foYdtg)>&}%QiTAT-nJ1fD?<|ie*K49JPf4E2=r@OtqMTY-9Z17vbpYb8n zHBjSUKl1mr{yjjjuQ+}>&HpuF|Bub}O6EhB-P+>bMu8&aKS_1}qY2(BR83;P1W1^Z zPPb~A!gBo5J35x=MfZEqyR!`MscvjVnJobJ$DiQ!5p8|2IqChy+~E-Trc@^^hw8vd zWs%WJp;B^L-0@ z42>?5T6r&?u5!g8s%>?DlZoY{r+aMAaSV5RaOcg7ZIyEmSs@(3Sr|W4!wY`%>%0$a z0B)r-l~^2`vJD4M13+wZIrdZS2XcSEGNM&*n)`cEVI#T!)$zEa1$0#bXUbdRN&dMO zU5u(av0Vc@)?Cvz=h7a5v>T!(%#&=0ms`<#xT-HWlfR}D^#z`KCvywPQ1I;HwO1`A zXIheq)|??5sx|r8G@k+tp)G7B)_SJ2^(Qi$R^7x|3ZwR_JaGq8-)F6I3}n?#p>n;Q zn?v(cO;$!u=LnfFSY)<`Os#0=n<$SbmwSwsK-9~fhA9XNy$%Ke%n!J9c-a)aUFxGw z#zd+-7af=aqggVVSekIoPQ}JN?Eg-=qNCmrAHf5-qqLne_}0l`|FCs_uyLbtFz6z< z3vQza{t613Hs8exkFo>~WdNZsH=E}{8F_Rn-Q{*R2j8*Xjg@AGB0B1cQeL)94ly%P zOUUq^U`~b9ig7pQaFyjJUZW1QG&gSn&+j z7DtA+LV{jD=XQ!hCA=~%nLn{>)`H)>;G;ao^DR_2kVjyRE(XaM`PvhD&Ki!h^pOsS z?A?=;uJ=4T`Wv=ien5@sf%G%9OqQ{#h=pe=gRKQzIi32LnEqUqij4l{r9G(DD#G}| zsgKsoqtTmz2IBnUJl`M!eTJfZ99Q%ojueAuysa4nim}CKLC8#pW3t*KLK%yoe`=Hu z5;sxAf0|8$I@;ntS+D$bY-(fM+NQlFX89q(MS$NrSN2@yhBZ`I;Q2t0h}#kZ8*Q5o zOw`VIio$m|S%d_xB~_D3dfq~?&t%CZ(BGc52Z(c$-Ddpo$Z=vWE8DAlsO$bdZz(EN zBC=)$%hBBwE+0>oKkn8$&|9NIu2J*_UsY<}RV6!ik7NuAhan)7jGe^$2ke~clR65f zVx&LZUQ?M_j~4rQYwS10%JE+oN{K(d280<`=rL;TE|cI;D$;horI?B*eJ4&n#U%>o4|dRc45|h156nyUzwG{a{gB>G*j!`3ce|LufQuaUg7a5{BTk*OH$xp!n}>m6 znL3(Koc7Uc@zL zI|hbm?#G+cj+z~Aa|lyeqEr}fZYWEQ5~TlgDDVfn$6f$o?;m|a)3APk$+mi44Dm|n zA)*3y)P_7}Z8BpioZ%)M_oNL%;>l#;ab%q%hKVEBP0Cu3zK z;=$TZ5S8nwU%|iUUx=UCxRXvM(QL=f#)iU?qN*}CG*L4!V%s;WBxLK@uQdLJ3fdwE zpHnqOb^S1~#O|RBfWF8H87IqJU1Mi^VJjeaX=6V~cv4*Q>ZXjo7)oVD8!)14>)5Sy zlfP6mKKW$<#-#g-DD7&o-<;#tiKrOID$9<%ycZuNMJsCG=ZExdy|mp%$NBq3M`5@Y zuheR<-(}BWdR=zC)xNp!_z|Q0HajjV>>fD=A^x25&4haLgLp>-nsJ+#9X+FnvS7(( zDULw9goA7!-t^=RINH*8M7m6-h;dmw5$qHD z;#xO2%%Gq@p`wZ}Aw@+u+_~?b(3mkmK#~DvySloL-}pV#E3j;A3YUBzRT)ZOPT3G= zt%UKQWm|A27reO4+m|}5-tw7gRPNC{1q2bYCCNCPZZ92-h?I&|w!3@;a#0NeGi{>% zLJ|tKdV>kMLq+#;j`=)XBO*Ky&$t5JXUX{$AuEdI-e)fNXQlg&&b2RieJ>EdfyE3@ zC{*T15`dPre=t!Ey0s@Q#a3E@Eh6`s4Zc*7i#M;{x?Nsh=q)&!>-w2UgaiPFBTB?Aw8MW8z zJ^BkUeVAm$r?2(2-}Jz}rQwtr%ZSO;t8D!y#2luj9okV+#dnGY4m~U-J-+5x^?}e2 z-y^J%76nsj?d#MKN2&Z1qx~89?eU`ild}oj8C#fPXUhpFp>!EJO1QQV5T2som1i+6 z+z5_2G@T1zT$9rDtCO=gO9@?=Z^Ft*1?o-{h(SUyLs8z~ejP0%xElKfx4qX}b$KGQ zIDM~+A1>Qj$AWZ2&ve#$fICtf-L_}H`qU{13{qczpL}>%pxr@9DzzwFO_H`{zh>0e zJI1{{i6aE_<4C}g4%EJ@N3_6c(*j#@--`=bv4_`Y`Wg9 znyK2n4|;65ei5XsIF#au0!x({+PioFp8o*8BY%JMmfnO!!j$F1mx%^lRW+u#8yP|C z0<};FXY7X(p{3s8j;1`-9!r)PBe0-xqz`b(%Q`92P=!0#+Xj7+vBrT&*I!A7(mVexKtfOb-!@@M%`>`h*TPA_}KfmR$S0efm{wVO^SQ5W~VF!f% zjZ_BF|Gn|gH|GHO|0VXnSswlEUxE9N{L5&JqW_vCe{eJZq@!k%#m6^8E~n$)-LC&W zRR4awTvvE3B>z`=`B;O$Dt!MYFrFUkH%@VLlOXvYlK<#RWYXWX%7x~tl|IMEkM(*` z4H`*g0WTP^V3@I7I@VBR{47ngwrjcDv~9!hdn}M+Yevm5(b+qxX&ZZ%^GlSQNe9g#0nt_r z{$Q?|_C{5_;I|L8xLdw+JtQC58@D4V z{_sd#gHheqq47a`U3fjaSJF+7l@!`|u%mfIhyD{V8shT~VeTp%VGrJ+_Q+y=^TQue z5rkpz+2J3=mxls*!rAenLu^|c`wr$$2F7u*@c|{xKm#2L8wv`9um7bYxu%17CG7Vi z35GC|B_3a#u6zq^*@1^W92RfTIgHfm8`m$^ZS16-YbTv-c_7r{W%3&vQtlJt3uQDX zIAgnaj-1_3+P##m!BE9<4oM}*)EnLUMn2W&Pd*C|)opoFfGu^~zUMg;)h09Ar$fI| z<$|}|=KtJ6ZN}!cpE)${sgC}m5Xy}CP$|2=^(VKLu--F+lST5k0`RkyNtaUXYf_~n z2a;Tk6ZhifIa-f|R4M3>AF*B44G}-C51bur4 z;HZqZEMUD-YZ#O__5YYBUew45Oim64u30YQ>lgP^r2+IEn#@&XhgZ&tV@}#g_cLCe z8Oj+O><7n@n`7BB0RdR;_+L5?g=HVGncejmnM7v3@m%6dsS#||F){5Q%Z9d(K*JlH zRz0Q66UAHSmBZOuI}9~&h}zzG3xc?`p<@TNGln2hTnw(nvOMV%g?s>gCf{Ox)+mz=bcPBqxW^=U%aliq>t}r!I%kpahk4kUERs#}~8Ke^-`c+Fx*vRAhH$J5|Tk zhUuuQOBs5}H=E#ImbrpxS~8{lhG2Q4MGTV5U>smv$8>L4>jhV#LOmgvITBrgyp0m- zR_k;WIc&?UJLM+;TBVut9PanNt1x`yA#bestBM|rYhk- z3a2Vy3B`f(45AmO&1aWgaCFP7UwhXKE{@Vka$TG3Ojo%PdAWS{)ur;#hp)3BQjYji zfRTtl0!7gG5G{81nAn~KM7zzD=rIjeeLrrZbM0`^i&nY4hQZ^$KtTD0Sg#%NuPFP8 zH94eS$FrNU9*DT)34>{{yL&U-pLGzAm18RXsQ;ohSAbRhnBD zf`vAJg&?+UQ*7ZJh=^ZN9c+~zG5snPKhIMzy~0PS3MNXgOg!EV)!1)I(q?i68`W)M zXoLu#1nSeL-n*{4c=%DqCOE-}U?8Pywu;H{Mw!t^r)30YW175lxWEfTm!jLpY-nVx z1uTM?A&)FwDL4`yv0TjWK%KYNoJ~3t#8an+}I*yY_vV6#{GfT=Ln@=os1YK zBc7t;Qo6>ZYHaLoKi7I_qJmD=U&XbvZ~W@5WOTekz08C?2wbrHvL#&RNHhgjy@8fIfYoour@pGNa@>oru9CvgnQ2d$N&@DUdn1UkjL7>-F7&jB z<(j=8`EW?-yfd2G4G??G$@Z<4Wfnn|Ps1pcYh>P1h;Iw7qWCIRiv*PV9Kj02Jt0~Ka z5&}g*FTPl*@`2^K!2or*IAD2j+{}DUcWu`C^0SlXwkIXRx-mrW)> zn0@~3)^sx07a&Dcq~UJld+xNzon}b7$z=&b^E(W9uT4B<{L!y$O$zl-(9~}~33Q7U zZ3s_Uii=lw0fFXii&~iv-r4IXDv4@Rk1;WBK1%lepXBl=nifqhzCY5QxVJ}oiK01Z zcBdzKYO<>YR1}hjh8AN7^Rz`MhyV(nhzN8UIWCqiLyp5#MPKHks%;mce{Yx2*)t-N z4Q8sn@SOQA?XB%i)sIOZ4(o6wwWOgW+OWRqd}jekI4sX@dGg}6QQnmPzHwo3%yPPe z;;eTz`E8^3iL_ST`pqg|TYv9tP(6<}2^(2P-dcFi5*@A*%Q}I4ij^O)pq%2R9n<~6 zlAOPaMX+Da5ua>i1M5OAd407!NS_tQCgO@TucFvE-fbD?BZOK z-l_UMsz!H6+t(2-){5uoQ$IdhMjD(Xsa%cO-P#g9@D432a@bxp{vSdkz zt=0I7U$GLlLH`GPZy6QWwr!0PNPyt(65JuUOVB{@;O+#caF-C=g1ZEFcXtWy?(Xgd zyp?^=+56nDJ-h9_pWpgX)vDU6xmJxe=a_wr-shO=7b`gKEp!s~WKHWJ?SxIFYR40{ zCd9{z#Fm=cU-nclMtgbcHAnn!kk3#6FX$H&N_B^vq+yGC`331rL)IaC6)5J>n>ysl zuUk3OI$}TYIXwR;a}Y3_3>~HY;eZLPM7`-)-B~EoUJ;m4dh52k5yLsiBu!!qU+vd? zT@E!ZO|WT$_c;|#80F;GQ6TkfTu|hDKkxbWhZu;&N$|}t<>1H_iE!~&1!bu4CFK6W z1t_0ZW_Yd!Pv#p9#7_#!ifE(bdHr7i14PBdbv=sNOnRR81D`6HOh~Bfb(~)TF}|G6 z>(4q`s~g>Mm9xRRyEUmYl+8LGxNmBOG@;JJ6#db?i+)39y47?rqoqtJSbi-YtlH~gM>g5R@*rJP7J5RxSAOh`rA_a!5tq3$jBEhGAgcW=ZD&4^|K zYK}2hwOArJpS(nkK0C5$lkqYQ&C1cB5Xnb$mIlV8$Mm63J$+^1OCEJ}|9Bmmj?jEY zlS-(iR%^ptTI}32I9NFDKpkN5)H+ac2yQWbZwwxqtekyLWOzWZW{31C?dPn#7{C+2 zWkIKkVLfAV_jhHU!ksn22!Z33ed+9;YFh06Jvf#pp0xPaJf5aljnkcmTQDxE#hfz3 zcz0!(;nl<76*sqQxp4!{0BXtADwK_RH0f)3WK%HnG@HrfnCarTN-{R@IAY60H-cJH^G%*-P3if6B(G~8wq%K4{=C6fD9Y53{Mo4|I z($($km-)RFT@}pfc5SrZAHMKt(7A{gzeTTp)LF%F0Z!xz^c@M9aMPsHd9mYszhQb` z;7-@)ITN_n@5b_)JJ;}0kIYm;Y%|q6SOiA#;-@5ma1f+1?R*|&Gw_^K(jxNI8(dCN z+TQG(L{`dUUuetI_%?jDou5FavQ>5Sw0B(aXK zmi`4K0b6dAV(0nbEn(^m{!SZh`|>%enr8H+){l} lcW*FnYhb)~|GXfv zLT<39rk4%}bFm;5*$FAMUsOw~!(_}BFmY)e{vM{vO!Y)Huz7`zI8oRBNwrjfu`(-A zVc&>gUAF8rRkKAck3m47T_|6Q2+F@(C&p7ZYD@w|H@A@;D|E0vKdaa!Wq1O)nVQG< zs`vJcqg*z)w29Kcd7p{z#3!VDa+7NDRQV$GO}Pa;v{;`{p02+Z@1J;OFOLWv&6L)p zuQ5gtN^*Oz!gJ$2#~}pWL$n6CLN0GNP6#afRrW|waKZ9+@<(A(^M#}I1YIs%nhQ?M z(NgLnh8de@Y6$(EBYkSMz0Pjlx5X40CD(69Ggd`fRs0s7`aNisECAHg*UgLL1HcFS z%W<3irU<|_sXDJ&9M0@iwE#~57@sHQ#nY!f8Th7Bfizaiz&xxB1iPj*AyU-?9F|-) z$ufa+%#H)j1YFJiZT!3Q;$hHa&2l#NX-mV6O79Cz)>dhYpo+3K_lSG~L$OP<7NO*6 z8fYbP->b2~!;GEe3hNn@iWEWBr8F+5E}!VLl}&d!3E1A|D9V!uZrx5b*nPoMwH|zg zD&AKrhM{w2+Vy)gWxXMlptD`4onJS>Q{-p0`*u86RxYnJ$!JZdUHGfciL0?pNX8w# z@zTYJqB;;B$QEia^U%-)A57)5dV%kk;Dva{q8HjXR}3j+(w+wnor$yiNAN3G$^4`gr}4Z1?%39!B||FW7XA9RahZ)oI9Db7<)7Zj!ACMy2?qjUtw>5Hj^IWBP|pI+om+%GSvytvo0WBO2FkRBjWFLmXc|Gu1F^c}tw{ z%r%u&dQGG_5Z%84qM46-#;oqY!?8czUDAmtf_2HY`6Rz}b~QAWeJ#Jq{t;WM?vkED zP;SAQXW?~jp6v8>V|lR7sD)9s)7S!Z+k<4s@)Z^-lG5a6uji#U?I*0J7TQ)M$hIG? ziJ#@21eLQvq|MHHh9D;H>WrC^a<)VKq)ILjI${C|a-G2B71!Hl{b`!H^W;vb3hiU! z#YY-*F^sl!zw8UC*J4^)B=JCt(MY#W?mVve;?WeW;$E+|eT8^tY?6}wiEFG$kxzmn$dbL_f~%|k`VSH}(_EwZ8T#Vwhd_-E zG+bQC+H_Vfn?VwhYKCF{Up8Nh#A8WXEZ?&Cmr!x?h8_=f77N^KBO$<~riR@=K4D-a ze$S49ngx5X^+tLTk8O8eGr2U#e)Lr!#JO2{QJ@!uN#Rn2=YJdciD zqcReV$1?EWGpGiVHLHFv`xA8q`?aHKl-(i@F#zc7{Y5{-pIdKv9>Q`}ZSaf1_v(z} zZrJ+WTQ>x9yn~~p*g$|tGE4X@%VqV%yuS_9xP`zTBZT}wb^}=$Y9~pZGhs6po~)wWLJX z6}p~a)F)5mwXRel7i%~&NwRF=_E~_8GtFMo)S3otu3yXLdcY+yN(|9aq&_$xQ*ZNX z9C@;gmq0Kyaqp*uSX=sly`lRC*%WY6X~WNsPs`Jl^vV8l&Dhlk=Nd$oA0Z%AB{*5G z%D~peU&~02kYA)_y*QG~Dh>7`fxa(K3q;!KU(Kz1FK%w0iHUEFcJ{%ImLn0yug}K! zvX!j~Y4KtDqf*gCI6iY$0VPf1?b zMeUDrhj&7GI!fcwUVOGX14M8kdEd)kPfj&tsyEm7rH+W0s*G<;>m=+8pz&(mvj+UD z*|kOH*x5#;)coDZb$JHm)&$=90MI@Q|4w|Wq~=&4f}vg7Sa(=hY36gN_1MPxwn?a8 zS@sd$kV!Zt6O~_Hnz;6YO3=Qz=lsPI0+#19S5aqBq&K&Q6Y-aag7_YyNd24ds&rFPnczv$d zX3B7$jnA{Y0mJ#nO3I$yYj)jU%Gp{Stj%lHwB_U(^bW|d$+|Wnyv%H0H7+I3?AGej z27AG5CQR{e1e93kHwStrW*x$j^ga!lr$4aT3w-zrQJ|L1K!REu%D|~Tb&g!twUIXT z@VqIhG$RyRW*8!)J9KIotp3a$=v-RCpWkKzQ#9kt&4LcVA{sG-n>$sv$7hP>CQm%Tr&Vn z@iE0d*m^opJH@oxp)W?hV&AfLR>bxWPJGVsy7;hb=VO_dXCo0N{;2YUwgcGV$uz{` z%Uu7P57aF@NoLsZks|A60;?tn7Ft6xS!Padw&qva!7Q&71Zm44rz=Wcy4-QMo&Doa z&m7%ADSqYURzJ`cLW}f~uEtoMwa00Z^jJA!WLng{WLcE1-nNO% zm9+?FPRN^Br}qUNApfF?JwprZue(|5NM2`wFJyHs=v$!ha;4%iSue_+YsdB#Vq&40FQDfiH? z)*g-aQifGnqy}gOXI?bJzOcrdH-A#Hw5(A)OF%M_8!2|rBc0kbgEYGR zMp=W;EE0}qY4x#G0PvG%VxT~gPo>{bA0m67{qAcPyk^4@L|PwR;590q^7&oZEW~2lp_1HJbB8?JnQhn1(_xi;rFU;& zca|a~)URAnSPst4{)0#1eA#{n_Vlzd%lMH)u4qD7H-lxrd6`CFsu&Xq-sDXU7t%)MohLzg#vVP3Cvr&cbRgFyeds!34nj^X25WDGU zWF^9(ON?*f>RX(<%Z-Xi95*l;Hzo1!nUgMyP|8c6gzs6-rqdPb2;~ReL*|a@uU2Ft zFIYjmcQRU?J*pWS7d++mJVQPbpV>78ZUsgbpC+DaRn;E6OADFlV)f3dY9g$ChBE5o z>^5iHhqB2YK?3-x;H(4Y2YYD$-}G=Kr(#$~Co7YR8gnWQ0cC6W7cEdP3(J>*V$y>%!nIY<>)}W0aID3uz0*~m zS-(O(fr^SaX$K)qWQrpYdc)K)y(~S=;Pa_%Z#AFx8phYTeN7eNO|XBNE^BXHD;Z+t z;&ulgJ(e{qoSljNnGQpij&yYf%)=%B#mS%<%hE3-Vcea5@JDeDLQo8vG}vq;w+qkH zTN#5-p^JCDgU+kI@Cn z+$l)C#Z!*h+0&P|vDQgco(i&M+uYofo(y(S@^d(Fjxk|JSDeL{nabh&G3^e7AtKMA z%rJJ5K>4|Uu_@yW>q>b>ku2wY8YSJ+#3(HTk$r;?cYV9>$_BC@&(lCgt4| zGw+`#w6}_k0^yKuhWlV`6xd9Rq zZcUb|w+~MZC}`_l9c9Yr4$eRSTq+k}lum754P^X!#Pk|rcgY9I{)_SYK8P*-X?+PD zfucn;1+eZbAHeVZ#asQ?OHi{2(H;5QpRwfiMt`kx`iq(bI3>v#fMkTw)zuw*`=_OU zef@)4|1YL7_j6J2Z#l^WtzjlFnGm5EUl=g|1-)7fDK|spnJNL90JCQLJKZj@rxxt3 zvx(3gt&2OClq+oE-5;wsH+Wa(2wxg}9Qqf9`ik?v$-n=P*8wp?J*m znJdXo<<-Bn0K_-hXJ4zCaipE;bzth5NCcTe7e|Pj@-OYz;@?ph`QnAU#qER286#5w z_!>rtZ!&Jy;qJ^vbcEe1Im4sdo69;;Sl2Pyo%Lxp~o+1Qu{~ zK?nRmr=CNmcKO^#?xxsekBlpQ8zQ&cK(yk!JJP>-sGLMVTWfIhl7%QsX==jXL{O{e zS(1TFzp(|Rwz6)xn&uAO&vLr=e|%y$n4wn!woP4o6e%FUdDrpMpsmJESNnU}MSH~9 z9joGOSyt!t(f7Gk7YT^a3rAXJt*VspNJI-2X`yM*(9tihp7yLG2Nya0OeNX|y9Ajs ze{k&ns&6+kSd-#{R2!?_9YN*0>*a|sc9pN4`j#h)|Akd|C%${~E60V&YrdMxYKX-M zv&Y>CN)Z=CPPLa3Oq*px&;yhRobH*7oax-$*u`-Ug{5Fj@E}##z+1BWLVlu&8@((k`u#6t(z2OaKpoD=~EgI@D$jPMJNkD1eveT!9pu{q+Bt zB)pxfG^q`|klVfkBC2nT7c^jzqGgX%hm!~$&9hDIXM} zPu~b&EY@kzCxwItT;(m!`^-Rm16 zKSodwoj!QJm$zmpL1)!5QMkrFR#WyBYfU+yEm|G+>IhFgA^y10^T9-h#=r-1VC9;n zwU0RKwFM`>j?pjLB~@_l4C2|uyHl-VUp(wkn_8$h4G(I~u+x4A_Le0IbPdyYi$7qm zAd%$R4m10Ve!%H~cw^F2Q4oV2*iJC)*V_M8|1N)-Y70YHYl&vf_fyEsm9EkHKJiB! zX^$rz?87=d>EF3iIr%*b)sli;bnKApT?=wNdYqYEM z1_BmYf=5J%_Dm@@^SifzL|`&{Yrg97>t)rHf)bRYrhu^8LleZGrp-A{Buoy)SSA@2 zv-RcNwcreE6BmG3W^?RVOc?;;n;YLz{QX z#8K&Jk)bKb5u-#d4*~ig6M@tpax=#mzDVcUp2DlJL6nsIFX03EJlf?v?yWe<+J;qy$}Sqc|VBc_5iZIO91 zis|T>{?Vctxz0Vj58R9f`bq((P}GhS02G#Hy~A~FDTZAawvF;9bDlo~K~sqI7Zo>1 z%{i}6ZsvS&aF`Y~xo&<$V74t94F_)|oAxS*l2q1sXsdutVl+u}1NszI**6^kUpiu5 z+5gmWOOeXcf+{oh5s&cOwAb4<-8j-CyL`-s(JOQW(`WdRN3S+96k+cW z%s5=mb0xHsWI*Qj0?TfCSW`-7FuTJSq?Y5I&C zgcYKs@4B|e1}feGa(eHIrVj`Dc49t%;R(%C2i?JCsqakyHv7X|@N#(g+33BiVvPy5 zUJgth#&EJu_K&HC`L%PD^}!G04_YD4=V<30-T~D3(xuTa(@Ayh9AGF)6du_p|w6g5Xg2X zKMnr#knG0AQ+lp?90$a)U~}jJz5vNsYG@WUg3S}b#D=5UtF<;X2VtLo&6U>Y@NDPq zPi%$DA^w`CAev`LxjJtmpXm}KqSrj8HALNr?7;(@g9g3=gC3#1CVnor3y4tXv0U9P zk`jS?^yD(oIhaU8tTx}`L}xhiAzl~x1wm+Mom#vOKd{;l9>?bhnmkr`6}b1(}-d(EZ-WC^#%>P^;vk|3PUrJD+ zd`KV@7^F%iUc^9tP@UV9pq1zqj|zM2dxNNa`HtSD9gEuK2rOiG(Z;dHJ-9-fxq5I! zDz|@pOkSC+k^7(kaDNKNpf^itE#^S&5^s;l&|+jO_ckeOS)MQLxWV9EUh{5I-e8CUsOVYdBJ_rh?>{N?yVXOI8 zz}bBZZTehJC78dC)_9h=~!R!f}+k`)+lEh7yM#+1*EMI&aa-jF`6%kmgXy|%f_ z^73#xHX6)H`+co6y0sL4NYTw^=35ul2x|$4&aEcKUP2SV6FT5u>odEWS%~b(f(HRH z!nZkhNTOAe<3&CgDr~t^VwT!<((MF-)!J0RSu0??3*}CDa%(dvc2C*+8HFb|_bEmJ zC~Bl4y*nK>q7-30mTt9%P53AAlGt|=XisyBGQtxHxFz9AD@g?&3&5`cQyMbLQl#1Vj>fp9m(vbB9OIIP9{4$#Ep zslQ|*695B{QqlR}gs$d1tw#b5%K&)x^46`VFHAQt=`AlLf8}U0|67h`yh8CS)>-10 z2#U~Jn1rb|6IG#qZOgt=SyDE*lS*D3Ks(TA}Wst{OGD3}k>68lg3(R+{4UCJ) zkO^n0&DF&ej^)WUkqOZxDv$@`TyLS8KVR}!o3u$aV-u6Lbc-MmUBY@UDfd3v1r}qo zV1An5@;*ly)QGjp>bi*(9poK;F~ovxvHsTBP;uR-6hu3Ak$94WSkN^~h^s_!GIU@g zUe&U}TT-aA{IOO_-mmXRJ6Bx3uJc}{tW1GwHOrgPIv3oc2$Rz#i-P;F-nWaycd`8j z!%lz}Dr-N4}VJVDf7gN4zb_uTJ)vJ4q?rDbP zoN)PG(!!;Ih?}Q@q3EPs9kgmd0M(J zYZD8E?ZAGTse+2zmLb*NCz+CgQ3XXON{$Z(vY<`bvtPz@%(r6_N@fPYI^YBuKqoZ# zxjCp)kDQ4r?RuLF{GBeLiRJ1&wW;op`6a>chVClZ+k+gmV)eDi$6AbjDRlKKY$sfB z81G;tQ~^R$Wch&qK2RJ>-I`LuwB?x$7!Z&jax7&OV@CByhZwIPjvrjr$#uA70VT%b zTC+mq&W_2?bTpfc88j3POs3bW+Y>;rFkf#>vI`~vaK-kQeCxzn)_wy(d=e-7yjF|& z^9{f>WEDXJL@J_BZ>sZ%p%y7EXCr0U&mfK4roA0(S#c?_jK4iyi20WrO+h#zwFfsG zxLMcpbEHo5K`J_a->dvP`SKaP+ZW~x0B8Y#5J=}juTO7`r1D+kHl>S5fB*?X39d{^Q5+I$q^r~3y%0q$ zX#izOCKq67cekyPvq8C7byvRCRB_))xe4ks`rn zGSs!Fuk7p6H^P}t4tvOb#eAx%S?Ma9a@}7v<+m+Wl)Yo_@j%T2lR|m`A>=DDq^8Bj z_FNxK;R`RQ`>e zK3pxwFZ0yL{kA5pYi}n0V)+NGj^^&jBo*)FK}OPj4Nm{wnN$9-qv|dpUR&p(@h|De zYy3Ws8w~GU*9qHkP3aWAL_D$8ZHvr9AF2Za%eN(|_xhB)c!FbKB1~K5j@lcSbSs5) zCKX-19&{4X8hjzq&h!XJiH}7?oPWnf!S9B!S^XSGs z2BW2GOwbJ(&V45leJ@6au8++p67!yna4Pq$P_{BWNh2Vxi@I@naYm0HW@B?eXS%$qI)1Px`?Ygu zYjh_y?g)J50-dW056!gcH|CP3Qj)yjKzI`_`_y|cke*#WFu*wf5wQVm z;fdpN?+8r)cj9fT(82PK3Ti+h5uIW2Bx}c=@uNohPZAEu@93z^mh<^(BAE(J{qkO# zEl`Bt?H?wevwZT(0GP4H9M*aaui6TY)E0+SvOQ!7y_piD?YyP>*Q$Oe>+mlTJKw;c ziUJmA!J+5nKt>+$)v~)UO`g_=YQQw`dnI(i!G!^t0|&yVI2%97Rn@D0hGy>P4U9J> zl_0*%oLc3T#9^!jHRdN+&=?JS{pS7S<7(gL0^Wi5b6?iN+QrK94uONUbcRGg^|~$R z;k$+MvMq(Z_a@+%A1Aq9QAsP=1(P`>I&gaQA_?{J6FUq`yWrBTf(I+87p9_$e%6%_ zCB;V8UMbGeM5Zs#0zGXG(dT`L=ge;>D}0fskkk4XOYN8=xmh+ek4Vz@A1Miu2}mN7 z>!QvLY`j$7!@ln+zJdpH=filrfBW(RtwYR)xT@RzvbqCOzEXd3aqR<(*yB2^bRD3Z zRw%-g$toSZG9Nu+^I>xvz7r{eo@h`|cb$$wnY%OR1UbuYJZXF0l>sU=1vX5FXB+1^ z^JGi_U})UAL@^W#R`Vx|u#Xq4po=l4mLA|WmHjeP>7tzm#)hQV<1GyY5SF2=G;k)H z+>v0YI5i0z2({l{qb_K0SZSqmZm_^;1+;5k z%GwPCeKX}ubJ+&njkN8d5gFF6(jcpYM=prB{;E{0C#0Pl6LpXB9Laz-1yw1psnv^M zsX0J*xBUkoo*A`XH8Rb`&?pDi1{AEB;8Vv`+Ws9A45q3VccXdr3>x$#Z=) z-H(RS2uO#KSzU+HnWa_d{l&OD7&g4$!y{8T%+DkkVx2}GnQMR*o~^%iuDIP@X4~6u zZLc?Hh|nLd6Oac6$NDnya2BlpByFtbEZJ~wPV`vprd;#3=v=tmmb&*bR{U`B1#>?= z?26r40QGD+(frH-eMupnqMsyG8)a8LX%i-%s%7sF;tb>aIjC=%t?W`8enRWE2?Y%jg$ZTls=_4#>ynud#Q!^i&=Sif0 zz8<)*BZ$-A?m6CdaH2VY6q*-iNV;Uo*PWf=cDZr8aE+ie9&>xuPs2${_w>`-fWijZ zJw6TjWwf&{I>x-G?ZlVu)e@+XcWX=J;L9qJ5@tbY2yVmWQH*q_Oob z3mr;LbJ|U+-a6%TA5|atF>4HxYaG~MXt)36Vo!vmCKhR6NOQAA*{9@4{?OymG;`FO zo}Mz#+=jPNos3d*t3Jwj-~+F>^h{ZslCg0jLVS@(_Om6u^App0HGM2dnb5icqn-8j zNR5_XB`w;ELl%5V1m!l;<9WGO;#LQ1@`PJwg+P{RC&_2vRPACU*C*OCa7OpEV#0E9 zjE;vVWouh;3LU)_K+G-Slc5`5_dYaeeX_+<)eUyrCeZ-#UW_I~wtFJ_lcVA=_m#uXV`j=iO zY`x6D9D?yOh&G*!TlcyNZ>CGFy9DzLD!ODh|8ljNMxdsrJd91auhhwUtXf9^=F|lA>E}BuVSOl-+C}K9K zJ<6~|FgyRE@A^F1K95(xxlc6L4`j>2=@mz`P!%-;^I5Wb{GxItOJ?@=%hb zvG<&8@BI3FV3K2knOQ5j9+?yQl~=$^*n4J_&ZE&bR=8VG6|D3-pbGw&G?mTw_FV?Yi)$a`hxzfVl9g#pB{2Du-r1RlL|Px*B~6Q zsXce_!6u5IwmFKLkQ~-+%&6AC_@UiWB4m;cp{oi9-85M%#@)h4;K(m}qI04ndV2ZX zi}h|pSLCQz^mYBYktBhVSGcT)vX&~PYhvrAfPILhCXxdx)*!z+x)K9@O!}BK!qwpN_2a(&V%zom z6vlZLXVSV>4*@T3V^e|+#e0>$S=)v$s8ZWYr!RcqQT=1}6}AWGfcTNtK_s$EDslb` z6beXwTc^uRp}6=kHBgul#8&hv#6Nc6rdB1Vp_EB>NI=Kr$YK=z2`j`V*ftq87{#yV zdWqH_U%NBCj})fi&AlZ<=ut4f`EE7i3eB-(j!9~PCoM`dsw<>#3jlHMvVFU~|0)ZfMq+RoGh3c3abHPF3* zaaj4c79bc-bNY=J*oZvs2rFMHK`gZ%3ej^_ zz}5~q(D$y5~3f-^9qyx>9^BKOdgZKbSFySU8xzETl=h zW?@iRMD9lB*m@C6MdMLGp4;7#>*ivGy=+Kp*udhuQ@#D_(4i4MiDadfI1;mJrH

    Ok@XTV7g{IElK$k)I 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 Ba47%) literal 0 HcmV?d00001 diff --git a/_images/profiling_sync.png b/_images/profiling_sync.png new file mode 100644 index 0000000000000000000000000000000000000000..c901bb10c46a2bafd7c10bc83b214d5a151b8fff GIT binary patch literal 73073 zcmce-Wl$Vl+b#;h5;O#N3GRg8?(Xgu+}+(FKnN1tEy3O0b%MLQ4luax$@9KXl5g*G z>eT*oR#jJ5ujyWL+jYyD2n9KDBzRnS2nYxyNeK}p2nbjz2nfjW*RbH8S0n*2;D=xf zVPOSHVPRr>M>|ssYZC|vsyLrGUWpz7{62mDd{PWlgh-B0#d4S;q6BsDqQ!45L(~Xl z7@h(tkR&6c^47KN&y1@M*EdT`f=Y;A`}%Wmb5J)+M7&7D(;M+{oDQ^j#kRQlcj%e^ zz`=)78T+6V(fDPk96m=KdLmX&<~;?oau!-28PC8RueWzw)Hxl{$uGv1-0VXq3 zDy9QcSNCgDwXMlU& z*h^?SK|nCP|8+sS7x24+JK>xqWkuokp|Mc8I0(B{-+;StoJBR9h3#x?Ol+MYgdI%` zolQOwyIDA!6N^jADyRn_V?jU=Lr97Us<`PdKE(oA?4soK~TTS zeKpzA9;rv`+IH<&HeZfZfyAu}jS3^eC4tm-qxULb=upOV{6Spk_1jbdkvpH+VXaT5 z<9rW1dnsevJT(Bebh)C4K~-ze?$~sxrgFer)PEbbFx!-hk5IW@sG&hBg(p$?@0LK1 zLACv(=vBz?9*G6z0HJbE8in6I;R(EHLc~gu={Vkx8y{jaE-J~Zp<-88v1enp{5pVS za|ivsorf55-g~~zkyns6kiPfp+-!SU)m3fqZG;EXrJ@_Egb82aV)$>5+xR6IHEBUs zy->njnSZVk4f~38obC~=B@;qXc6ypF1h)oNHa9ng=mBdfUji4JFMFyvuqn6a}~b$d4qPDxvxAQ8@N z1S*S>jqE@3hRp~`^+iY_f~2vpM;6v~tcwG-=3bWr{qmibI9*@rHlVqjC$T6@-D;2V}= zCw;g;4EG&D3y}1j<~UGP^fumk z4LJmeewLZ4 ziu{%P1`G^Sot5rNclQtbXchdl6_2e$^KfJY5o|q=EENWfv46dvyUEvO1#X&w;!)l$ zJn7j+@OAcXprzbBk#wVZvgDgUq>1|t0a;9)@@J8tEAFC0!n`e*Z}n2cgl5~Lj~i$$ zo(VnB1hzsqO7-i56Tc@~>^H@y;MG)xvKLj$ZiQW}ix8SWDy*g_v4ag2Zu+I$D-Pv_ zJ%1W7cTmVLa#Fv6HG|!5`8bm+y6t(aiDi5!S(E%lU}+%E8>-`CC#nPEK%E+0dlL0} zPrxSn{csR|IKnToQj^<_?@bnh%}Bs=jN)oKiQUH_q2~|W>ZO|!0RetNc>7a1AC5DI z)Q#1@RC{tRr6uJRTA@T00SvEB(W~L<+;4Buw7$Q|unni|ZLIb20G>1;ylkjOJ>R$# zdPgviwz;7$Iq?>IAF{6rYfZhp;KpS%#V1D1#_N(?URs#L;Au2hK&&;7MbI>t#aaX! z-lDG6F&nxPlf-0;f~r0?$8iOyy|xx~S!1$CJ{v7uZ-5mV%*37+R72~ia* z_$ex}b0gnjDm#0QB1LgV3vAN%mWKK88;#9ve zpv)VuyyP%QP&HNM(qL(I*x6E%P#)^=<7b221mR{H|8wfb+D{@8)Ta|L4O z4#SC=?1HLRXl>qnEFF)GERe@L=1U!XnS~MBU=C&1f{MU~%s4gqT1y3_-+56Guc`k8 zwquOO7rQ#0LYY0&dtf_1bhrN9VcT*H&+P&zvuaw@MK62K{!C>Zm21b;d|{so%Z8G7 z>z$J6O4m3DnBd6ep&Ewr`(?$IE((LUI+7lDTfxi{{Qe70BFAIl(J#Jnx>FIMAsEJO zXvm^%y{uVRlFX|gtYplKa;p>Q$oXbpj@XzP4N<2*%HE^khr=)( zLk4F#LoSS6_q7b&{1B^w?;nCn+mIAUri3&!6oJDxopzk+}31H03 zxgxx7FtOG(j)-^rn?_C!D|{#T)X4^8nUtL_i_h?6wIvFd(xNnK&QAMV{2Cn$S*By~ zM0Iz!SV*U^u4$02`mZAIEi`Pfx0TmFRLvg94CwMRyKTgJGtYGrD#Z1k@=Cs*Yk(`i zZGFQrIPCzMH;c_X%0}*8jMwDx<#B3%NvV8jR#N<>NA2Y*^}jSJ;rd1Ht&L~>dzVL^ zLgW{SsWVc#Nh0ZL3?dZeEU;1)?fn89CcDWLehc1m+_omR(Ozf#j+Xv&Z8~=&7MXMp z2AP^O3MA8VD0VfTR+&*5uvYy8w=CPTLsoR@zJ^*^!U=HA$hobY+N<+A4Bw3C{UTbu z(JBpUwCtO73^b~6{Fel6Z6T4v(9jSF^?ad&#T5$F-fP`^86-1ENiUr&HB8l7D5uNq zNyZNJ_Evgc9V$H-RH2`8f8=Ss^))LT5p@8;;Aw(2D2q!roTJAV(mustH!gLvSCt3I z6lOvjV*txmP_-6evtoW*vT4*vEfsX!clP@A`&RR_(Q76q#Fr0aK~5j&HT++hZLpC$b<-_k6h@R3XHo7Y zGS-z7iIg4X5c{x9^~;*9ZktTE6)+QWU8%dSx}R>@X9^nhu&IDpm?9{0EIvw8o){|^ zMmd7*7F-Gg4fH=oZQ~^)+taxvPw$)v&dc{X_>JC7v8Bt#wHB6B(g>2t?-L%s(+AQ zYAh|XuK}7CA9u8y4M`VHkuZG_3Vd5lr~b#*HACMpL7){)Dc+8Keg!9o))^BP7E*j` zI=#r9HFmVeWWwu@)FCB%uuL9Mtb|!ytW*Hs=5=E_U93pS``ihIl76mzWI7Q@w~JE< z&o#?Hxo{#L6#R9~+pWfG19*I1A~}})x;4heY@?QbTeG_uS9ep}W+17Cp@+CuRk&5U z)(-Q@zBN*Zr)JZA=d71jcFu5?ZaF|+2kHm3*Cx?+NFPU}qLho)GhI#Z9aRfYXInhy zmb!t>Vuo5G9s04(Xlt$g<`2=$Bc8!w90bX(EU~)dAR;}2M#wnLqRps z^6$FH`dI>x*08W*2T@KViHYpj@FJdR);jFp2wWBw`+Sr0$>FFfLs55ZEFTpJ(RTx+ z!TM5o`Qqm2T4o$Zo;pnOrP`FD(j!=snLl=Iw^0dBIpC|K;nv@}{>dM59B#n|^=pT6@09F$Ag5Btd z1BOn;b<#D}TUje{U&6aW0+cjS@B$#fw>iNCcC*1W9r~~Iei?)I@}H-9lu(Kk-m0U% z-(mW0+xb4Q*Z=_&z)?=5lEyYLDJji8xY$%PU+D&8b;C|d)97+2JP{(PwK{a|=xKzJA1*1l$vvU_s?umi7Sbx*E{Xi0r z(=;O6hZhhPt^|3|qQ+!)N2)`CjfoPtRbFJ1-_EMw%Aib$j{j-z*+&Bf>*tTJaNA@x zE)z<#<8H=A23Lr=reUW#c-|Ylu6txP9;ffr#^|g^cC|Bm$FEq|U+6C=((858;`l6Z z;zKKXdOJ5!C8Dp{QO%$le&I5b{Xh2V`9<#eS#?yCE$9^*VjAPb8{YldLHYlhD!wqC z0uSRJb`JEl&63xv8c3D*A@BB8Z=aFvrZO-swlpudib_Ayy9dt{IqedOP@f!~CM6k}qU_5rNww zpP!f`&>yMw%kaf6T(1dO-&jm%_?G2LYV!nWhCxviVTL#CU~|uv?-|$@r^fVL(mB{b*j7y_1 zs0tqI-{=uFt|Jt4D5*qiNVJ+UF$Cco#FylG6-YH6bd)~fbA|ujbpFTFe>ypYd1}?d z2dQ0;=OG1VeyF}oU&|GNBKHUSY%AQU2qVKbbN+KXcZ)sh>lgh!*zciZNAOU_vcHrp zE|@Cl9D8jkwKYtmTnRrZ@c;MrZ2P33GxI;X{`rN2h%KxqU~p#GvToCvi~5ewzGVgC z@$M$nBW_7Q)mP`y;qUo#+#lPvJgXcOe^2~-Yg-rnJ=pBF>4kp<#NiStA7oaxB+DHo zB_+wo$f(|u{%$4`QJwnv37TBhu2mqEj#9p4lEzC35SrfuRu7 zOmMo{wg5-fIg}1ZW5|Mt7zLB&_F5IqZl{MFC%JLq*_QNq&TpKgM#L$G8ZoB0TNspH za5~0w@xCJV^F}+jr2+39&ewr!^2I~JDRyaeMxBS0`|h#nsOy0#T7USt%bl`2>STyn z4O=3mAR;|H;p*?fe-Vosff9pi)qN|PUooG`;K+>E!etII_w+8az-v-ssV%$$Sl&B% zUL(N*iP#M*PqDN??Dg_0bXK=tIY`f>3IuRo7+bB@2w|&hf=h-ilHH=_)Oj#e( z298eU-4nF=T?b=_u)yF0BrjSkWuYyZ4@vZ&jn6$3iczW%k zj7s&Uxxwmv`)@*p0By|Vp6=~nS4S4ZB zJohHRu!P_!t1DI5Ab87rl1ANC@Bn57g_{bDhI&3ot~F#mit*x1GhwIkeh$|5RO0uc z)t-ukf5#V5YtxwYeF`N<@^7*Fwq{|apkp4_-DFAORHHpvB8}c}0myuQeTta$^dYLv zuu27iiJ^4>CQY-3I{2^(lCmzd;br|;47GHDzbN8U?0XlkqwRJCa z{cKC-Y@BGA-K}DqDRkPLb?^7|zqrwKETv1v&B~g%(G!-X4t08|^1-|N4Tx{4L}pU# zx=2X{eM4}<86R~pD2sojF4He};56?OA*c(`AmWj0@VNc%{ z3r`{J%*>5i_qA?eqE-3y6A|pkM<0$P2NiIN=1&_I_zn~K^QXdTD`*^KMa+?qosO>L z2)L#RT0ea;J~*7Qo{ty1k6H70x~HP^?=yn@mKLw($F$P8j9FT6HU3T@+YecDVL{0Tr;PdGjOws94?_{L1f`tH8M1a$Tn2}+U!JyrfpjDiD-XWif=2D z82$+Kau9Fr-viq1k^Fcj;|IhT4CTcbnsB@{uD41qi9USo*=saY5@^wLmUzfi52fD} zkb}JYeuNF`7B3A43VySkonmL|Hun>TnjO^?L59d&zC1v7wbAMOp<1F*=g7ubcUE{B zgr@oE;1-C4a;S$k5TM^~I9!e|ZI1^ARICn*jM*xs&HT*-1a2Y%MXMOz>GSSu8`xUPZG82|=;CK@t_|kEex!WcV)kcM zu5(u{MzPNx30$+2Ejr(U1Y~shV|E82Gbn)0*Q9y5;gOM~G&F$_@=z^)*l~h-*c#uj z*4e!mZCT{mB02}yBQY6|bGC}~9sQ7K4Zbqld<5Yx3%>loH2Di^C2*KzrXKOi5i$T5 zSW9Q_o$RCTr4+MK7Q=PXDCI<*Idi+`p300Sy{c5y)Dex1958=mBOjfQkMCQ-N{2;& z(DtO_Up9GrltDc}=;q_Q->CclGXhw{2fXg>@27eFM^p+p?AJR@EYxA(<3?^_(SENi zZW4?=uks5E|9;s-0t`UJA3v%H{;>qq!dhh7fAmvi_n^ zy1!v(`OjzDKU~jY;ODgTZ1)2Uv9U2}GX*g$mXB0T$yzERAxy{IqYRhFpJZDh*dP47 zQXtE$&<^$j)D=upkvzZgD~)zzX&X2BNFe#T+aL}VewF_-aJk+$bJ!3{-45xVgTbA_ zVMg3XNkaf8H2-yH)2_;$qjkgPPmuQ-9SauHNrehE(s5lb#acw+oBGBwBT`r$$ z%Q58??3oOAw)W45`nySoG#6Qv_gHGheTHG+Q1RahCKkrB(AOjcjXwoZgJ>LWMwk#G ztb5mfllA04qBg&^z_6VC}mN6u)`F+FxpHarKt{PG%og*#+jWX#z&~~MHqD;F1 zWczb;bufR8ZBzHkFt<#g%e1iEJ>kx2tuVDHinpg_(p?0)2a{~7Naq9p>Rd!X&`6c_ zMMtqtW%^t*im7Ldod(lA1&wA*rEed}BVzpfEnvaYlC9pe2Y17)W7TF)z$N}Ig$rhf z#7Y71;tZgAXMa-R9O<9OtzJ1Y1<%=WG2A0r`|N^OgZ9e4z|Q2V%K&kFcGbz4iI&Ssr^|4sJc`8RA|l?t4$T~<7Y zchO;v3V%tD5GIEc>gHn<+MNvEJ82aa=&lV}56Tk$7q2JNSCDjy&Mkh#Gdz$WCgp)~ z%F}?CpDjPwL)9@n+aHO~5&A!nFZ4D!L%)x8-rG^x)Z~U&q*45D6-GIA3jMd8R%Wf^ILcyD>Va-mX0oyTyhhdlFac4u6 z@-9}F?y6)nD?s#0kKA(?Qt7H=I8RU51rpx7Eth-6mRQp-J11dw-$4q?_^B6EZqenv zQ5Dx@(;TRd{C-3+CipXmfBb&bCQA%`E&e)e2SXN09&^y*E44B`!1#NdV{N9-e5xm+ zUav`bYR%bC(UA-0zbjBzyALFtNvWL4Z2UyUDi?;6j3}4dQ8uG(M5zKAFqEt{WpdS7 zDwe3xTh6q^XE`AZjyoH->{7RT<-miotmS9UhCd#?aIv5?cO7}^5&1Ck@vll76}&cD zTJEasJ4iOOLHV%)!XYBF-MF%?i=dnPVhfP@6jqb44g=Vni}If7~;b!L6)t zAenhteM;}b;9rEk_*?On>c4iRYh`oz!Da@;iHP2RyVqfs#*Q_f zeEHdurQT;bW^gw4O!P>c7)b2bx{{R!yz^I+yvfXK z6lFX2>1)*)zw-%q+^yl(ojd~n1?XZBz?kj+RrHi}w={Aq6j?D<@UKWlonBfKSU$PV zh%<4+#K;!a%b$zGh<`YCqrWO?g0Sv@1dzQAWIM{rmiz=ExP#WXRRS(nz{a)lZ|zY& z;!HFk=RkHP!~(l(;$6R*1$sEsuOV3oC;k)&%uPL$+I>0it0}8&QP%iy%$BP1nu4j3 zbj}B-b1I8RApPq2WXCpZaEg7FjFjn1W%EsS`<7YjYF)wtiP&r1)8o-uX0-V|So_NL zs925U)&NG&-u0uC=!OP%zC@sLC{!nz@uK-IYh%!}D*Z6uZ?pt!5l*3nW!Y}j#_G6u z25jX^ViTgxq09ALbNzYO6%@ziB99*boK?Xn898~}moM1@zX2pXf#m-z&rbP-{xL%T zXB;?Q_%>X?((*?j@oykk3I#`&kV3-37|_30755?kRmkfv@$q@Ye@)jtFtAr$Tf+Lc zSDinacz_s5!0lRTv&4pv3`asjBCyf+a^lL(YBifLl}N+&{`X9zr0M}5(gdqqPqeO2 zSEL7G2o9E;SRx`K$S5c#3#75QTn>9rS6VbXe4kSA246z7gM40>X+*~W%LiOw;AVJu zz6P+;pluwt@96%_;fH3Tl&w)^1OpDTYi(EVKUY{x6(Whp z5}JTh3}&{2zDNMT(l9W#&k$zWi{eaVPQ+6D-r&l5q_XW4t%7w*^Q?=&xl}z9LLTLD zgf;&`T6sa;{t*VbKGyGZ3~SHXIefk&sLQ*Zro`Q8Z?fUQTh=8Ps_pzTI$P}l?$%d$ zf(vHBc>lo00Gr&;TE)YiPp&f@dvK8c$fF}~pa7-N2{LxJxF=p3A))QhqAwa;77)-6 z4i1hn;gtmbJqxhbkyR+0hRI*=0Wu}@dvy49)mtwpJ-UO7_zN{=C^$GcdvlHS$y^yk zyFC>|c_~i`d!u>yJX$G&Kv{4(iMJG=8DaqI35Um<-L|vt+U9=coO@9zR_IVkUDR#%v*2xk$NIxj|ZLSC3hT@m1{^m9e+Eb{!iOq)3h(+c_LRg689&0 zAzK`!{s`E1I)hh$(N=#n_((y`?Tu&@ro&b=`vbZ&o8GZdW-zK^N|LMSPkmdVr43vbmWeDHZgp6T;1NTgXzmMFB`#SNW{&ept72 z=Z3>uudu1@XTPbub-4D7MBPS@yUokaID^m!JjEt?V zJe+JkbS%OTOjHv`Jb7OM!OvYEJAfw7GY4Al@MdydkKk|`dfx0Bwx8e%F2%wlP(w7% zf(}_H5Yz3Ghft8WM|78NOSS2knOXN=bT{bpWd_*#m)9bbiS=I@FP=}=3imZ6eVD=m zb!AhiAYKpfw^9%g;Q^50@H==_42p{Gfa}N~?R3&;Smjp#O6Y7mHfF!->y1EbI;mfh zdP?DNF#5g(_LAS>;%YrUthlYo)>+PkfBsDN;lo#OnB)j-yTRlq!o`)cv^*@}pA0;q z)Aaq!g=A?6B{K!xvo50B)5#QDZFq9Jc||`eyf)dQ1df|YrhUz+U5FavdzFEU+pB?XP7Sv?CTYv_X)*d5DgF@zmjn&o+ z7j9)&v#-sj*jKyDq8)Ctj*k?IcYdQA^KDz2jowfrYbC=dD3~_1e?;CfMMohZSG&R1 z`Dpf}l?bkK>7)-PG6VtZ-Me>zVFM8*kC~a7(6F$WfZW#z2tB4Xx{G-qSu}66mhSw+ zJdR>$G%6MDnvcG>Zz8OwwnpiQbJ6m7g*iOvd?FZO$mBH$zS#ifC(`M2q`dGhhg~C$ zY#TY3Jxl2Hi5V??2Jg1UMb|p0QJNw7%GS_3Vjru zX07_*mM#*&|B~+ebdT|pnUvH&Uu7Jn?{`R_!yw02vU(<R{tY1`Eo}Rm+B3w7{Jl6Z|Ej}FX(LdYm*M(kF)V6W z0|K;9=xP=^$uRoL-RUIzbbFaM6h?OPcA*4|pN*IKsJC<58!Lk8)%({CLx45xE-=C?fi9SeW%mLiS9v@!6=Q?%aVF}gm>e)1w|`x z8q9XAUQ@AgRc5GJYY!Y9ef(We5rqCxWAS`@;6&Semhb1<48OAlV_-G$4~()O>5V_K zI?SPsW1Y8?$~UmF@CDf)`rG@=tYQth;#1BSALt^1f_uXuMZI|k0-oApEZaj7!IuZ} zJzE82(o8u47RSpjmyed{d^Y<|#<**(_egj(GU-Ds9#>^JDhCVEi+?AB2laa$o7~>w z_Ks*}A&F}uC&6kyOFq`s@HT(Wd`Gp_$<&WOvvs_|Ubym{lGM29z~9xH zaPrIGnbvaLbl{5*Z!qpa6l^{0B@l0Tw@h_^siF5Cb2jzTYn!5;Un@F0`*kxSzx}mP z2&zy6itoDNLy>dwy1c}Sm&U{eni#(#O4^0~A3S>|4Yf!$sh;m_b~%!el*|FMynv72 zYL+fHFYmicrjBOxV-|FZZ`q2GwewFHr zH7BtO+y3ZH9r1FXj*UV2XJ6Yyg)+bkG&D3}85u+i3yb{xdipHnBXzsaIq;>CoDn08>=JjqC@HhwB0WLaN zlSzMQuj5hP`AQU0oBv3%q{Z~D3*d%sC0=atRMgwYjXWtPOElG^{ltCps^ueo4F04m z`FW31ndDO~9K9_;Py4&Mab0d-gKZ(kK!T1BMwVQ=S*Hz&mh{?h>%IA;qbT?rQ5cLI zeCZO|(jVu$dCzMtcl|ukOu6F2UZkwo2vz8~SjugPKz>0*ilDZc{6e~|D|mi~qxFqr zS1A0Q8^0S9^Zv5OX7&tSG|y__9Ul)ndy&2Izz4mf8>*v^sABKjqNA(6QYBc?oh{7oR{>w9K4kM#i%ZC9?@y9cz5vuQPKzeGe~KqrmqR z8OaA{l=FDCx!-xB#t3xE3wG(Tu7QDIT^gRt)XQTp{Wl!0(LR=iFzTCkL{U zRNhe#yK3(eWvDG9pTLvo`{c?cq=g!s^Y~~;z^Zf)vAobb!p#LfWZzp~LJxly3v^@T zwchv_ThYcMeivJ>fUXVYTU$%6LXTv9@loR4a;$y*9+Zk=R~`@$`52!wRTW0`f$#+$ z5UZ!ZDbyi33;>)l#GYNqk|gk8BstnNJ(cs-+9?nMmB!Vh6-iT$_C7Xh0aPIKDbcsuS?31mlw5LnN=H=0Hzv$J7UJb3T70_%W zx2+K}ofezblUDZOD$ngjPhAC0I!#3c>h{$!!Ea9L|Q z7DVOQ2Iq1(w>{sFgm0hr$$Ggn=f_n9h}v^eE$H3_k*#7Wro@2u2y8LcE8quicCplB zlYNdBl3~`3Za&N7u$g$Bm(`ArrnFvWJt6u!5$`ZEIi;sjoNr(`%>!SJR{?8?=BSaf zKpg*?BoUEqsZTBV(XL0cNb9vmA`P}Hky+emZk{wad>g?Y`k^tJLT?a4Mr&o3{hcNx z`cJL8lvijraVEl66Zws{8+DhjBxYDtY%lIkR%wEHRW?b)G4B$O(4UvWiK|RhGgCUk z^MnsU1Cs{tfDvTnI>y(?jGoqpuyZ^=p#hUIPv)?itG>6Gz-2+TBs4qzHM9bp9xQ&K z4zg(rb4_fV&F!W(J}s0!zy9Dj>C(rlPbNVXjC_4~+GkfFQc7BcDd#VVTR|1Th}_tX zqp;W%S+$rqf`qj%pZE{@0K1i+_Lb?5o;iVP4b?}lgn?5x;??(r{H4b=rw_*iE>b2fY;T723)ppS zbudR3ih>)bBqT#RzX;H6GdcCf=GXcrmQTQ9U+qs7!2&9FJLObv8h*`4L~8fF#T{TgG>bP@ z`gqqXE9XkcN8*bu#^=k|^eL%v)6Nw9%kAc#lP56UYHhEInjWV)8#PmByR8Lj?LQx{0bxMT6MCc9lhI95Dkrq$ZnNt@4uL8C(T zOii@uqg2(EcV0*KiP7lZ&1wE;C3!SY=WAOr&{=`Zi!B>%kM_@8sqZr=rOfBk;H>Y+ z>J|(H9_vy6*H&Ao1JN#~*itheDVM|9TEjAxFs;=z&6e}qR9s}X@`XUZ6Rw0BZ0MPC z;q4e!>p^K!hoDnJ zyl#v$({BvrCp;K3e*dkK^8L5v&%AUG=c@N8I75b0LA!0X{Z^X_q2u#?%ti5|HXRpP z4Mk`kPHwmh@*ho_5vZu_zoxZ+Q;mNaDdW{Md68v2Hwa9e9(tc_bTGnRGFJums=Kq0 z5Ikyj2>WBSBDVm9_5v*BWi26ge5s;4m}6&9m1^Y7B+)>=djj`cjhMO2%hguJkKS7<}C;{?M43 zsl6nt^H;}jo(`~>L)=!ig|q~bwZ+@})x&JJljORv#h^3b>df}ADp-8Y7{(LsTAxmx zjbJbH0+8hN$d-sVXRD5v+uNzsXp?UZbX&DsdynrbCKsVPqgnW4TfHeyZhrbkw-;hH#s14WFOhh}_>RweQ52+MP3_>DdOTJ8<90G_yjZpb!Ze zz1x4fzz+mw4t4_{l)EHMH*Z*86MPKTn*kSfY3?J+0qb6N#GnDxQNU9TYMDS(Qlg|h zQnn`OLKN~k+i=8ckk|Wj=p0+mp3D+1iE~p8i}rwwf&N6IkJZ(~o$IYjX!VPkB@PT(K|DkAWh%EnT5KcGc^9umO0 z#om1(G=w#HJM-fA89$+4TDJSm=eESAXg;HDw5!O|2bT-d1x%m;Y3u+s%~vKr?ocy` z4b*@TH^brQ0AIn?TNR%#3z{JJ+GfU8!8Ytf&H2Q5%ptzLc7U%=`I8g&^9C6kC!h%I zdHma&-horfsqj4*y=@t>Tu25lv`#pS)6(ZuQ2!oCdNKIN=T7&&EUlQrMJIjn)(ZMn zhu*%J1V52Fl3bF5Xrl{oQ6Aex9Ntn3H$TPyi_Q`YHB``l0t8Z}S@7}pe>ut^)jPr| z`f{Pj1Rkr^0``{!t)uG4k#)QEub2HS^>?`W|9$odaq6RNh+w(tzf1o!waMWBMKU}5 zaf`R+=nN;T#Lu0`C+#CCJxkU^hwX-e6teiFV|np&SlI1bg3~eoan?7;XV8tg4_*bz zJTC1BABb&Uai9b!qwW9NBts-Gx;5(CS%lJnNU+1AgIy*_qRv|;cn-LETuor%Q@>d! zw~i4DImDWVV8B4g1OMskaZ9tzjOY-#$aL$7=(>R;spoqN zgkRb-O{QZ(hMgJPyi4=1Sd0O|EYb*EPr%v*YG?mS+vnYXSYS-;N0B!=G8MkiYktet6n{=)BP=yOy4fO$gGKNPWU!N5uA=u*q0llU{I@WEtoXIuXmDRxjA# z=MtCd2RWucTuJ+N$7RX(s0BT%IcV0{(}ng)dDrM+wVvd(9ck8>(-GXadiN20GZYuu z{@BKE6ZUN-%?|D*u)th4_xq9WX3#-}qyCcLRGr{j2f$&zwNlHvaT#VhJTlL&`(!%2 z6smLaiPpYJ_hYg9DeF8%8SY4`&xl7kNV_lgsos`U+I4)dj{!(y@k?g5b9GVGca@ct zUL!o9>6_K+_kcjVXZDHl>P@3*yun%o?Zk&yb#%9GNTq(c@-SW$pbKFDXr>ei-{B5b zl{GWzrgenxQD9tjT{GrHg( zDYMW)g^6Tebq^}a^1TOOP|L-Sm7?;;;cSm=DCTLr>`PC#{LFI(8r~8>;ov+o@Y@jz zcnh#S%#N8Io`UFI8XcMtOV!5I-!{F|co7LOT1+;>zCGh8RpV9`=M^B1?-NTc+l?USEM@glar4|h_P_o-X5EtVc%0GTVUkbphs*PBw4p;5-yQROi# z{9()Ki0`;puv&O&l{$EF3G(eyL;nJsRG8bQkX(#-x{Rb^&b_RQ6Q+Wkui z-vHFoM`JSaDdcrF-E9-IpV^{*Urqg7`gNXboE2q7q=@j>?_qUQ+BdLp2iQ#f771l~ zWcw}Hu8oL4{pgIa27018yL}y^_Z`oTGF7=3mp@mR#f^j_)3!M){^CSG>Ur)kp z2#dfVLKNspB1XzWnYs7zZDAiqg5xP0;^i4)>omZ)xpO) zu0>zg%r61_)%$1W!?3$&4Q5-MF`4xRUFi+Q`xbBJ6*wwcfiSNuyzUxDKE;F-Oy=FX zTGKsZH@XsJxVFhfBqrXHtwCbK=u*BsENR}kzUqj^@4W4MXo}km_lr`L$(oIgjDasy z?wBljL1)Wq6vVepuy|r-X+M(HIlt*M8(`(IME?jub9Ql z*bg7RmF+wCiiG~GT;VvzU*`1lW}&=hEO4zM3D)84{vK3fem{$DeVi^SEh|*P{z>1= zdEc4KnTwZu&Rg=Ja~7Tc30Kjut5l!qb3O1mu<-k_-VN(mvrkBT3Avo%K@r*qpIqh3Ix-t$SC`&59e;|9T@%PiUxX0IL2ChqI35p zBx8)Pjv>*hv|yxZTS^CFbq^cL?4Qy5>J=!mCiW%-Up7ewyz+pbXw&02iZ|Nl zu0bn+PuPi$EIVM$Lu%81fWVX1X2aJPY@3v=tgj!hCWw4~ZW;%)eDuTDjffQ&Oii$o zOl3|yb$NiQeCcLz&0HA;FTud3awCe>SfkdCqU{JpU_$Wc4sR=KTS`-D{wGjJTmJnxfI_!Uj_M!fJ7Jv$p@FdxXFL^x*@2>LGz1<#l3me*^6Q>|0W97Xr zmTR>6&`(fwiWf~_@=@AB)-@}E_z5xO&xF>G*c~w}4aN~XEZ^qFKWEQPD<_{44!8#- zYUAI10@8QKKE?7xc`5@>>JpyLUmLnzpS7QBhdy~j#=C}*=kag2?v3fhMv`v!uhH%6 zLyBv*lJqL?=#o9Ly^hT7Sr|*3FVli2{}KbFalw#|FfQIXs^z#c#qZek+5UY=> zNQ7f_1Y(AaG1pG8%p<)?4hgJKnUvfog_C#kujQ>$iuSKG%hbELd~w9qxy81LOv;@T8qM zl&Rh{d(`or7pHp5an*dsY{_bj0e6>LBfF9deV4h|GlK)(uW1 z>NZ{GT^*q)W_s`6)0*pToM)lr=a{sdoFzg{gX}&>7tlxM{;U)w-v<(g4Ejd`UW#Y1(k~w=v3kqXZ z8Y>Z`&hKR7>+-FpHb9lw6*3*woPOr^K`S`JLrmw&U`7I&Jg|+>@OpHFO5X<+$Gb6k zMZnnEVM}1RA#`Rnh;@wBV$!~mDv{THF?GHIxErr>c~5u1t}${6B&fl=L1e&{!F9-! zV}VvmpWhQn!^4b(Utwq^^~ee*t>W=BTNYcG&qR4N!{{7 z)*e`x;^^XYm2y}DamezcBG>>s{m#_G7B5wo+id)}NrRjgI$ z=?(|--kDG3(5O*0wogR#Q(I~LFZSLtDz0XGAA|&VCwOot2@qTo+}*8lm*DOe+^unU zcMtCF+Bm`8?caIdd)IyMZ_Rv|`L9_sALh%U7hR{i&aSFm&wid=b*eb228?JU^AFC4 z2-%2GsK~Z>B$tJl>u0_titz00q_o0XOwe*VpUB;Z#*!xq-nNdI;6*Y&DRs{=46zdr_~@559=t`gzx$u zP^7An$&G<)Jfc#)H-$R;@A^vYHt$ugu#bvq;fo4HGk-VMIQ?203r3`Fgha!}k?Kt! zadCNwSy;(D*W4ew;dOQ(uW$|1t*ZNSM&NYB1A!}h@~ba5%XNicU1McCqmrZ0PbC%5 zs;LUQ?;#YZ4gHaiDt@p^_loZe`oh=?1e)D0T*w7FL|#4>x`(xF#lh2aAl;AKLAOa( z1x1V|2XpQR!~}2C@G~xNOBM*QUjX|O*^Fl|)Pp0sGz1N!Q&6j|gTnTq#=0gD$7RPMvdwqt%Gq+*4e5{m;MGh?+Gs7?NQp*C7{>39g9vb8 zvKvD{U}tZn_J9ctv6sZD;lIGA)_D9ZEAGwsg$m=v??$NZF#M{MLEU6uvIn&V{eG-5 zt<5;6oDsEs826j)B}Jv6_+k0dL{aQp+jk2j$>3XE$5&xX?k9Ymc?8=qjqR(M&Q`jG z=|)-u99E-n;J5R=FKtVDAMFpVHhD>0;R4YhN^XBo%zLUnywA!mp~6xQE-*7KF<%#* zVO3J@n;wpID;KSHoB=2KhEOdsO!WJ^5@(OHM`I>U#kp`UAoH#A*a{C~e72IV1sek)OsHRA;G7^yYSt~on_enpsQ2SyraU1H~{ zmPp}DYNJu1Oj!2u$~CzON~K`oj3Q6gmwdWLvMdqN+vf|Sq>1C+`E_J!RU6i^fD&Mn zhcT|ap6ZzD9m(n~;;w~b_P6Si-hqG`&px3RRKQd6i+AN2%blu7mb|iJv5-THb z?UNBVQw)wXx`tSX!X zHMBXKtf*uv9=@n8Z^RZxyILA@Ix+WW=geF!ryAVb-|Qc+@TAjKwhKOJ*i=8rxocq|$sMXE6EG3$I<0jhHsqN_Ej+}fwWkmIxm>l6;;0cj4DgJ{#eyB5l6fbif{ zn~^3X|ARY86a0AV;Z$GkCcAx%vzJF42r!yFP^wRAK5;(sJd5%@e=qW94rSyz`v4Nw9q?6uGzZ4AzufiSyF_LAbJBDK=61qV_E5UE+Qi(&-wz zMtw7DxiK`oN2xY@{UP=7DNB~G$C=UmGlLP~zB5vmkJ+ElY_o>!=LICrHw1bvSLX6P z_=b-C2&StGuhOxYIZ@j(bzE;$$*m}voC6E*>D_y($Gru}3kLJ_%q8jZ>IZFE!|Gdq zKR>@Bt>zl2E$mxI%UgP=%S_(!+nX-jcP z?k!n~m`#DFMXOXzo5_$VMQ;KvY|-VjZhwHgF+9*Rjr3+u%}Y$v>$^ZzX>hrS>e|@t z;)i+7;g*milliG=X)xU>GhFY5`-X;vo&P}#L7~#}V}tiwX(DEg6$bB<^Nul@T5D4N zjVk{%V`o_g+7?sp!Bo;c@1f3P^Vo<2V9rozW>yOTN+Qbu-cCo%Xc0)j=c17<$jGTr z$fIBAApvfgn4GMyOL>*{zWfQ`;Vy;;vFT}E6K18`RBK?5ZkXa-ZD>nj9&?jk+uqJn zt0=EMtO&Wuw~Ee}(7_azsEVB7cNMv|N2)+-t z-$KVS#a{ruUo!Vyym4N5nX`#uod3p&EYUbj^fchlJEJ41S!i3dF;IP_XEWT@OV;#G zH)Paz1R>HjF0{*Arg2`aB}w@m7_u=dkF7TPA4{}c8UA`msozM^-T}Se!KiaPj)hs^ zr|NpH^~KJCwP0_)n#1ENFJ(yqYa2pKR>`5HJZM#B>j89Z6GkD{0TJrZ_%~S1$Lm@a z-TD}SMrN`zVNcpiKXLsNN_c;-FNNd91|wEME`Igl8Atl7o{348eXV{GF!AUp_2|td z*5%dYX=NRXy%X{)eDo>KUkjT=r;YDAj20+f4ZO?^;x+fh-A}}6^0YsSKnEMQGJd>< zA$muTMwB|-?P$`BohYPcs9#ai8C=S!<7#;@T?QqCk_ge<($SpWtN6Hr^?q}t%LR6t zj6&p3s6cS_P=EQ6zf20g@OayWQIq=ogli5^`740@ z*Cm5mTn-MhskvDk?cYWJe6z(F3%-9V;f`Y>>u0#Q-bKsRDuV22!bH~KzMkN|G35{2 zx_5(fH)AIh8PlMC)1O+9W|v3^e{n?A#y{SN@ocQ)T+3jfg8#!wK9Pm?=6Z<~stQUz z+64Ea=Mg^g3m9w528)TY=FqfgEx{-&S2xaF*@A}uHsp#p&s*z@l}*jgd}9_BorWN)(Q+!bh4%4RExbSFc#b? zf7i9f){JCMNAvHR5)u(M=}B#zL%>%0IY14M0ER;RQ@mu~ZMk{S{qv>Xr^oH78~}q2N%o>c8ds0tw!o^&!qYCv74(v#Vk6 zw+&&Z?a!!GPctv8?IC5trkYe)pf{zz$X`Q=r&=o}3l0@^VC`i|dp!Av2aZ1|_1Bp< zNMr~QQGw~LZx^hu2AOPK<0|0I2dqxGf{%>%@I(X2l1NCiQw|uJ$+sp?9=!MJH0x&4 zg}d@P`3^7Xqt<|IIx4H2SeqB7IzO>9tIzp7B8rqz6YHyWFlG2{!?HT z0F?FnP)19826=y#Ep(QEfnYMw)F<_WJW!Urlrts>nYQyX^&QF zYyp;UF76P5OE_4@=3;ha%!;}3Z0Wk47)&8f_sP5ZxgA~0vaNrW_B2LiOaf0LvXSQR zkkpzck!uJ!0$p?vmYlVT`VSI0YHd9B!8yMQPdWw`+Tp-)^D6?>pBk9vO$m_i~cM_)nvO5iV`8s%&xuHQxV!j8gg&C=I~^s_Wj@+;gu$r zz#&NLm?K%ST*cPbowIxIE=zm>5{tXThaF60k!J9|bc)GYYA}Z~`6uQq5ZoI~!L9Oy z#ipT2YmE|JV$%o)F0Vl}dA?A1zi|>6XdoaUDC1vu)qYE{jMVcz#iOJl%Vo0FJ(^%W zy8YT%nZB`co3e9pOHIq<*LyE!&h~;vz3>c?#{CFuf>Qoo_L%sx*UNS z*#r2{ zE?&TwX$1^%iSPoq+`AukSK|#<@YQ<9AZGu?-2;M&s9 zS8yR|6iSGVN*mt0n1-8pugCk~6NN-|2!c&BtYl_TA*mwO&+7M@)>mFSFiGnMjzWr8 z>^NW>Uc+-G`6N^GA6&0y0wUi(*kri+?z-D{;o5U0tnh=5c73ks9 zu1FmDTpztSm|6r3*$FTmp8G8{8L7S$x$FH>Pf0x&fTk{kGTEes*pQ|p*_WdX7t$6~ zP;}q)B+xJZ$Z9}W>m;+?dqa*_iuvr?IrRexC()y>3YGFIY4i8oM=(qETdthDASb3~KFJ!(PFi2+wD#b8;b+hN*qiW0*G*!(f zmm+UcaL(^;>ES4Ltwuoe&s?Y3UD2()*Wso5G7;8Hp2 zDo`v1le~)TQ3?y4=wri;MnfG-mi#xc5Peq* z_Xk$n2VKF!h~65vS9p_p6cex8WV->mL^Iza;r0;nvuz>Ywg~I50hA*CG}I$mgWu2o z;Y@(g^rPG8&Jm`T1jnv-xGmvssl{{qRcv*^UasWR@cjf0kL=Ej0Shu1YFM@fzAen%({bjmOPk&!ms$(z)O})wog9LbX_Ab zGyC2noE~5Ca|Lbjz3+KvU{wc{rJ*s`f z`pN3vobdRanJzc7n~q#B?@ee=b#5wX5D?@VcYm--8y$q}#M9hy!AKG~l>vov zowmWGux~+eUOt7fyoyLjC@~i0$_c0W4FB+;RzuDVIwqb#kJEOQ{g3_Ui?OuD&iLiA zpg#mmAxcHgfu%2_1@LlnNV@Q*TKbygiAGbSua|XvcZ(kW(WXBq;xEG`f zuW;DXB3)7hp7+7c)hPT`+6w5d(#BQlQ zSa@H$C3W{R9XUGw|7y(tt7=TkszOYwcUE4CF=|>>AaHsPjdJBLnHAlX&g2l=botak~50Eou6@Ui75I%biZbC zgg!Q-KOg;=S9u8c%|}K(ftmPaj>YlJ`+i`;xaZYAfNG69v18{Wj!c>Viv_@zfg^bY zmP&37BD%kepJ~!?Tt_AiG$dB2?qJ1Fk`%+;gig?PftRqj)`-imEf0yD_73lPMP48$ zr@5wu-d3^Y%VuS~``CI%8s=Ey52i~P3r#J3rP3g&P?w~LE_5xRa!O~Al&*n*la-jk zSrLNEu4B(qDLP98k;|L3jf1IBCg)gsH)MRx*y3Cc2jnZlzKl*cMdtU5*mI^>F9Imx zsmUXgXEjmN(CSoABuJQP-R z&HQEFerq{O*bz>lFVJd~bTmsfwgrL-Hc8V#yj9+?%^hF|U5-$5KbZCfPw1hxO8;7F z2p#D6KO>vIYe?uP4uB!@$LCw2+d@8vAzT#cqv<;`e(Y8;kiF~(p#@H>#!Y3H{5<7YauCRef1F>^? ziFgbBbx@C=gHlgJ;;%uek z>{;d(u-GSx_;^0$$CuV&8$P+XvUdU&a&i?Nnz(nmrsh+?B_U`MD=E-z^*$(*7g`hM zimh+myXFJJ^AsHxHMx^Vid4$jAR^ghu&%DRr3T>%%ZQ3q+E7+xtbgSJ)w~U%$LM)p zuYBu*8AkX#b|G$_2@DL(!g6R>%O`_+R8f)}Rhbn0q0cH=-j1}reUPyJTKFzzf7>Y< zfinVo)bvR>0?1- z!9dUbA7q<)kdulvS5Iv*6YoCTnjH}Ol^~nwACWB{Fbt{MK>1sc7|a!{nEt-7T1=s$ zT&tQsuq|H9gp`h3Y-C?dqo^vI4n`mIte)b=Ts(DbGk7`RsUyxvgt=rhm(+eSiv)}? z>|duvB~3y#GVhcieOqpu+Lc`YeMu?ZDpOz-b#~^tfM2FF_(xl8#fPoa zosTrby18!sWD9XX{pddTqvdZh0}L%sPIhl)w(=7f3bA6cRpDA)nO^b&|DRH`hz9{`|IP*Y|AMk*X~}HI za=+d*a;BM4x_<|3G?HP+qZrse*7=xgtr~*RemU5H&roi*x~X_|#dR9dH3pU~3P?o1 zVt74ucOC}gUf^K}v^^rU;1;;2dpT509r;=*hs_xeb#PJ?=1=f~>HF26O~BksN!O%p zyWh~`>pbv2;$P8|2rbq-E=(Vtb;WkRj<0bE4?Q1DuwUNL_~k}m&NO-mkA$9(9I1)S z4T1%5u;7kp1LFkqYkWB4KHeRqj*XzKw^Gb6CLt{}r!-HbArdH{Z20jnX5{C7H(8@n z@7UN0fQLqt@^%Z%6!S;9A}-hs7vP_OP6upEfQmyi9>zoi2%af7s-SCwABw9H}G*wTX z5~vpDt7~bgv9P!oD^294gd+)%F{Y{AB?B!~9-!}fGR(__dl3jm%)U9gdU`jL!G;z^MR-<~Gx{Ig*}Wz%JUeq|)a6>cy>rjd9Dy_oSPEpyToP7VR6cBw>I}WvXaLXvN)e$$l_|jz?;qjM^L}~Y z_|4rjv$>P`T|^1cZuPFDAjj;$mO(Wa^QlqFWNG3ILat8geVfM!KWl#paJ>^8Ss0&w z1mpOki$@>#l^VGQbN4?1{3T#rxUlipTrQfU22y^NH&KQ5;y?kYU)RVgDmM(*Tx9K? zxr5=*Q6gU$mi6?N>fPADn?h6Wbdd9*!VNYf$ zzX@pXK*{xlXn4UbY^*a%nuHuEaZwZTV@&abwBp%ORB*&D^#jrn84{@w8^F!f{E={~ zOpE)3w3&?BlQVR9;*mQSvaXv1k;X*Q2 z0dwl;`cL+t5u%dRnY?T}Ikuj`~a^#+r(nV(!a|!`XTQPQsPm&96ui zKh#sosa6I)l}*C58&cjv&WoF_hq|HCEa5cW32gW0(AHQtGhR%0)V;}6?<#u-*Rn~t zl?z@_TKTW4j<2>V#5#%U!+QPf_<>iSjy|Yqi4KM@nEkN(;O!0Ym9~Md$x}z`baWW6 zbNfba*^}f!px_%RO(#D(6Izsuh_`BshU-SO^Q%Z9uj0^e;w`k=@r`3x{as#FP8{`& zd4}$h`}%K)nS2s61q&*#nZ(c4Mz+ThFg47M!#*E8ds7`D79E8D^l&! zyB(z{Pr`J$jPp$V&BhxdYeuUmWL>TYT4mt+&IlsE0tiEFWeB44ds7*lzK2gAe~UgU zV$y(Oix)IPYf4jt0o{w+_^;Qi?K1BHSZ#AO5>+?I;JJvq@B~r)T)X@cAke*Y@xoSd3|`%-mVb=wm(Qkl%U; z*psmyS`kzofqjI3ayJyTiD+e6q(tk-f4E1gTMkTwf`b)~D)ev|=&2?`ay zXILTre@OWxdKI}Hk6oxNHTlPM5C?BPna(`w%GBVTBl&N>6FAbLTdazuln`$zW@@b2 zWI?I3FMf0Txl{X$BLpwFwdQIM;X=U@J6(YujgXHWsTo-=YU<8W&bI^T$EN3$sbPh| z3#C^sEzYN+^$1jDp{RN)^!whc%VJ&qJt>0+xn`VO6blAQ$CnR^tyhFNs7!&xRTZF2 z)WS|_e;!cI?or?Hb|&wnf@e$z!y{t~DLGKC$(=*Qf*nECdaURS1aTx1{_MfIww!2W z#rH{zhhDK6h-;D|0(&?Or}H)ROV0!b2BHi!{rTfLw#U*4^~f3-kMRGtuk` zvTEAp@u(B|q zyT9=|8wt+ab*AVOUAqHDv?G26BDrkUU~Y9oW|({00Jyt`{OO5Z+8s7hm)2{38}aPb zMw-|uFnE{0?fEXWBPjps)W0%Oc*C_F-RE4-6!wmiDhlo*`WxRN9+$ zGO6LgDo~-be(jpd@u9HHDLY20;e|q7-xSr0lQQ_pC^N_!Z=6BB-;|m!|A=L1TPc%x zAK&2q9um|hhX2w{hGy1+eo9vVzHWAxP?9!t!FKqrJeQR7MUM|(hG9a#Tq z!_Ptq7QgzaKWd=R_+aKfSPjfLK!*<<9}8o#eFRZZYxRy%3uu&EUST^s?o*mCISIv%t`ax zZ)7egm5*F(34urBcJvG(RfE0YjY_Dhnr)Yh)A{P~X@m@r;2bi0?vTRkMp~HeB>xMP zJYli$zq%huRA!h0ubovcJSqYxW~Wl1YdY$ z!D7_AANKZfe*=$yebZ}C5fzN}k8)sD)c%j+_3!)sD#zpeN6Gq6W&alng(ihc3?4!% zecA}Bb*JnnVt#$fnZ9Ky%j54s#iuO$uSzpo|CWio3wABOz@{uWlRXew+Fln6++{{$ zWR7(l)?*`C$*0Gdz+VWeg}fxWL!v8Y_b@rFrc!%ISVH))EdY#LC8+Z`+lL zsAS6CyDm3#|DeTlN5v(Dn{+9kdWhxN*f-rDq3`(g`O1{=V9hWV53HO0$3{BQ;Fc$| znoTRpC?x-ckN61fqsE4M^lN`=P0g7%bOYO}=}Q4G$(hvXV>u4fJv%|Kb8WEP+>bY^ zZ4ik0@T`D=-!6X6O6JR9X?q@|#x)h+gUZ0hMZ^ykVwF$OcNs_GV$zhP$M3wy@WhH) zFwK-q&{E0k2TbR|XK7r?=M?b{OR^41_2VYN$qAli%@X%NcaGa{Z>dnl^9%;tL>jBw zxq1Jyy#X#??1cTmk@;3J1+CPV{l(`i8ZPCle6f8{Q|>!>Zndguzwz8B`Sm4)h2i&j zYkUcy{WCJoQXiMOT+z&1R+=P|RPVG-Hl0ophwABjjo%kcC!)jkM|r03$1j%e8r`Jx zq%#IMHp^!W^z?ia+F=7r8^DAy&Q!3v$K_Gr_0dDU8p_LTs)q2YZIyGr+{r5gPbyNe zCZ5&>BhETk|4xuFjg}FTyJFAMv$#DS&gHM6^_aH&)Gx-{W8unZR5G$oh; zv{ZpN?_16-&V{|qm9YSzEeD`8!S;}Bu~HUqX875+F$7B5bqnZ_rFz7Vw)}v`QjzMm zaSo0q#pilohIWU>dD^nyI|AwG{LD>W=vpV~w2zM_#~qHq<};=ItXkd*%9YEW>O6)X ztD;xFIM{|9U?#ikWm4hGfF~RhcW-toon0`?KSoc03mBT=EqkZu$r&_*bDKz<%f>FqE#ZUer#3x_hzFvw2_okQBT_6Q0C-*x^yq44?n(y z7LAAT@H8b(zl8a0c|^%XlKjolKggFXhB&s~U z__H~6lD|Laoq=N6>B>NFGa%?PSC8h&Midj9coe|WBG)|}S^#3qOR|w)*LIBA*tlXi z-3xhFsFH;70-6y)^S&W?LUR42CmtEN5v zW%Glc^J@;^5Q}SpV05!Ul7qn3|E9e1v(q)kDUTg`sK_V?mSbNfvF3q-^PdJq`=n68 zB}wpiJ~4^?nGlNf+4mE&z@o1XyzmKp`g6?|gxb6bT{bGcEZaz}iD;sJ`oZaAYj?DZ zODo?6c;Ge04+}rB{4`5vVlI+ld?c|Mx_eJ_@7RlTDC3rzm%{5(?xt+sm_C@fsS(-o zYpe&Gkt$S8k>kj?vT*V#&ZV^u(+yFTu9M$SWy(U$nJH|Af|hvJ5)^uw(eT^x_TKR! z8pZnivm@OJ?OnKE*YvmH@)<&I?_k5e#OK|SZHt#^=f$rZYaNh_kfu?lNmjxd&Sjxd z?a-l)-+`X9ak0V9CKR6_7|xHl!Ye3GrdA$i8idVqt{QdK5CN9g<4V>~Tn`h(+t1|0 z{xMEQq@J)RIrF$AiXaib=YM+K3o`Ycf?;ri$5gBH*}&?GnBlqjxag8%n>7R^q!G=b z^}{cn(De6C8t>r6qdOSBk(2U49v@ea9FW6dQJ0|Tj8=3((6R5;85kDBTmDFs48yCC zdbYqNo*|gtyLu!{Q9$l7z%Ic+#|ar9f)+jfv8{qJP{7*n-M==RA|_FjuPB8x!ds_? zGDg_-`yiE*C^1OJhT=9-R|kg7dOGoiUccF+3wS`3jqv8N!0v|c z)0)wTL-OSW2VY79(etrG@>MC7NlaN&4sBacw zq(NbZYSwVjFY)-5NO&}>zU+52!20y>ROWv<^G|9OoU%uId;MVT+}7FId(@d@`aJAo z1wgGQ+HR^0Un|Z}*nG5_SPWRh)sy4*iSNNy}+~L$6*>_E78skr?BMX%n9=41xVTVobrvCYm2FvY6&>C7u zwoB{t5|AgP2@N-e+xsJn&a~kc+(DZ)b-3gz{f2Fd?-@rhSVWe3mh<-?kMABfbSXPl z+X`krI$(Z7fr)D>mB~V1G2P*d?OC{Ziq(`>#>by&DQ8JRXO6_krh~Dd)MS z3Q_ZLbAn(|e3kE}BZ7R>5r(yek2Y^hgN(t{J_{!{xDS6vd34NvdulW{KrT{UxO^yT zCTxF_GFF;ah!vL+7i>R!OEImsBzU6~CwY!y*TTMDhaR#&px9Sb7Ld&pzM=K;bSh<0 z!W7AkneBzEAk^xATXxoi;r*~s`oWD7bq+ zd}=;*t7BX(3!}k`YGgcBk;Ns6Ht_YA)2j?bo$2jMO|+nyI_i5|c2R3Uhs1mokj>WU ziP4}mov%F3i>RG;N7mS@F{svA_9ykTjHn5L zB_gV>=ra=xZf#G0Gh-MtuM5|~25xxgbc8t3W%m2){Po?L1*e&E1!$ej?XkC@`IiB~ zg0pG3%sDJ>N&4f}FooJDC7JjSWAoaIX2&HE2(BwHy@%N-48J#`Qgaa>Mp#X*f%Ft6 zwznWTBZxR1{_k%HyT$6A=x1eDSwK*GtJ4zeb8@A{i*Tb4M9J*oFTz3%C=FxfPw#zs zVHHm&#&?{Zx~@)?Dc%gC@+3iEly)|E*G7J{?4$c<+ljEOsYx+VbRndQiAY;22* zN&9gYsPJL{fYwh1%HLqx$|&-28K23l9}6kTz+tPji;-pyi1lj@4QR|(?T*PzV!w=p)hQ@Z;hJG8IMtd#S0JB zzKm`Yr)3fDVhK{z_W)N|4aPR_!d}qwmYgwzXav=`7x7QUnWX?TXL`q=^exDsrn*bow(!@+tp* zosr*S5xu2t?rr6|Lh0?bO+7`-$=eI+(XUE z1`r>YoeUio}RAL?Pb=dmoU zgzwB6XpJXbqt{X25eXoB)48)eLz z=b15TcFCrEwcBhp$y5bl0_A_gC2-;_`>-c`=pwQQ7t>FCP{q!Q_1w8*ecyck$AlHH z(JeFW!CW3M`Oxuqh=`Jw+K6)5eR4Qu9|9Mat38rz=lGL3YF$VN=pr^&8nqYObjR8g zP~QBqwHQm1Z>ygSAB!*UU%b(^?9tl8Uegci*9h;5#gWe#1TwF237j6}S_`-(L|&K} zGzX_j{6Eah!V+i#G(0aMA)j!nwn`BG&%z%(F~q;}Q;&^4f?B-z^2+#1dC)5)DLFUY;>M%Vc8MS=ME#1 zn-a*y8giL@(QSuQxw7u~@gq^vIG*v~lO}Vi%1PCri5-tc>yG%MEWwGpe@#L|X_dsk zBJ(!235xIF6MX1eoX;|LJC#dSc(2>dL>sGFvZ<_6-7hy>t#?BXjc6{sZ%?`TLUX(~ z?oIBP+V2noCIx)t-Upyer;>e?Mi0nDpvi&LAAsdP&*~;G`kCdBFQy2DgUc3^g%j5J zND;lhvUYkFg_sSU2jArZs>Jl&1YV zmMm)FninBqo~XzIc~0Ck9=fTm<|QE`kj5Mqv3eIS=vgKW?>_ae!?n3W{N85dpZ**z zhn4viGlcJU(EwsWT7(Duw{OK-NK%?=Y#mV+{7waf64(sl=#1D%7%Y)-gQ@0%aQ8Ao zwsqOb)^4S}7Z;!j0HvdARGP07rS#{%q$-bcw6Is8+z2R?T^a~|)ju!BtWz{b(z ze$*G7TyrRdHKfcah>d}IGWc6+Emhwk-<*Vdmr=_~!RfsXL{z_~mNcGSVXAvFVbebq zoOxc^X~$J%ys+=eDoU=d1V`%9$pBE$_K}WJKETSGQbC<5k;cVh5BQnxUnrY>!w^x4vm9t zB}y1C342pJG)3ETFGNnwjq2_!ibY8x`lK~o$+1;wViK3jv0)16uBS(dq5|u&s)t7)#CrkH;_?xb-?nNhrb89ITLD^B`M;`9j8_?VMX3JQS z338~W0a=?<_3M-L@s+v6OeiJE7(3J)+3X?3z_?BeY)OpySNb?K$K=_Z;YrNg5SbEz zF>?{5T|xM2?&0iYNego=-ZwGQ^CjEOqmf=a4Dz)o?Z#{0$_@BaR&*AZ`G@W=b1()}8d zlb+-E^2eY~(B;{=6Q3E*NX|oR1@O6vaXi9I{^~<*;j2hsL4+;TXQ&wpp1`xhik{Ub zPRBCqbB$JG2Xn6=#+BGGDib8|F~^z9+8EUfYZ9v#~rC;L3gg|5Itak4lc*}JNx|iTXup(St z4UT*gYCW_GE5#XlZM}OH2Wu(4xmYxolc@8R}N;>8@X0VOI^-% zd$o2^w(7I59g2G=`|n%;OtZO8##022`qaT1S%D=kGC~qq*muBo5r>(#>T7=KYDO9A zOzih-)eQ{;yfkU+Zx2L``-!zL!Cp{w@Cu}e5>!(LP@X682i%r$62Oq zdztLv(sL-d(EkrJM__3$I2H#f2yu7KM!tlkR;5G{EJ=8-!h(qyDjps!Isu+KL*%~} z`=8w87JtPiIc4sX7IK5)d-)L>A-D@C@oxVP3A~f0M+c3&flFU{m?aKft|9v>|xE%s-br8bPMDLk!~Ma;9CdpzvQ`HJ$y> z!f1EtQvWl4>QHphUdYE6Qg3j-v+nNc$tU~IN&#*NU#xIVAVh3jT>d{+kiY&9j(Q+a zQBjNkE23(O`s+7ep{J#cy=2BW1bkEC1!k02R?EZh)$m+KN1$>2jSjNouRUnlUjMbbeyiwG?3X%2tuNwZ$F&?;A}Goh!pYj7y`Qyo{danT=U+UcphjZQZZ zkXI`HrSNTrm5>Oj?Z$%xSRv^VQ0Hy-Ch+qKEOY|PL*9_;w7v!XC3(fCd=ko9_I(>c z^@XQKaFlKZ=b z>;irIHU9;X^mL|ahQ1O<1CoaM_)o{=gij%UG{d_`a;tiX{u4903~Dp58W_CXb(Tc@ zf>tEO6X#S@UlH$1V21I>z6fcCz#t(7o8eDIipd6??tc%j(du`K-To6ne|oZ4kf}Kf z&4ge@bA_Eccy`BMe&RtzxsA(=$nI{`jONm~J_|2g^ z!z+9@ZFKZsEilGXN%qQFYJZm<>sl_d(Ac9~iuZW$^F(;r63eo=``_5&7QcWL%iPCt zg&)(=-XviBHydtMBUC8*NDS@@)Ey4rE_lZzuPcnOc1#o-AL3AziHKJ_;Do=*mD*Nv zyD@%Ki{rba_*61=*Z{ba?X%yGg;%Ovz%CIny^X0GJM@|V%ii6k^r*0J;sw7xExoYe(z__{Aw%sFu8=tKRhX+0YoZGT3d$ z09eP@-)dq!wbX*;J#|a`tIZ&axl#KxfsZ}v(hY2N{yfIj9?XpOW#g{9l%krY2Ew^^uQ;KwNhK$fq^Ur)97fMP<&dF!35rq{gVKevOgxLEo zWY&{=GM(2sYhKwFrwQD2CR%A>`O}ti9!skeYjIFQ$CJ%LD=JG$7ISHMSIA z4r|2swcAh2sVq}Qp&J09R5Asu>Tib>lMOL=S_U7UZ`Gy4Ff(Q_@`hzl47~k6+pfG})^gE5ouH$CX)NmSrWLZvdF1Xx`3aoG zYN{Xj05r8LJiOwIMeY^@gZ=PQ(U0I+EZ>@FOJ~diEYM@sm}z?X!QZqI!B7nU@Z5tE-*+ z$GalJFR^duNW9?~#f55=@uPC}7EP z?YGX)AY2|*vTa-Ut7{qzKqOa#Vw_P0sY4?&x%xMIc~lvsIWIr{Jh|QYh=aQuLWY-e zh}IMTswbU%xr``VWtx!Nr8?_acwFhHF|MfY{`r`IMZx3sYew*o3=T<M{$vcw(F_wDXW%HTR!fpo8kf#%I%^r+D_Rtptn$c}(tAB@za87)r z;SvLw(&^6cnGtfeR{lN=kkc`J!&ecp&`G~zn0s$t{WfYH%Yu1;`32710@iE2_UCn) zQil5uHc;8({jcm=_mt)X#7o30IjlfED*$Dghv%}l5;(g!I5yfVBcP7MjU8VsuB2S8 z%>V_L1;Zu##R4MFsPKHX(evJGQNps!vXXuvA0C?=hHK%hYYI`GVU0bi1KnSp;DrTP zf$r(WUoNmRQ*ZqVN5pHuW~viHZthb&`bob&_|%L%*9&8U;O3=^@+LD}5z0ded`X9`_1;?3ni<>Oyw^oI@(tl->v< zwew9M(!caIDE&)7l1fDmC{ad9bKb}K#fjPbPW_$EeT0#$N$u~On6^e;*!|0N_>)(d znL^~;j#@v?N6jFl%-$Bk{lQ*;4c>MAeq2F#dk6$}7G^_=y%^q~=@0jP1DX-&aI%$XY(44~X?{Lfvmyg(|Z8bcHnXb>Z8cV)D zZMOuUqsj{M7Ui_=)Bv<>WpFM_Ux+#DlG* zbThtPTts&;R1N+eHkpc!G=6)Z^3pfSyYHExDhBpY>QKLu4@?7?(D}bF5|!iN!+uNu zxJlFs57V3bU!=WtSQKyj_m85YNQi(mh)Ab&BP!joAdNIE-MuIZNOyNFEZtpF(#_J{ zy>u?mc;6rI@BKZF-}C(Q+rMV#nAx4VX6Cxy=lgZed0k`$op_b3)Vb_xTkh+)Iv$N@ zqK4|>RJc%o3Gv9HL(lysNWOi=jp9)=2sCYKF)D2qOuV`sBbAoShkz0-;zwsL`;4Y2yt&6lYeK2+P+_BbOAv7_k| z`gkB}E(C^^d*e^waj%=sx723;df+SE-7^vA8xbU0S8?u9vwxo23kmm_R}Xx)cWEm; z40y}q1 zPF8o=1A}09ad>OuZ8?N!y^&$KY%mKi5uI?{f)_;~)aJ`cgp=nxSMF*xXV3B#s||@k zBeSFkI)**rx)5lt3$r|9&1-+n^_|`+y6?3%(gQ2cFH9mo(3%4!(W@ZQX{lQ>bE7V< zE(gvF;Hj5Mv#^*%&S$Jfrvj`vi3|Q}n7hhZjX^o(g^5QCjqeI=ynT zy;vR^1m-Ed5daLlphbx)<9>vx#>=L}C*0jv%hLy^UR2-j#%A=hE{D&XK%NV432(-k zZ=n(jexBrQp*(?;qikfR)9$8fmSLOF$~p`)?&wJY0mP*GjU*GqZ>YY;U=OZv)J;h6 zs`-lL*&UCAv(Z!M#{_(&F@6==jg;SOQP&wXSWunq&!|~xQRO)7&P!5MpMkXm`2h0k z(zl%=(iE0UCh;v(-)i-J4zX2$KodoY&x_H>A>}&1bqp$=lGnh%Sx4yd{TRd)r=@qj z*fsb}VX^mZs)+Im2=DRL^jm6DXrBshP+Ehd&xXm0{2|mBKGJ!E1_CQLGIMQXpw+PE zmcAyK(0{$YlHVeC*k2}T5O$cZ(h|lL#e^N-;L^F$={Mi_jkg-Y-0BqujR_&M))nQg zyMDN&m%(k`vq{%KM2|r3y1X2^ZIoqKUVT=)@Dkk>$JN32>n2_QB%rrE=#0d2?VrT&ysnpsTA{MD$RoIkvr+5}Yv4WckU zeb+fl6=v0C##VlK%F<^F`a(W&3&yjt!Jl~mQbIT$cTF$EsAcRw$XiiQS?m8KoA`6f z0WEJ$CFaF_qR;vx76~or3g;VGWohuCGm9z$lal7(1rA8-rBW3&N!H|WzC5u~G9Q)?l&#^oT=5}`oa0)a2D zqjl%ON6W?S@n(K8G2$yDcch_=5>4-IEXFTlW0}9#Qo-6>*K1rHti8HU zdv&-590wMALl)M$w)3CVuJqMUTmIUC9c${8m6Xx(g@nk^47;^LYdzGn*+l#)a&PZ` zO&6!GONQPDtv#oGM)x>ql(;w`=b>5sRquop?PAc@Pnk}Q!e+xl}7qF*@5z>7nj0v`Q)mh$N1m!gxsmz z_@>virFEUUPm~Ql8-l?d?R`yj`sm!%lkv~dhw&7yy@ivyIZTdJg+x3*2(TUB(3R&{ z0ik`wF^JgVcIkCmSz)BHN7p-o}15u7L zU{1p^Q9)>wpga(D;&ZU{KmcWkJp%71IURshb_LP}PZ?t;JM8R_ix)q&FGPU;jLutl z*%B|o{8?-z7cMl^l3AEHE+O{)ujxF9m!Jx+LKGnc!>1*aXL$p(>}LvDWJ;AU_6Ah> zgV&6AZ|HwQnMLrdQfwU&Ky1+7d6pRKxRKgj;Ta=N8mt|h&xT!^e3z1He}H9RYcu-b z2piU|HVAo#K|k$RBgxNI7*3CsNb$ z)XO3`A5nhFSF(_gLmVB|_RR_;@YUOr3)ma*otp7At1}I)XG8Vl8xq&LuUFmu=?kz# zD?RL9V?sT}RSOez&*x5=-l24M5>P;QDs{_zd0=`TtIdwyq#W^Ss2dfC-&B{g3`T>8 zqID$)d$Pv6=`4*xHP3Cp)5*FQ++i1PKc|b}9GS^XA1FU*WX%6c;8#Di5r+??@5T*< zHys}`lHbIZh=uqGede%XqC*$Y8jvF}nQ+9^fe&+XI3=DNc3*Gbo}S%5P^?qay7k@3 zG&j+7rszA@gW9v%zk^w1i`A%?RXbI#iNZ&mLhv2LBhr$j#^kA3Z5T!S4h#ddZ>ZmS zsB0W(={BHp{i2}at)wpNrqXEGvI2r>VEB<>?A6-O^_s5UaNxc@C4a)Gr7iey#0e8H zcA(~v$$kp|iX@6b>j&u$?HARmF*!)GJ+;GLV!Iz$ROW5Xo@&|GsDQUx+hxrP(hokYJl zJuZXu!nLsHw1Dbnt`BWCC$hmCnvuIH-;ZPEC8{9ukigcSLmhGANHob6gO7YFP76)( zC7I+tuXT-<7(1{MY$q0JTPPAK^_+aJSeb6=JLzj@fA$gXbeid2&mO`^p|?Z8Bew}e zO?JrB6|aYkT!2`R@XjY3Xt@q`2!>G$W zGZ3{N_#4-3eTXg_#Hu&hKGE4dWjVO7cfPtphWN92>^k}ldA<}=DrNutE_*`qp*Ev- zm7bmZ#x8}xZ0)gp*iYG;GZp*i_H21i#4AZ;K3`qOK1b&wyqbRvJRGidtFyebwfN8x z`a-k{ZiTEbwkITEa{R$bA`g8nS_>2M5A=eh?pi2+XR+54yH8nWh8mSTCi)e}b zx=y2Pvw0W{%ll?dVFS17DiPuVUbe&!V#TDNLSQkc3U|*+sB_SP+5f*xM(~EY?9J7A zic_s4Bzc32amj?g(@)_E$5KOJKmRdm*!obm;lyLdAkCrY>r6G+QkO6xN)lw)B}H1R zy{-lgiC*3ihpAuLQqnRff-BrfIIu|RNn+L6dbjmN{Ng$a*gvj4oS>axK8c+hBG}Cx zlHKUWLG=-smDG{vaDw~c71RD^U!{rv6x*8@XT29%_RQSl=#XEf zJV1jVd-|Xoz58R=ISKaGZ+b=qT^85;bhf?~!_Qc&8Y-u!w^I?vb zjAqhwKVFDuPS|+=(ZhMhVFAx{)z}v+&A-Ebq)TCQW9O`(2R1a=|H{;d3%*JLcY=qw zyB043+mCc4*zyb#dT-&qDS>AVM+cEV1vg;nTk}MG zj#%v$4JWahQE>0Y{-xcQb}JD-3*s*a`vlbwh2%|1Y|l$X`%FbLG&~gCTW+`u?n}6; zHXbc)s(qdOf?0Nd5-Ke}*A?b!;;J{e=~HA%C`1G4X+^1X2Uux`QFGInR{zGYQJvR1 ztaom=Xm?4y#R+m-^=i4R^u5+Mam|b!?V@oeEP(t&mG3c>w^w^pa(7BNXd(>0MmM$7(vyihu--b(Rl5^YDYOF$eudTlQ4c`OCch>&#bN( z{T^`au^a4Yac!OL>vOy~*g2$9aD9Ep=H<{g*G-PPcj)0lhk9k?8D|Z5RO_+&Pbt+OM9dCj+iuenMI6a1KD7(`{pg45l$>CkZ0g8P?0FRz zeq`C{BceL-{95JT(}U$pMI927Hv|BM;5ZOW8+#!)sQRbg+$W+OP0`j`v?R2v#{dt) z=A+2!E&Jw)u`^IY#Q`Q3<3_IP7nuY{a@s>pme=i}f9O_k{{vqR0JO zPTwy(v|p;&XFsHP&FbQD+q6$KTt&M z7_m!_ABUyt(>?CX?s@cw0sU_*b|3=O=X>$qzC4-Xf8{e>L;=*~0iZD@ss9_5b$GqS z{gd#=8V-mG2m2=k=+e5rzq)%{4Ru*+@rpzvB2$OHfw}_}dLujC z!!o05!*X}03fS0NaaEitDZH!v_egOAGo>HLK1|GA-qK$x+H4psvaj-6mR9~yJdvkdXHppTkniKLvi#w!omQB{>R~$PXUw$`1M^WzexM0eg8!wjYIL{ zUy^%r|LfwA+xI;F!8<#(Fw@M(mrY~3y0k`*ua2%GE06ZyJ6o1U{&NVbUq*e0eE;?D zEk14f00;$T;Y%U9r<%-PrCdWi6;56@fr)_Ff7}YW_7UU{g!mtnFvl(Cc0+ZaznIJ( z66y)EsI1?I->M+yYK^gO}7|i=Kr0x>5eB95yLts61TS7F#&%78+o&!ex7dFkY zVtB*n>8ZFx_q3bE1;MM{u#2WUk^Vo?&t1*wynlkhj~AI3TS8fwfQQrXW@!e>`Q#|N-7H9y%V1Jg^{hxV?Wj%l?AhZb#W~&n#036zq<7H({tbcM z(H!~0&b2whp+%h8bThxGan`DwlNfk#l^AH~A|oS@PH#8mwR(hkgVe=k^$}^$=pNt* zUbU&q?x{Q`K{;`olp`E0;NZ4pnoZbA5r5}&O_=CLSCbN(TL0tOovsnWjRUJnf@H}m z?{6-^$z6?az6oY{TUP|xC2Zv7E36|{w|y=l-=@XJUdE`{vR&C%Y6oAxf4^8MBBB@` z(4$1m4yq#SC`{EbI;twG-t3c#{F&DSeBL|;?sGE%%WF3 z&>g%m&MskGGC1u0dO1H{F#Oc#>>XqNiaJ^6T!_W z76}T}1qB2y%6zT!sc(abh-MIqzSGum?tB`^V3_q{1xb&Oi$~#gic`{pyta~8#*4In zhf8bYV$E-|VZB_WTVkJgVSt4s{#t&5dwsUsE&+03Z!Z2iWs{b1cu_2?=@RR`zIti* z3HutOq_z2n*O3~KJcC=YU?4Sx;arm65xF4e3X!w%cI}Ut(@A4TcD&z^t!rC*6kfB= z>>eT@+j14bWTS&cz0C`;p2NH@LXNV184V$vKzs4N^QR`Nu*paPKEk2u&B<0+@V0=D z`p2;2_N>8pY`N^ia3{`q{GLep;to%)fNqbltkGt3!8Z;7q)TeM#iF58R#qr=XoowJ zUFxAU-_$-o)53gnwqg!gTzT`^tm_4wPnNcjdI8fF=z&=Jm4_S;NM<7iN;CieqP57q z;7ZEuwfg)X#6DnqtZsS&D-|M-B zYj%5GX*$Ra;5HlxEDUNMj)dew0KB;o5nT8P1V95}#D~29LT_~l62Uu|Vtm?1Yk6Y1 znXuMQs-x=FtCKJYY?^l{=Mx*{--K_vgtyOd^+TR1x#zV1ufJ=}2LYv}oLi(TJyr%Gc z-v2s1hx9vcX0W64mLgPO7rP|edtJOErz4Y*cwNvpee1PXM!t_m64Y*MuQ{^-_k$Zi zzdjQcxj8LVsAA`JA~_nQ24%AqI$rM;kzKkCy%}{-b~}hrH&ZLZMDZUyFy6>z{mt6{ zQ3=nl$}6Vy_{{uX$?FLxne>Nix0ju$@)QfY|1Z(#q;Hx zFN|encvm5?kdr(6yWtup9!zXTEy-j zz6Z4^0?|@XN|g|y51583`eiCEASzDd)y#i?vbR6pS5V&CF1&7e(UoE|;L`@U5;a0x zb0w^y^cI*c+Gg#Sc2@M8D3xv@akH|9{n!nz71o&CB{Sl!KFk;x4($OXs0*%%LrMK6 z>z%ZOD_L{mnwWep{HcM<6J;u7`5Ns%G)yB$(1+O0&LrzSk&JCTg5G&{h$YdNV4=2( zea2PT!v|b$M*4Cn{qIx=k2Xxo+3&NRhXn{dQw2&a2#I1h2>4+|WePHcd>t(vB_ zeVyXuB;~8{#(d|LYTRQ8vQ^Gl4k!~uy4h^po<9q7bP3m`>ktAeGFu(kBz$_W6o|c* zPFL%umM$OFY?Mn~YO?V88;pzkU|cxUg&FYcqX6ud1K9GuZ9B)i#d2D}{6qL4u2RVC zLyRYk?pP_JqM}%go58=vpfA71{F-iDQL*6O6J1XX3r}=SoN(wK-L11Jt#YC7m3e`w ziSC%r~!tGBV*!kdPI%4GyfE8=_6>&gI=c9$mo!}!{Iq72dCc4pmSm0SGR)vNjGnJ^dff8oB+9IK%k zz-w5)O+dBOxznr1zP|M{u2T|J!c*v)@&6#y2rO1J98FHSh5^5RyYR52hNNSQ5+;j%2(Di4-jgOQjtKW-;AYwF*fcyWTgFL4=op^ zi7KfoM-3irrL(dT7X6kK8d?@nPlr7L0Nx52p)`<22qra9c|(*Pv*MJg;ha>Ezt99{2#2Y3`g%{(SJ(<~KIVA5U-HgW%{> z#~2+$_QqR8=hAex5%oJGaRqnIy`g)*+g8LS;er;s-$sU&^-{-9NZij&w7DBLD$1(LSEKN4I7IAeKF$Vz zQu=byVjHv3 z>1_&QP#vc^7R+q-XK}CTh&QvaqcVSJvM4GR*Qve{@%z{fZMsN+vBe+$3^OZXbZ#bc#YTpg(}qvNw6^@PNMh^uvw$Y{?KeGz zd!KUaM+5gZ4_k!!lZvSa>G8_%Lc~w6&oPMT^S9c3<4;^)Go}& zWplw66F&J)C)5in*M73Mwj-k}|0L05Wlv8a|K()0t9@(l%t7p!0K}a_P9XG=Sldk3 zS81-97cTB1x(_I`snc@oG5d(b0cz)Z`N-kj!PE7E&nz{~r!65VxT(!CQi71|jsiOL z;|eKhUimmE%_|X?ZIpq5j+6z3zT&K)3vAeAwyPEZw6U!9WWR{Az}nvTcB(*<77`32 zI>;AAq23f4G#cb=E{B1gL6{A0kL@h)HGOW#6&Ohb<{H1*+MhjcZTVmYFiWNQG?kS* z_~F~sE4Kur>@HmGCTf(02NQN@Fx#P3A`eeAn8niVwiik~`bkN>G)r|43w{Jm~41O+e>>JVbiMboyFe( zTR}w&L;)`;T$)SMkQ;wxZv(A0KfWkg@K&I{SmkqgkZ)8sXn#kUi8Wau*ya7%O83N$ z^UBabh4Jfufx>^;@0x*`qfFVDNmwPuGW}0-v5={G6*oaO66CYNBl<>*+d8pBuwR0( zD>&W40z)M#EOTXhEu^A}5y)CWRqQO`?@9O>&xt#-iKW;BWuQdHM#+Q3I!7k+c|!si zn3+}^Ql5i6KL-31`1ENa_LHhrPZ#ixH*Cyz;wJXk{C>Meo8^wCW^u~Hg0|?Rz~|z4 zl=|`Ao>Ql&z#4ybi(UaC))G-fA98(9uo*-g1bATdpdce!T3QZ=4cV>`5*ILQ>G9jb z*&x}2^EYX4CCZ$aNljYDLU~e|6`*mni1j?0+VQ>jT0^?BNtFp|Hk^JbQCGKdvX#TK z<#riv-Qta$ZZDr-%Rv?DPHs=PNwHp;sL<|Sx6Qj&R652iiAK4tcgC4fL-{uLd7xOXL%x{Sl>fp3yn=i6o?-E=w&c}$OE}CAi ziH_GVi#>S)yMTNh^cHXJ|4Ct5A+W;r>OAke??bGjZiIA@zDc2+{^besQPr-3;s~SF z4z{ULoK*0lH?hMBOw7$S)^7e=sY=F|L-|MEPRU3^%~ddF<)IibZ#ro(*I1RilnT1q z_m<|^CMtGblDcp{f!q8Y1HPc5UsPmy$7wc~j!x>r`%54C;Zc`}WTMUfJ*{Tn7$CM$ z#Oz{hY03h-z-62OZW%p$*=BoXBgdh0Qe&URQ)lN6`^tD2W6GUWT+f{D-nq{do$0Go zUtDI_^N1h&5)XJFfLyer_UINp-r0!?(jEjP!gKlUgB*P&&361URTMd%MW;j;Vg)%4 zJ$zOj4n2r{D|5$~eNMQp0ZH9?|DsITp|PNo4pem4^r%F!VU540ye?NnL+8x!^H`;p z^yUG?Rj*iUmCNn8K+(T~);TIECJ->+-@v`4_VgN#u*=t|>5+sZ4RIrY?wy+A#{r(O z5eU+={j`{AH3zl+0}vbPY&QTdSfW$je2RKAg>+M3NO2-B3XmK~S)`XOuh_H8GeyW6 z28CrBSXDOfoXE3Y_tz4Q;ivi1ROGwf9^x#7VaK(64Qe7;7h-(5rL-K|=lGT-@O4SA z%V`2&`eEOGRyFSp_V-8o=#SNu1t*?oRHiEAcCt`!XFg%gRCud|qQ97k4Y>`6k)&nB z+MwX9%8%`pX-?JFt!Cz_dY%hxocHOkP~jitk48O4>X>gH_%&!f^F5Ord$?!8ZnPop ze6TRsi%rFQxu9y<-TbjgPj9s;cvGXy>YY$n$Z`so26c36VCy97(R8Fpz)uD0FE@|A z0d*2vp*Qd5-+HDlkc)|q2Z)d;3~ulQ^64&A}R_X8hZ*^WJ4Z?)t?5G0}?e5j)ot=9r02p>Qm(MOyp$dq4|iU0wl3JfKZKk50-a^Osj$E@_(pbrejq zkY@;4IYBvt+jl6)z=iKg>OV+Q@4PBp`RlGD5?!D86rKiUzfG;aRjhRSHPQ*hd{_i< zu;yrj2l)`dhV1}R1teUx+Mm0)_tpsnv^7bgwTk4CL&R({0l}*S=Ph^PLW-VQmqW;~ zEcL!C@bxA52!GA^Ls}t<^O=oC8k0u!*Ja+vG-vC$gwo2lO6bQ-i{N6*i~qTuH9a9WwD)qmtSstT1FsI465hcqAJ7{ggpBA?F1aejkTqjBv!NX$rYdbye^UEovmZ@x-%j#y6<3aij(3fb6-@h?kL`S&QzE{FK@_R|N^b{j6Tzs)Zi0e5{j@a{Kl>RLkixaj-YFuR=S%hLFQ0QG7FvOc?f9|Iu)0K<_3s?o zf|35kUxuA#$Lri79QD>u zbXq+9_F^D(A+iUi-!48L~VaBw5K8l@*+T zVlW--E5F=Lg$a^3dH&Yc`8f)Zsa%r-V>&xr+7t5^KCEyanZ!_I+WR@5ELLpUkB3vVKpc@J;Hs4b3P#LQf2!)3F<<7ea zI?1*7l@P!4P&@Aa5d~yl{z+b}4CVZq*Y3=bpK1_6Dxd zJ=lf`Ch^b~?9DR2;7f$ZQ^G5Bau$|irR@go{*-%nO%F(ZLRD0%nUFsT!hLpRnBv|%0sV~_x(AosgWT4g z=8ovQZG{74W`uLMU4~Ius~cgh>BMYc6W9&hK>6P0>2Y4LwO>GQ5#jw9BgRdxh!xm* z8R3V@>$Locs@V(O2gt%Y1q)`^?!_H@b!Koo>imf=?ts@$kgbR19PX!EvuVl0W1kV8 zs83j`a<*|5ILwBl9I-FjH|ojck{7B{l3Uq&r{9)=C;J3B27cThTz^d!Mt47^tWL3i zn++3qOsjU%Hmp8%a>;7xUBSW)3=N6B(Nt%IH=Z2YF-cGm6NL4!3W5r^Q9~$$Vrq#} z%t*LmMWB<0`zn|kQ%*cV*Sc47Df`8S&g=|v?{it?ZooAGr0 zE0o?lC_0IAFf^3wy|B#96?@S%C3kRX;hDZLf|@L8=&jMr2VvJrhR|F*`MsI0&U6;e zGtGfk^ws=ImPi+{mI|Rj7;Tc^$I~UrbA>#aQT6?2(?^hw`^!hpK72b~#7=xe(C(J( z5H7{qgb2zkTdn$}3k#BxXPw*|%srVVN$!t4;(yMc^0lWXd|mBE)3}4ID^{KC-BIC` zXtwbhiUBwW%dgk9D3cd{34S%i&}r_Dy#atET$z8YRmlp>_;{qTo&e%hvR(H*i53BeEm zkY9Ft$8{lD#irjZv@qp;y2oR8f9&W#g$f9+%3g48w{2voYKz+4sLP`SVshQv;P{J_ zgthDsICI*WOz=LDo0ZT`rD_|vK51j6z*nF%+xCbTb|n>|kZE7S72jNb{#m%%dgPP8 zcyFfLH*fOxQOnrR^2a!rzhP5Jjq8-AqGG;#l#1BR)}wnp1=p~ zC$*}15>R;T@piatG?fvmy8w)2lhOdH&OgfDFcduOMBo6pC z8&Vw05|LGbX4^Ct1jp$C6zY;k3g&>WO(2xI9@>QRo?1!qrrmdjiZqXx-6gS3EgT=<*gKsx zQyv<_cdl6nFZYh8J0UHH!BQ4fj5TB^D2gA9JG5_b@E*}AuHdAAs-nyTAx5`8)DA9^01*+!>U@bJ{!$&>_ z#nDk39;0JM@ANzuIFsg!rCH?du^mb8`K!*$%=_g?>i4-*COkX4|unl zSEJwL9K^`ZIisMwe`aVTUA$i6C3H#r1f_FMNL1MUMlv{(gTt6R;rO0vj&04FoBqwP zRzix!R*nk~Jw3G?O;iF_BY894l-2Q3Da@sNr<~-;CYtuW_B{%z<07I`s(T@Pk3O zNdw~6O`Q#HQ*Uq-3%Qj7=N3efEvnOx$-%9x1J51VYjwjkZCpIozz7W zQ5$!RN}!-Dbphg^~>y#c|3? z@HdNyj5LaZ*R)YmG!+{1*3AsK?iKaId|EAOmH5S!)nwPUqxKW=h!Xj3%h3*TdG$R1 z(aK}w`}x}$;pw16&Q%Dp#_BbuBcYwh*7WR7fqiM5woW6Sy$WrJhTVIjNTcKptiR_8 z|Lug69?x#vi;tx|g$H3*Gmp%ELC^ESAkaJnCLR=Wq;3-E?5GVEZPMw}! zNJnbKqsn>#7uIw_J-^^y+bm*?m#NY1bZQh}p>`6TPpD&5Ej!D_IJ>4Smy(uLGNFaN z)q&8tcGf2Hnzjkpps0`$f9Ue}uxrJOgHXgQE%)%BDNn7q?A}ZpP87INgZ7&wm7Jxd zM7EBD!-{#Sf_d_A2UlAuH<_;VSN394&FT;VCkq_;%R zt_>&OSHXzsSQQ|kX5+k9d(ttZkn!K*7vMHTQKGvR2xQK$+mh40b@MD`JkLJdQ?LmH zla~m&KmUAA_cY155w95iqqnNN^GH_@UwwN`!7G{+Ey|Cy!tRP6TLQ*5dWt|f%G492 z^$Y^F4ueW%Ej#NhXR2L8>fXpU*xV_-7eQJsDC}Yc4GlR`7+?WY&G&Qna{Q1mtEak( zKF_s$MQ$-&8f$^^Id|>b47F6x?wNbd228hCU03%jY~^K_ibE+_NuI&^ZVfBbhf zX#H@zz`{j-vZUL^4B0-QIs#WgRvnB57tvo`)My!VnS&HSA0DplQe^f{^z{nd1z?F! zQ#*(q{Jk!=A=*4(MQ!KsU#aO3wV{y;FD;mK&LnXYgVb_XEcgbN0n?AQ^mjH>m(JUn za2}LjDlB#9ax&S(B4b?f6rbG5V5r)6u~LwlI5^W<169<^YAp`eGV7f6e#B=j;h0aN z%luecT{N4=!H#!#^+HTmPWc}H29Mw(?3KhGJYKkDOF_k>3E3^N1A?WB-`6VKTgPX= zQu}yNg=RK*h~~tw96uR)Jo(K#tLjZN9X?zBDe4K=iLM?OX@lB5IdA$r$6;)rTlZAu z&7D%BIa$sb?TRD+hRN73nubF(iXSTv4_Ih%#68Uqd0Mfl)LZq zlKfe3qx=Qu>_-#UmbWRXsTq3cH1C+4{C87y@6B9y)rha*Lhd)uSiO$=vFn|BeWeq| z6!tYa$CxjgveOKM-=uu=c?}^#Kx6cSM${eD^N&mE-AhBmnB6%MN9kS%5ud1OXg*sD)J!Bp)zdqXcc z10G&-KMsGp`f}giCfmb_7#S2kN5+0p7#c@@Ss53dVd z>2;pm8jM*pL4Yp3Twr^}MKdbH?1Zrv#FbmvRtu*Ev2rAtELIkb!@v9~{%Nw}oZTJM zHDIV9=C#$Q3>zHJN1d(Otb|(3X)2uUOn|E1Z$1xYcXRD&msC~`jOJo$Ra7>JTwA6O z%Vb&8KUS)UNZXE!h%|ynxXp9sp1<|l7t%{vJb}yXdMgb#)a38>S)FZGZj`@bP-!s8 zQs~)RrL_^;{*3@qy(dM#9ImSl=0@YWoCOY<*7`@Ji);vH*&TY9kc|+rYq7_?FwXN( zqGF9RQk!V2;JjONNF-H~@rq)E$+bLlzq@)0qR%U6{Dv3Lfzj^$(>Z5v;@4*C2ni!{ zyi7HUNqW4eV^X@epU;%$3hl~NVocWF&MBf(L=ic?%oSBpkjx=Z-%fYQe({u!I?P9z z;pFoD-E?I|7koM+VPCrr^`8c6<+7g-PJjCJ>2UlzLp(yl&%f~&>i1(L$rc)v6(+;R zjw6^sWfqKQWIS4n`}{@8h$pe=U(lUqi>w43yhGE9Qy}{h>P2iZSJ*{725MW=8c1S} z;+VPf{o${}8y0KZg$x5E3=S78)Og(D;V<)J7E@GHV&&G1v6LlC8xj>R#ROdTM~ihD zD#37FGQnyP>!RnES}KQG5@KFN-ocew6jI1j5e<2z{IMV*Mx}CM8rC0N(T*O>f#6qJ zs#K%tsg=x`Zy!Hd&$;%}tHiqF)by5lvX#KPQlUZ|8DSGTtv=m3V?454*M2(H)#bih z)5Pz&<%7I)Y9!VwS?M$p$cJ3e{$4u4{--_Q{lFke=We^g1XdK9Kj}!)L~e@iBUhxj zKcG9Zfqh7-rlsao*hqJ%|uqv zRP6Oi%7831{q{ERZb-$ysfpafl*v6rU9OUh=+%|lZmPiw^*XdJdy!3^kKJBz^0!;7 zn3&{_Mj2K?R+XEEo5B`UMC3>nbzZ5I@}ISQ6v!3IchfS6q5rszK&$$4MZ7;?>PJh3 z2#%cZ%NM8CS(vS5l zW^(Vqu{%&9XpHseH6lU)@K!LrsxUfN@fo7u7qN{%LlRiUWkhrQv}e%yIPox7zBXr<9RJYx8bpngZo11#(4y|>5?_6bEg6+=9gUGkDBWYZlMKLom zC+`K#%iOQ)dzyMzujvs4A%zE&Jc~D{+kDRzpq8FuLx+&}D(>HZGxaEYgzH*f6p)+E zDY^_YLJ7p@6HOzwN&O6j8@0#>S&p9;=Eh>n!K)KjPghyTCfXL?_GBy1o0xafv3iYC z$v#-{X3(mM>MEKm8TU*@Y9$F5)4N!Y4f|n^m+$YpUlzRP!WI$$$IV&|?VPFYp1yB# zx0r$XZ(LO><8I#W7=xmaRG|CK1%};S=qNUexAgw) zKZ__Ryu=UC|9)Ar1@!YjAD?!d^uNm}SQ0*e6*UTPGOiAaBrw?gm&ksA{$Bb0dz6&F zJ79I-0p)Q1{rTUDn$hGz;J?I1HAm=gZ)WNH9nlzzvw9@6#qv4iOx~Zy-Q8;kQtWHD zVmJ@iFKrItsdfJ=+B+xD@Y4hCKV8%&7_qNk*sFAWc{kuyz&32jv z8=g59LiKr`@-|TG(V&adN#z#W)2r%s{@aTh_bk)AIk`w9W&Mh_#AeSXXNr)~j1Y>g z14Gt4`12O}kCAJzjiv*&{zkWJj;QB^|1_AQU_wdF&SxF%^_?9CbplfjSsIPP=|deI zqk-b0{V5*e*$lsjf=#N`(=V8X!|?-3tsqJvjE?Z{n;v<_?V7N6`U#OCkM7=q(=|bu z(Q(ighDCPO=g!6oRnd*QB`)CNogB~gb^JWy{nX(|ukE_3cLv^*K`9^b*GSUQF+FzY znWcIYKKBINfmmJgq3qtx$0yio>$wWs4VRvY(dF`b_sY68l^D_Vj5+cp$uOdPZ18!K z7rri~;#cGL@tw)~V-DjpQN{UKbZq7leG$FKpgb6ZC=0*aQK>ymK=~v%YXjO0uW2Cq z`1iunr6w1P=k~?1!jIScPUZ=4a58`yLGQyo{J1@QV)b=-kcq#AK^>f8gJozR#0OTHMJh_R>|Fx_)Nyx`4sO>mzuBTa6Ez zb$#3ux^utf$#sAIC59tql%V~_EVLW%&iU3G#C!FFyrCj&@UkY{XzbuZ!aUb0dNOUR z0DaPkY`$KLh=pKs(pf(VIhY4y!DpJ*Vn2h|hm@=3r;A;Dhqc!m+82+?`$7lCD{6kM zi3g9WVJdI=u;RtpN5+J~X}>ex(3Ffs%J`R~;l}?*8BvMr4d~?bw&!lO@e7ypUNL%3aRdfv z<(D|mzP%8yuQBC_xp0i^smkORp3tk}zK4l$yrsS`q+WcIzc{r3J1~iq>3kYOf>&I~ z<}0OUS}+=VI6Nt&B+XS@b0CUtQlb1ft@(UPC1Wv|D32=|{0)A)6*JQJ5)l{uD#XM8VB%DmvWO`4igTPN1^~ zl(a%`!?x1E7tz%c#IXI;iwIbKQDuv8rhC z^nEeEYiw@KR8|j8l`2dYRV-Mi7{YO!UsMw&sPZz#XlU9X(jV$yh>2!qd7*jie6F^S zmZlu$Q+2&jGhXpb$5R#N$Tv}YdZz>JImd$iHM>XsU)(KMi>`NSIxUE|m~Ps(>(6ra%8!qp zsfC}=rv#VDc)ybJTgftvj*XfVk`>a^g{892;)=Yb3EjGEX0kL~u?oesM^bSO?Rh1=Dc*Mv z@Vv{-7cYKO-=McXF9o|Qh|4hp>In&IOyU|TtB`x-wOwN9=bG+dxb}RH*j-+b5C?%J!sI%yJ zklZh#+@`K;4y4j1ER0^r@d>ghEE6T*v99tM;zT^9`|IV ztWozLyQwp(hYe#=qj_fU=JcGb$;ok4vuWer2l6(D9#3=5xZS|DQS9iBW2no-I<=YL zN-v-MJsl^4OYS81^S%7iQns9&9GzQzuwlr(aY-|zyqYO;&p*~&b@LSr)T{F< zj@x~+^lq=L%lyvf8fD&FMZ>Lux354JbzT5LLe|sI_gd#h7@}MQ$B1qy2xH(rESc7N z=@4aVnG6dJDPZjAmSZ7rL$|t*7hZ@+uHrDysILbUPs)wG^7?WM!^cSa+OSu9S6Vg; z2cGK!On`a{~u;L!1K=C5MA-Fq);N0|__WZuPzVEJk@BG19tR(NuyJzn`v!DI! z8BCib>sfwXG0ed7V(lRP@hxC=p8Qv{&9l#Xc0G)&HnWc7yX7_ZaITE0I=ym%nLGx{ z)G`WwMauaaPIg%)rs;D0tYTx0hu)0>CVFL>e}>e?_p1P9k@jQj#cM#-$!vojj#*a)b@y>)g)c2hVy1eU!?RkM~Oo zuev3C&j4Etr#e4ow@DkMQ$qT8e&U%s+TF;X`pJ0vrR39tV)T->=6QjGEDn>?((9Et zWY_MAje0VXQ^v0zegHAW15Bgf42|VBX81e0dD5v;gZKQ<)jh` zi9jx%I3gNpX>O?40;>};%_|JSfHa4nCBwY=(o89|q~OV&(jLmmYF!b+4IQ~bs^k)6 zftN0!oiu~(d|9eF@5D#$v})^}XBmR{Ih3whssSy+KD#8oWS6Ks!S5D)-*gO3_U+rk z0+p1Usi~=xTFeIz-VP*l5v!6B66UvuVD7A^xlU-Si_vZEZhm6O3e?J1N@#3M7@h;; z0Mj)MvNVL4STv~Px6;E8=~F&G*qidvs2#GXRN&58hXkCDT?&b-f#X`n9Y#+aVtps* zuQb`NHW_p``4pogc>}4X(^@4;?0|QM2blSe8)+1(^iqdyc49W@l}CD_Ni{rXRlvo_vdYU(vXPO1AB z0mZ2z8KZqm^SpfSC9Oh&3ViW;j!r$9+d`#bK`7>Y+}GNDyNru1ksG4@{4ofn-bxR6 zD|1g9b}dYa%YD>{n?(S`uhLihmi4dE1~1z!>l%?>q^cdE;EO^ot8T`ZFJJl^tGQ8g zavtW`i;0QVSaf2jrt&I|jEvm*oyx?L99`~R1f`ZO`Fl&+q}b?n`B3NpPOkjDVd(jJ zSrhAqW7Vq>s-NuQJk&Fo3Y%=@Z;K>?jPp}En;?J??mm&n34pujfXddG%d;UY2ZBsl zK7VYz@RwDz`mpW03YUde9dioaRbM;vdH1*9i4MLi_WddtPGtV>=~{EdC@8Q|5W-vL z$mf?luam2<&L?q^RGYz_x0+S+HX-X${hfh#%b*8tgX&6_3mBLb_$_0aC0YbNXC6Wp z&`%qGJv&z>CuEP}S09)OiHK|%hIHl?>q3ru|Lnnn$;SE2Lzd@W%36frqkycXZ@uvh zEU#X@#-~^LNg>9CI{pD7>QAkiR^X!vTEjuy60Z>MXV$=qZpVzy7fNS@ii`TbwkqP4 zJ7x!@HT@K5L+-kE54s$)5awXj%x=ZTdL#O!J8MpxF_HXx*Sq*Pu)Oj{{qF=9Iw)XB zG(gHUgkYBxQb^LY3Nr(U$T{|Q?DeT!sb;ZNG3EHOG?=p11;2c_YQ4V8tnb-4I)+1f z#Nf@{@|pRoh_M9HgK(89Kx$+f9jmGi)a?1f`Fo#3pOWzx2Uu~DdX_k`(=aLN-}RvW z$b>k`dgB2T7Fqhwqqh5ag%+J*{>XV>7(|}~^K+)cXre%4asOPT|H)1rjB9mn-&1$c zYz(nd#+V`QZ2)YhDqFqDhcz2^-IJFhvAcz}GG0yNkOCdr?XF;#w`I)wt2|a?vG?Vz z`+G%}zTkFaG7A1;?L`r*TJ(FfIL7aSu60;U4zv#n>^2g)do?WNH#4I>|)u082AI>r^3 z^Q{d8H%mOXUK;9n_62z|9KZEWMXWkrns4bj=w9q< z-&DgTMshZ1y@4Cq{mDh}GMXqeSc$WpwRQS05JyW9e8)$#C(;l+)nHHM%>yj3Q0GVj zBF!AWR9!|)tD}p9tM4SGmMjVO>x!>T!Mq1uelsa=8CQNdw485)is$&GYFO`zdt`4RO`6fH8KEO%ehUkOP_7;o{#r)H&T0`>-{A22kujKR+%3Ujj z2Zel&Btv`6pN$ba)+5B`^@fyhy)hg;`+X79g=x1Zkvq0khT32?STOqibL&5-N*m6Q zHA$FeI&-r>!lA}-avus-yi)^BY=d=)BwzrqPl*zmDS;y zQId4KkFx))TE0duV<1o>%gb$R#`WAsu*>XH{@c@!%xMkho-%TB%%Y;{G5;44Ec_EiX+M%eXDyyLFw@ zE7<{p?sx|Q6`7ZV@YJTgIV6jkSVDkF(7_3%`LC<=AZ8~&p#@zY1PNEs6!IiNTq0>U z>)$?uX;wugnpeiPP@gGAEs$h29Vj((_|PzZ$%+DHE8Mw66nh)fPM&etPuofB^n_B1 z=v!Oo373!sNY621X(gk{S`hG?2BBjqzQ{q)UCIUJU;a@Sw~wCp3H0wn^P#Wm3;XTB zH3h+28R;U;5b4L@YCF>QPjPSdLl9-#S2w6ohsh?oa8CW>}I_5(&KQ1wF=uLZJcqdtGudG}6`;_oN8tN-7Ei^ztrc|0>08|uRN#JTaB477^v z`AYpL{IcdnO+s1|m;gT|;5w$W2+Q#oGu+G1^ou(B8sWQZp|y23sLW6BjjRyf1>#R8 zYw=O2UyuQTZI!H=o}G|ksfS13C5Iy_7-AW6)X1aF7`db(E|!{psatAt+YGomqZ(bZ z;&Pa1O)}9&uDih9IW-d;$2mAn%{JDpNV@692zB-w){>IZx{4&8%;`>@xS0W;=lvD3 z$!^2S8jm7Vf1EPFJqD9J z@}?Kp(}n294@?A_!;1CwrA&4&W}n2Oo`#ji4)+*lg8ryCkRV(VT|N5~x-Fu~0)h-y zlX?}og}!4v)JV?|b>EG{yEzdl;M_VMlxOy8>}OgD^CaC^kGuJkr7*G4-#s)t}H zO*5Zm5Mj8H2rMfl1}er)Z|y=VwvPM3j9bTvX?53eFQI4V`+k3PmAt5M81KZ7&vnvt z3pJ88TBZ%C8XcWvY#zlEd6pcDhZl_veN|q`GkB@r5L|Xi@Smd9O2hNB8f$?jYs;jC zkpeZESt)4=OTjbKJ}o5$La#rR@NggtLQc1{3p{+S1q_*4EU&8~3s(#KJBoz?435@K zFH_Fz&0CdmlKKKvEXD|V`Ls1->>|M||2dmnlh~qkl?x|{E1HGphp1|Wy$qPDGkxCX zk|F%9TDXIU_-&IoIiH5_yq^~Q`nox_kzzC*9Z>ypldp7Y-q^b(-pl%`{Bk`zUxRLn z+qqKEuC@4>Estcl3HZTz66=C^?MpE?Cgd69dU5NayKT~KcQ z*XyA7zy`dQsJODcyJINl9>e(`t=rMe+|UaLk;6VJmNScqNvEWwG?tn=;=C&asmb+h z!X_6q$9v=Ze*V;v*${zM&9+PzsZ6&=>^7?ulsI!Id|}Fb-a4W@EML5~6UDogIfLcp z9qYSh%oliz>HqRpRSentY?{Z{u^-pB=D-*FBEcuVDj>U9|w>4;}@sWjd}lo^l4e|bU_O+sU`2?LWh%A zMuBbgHrEA@0R;|@r_T`(O~r)b`ELR~wwV%L+TBKCW;L0V8RD854i9_#n?AUZ)+mJ| zf!|`Ci+kZ?@(Ci%h2|@jAy{%BZj<>mN{cc2`p3)@TuF-`HfeFp>u;zYea+DA!v##0 z7coD)WUjcR@ISl4Hyq=#DS@r%?l`n5=Z-fR0z&!yl_bDj|0g=dsp>S~@Er1D=G&+3 z2`6yUosuvx5*!7a4bm|OHAvSeUGz?JNWS8m+04fwoukd$B|P9bj;q}8=?@}Atu7Y? zbfya)CyD0NL(vV3lWV7cEs@bLQ=RR`GGV5!MK^08Ek86XFq?87RYVk(nQ>ludAeNy z+87#@r)q_`Lhlr3eRq3<3T*mLKJQ!u;fLx^cxuZgW_~0#%{h1f}rxb{|G8@y@ZswTG|@ z@$ex~Si_m}T1#N?T6;wEZmeQJfY1NTY}%Uf^5j)ya%$c!%NY~I%u0`^OB z9K4&-_vWVh8?TH4;5hp|#?ew~<%yI@PN88LDPqfyQH!|O2_q^oMrbV9Bx%3hR2O4b|*$x5}OGwspedn^^=#RBa4aP~5|R8u`+MvCBkw6f*mledqKFMP1Jsnr)$I7xX=h^mGT5O_pli zeaplzUE{5f%W^64*SDGmF$u_;vD$Q4Th>zNRLx?yY28X)IXR z^rglYoOZAy-kj;bksR9cNQ6M*?|rzgQqNXoFB_`N2lu;xMq^i)W`s*aI;5ltU%V*( zm4@LUt5guTyeE4Ap`rYoF1U4s3_>mn|A5&8c$^A91>->%}2z& zwG*z83CjD3i{kig*j2iHW*l&`(p3%88?jETGHiWTm^VuqAgQ|WPJ0$_dYtCvor|#R zgW#&Dk`&Uu4B1}6+>bn=pT(1DNxKv5D})qYweLHKuMz`J+=@dIe8T-UY+o;%z8 zxGtK$FH#JT8ay5TT8kzjz^4M)=iu;MCjuPKA&E7Z+w|eTbOw&kK&_Jw@Xqb!ZDkMDXqLoYJP=%K_&$vK=lRL~mSb6g!Oa&r zg=_JAj;>^4vkL<7w(!_@a=rU&I=OM>>DKzE+d@W-Jp~i`*$WA0fe;S0@a-Y`gw-{Q z5-oA|%4D`XAv90v3Svw5XEZCvqoyu?#4L3(^FMgXoPd8qvY5Dy2ADLUar>LNDTg4v zV4Hlo%8Pi{OE}Od zzAQZiNSOmf6xl@SQf>%#t95xW7II#oyBxDlYS9EizCF%@7CnM@h}{!-=ra}-&th-U zBkVA>tA}&_?ZeDCyUBGA!JHuoPh}E_S;M z6ie$w1I(i3N@I~G{=x^sjCuaE&I?~P5~y(ia-?Ia`&2^K)n(=fVsdJ{K4wyC{1CG? zXA<)>~D=-1FCo?nQ$CB^eO+H*#FOsciH<2s*MN;?S$x7xRQ4oNpA~ zE?n=>jjbht@}$81#;9$1INw`cZuT;sJED3>;f6);a@RKh8&)cVe+}5gJJfIAz>B`u zdgz7hw~{;I5!5D{(4=vI4rrPM=L%I!auwJ5HfE|uDv;hUD3G-KC!AYkZW10o^SDP~ zYx9tC;P<9}pkGAt>UJ7ZtjoOCbe9FVTH7P@Y9CzH+QRDVshE9|P?qhXoUU9At@yo( z{}cUSGH#!Ab_g*@{su;qKJuZWJ^fNSXRq_OUvDq$;14|;Zcc{9Da8G?YF;d)));sW z?L6ONPgJ)UB{bLRHkW<$Igp+Sttg6C8YuC3>6w&-P?> z>^3Jo{Q8pWUs<_*>=2b;#j2X7W`IY^v|b!R8;s%qF_}q zx$I8N(De1QPA_npBE5DHhkz`rU}=kMoqiFyLUNy|4-BmZAAOQCTZ66i_1PL zrG&2yNK-LkAvL^V^3t%f|D_icf0ba!;bcm~Zy+sCJ!a};*K?8$a1h^9{P2>0fA>*T zUY0n_<4UX%+EQM^UgqKLodAidVx^B~o!CW|u~(+j8A|gxturj-A?Svn`?R9 zk-os+?rdKf;-IFMLS2QLO1er`O&iBmkfbZOW3*lEuWAvRbn7?rJii!$qzB$dbI8EY?YPX>Ln>`*z>=+Y8_n z6D(6@J6-z`8T6wgtOhVR^__?N-|5x(V#(8`z3@gR_5=PjD~xKw(-dzLp&z92!F_=e zwhfc7ndJDjfyqNyWBGnUXR~MlrzCV()Gx%$-!hgNdzS@_l;3F)OEEG1J3@lCB0*h# z*WjGZ=5d!(1r!%rv8wMuMqQ6dL(^rL`sj72V?Na#xMIPzI5EHCqJZ&u?b{{ipE&kX#Sherw%?EcAPg_Z?G5*8)TQ!fGyhqpI9og!-b%Cc)0dZ(H$XDdjzu-FDeX*D zL@JAtPUf%pB+ckMIk6kj=?qcm73x~2tw(=)aC^z~pGeTiQFRP|d;Y(tNz*s)Nk&FT z=l_L5+up0>65S0_Pcx1*>MD)K-KX^W<5189pVFWVy4>eUlgmzGoQHvkFD@*FN5t!R z6`Ica=jr-7Zf=BrexXHrrO4HFy$Or8=h6 z{0s|VaVQ=>!Rwop0h&-5_@Wl#MI-xJe!a3XdLf~duPOG0KF$n?osF^z&YnA_gmkAu z?;Qiaw{KuP!|#ff2$lC+p|^d%g3*s&@cuNtkJ-497BrM@4Y=`6WhLtE?=SgoC8krF z8n2dK;rJusL08wb4T)BZzg{%i29v96{6v}RWIqSP`g&~g+d@4yhQZ7|&#qbD^9t2? zdb;g$D0j6(0`%U!0h3^qbOlf)BMrMs3qt0O;uk7ccUVt@j)iQ(^eF%6x@TRDE$hj!YK6jmIqGrukO1{ z>`rfhDpXbZPG=k+H?9%sD<%d)CHALczYR;MkB#QPK0f5!S^>qMUhXiZ3XPcu1%=rT zJo*BK8uF)|c04&s_PNyf~HM3+e{Wo3T_@v(XgO_n|4SPEV zNl+I6!tT!x<4#^(unoh&b;`UVT%cu05o!{6^iRrvGKT4Dm>$APw6zcbs0K8dJ|W6` zyDS6D5VaqJly@^R_Z57`mVWk(a(jAAJ8ryi2-;jwZj9%?@Y*+%kiG+{Q zDr$o<3N5=zIQBeIglGXct#VvPN68DZ8TEbQYlU8o3F)g7C{-&$FWvw2a3Yb-o|#e7 zf}6B&fR~AFP?3_-mX0A!xAU;Ue&62Vykp`cvVDfO5qN1lz$`%)#<)fp}<5DlhiD+#?1L+Oc_Ke@inSJiLd zhF*vXOZtU8WznZEHWk71duQ-u7m`dOeX<_PNZ(yhW(q3ub>#qDyGQu!t4tPZjyTLt zXzxsd8EHE6LZ9?2#68E~^XqG@82)XAR@9QQgC>owQldm}JFln|O4FF~lyENmZ2?F8 z2`%Qn$jht+P_r`Ln%c0nc5{F!A0?LoVc$C@tGjyu#4*oh>5NiMX+pwK?TG*#=t>d~ z8Kf4L~fyuob@v8&NoT*+7sc-R_Gc0}eicY;5U)Uq*DEB$qBX9i0= z1i^S|H3Qb8C(PM9VRk-tem&(Apm=$f`6_hc-|K?LFXYay;A^coQ{%dVt$E)S4`hBG ziLe(VkAS56q^aQ;4XkXB6?J86s(^0-Ev$4WhtIK6PQ_{JOEE5msE53Y*WPx%{g|5K zam!n=xOkkF+e`Zvgx(?DPT=X=f{7BviAX{lLUN~(bfF{v{RR@%tjvT72R{4hN^T`( zp3~*1??#ohnm3nz8wGW<`5aJ{@jS)%#B5+`Okb1@xK+ruw%X1I1?XKl!aVd)hLe&K zR;*v=fZX>|P4Q4#S}JS2uoYlu{#|4ki6)C%r{^GXMCfeRpa2|5foyJi`Gt9F@5qNi zpMgc13Ho`wiEMac%w&%X0Vn`B)27V1=(X@C zRH@aP^XM{PMaEEmS45AUY3Wk;&e~y=u!|=c*Bf+&f@fSzTlfMQ!@e-!-A!-T-Nn z+~-4)gDF18INgRy-S&1vXmH~SF5X~9n%nD4c6NI2-OZv&GZBDUu;og(j*v*&c*Rne z{;CKxy5Qup%V`M9>*Gg3`=e!UluLqLBAEQI_5|6C2&nb-@rj9l*Mv$3FV77z!i-cY zT}tWWoWOOP!_zdUg8??W+YM$H1IrGKej9a;&OjjfeGC(W7`HQX;(H4E}! z>F{-0+4PWgDKE8k_0}y!(5HZLMn(;ZyaVbJV_ZOq!+| zr4VM*yWTF3v#)6xyOlOG`Kt!`)`^L}Z`7EpL_bK?|7My82U^>{Flyjdl(_y<(%`Aw zk6NXLy-j%S)S7SM3xIHa&2=CZaF~gSA(TMt(W}Q#9X6jv5^CXH$$bPPVm6<_oUR5&q zwLx;ivSqxGC)V51ylcW=yVDogF9_ag^|>FI;k|!PG$aAfa+$wQmXHX!k0~l6zoR6B zYO5x>M2qeQ(z7G2>UN1OO`mQkBZ|)-#0Na=H_O1CZ0(PpxBO1VUfVLCC2OJvdzNq}QD<#)18`(arKb+0@npDVx0j<>Ng45q?k!$9?E#aOt2c2o1 za=~zBMmP)$pZ?=7Fo?r(^3r|YyQ#wHmFQfb6(|&q(r2G_ImHfFL*tEQjTBg|b1f5*t75%!Ee#~1*JJLf{e2aNuCCV~ z$3Yz~!2&176W58+(^v0|1-pfrD}ErqeP2;a1b$E5Y~MRXx++4@=Py>e%CjeN9_XAs zO`Htv(e;v%?1+S!$s#Vjatvp|=l1PX)np^MS<5&jhV{=uBc>uh>}9FgQAGA<7fq}N zPc`ky*tnl(`q9^0u8<#Adf4bp2Wo0^`nt?lE=`o;h@Zc#b~^7SyQx3wrlC^spxP;3 z`_%}V7Y|%~-{xW8gj@)&wCD_O+V^mqG>yqU9?6eNFs$le`Ha+fLHh_dEMJ+X|JYm9 z6-uGya+L+73}PIl>y)@5cwE0V1M558vPh`*YY9I-fZ;MyQ&W2+Y6mYr?UW$DTJTN2 zTZQ%tFa9_zmzPOfG7&#k`hcAca}yqH$|AKYcoT-Z-nVg3&>!J9km5y`CQWnr#9p2DJeEyjp&r*OXd^6|lrVFL6sHXc61`pN;G9^^?y;ixRiUWPonp|&MFy4W7j!>~V1ClHfjffQK*7R+HUStt-o{Z^9}~nVBdK%?s{t@Ee&2vJ--)b)v1Sh3@ml z{-i>uA3Roy;}<+GaYP-)FIhNp*GjEGM(|JL`nqd^UPr;Xi49ZaKQ^CqXJ|C&q`+5J zIhHPW`Vv_N`e|*Bu2yZpRlbwB6v_XHV59J-|Mv%>U8Bn%M$R$As7@NCC-JDM!FPU5 zwM>$)JTUrZYtp7e!tvKw^K!H9cjT&pKCV&GI$vOkH!VA03}?Q7MqseD`+M}ZeTCXOYu4OS<5s4 z=xW9grLAq+n1GjwbB?bG*KLkZ2ErpCj$r8>x3?4pA=j50%#5@JWLmRNYBzn;0x6tyklK> zB+%|IkIDUk>|tzL;&9$U=K5B9yu(-eD1?E)jJi~ChuHLX~4NV69g1rx-2ds zXFD^(($I;8ex_~!cir<*uFd)}Y5b7sM(&#Kt?x#AVEWuM<_X86B27R- z;z~e~>uASpWUKRKLdk^7xSFh9EVQ|V!s{(n?tQI)w62eq{zt_--NrI1l<^&&_&93@ zORZv8JI?a&Y9iFHc=hPmtjJUw>2-wERWlmVWC_6`*Id?fUqQa!Gii+nonT>195T`>?!;{Z$Bqu=nZ+j2*i(QvHqK z_rdrrfn}F{=$_PzbMo&@uEOO=$L{l*&g7OYs0pQx>}ZS#G)i`b%yS8{^$z>Z)vAJzv($h$Zmeh!FvZ^CI{57~P7d@J}`B>Nh))CAH8ULiMwF zEpt68^z&yz z6kBtw4p)VHG+OOKZjQ5q1$AM+PTFrwPC5vJ8cNt=yTvC4vpSw+vA?|f&|lm@X^wI0 zikF3pmo4Zk0A#;Ow%aFFL1w{ir{yP~25bg>WAMhHVn3l7KVT^snjg05lq%Xi)w;OG z@OHgS9k08z7@YsHfy7w~+sUN$yE*at)fzBVMMfu*k#BG1B#rSNM4{payk=TB#SYB! z|CrNsAaNS-^o+k92io#T3a9=KcL&Q2>IM4g6vzm2QA+aC6xnQhmTSh~Bv85>UTIZlhCFKUcT-=`xeqB!# z4y8g-Tnn8jVxL*ey@Op07&pdz9T#gpZJ=o(JwAAuRz=8|gCBO-b zICC=Y)s0A{D^UC~PEOy@&ftrldx!0I{ZlO*;Q>8n_auGP(DmU6dh=Fq2CBf?&wC9&d`k2KNCZSo1{zP270 zt7VDsr{)srbp;%@S3|6#W*pO)Snp0gX&-6 ztwZIDFIVKxY&ynxehx9Az1)!$_x^Bw0k5)R^l9+(-oB?-3XhrH`(|T_jf`n|K-H9a zjao!&i0%Gb8PmZo{E6qr;i?tO=53b5`LOp$xXW!%d>~9(rK#_MM{x^tr)8(@Njnjd zeE9o2ONX5B%wEvpF^BZKS_sAA7w$djpaU-|SD(P}BW>s#_^+K$qAnkEUYr=0OgZrf zb{KJUb# z)m1xCis5k-8V*KZ07-;i$5HY0(-AL?K{+yqTSdM1v>n+VFcy=NpF2xa5^Rh#&9Kz! zG#xpYzLtOH7#jT1q9`9^tq-0Iw}7=XQhPjSy#qYahMuSN;>+XfF`(I5aQQUVtbP*t z+__=gc~7p_tuJxD+GS!fd1E<9Z1!;47gBGbfY(^gme#sgnmPdn4o~nF5_c!u2y?BT>61znQ{e)sYzK|Ix>{xyH#RWC zUSICtG$T*nI_a^1T2D#g?54wQt$TiU-PGJj;=_@sI?E~}p)WhEieQVS;qiGK- zHA`n>i{9CHf=p^wTaqk`PutHLD5bglV6k>%sQd`mi*xP59ZeHUt@!>a0wX zW0}R~Atb_#H^Go}LFu{gy^{dE!=0oj3gu}ED{rI&%D$4fMUzSS%PG3uYjgZiRdHE-7W)1A?1llwAwP@O4XYHkU$-kb?q@Fg9q}Bh`Yagh;``W#-`FJF2 z;BE158v~Vb%k1-5NQ{ZPg+u*yKe_ii^Z_aU< zA>WP1Oa|;+qzt@WH#M06vo-N}k{p2q3^OV-7A1j02cw^bqJTXsN8FAJN@b0L4NeV1 z&Mz#g67#AwLmv6;4q?36>WltNGF9qiq;R-|6cTVIQH}q|h&EFbK?BhDnXWz&rcD&< zty>@VGUEMb9?p8vIl|JA( z`-Z%@8Q$9+8W@Q|#SA&Mpc!%Mn%$Cv*GuzRUFh-;yl>Ro``DJoal+Gg$(w_Bz<3w$ za?o32J4s&LVNngubx++ndJQOOXeOMbSpx;r>rv;42zoLW&&G?ugT9!xE{?Xc zB{a_qKdo(Gt?;TsHtmEe(g=-)nkckPUWa>u7UKc z{>P;pokS-F8Rbql?i$Fm^DkFyAC&S9i9Vc-WBpC3U`WPR!Ws)F6eaht1$KTq~ zc|S)pHoe7A%JgErX{j_gd{^A+xVU4*0{x71%e)TUTXT^l={}+wDB7>hdWZ0gOC9I% z^=$uPef={^!DUQCBn7pnnGtuminxv*x}+pX{N*NAC&+}yaBdq;HysWmwtCMR-5`$qhW3n(D$G$#1@DX^!;EBFnP{=P9^Nl1p(C+5U z=?sjzv-)<#4w$c4<0k-?asqq~JIaS@JY5V9k)?Yb@kN*}ca}E6xLYCOzP#f2&}c1U ziBOpQOT6~k;A3Tvt7CcP@Y+S+%^uM_T)8M)n=#bSNk%m7y!KMi)50g&Kq zTk#eG-_@%=fAApvtEy^dP5v%C$Ho!lGIxGm^RpBRh2n}oi;XYQ->?mAc%wTl5^|D( z>E0mrLoU3M4?tz++WT-559-2dTmT%_BOo9;nHj$zXi}mSpGr&UUrkX)dxU*RQ@;3S z`kK8i{3W_z#qxWLICtp=^@>FpugY%u*1j~66MO@Lr_^xW~ zavD$bU;EA0letT9KdW-XOFS1WxsR!F{ey?DXC}0T%Xh!y1XjoJ6|cM}ps&BrQO}i( zfA%p3WAg$&grn^_Md;q;GlH9y_BiKE{o`BZ;ZsAjb2Ev1lRNRsAJls+{2`NI*#3&3 z<>n$+!PQ;<^~KedwuW2bcN>2%PL#WQkYU`zelXjG%+?B4F)Ju-$^(@ zY}S+2b3p#%W_Yk|?d&P#^Plm)=I#T2pgEr{cvqKfvl!sn;0rmP_4mDKyq`<^JL}Ac zHX)5C-SScO`&q7*Bp5zv2_o{Q3V|vSK61}uwG}7v{&kgvBn5ssuC5|u_0#9wYo~#{ zAV>4`AM;7IuRZ`uu5N)UMqk^M%T2=XeCvMM%3$Rd0NXyE?5wC>B{GD8tcNblzi(gc zpZnb|ep1``eoQrc;q~riS@XP;0e`&R9fCyJ7}`~7Ke>2!q>*}?g~xGseh;8b6~yn$ z<1NFnuzilRlPPf!@iIhlqPlop-FEt1rcCIZe-^$4)Inw9#~`2H)pI?W5S3*}^I1(b z_-^?Sbpy1WPO7OudmBSA|DHyn;>~lI(R2{&z`H&J%2|rr7|>&s(c!W zyB~nqOuJFkoc$LGp!DYnk!#;+u>Tx`jwhQpQH8BhV z#Y^}i%kseB6%&z^Z~CW`ioe6~!#lIP)bnIFInxo{&{x#dx~W1}#$gM_$4~XPb}XPl zYr>`yDCbLU*M`CnGVa&aI`g(5v=e2-yE=!XvpWY#$+16wGu-GWy=o)rz^*VoCC?J` z#Jj5(OWCMhfAiQ;3gl>JHGw}bbS-yD-AY0jHjLm84C(mfypR&KVq3L4A^zh6bW%ANJSEmCo2g5{rKfh9^45)l2(=_5* z@#d7QC)34wkOmUzw_3kb-m@u$Ndh>Hd`x!66%ejVZaR2ju4sjHuiX?`wekpmiz%Me zFcdeW4r`e<%XNM?2TL7ZVUvL4yHeb`NN@c3kn8_)u}m#EXC1M|#BMG}i7aBO>dngg zdNWTuk(XqQLhWKbO=TiDs%|}7hOSUZVfaEcyE%l5uP>~umlqaVH~jQ>cPRPv8$0-^NxjoW5s>~5D3SaZlpsi)iiqw9=6}mt zsa7#}_!fWYli?RI+h5J-B7Ns`KSs!0YCf!FzBw}cyv<5&ShXMQEYtG>48BBc>_cZ*_&Ph230-fJkOM=dKBf5?P4}^s?CO zNqJqKehc{*DM6cR25_`{uk?pamKuk{9AJo$h@Ye$3uVq&8WHL58zpX^W|_M4xq#yz zNZgGvJKJMs?7E-xtR97@7RAa$N!^V^;=g82Pj3s+&*mIb8vg-EIJU zYVk;pvusB8vTF>WcYwxq!liH}Iea!yIuxc?jw$P|`FgFl{AqS!^4-c>Ij`i%@`p47 z@s-yq2QJUaKJK&;{00_maVIWE(p>%KrYs0MvGy+CwhA&N1yC0kvIr zTOlI~WosXm&$3=C7~EA;7GWDDq@YrN7e0aQw`@WF%$vysP%(Nz^MN`=bX%H!Fil~* zQK$BRxmVt#<=u>|k97wEiBD-z*S&SDb3#Ty7@#3|Qi+QG1YeiS5||T;0dVXSyfY z%F;3-GSc!__Ui|jn2@&ra9J4#1$g!s&xJ@r7F2Egwv3tSr#j){iZ(We0_jTW8%b~`yYPw=}Z|%0Lrw9M}^Nu9* zprU*D|DnP~uTV%1BUN_Aw3E#pGX~QOK8GKfVgWjD{^w2k@?13{+yo`vt-o}*)S*hF zG*9-YzDqx(|L-eW(kPA8c%IFPooj*@x$+wu`rGo>f1`k^a*4>>!Y9MdVg=F+V7a zY^wsm4gImufn&Pk=7!)kQ&L>sUvfSYvGTBvyW1f!Q{DS15l&|zksq4W1vRMQ#tU#IERcEI3{rtmIT=wQb@ zB`0=C>uVYQ?H{uD{YM!OWz69#7FWlzyG~wwce|5lB4(A+9C@B!pl5kwbM@{NqyjF) z1@`wAy&83XXHEVzV6Nxt4WC}BsUHVO^!h3CGnqneI#mkdMlOLo^b?D^zz z8JQ1brPZqvMTWQ>K+#ANmI{a2$pI7T0la3($me8`qG2^ohT`b&V^LuDC(m_4^)QQe z%kRr%Gs$YDIp;Qe;>UBXtnZw0yY}$iT~z4$Gunc=#1?zX&waY|&YE^V^6tvqDF=)Q zRz!GbK|ALLWeLD7gUZTEQqS4##J#WP+EJp_naWXoJ;S{oboC^S=gId6T_fM%Yp3>l zm`_}^#QidD(8WFtnW)d8la+>P+VZPQcHo-N8bPH~y7|SBL=CTPxzwpzpNi{2yCCy(bA~u%n6E7_ifw35s<7#=GtD zI0>QfvJLHE0e-%`W8*ZPru+;yCl$F|sVw|-?fxRY=b(u#5E`SRj>hFI^6WyOOL`xA z7Z7xAA>um^OGq-iG?Z`sPYHg)chj#hLJgZiIB7@=ygj9C^mkQL%@8tygO@lWqDSVzd z7D;Bq5~-8l-p*Ru4qT?2)5wns5wt0H7qI%z38pHCu#$VjQOCZA@~p>B+X}9fmxI2a z$lI!tdt($oU(Tbts7zIri2sJGhWNm057jI=r2;;cY6V!kHQb zQ32a0xK7W)uI_R*3<#pfF8DOL z)3tK+^@`ztG?)P{bR5Zmm$uP7a55~>!!z8{U%5PCGE-;R8(tDEnd<8zos7fzWUAUn zBsL=;p1`4}B6PIUmpEs1@;lR=4CM_nt|f?1#Hwiw>_;LVmXIALwn+pHm#AB%!jdDA zsoqzKf7y>Z6pCrcKt2*e*D~Z7+-cb^QA^fh)Tn4!cOR5bsmOLcRqaC76>M0aQZw73 z=s+6NRg<9W$X2~KpI{J980GrF*}taCRU1o0`Jm>CH^&P6HZW!?ldqPh#VG9m+QZ}< zocUL~*jTG?L}xs@xwGy5=h=n-e)e)~lDy$O`=a(vy_K4oI~crOf^Vs`JWMy;z@}CZ zSH!$&dwRizFOzmEwleeXzG!=|@#qKTWv?qu%CFSDEq@Wv-^!i8p!&N7gIjOb>CNZk zLh|Nadf<}TaOiE><((FfrF^&p%lp@ZiHH)9nnCtt1*=o>9I2*gxk$ zXARqJ1qBU({c5%n);nBx&f`*DweMxF1=9!p6RPLA1;rTjcUu1Z!D_XEVOqzuEj+&( zwnlH#h?wnHa*5%UM8XeNp%>B9+YTSUVEpI>pV7TdB4NhrjEyX8ThlJA6&KE5Yw=a# z^|RV@^A9@j_;;#})p3b)2}^xdE!CN>8F=6v?7Wh&7?pCbrQwCR%B2HWLT<}cQMjlOhe+q|Xr=>adk z2F>_rY`i*_gzWkYYz`O8X zo>}hA;A_o~Tq0g?U)p=$N=)abQ{QQp_1#UiD|1e195AsJ5w9+6X%$W|KCrj{>gvmU zt?@cna<4T#xN<+D`~dfiC;2g+UVY!Egv3r((=R@2I{!gY<&N+7-p??3sb2M^WA(RB z>Yuun-?$MWtBoiGOjCjdWlk>e`|Zec?sr$^d%NT5de(}ZvXV9%m=%w8u01Jqty3|4 z=gjYaL*iz=J(B%d-DDZ7ExXCedt7fmev!O3J%8W4lc&AsJm^^DdVk>;&kfV_8aIe} zw&>3}KF_T=BTUTUomZ~>U9#+5`qNW$-`tyf{?5+p|CTbi9=&cI`sdk^K3QvEd+*Xh zgr9?)+cIY@>vBBzL-uCHnm6yc^*j>p?U{Jv?N#o!HNZLfXJ=MH}<) z+Zh=d-Pm2O|NHxUb!+R{hYmS00MAhB=<7>+a$+KvA3V_khh(?{PDDO@)Gd5-qw@9~ z3zZ}9Tc+`Ib1UoU^n81Jd$j>l+qMzdhzpxx{oM+w6?{VS$RZ^Hcnec-;;m&!X}Y81 yiWPDL(Phas;4D4d{lJE`A7lXs)PR+x|K%@BK1q)7y`~IWEa&O!=d#Wzp$P!dn888- literal 0 HcmV?d00001 diff --git a/_images/sim_cartpole.png b/_images/sim_cartpole.png new file mode 100644 index 0000000000000000000000000000000000000000..7eb8c888c0a97bc18f8a9b29e2513049d794c8d0 GIT binary patch literal 4322 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

    d}++H7)e|UN00RX2XNZhbjDYK zjt}<`{&XksE^&gbX!BT4l@-@?wVccDmC9^QZJ9DYDBJ}nI826|yvUfO-P>o3+C z$tq+c$6*vMQ;^r^<>Lq^zmM2J_W)&z2J*Eb5b0i(B%w~iEDLf42WOeq)?AMyS$k}O z@pv07-%^m*=iw6b@a%CC-gmnHt~C(yEeXO%%4kRvl_A0xqX6V04%SG#+rf07!6da? z4Dq+oaxx?kxtl;m3O1S!AWUi+$kXq8mV|6mI>;*=kx)blk&*x@?o@@x4vNd}YL06> z>s7bWjV4WMrV%T?&osafv01CJn(B&hNi>vF|JsmuNs5R_3=PEm1BlWTy=$x>XfPu! zjHapxrY-@}=}+|-5t6)TB`J{wNEAhoL@H99v8q~#(b2%o`ZY{S8Zru!T>Rmh@KE*sxLbE+>GR~#Al>)QTi(v&sDB@Lv zSh~R_SCaui_FE z>POPM7-+pE&e7F*+c+)FEI7+k7KWW**rcLJfIAIib4C(nLA>ibxpU49h(k)aY9V~h zWxuq}3V{W!rI0Kt%GXJ)=s>QZT79JhpmK=O+pq zRMaq8R9$|5HfiRf%NL1Qb*zn+hFSiN91Y|TBy`+B6NSI?Y=^t=t#5O2>hcU^0|IEg zsKq>9WTbqY?i9z`h+LIsF-0U!LPd&DB$vdz2*OlY>LUE%#l-y{I<@Z`W;)KKr#b0( zYkv&$Gj+na{rdVn{qV~N`v)GHhh>C;!fV2+U$=y$h(#QBVKK~DWEPMqz;p0OHR$1K zAj-j1x)mm^&C(L2oNyrx*h#gY)6col((oiwLEI~Q)8WcJOX(oCOf{1+O~ARFfCAmJ z^aF+p%Z{Bq#yciWr?`~K)>0FZ4z|UXe0>hW?@6dBay1D7um|sjR!)tvHzsTO7Ymh{ zqmsKUj&j>Nb{{Bqx25rv-QR}amt`S$m>2WKs?)N=P@f^X?sW$Sh(NNWD5i1JLKu#d=14%|!%35(Nkggn0(<|*8(%)VC-vKvuh|joJlpoGh0rxA56+`C||SkSo9wG@<(aZulpItMi|nEKbVI)aDjvG_zWqjZ+9cBL^yQ5v0Zg7Ho)@B9spw~m4! z$BL-T5d~f~b8re@&O*|D;{8UENyg){I6zM^Cs7IqW#QkuP1fAEl6C(kj2CfOet4q! zUdhqyex1Gf83v-%4Pmy!+FnnyxO?WX{ef1(B$|?>ucJ#*y->HY$@jlw(Mi|!rX)Ex z%6UJ4RD?Ikv5}=_*K9L{HyACy1;!3Fe|toE6^=M^z)iIW4N+&J)4 zhsFX3Jy}D|rre}?B8M{ji?}lD1znKaTNawAQ;8LP=bY~#)D6!lZnjakRa#O+9SS4 zFp$b|L6o6lZz2c`h7g>pArXrox-bzA@&`cwoN`1FimWs_3E9_K?KOaVHrre z>{u!?I%Ka7hqz{^7}tpM{~Qv8yifYTZ7{6HPMAn}{$~p^U$e*mBAIdskSGMnwtg74 zlFt(@Yp)A34WvY$KzvkD)+7^-4#WwNpKKxri_zk^zNI+D$ZltAb{;~#Y$qy56QqJf zsfZmw=EEVM46i3Cu?Nve!iOAfEz(F@V}16{ZGm&d`s4zq3qq(Nx(?(j$*yBjwP@eD zY!o16aY!@Wy@5oxCY;ugeqU28J;%{P5E)q{a9UGp64SPKqK5TQxpXfKYP@DL&ROC~aLS!J%(6HezU z8xHBR1xIjty*!JLB1Vns zKI$#Q+QiY7);CoM#I;$zWzAMN`fa&B_>jA+iQM=XUJLq9N5f5o6=jknp$+VHjg>&K zZaXxsOV_f2kUo7=SBTC3vW^2oaey07kv%{95Ou+zole+IFL$HMk^WHZ wz5ap{TzutA?B~fqHsqVq%nwkbQP`m4%9b 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 literal 0 HcmV?d00001 diff --git a/_images/sim_jacobian_ik.png b/_images/sim_jacobian_ik.png new file mode 100644 index 0000000000000000000000000000000000000000..2a0dd1a376d7d6f7e47252a25b1a9039771a4496 GIT binary patch literal 4630 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 Hu0mjfyX>y) literal 0 HcmV?d00001 diff --git a/_images/sim_rigid_chain.png b/_images/sim_rigid_chain.png new file mode 100644 index 0000000000000000000000000000000000000000..07a88ddcc1270fcad088b039d7144acd93ddf845 GIT binary patch literal 856 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 literal 0 HcmV?d00001 diff --git a/_images/sim_rigid_soft_contact.png b/_images/sim_rigid_soft_contact.png new file mode 100644 index 0000000000000000000000000000000000000000..5cfa5c1444f585724606ad1703818131012d1718 GIT binary patch literal 7063 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 BL=yl2 literal 0 HcmV?d00001 diff --git a/_images/sim_soft_body.png b/_images/sim_soft_body.png new file mode 100644 index 0000000000000000000000000000000000000000..20f8f4ea99260430fcf8a468c866ccf183b6bb8d GIT binary patch literal 2721 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 + + + + + + + + + + + +cluster0 + + +Adder + + + + +cluster1 + + +Custom Scope + + + + + +kernel0 + + + + +add + + +a + + +c + + +b + + + + + +arr8663334912 + + +a + + + + + +kernel0:out_0->arr8663334912 + + + + + + + + +arr8663335424 + + +b + + + + + +arr8663335424->kernel0:in_0 + + + + + + + + +kernel1 + + + + +add + + +a + + +c + + +b + + + + + +arr8663335424->kernel1:in_1 + + + + + + + + +arr8663336960 + + +e + + + + + +arr8663336960->kernel0:in_1 + + + + + + + + +arr8663334912->kernel1:in_0 + + + + + + + + +kernel2 + + + + +add + + +a + + +c + + +b + + + + + +arr8663334912->kernel2:in_1 + + + + + + + + +arr8663336448 + + +c + + + + + +kernel1:out_0->arr8663336448 + + + + + + + + +arr8663336448->kernel2:in_0 + + + + + + + + +arr8663337984 + + +result + + + + + +kernel2:out_0->arr8663337984 + + + + + + + + diff --git a/_sources/basics.rst.txt b/_sources/basics.rst.txt new file mode 100644 index 00000000..2b042edf --- /dev/null +++ b/_sources/basics.rst.txt @@ -0,0 +1,313 @@ +Basics +====== + +.. currentmodule:: warp + +Initialization +-------------- + +When calling a Warp function like :func:`wp.launch() ` for the first time, +Warp will initialize itself and will print some startup information +about the compute devices available, driver versions, and the location for any +generated kernel code, e.g.: + +.. code:: bat + + Warp 1.2.0 initialized: + CUDA Toolkit 12.5, Driver 12.5 + Devices: + "cpu" : "x86_64" + "cuda:0" : "NVIDIA GeForce RTX 3090" (24 GiB, sm_86, mempool enabled) + "cuda:1" : "NVIDIA GeForce RTX 3090" (24 GiB, sm_86, mempool enabled) + CUDA peer access: + Supported fully (all-directional) + Kernel cache: + /home/nvidia/.cache/warp/1.2.0 + + +It's also possible to explicitly initialize Warp with the ``wp.init()`` method:: + + import warp as wp + + wp.init() + + +Kernels +------- + +In Warp, compute kernels are defined as Python functions and annotated with the ``@wp.kernel`` decorator:: + + @wp.kernel + def simple_kernel(a: wp.array(dtype=wp.vec3), + b: wp.array(dtype=wp.vec3), + c: wp.array(dtype=float)): + + # get thread index + tid = wp.tid() + + # load two vec3s + x = a[tid] + y = b[tid] + + # compute the dot product between vectors + r = wp.dot(x, y) + + # write result back to memory + c[tid] = r + +Because Warp kernels are compiled to native C++/CUDA code, all the function input arguments must be statically typed. This allows +Warp to generate fast code that executes at essentially native speeds. Because kernels may be run on either the CPU +or GPU, they cannot access arbitrary global state from the Python environment. Instead they must read and write data +through their input parameters such as arrays. + +Warp kernels functions have a one-to-one correspondence with CUDA kernels. +To launch a kernel with 1024 threads, we use :func:`wp.launch() `:: + + wp.launch(kernel=simple_kernel, # kernel to launch + dim=1024, # number of threads + inputs=[a, b, c], # parameters + device="cuda") # execution device + +Inside the kernel, we retrieve the *thread index* of the each thread using the :func:`wp.tid() ` built-in function:: + + # get thread index + i = wp.tid() + +Kernels can be launched with 1D, 2D, 3D, or 4D grids of threads. +To launch a 2D grid of threads to process a 1024x1024 image, we could write:: + + wp.launch(kernel=compute_image, dim=(1024, 1024), inputs=[img], device="cuda") + +We retrieve a 2D thread index inside the kernel by using multiple assignment when calling ``wp.tid()``: + +.. code-block:: python + + @wp.kernel + def compute_image(pixel_data: wp.array2d(dtype=wp.vec3)): + # get thread index + i, j = wp.tid() + +Arrays +------ + +Memory allocations are exposed via the ``wp.array`` type. Arrays wrap an underlying memory allocation that may live in +either host (CPU), or device (GPU) memory. Arrays are strongly typed and store a linear sequence of built-in values +(``float``, ``int``, ``vec3``, ``matrix33``, etc). + +Arrays can be allocated similar to PyTorch:: + + # allocate an uninitialized array of vec3s + v = wp.empty(shape=n, dtype=wp.vec3, device="cuda") + + # allocate a zero-initialized array of quaternions + q = wp.zeros(shape=n, dtype=wp.quat, device="cuda") + + # allocate and initialize an array from a NumPy array + # will be automatically transferred to the specified device + a = np.ones((10, 3), dtype=np.float32) + v = wp.from_numpy(a, dtype=wp.vec3, device="cuda") + +By default, Warp arrays that are initialized from external data (e.g.: NumPy, Lists, Tuples) will create a copy the data to new memory for the +device specified. However, it is possible for arrays to alias external memory using the ``copy=False`` parameter to the +array constructor provided the input is contiguous and on the same device. See the :doc:`/modules/interoperability` +section for more details on sharing memory with external frameworks. + +To read GPU array data back to CPU memory we can use :func:`array.numpy`:: + + # bring data from device back to host + view = device_array.numpy() + +This will automatically synchronize with the GPU to ensure that any outstanding work has finished, and will +copy the array back to CPU memory where it is passed to NumPy. +Calling :func:`array.numpy` on a CPU array will return a zero-copy NumPy view +onto the Warp data. + +Please see the :ref:`Arrays Reference ` for more details. + +User Functions +-------------- + +Users can write their own functions using the ``@wp.func`` decorator, for example:: + + @wp.func + def square(x: float): + return x*x + +Kernels can call user functions defined in the same module or defined in a different module. +As the example shows, return type hints for user functions are **optional**. + +Anything that can be done in a Warp kernel can also be done in a user function **with the exception** +of :func:`wp.tid() `. The thread index can be passed in through the arguments of a user function if it is required. + +Functions can accept arrays and structs as inputs: + +.. code-block:: python + + @wp.func + def lookup(foos: wp.array(dtype=wp.uint32), index: int): + return foos[index] + +Functions may also return multiple values: + +.. code-block:: python + + @wp.func + def multi_valued_func(a: wp.float32, b: wp.float32): + return a + b, a - b, a * b, a / b + + @wp.kernel + def test_multi_valued_kernel(test_data1: wp.array(dtype=wp.float32), test_data2: wp.array(dtype=wp.float32)): + tid = wp.tid() + d1, d2 = test_data1[tid], test_data2[tid] + a, b, c, d = multi_valued_func(d1, d2) + +User functions may also be overloaded by defining multiple function signatures with the same function name: + +.. code-block:: python + + @wp.func + def custom(x: int): + return x + 1 + + + @wp.func + def custom(x: float): + return x + 1.0 + + + @wp.func + def custom(x: wp.vec3): + return x + wp.vec3(1.0, 0.0, 0.0) + +See :ref:`Generic Functions` for details on using ``typing.Any`` in user function signatures. + +See :doc:`modules/differentiability` for details on how to define custom gradient functions, +custom replay functions, and custom native functions. + +User Structs +-------------- + +Users can define their own structures using the ``@wp.struct`` decorator, for example:: + + @wp.struct + class MyStruct: + + pos: wp.vec3 + vel: wp.vec3 + active: int + indices: wp.array(dtype=int) + + +Structs may be used as a ``dtype`` for ``wp.arrays``, and may be passed to kernels directly as arguments, +please see :ref:`Structs Reference ` for more details. + +.. note:: + + As with kernel parameters, all attributes of a struct must have valid type hints at class definition time. + +.. _Compilation Model: + +Compilation Model +----------------- + +Warp uses a Python->C++/CUDA compilation model that generates kernel code from Python function definitions. +All kernels belonging to a Python module are runtime compiled into dynamic libraries and PTX. +The result is then cached between application restarts for fast startup times. + +Note that compilation is triggered on the first kernel launch for that module. +Any kernels registered in the module with ``@wp.kernel`` will be included in the shared library. + +.. image:: ./img/compiler_pipeline.svg + +By default, status messages will be printed out after each module has been loaded indicating basic information: + +* The name of the module that was just loaded +* The first seven characters of the module hash +* The device on which the module is being loaded for +* How long it took to load the module in milliseconds +* Whether the module was compiled ``(compiled)``, loaded from the cache ``(cached)``, or was unable to be loaded ``(error)``. + +For debugging purposes, ``wp.config.verbose = True`` can be set to also get a printout when each module load begins. + +Here is an example illustrating the functionality of the kernel cache by running ``python3 -m warp.examples.sim.example_cartpole`` +twice. The first time, we see: + +.. code:: bat + + Warp 1.2.0 initialized: + CUDA Toolkit 12.5, Driver 12.5 + Devices: + "cpu" : "x86_64" + "cuda:0" : "NVIDIA GeForce RTX 3090" (24 GiB, sm_86, mempool enabled) + "cuda:1" : "NVIDIA GeForce RTX 3090" (24 GiB, sm_86, mempool enabled) + CUDA peer access: + Supported fully (all-directional) + Kernel cache: + /home/nvidia/.cache/warp/1.2.0 + Module warp.sim.collide 296dfb5 load on device 'cuda:0' took 17982.83 ms (compiled) + Module warp.sim.articulation b2cf0c2 load on device 'cuda:0' took 5686.67 ms (compiled) + Module warp.sim.integrator_euler b87aa18 load on device 'cuda:0' took 7753.78 ms (compiled) + Module warp.sim.integrator 036f39a load on device 'cuda:0' took 456.53 ms (compiled) + step took 0.06 ms + render took 4.63 ms + +The second time we run this example, we see that the module-loading messages now say ``(cached)`` and take much +less time to load since code compilation is skipped: + +.. code:: bat + + Warp 1.2.0 initialized: + CUDA Toolkit 12.5, Driver 12.5 + Devices: + "cpu" : "x86_64" + "cuda:0" : "NVIDIA GeForce RTX 3090" (24 GiB, sm_86, mempool enabled) + "cuda:1" : "NVIDIA GeForce RTX 3090" (24 GiB, sm_86, mempool enabled) + CUDA peer access: + Supported fully (all-directional) + Kernel cache: + /home/nvidia/.cache/warp/1.2.0 + Module warp.sim.collide 296dfb5 load on device 'cuda:0' took 9.07 ms (cached) + Module warp.sim.articulation b2cf0c2 load on device 'cuda:0' took 4.96 ms (cached) + Module warp.sim.integrator_euler b87aa18 load on device 'cuda:0' took 3.69 ms (cached) + Module warp.sim.integrator 036f39a load on device 'cuda:0' took 0.39 ms (cached) + step took 0.04 ms + render took 5.05 ms + +Language Details +---------------- + +To support GPU computation and differentiability, there are some differences from the CPython runtime. + +Built-in Types +^^^^^^^^^^^^^^ + +Warp supports a number of built-in math types similar to high-level shading languages, +e.g. ``vec2, vec3, vec4, mat22, mat33, mat44, quat, array``. +All built-in types have value semantics so that expressions such as ``a = b`` +generate a copy of the variable ``b`` rather than a reference. + +Strong Typing +^^^^^^^^^^^^^ + +Unlike Python, in Warp all variables must be typed. +Types are inferred from source expressions and function signatures using the Python typing extensions. +All kernel parameters must be annotated with the appropriate type, for example:: + + @wp.kernel + def simple_kernel(a: wp.array(dtype=vec3), + b: wp.array(dtype=vec3), + c: float): + +Tuple initialization is not supported, instead variables should be explicitly typed:: + + # invalid + a = (1.0, 2.0, 3.0) + + # valid + a = wp.vec3(1.0, 2.0, 3.0) + + +Limitations and Unsupported Features +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +See :doc:`limitations` for a list of Warp limitations and unsupported features. diff --git a/_sources/configuration.rst.txt b/_sources/configuration.rst.txt new file mode 100644 index 00000000..04ac2d2c --- /dev/null +++ b/_sources/configuration.rst.txt @@ -0,0 +1,163 @@ +.. _Configuration: + +Configuration +============= + +Warp has settings at the global, module, and kernel level that can be used to fine-tune the compilation and verbosity +of Warp programs. In cases in which a setting can be changed at multiple levels (e.g.: ``enable_backward``), +the setting at the more-specific scope takes precedence. + +Global Settings +--------------- + +To change a setting, prepend ``wp.config.`` to the name of the variable and assign a value to it. +Some settings may be changed on the fly, while others need to be set prior to calling ``wp.init()`` to take effect. + +For example, the location of the user kernel cache can be changed with: + +.. code-block:: python + + import os + + import warp as wp + + example_dir = os.path.dirname(os.path.realpath(__file__)) + + # set default cache directory before wp.init() + wp.config.kernel_cache_dir = os.path.join(example_dir, "tmp", "warpcache1") + + wp.init() + + +Basic Global Settings +^^^^^^^^^^^^^^^^^^^^^ + + ++------------------------------------------------+---------+-------------+--------------------------------------------------------------------------+ +| Field | Type |Default Value| Description | ++================================================+=========+=============+==========================================================================+ +|``verify_fp`` | Boolean | ``False`` | If ``True``, Warp will check that inputs and outputs are finite before | +| | | | and/or after various operations. **Has performance implications.** | ++------------------------------------------------+---------+-------------+--------------------------------------------------------------------------+ +|``verify_cuda`` | Boolean | ``False`` | If ``True``, Warp will check for CUDA errors after every launch and | +| | | | memory operation. CUDA error verification cannot be used during graph | +| | | | capture. **Has performance implications.** | ++------------------------------------------------+---------+-------------+--------------------------------------------------------------------------+ +|``print_launches`` | Boolean | ``False`` | If ``True``, Warp will print details of every kernel launch to standard | +| | | | out (e.g. launch dimensions, inputs, outputs, device, etc.). | +| | | | **Has performance implications.** | ++------------------------------------------------+---------+-------------+--------------------------------------------------------------------------+ +|``mode`` | String |``"release"``| Controls whether to compile Warp kernels in debug or release mode. | +| | | | Valid choices are ``"release"`` or ``"debug"``. | +| | | | **Has performance implications.** | ++------------------------------------------------+---------+-------------+--------------------------------------------------------------------------+ +|``max_unroll`` | Integer | Global | The maximum fixed-size loop to unroll. Note that ``max_unroll`` does not | +| | | setting | consider the total number of iterations in nested loops. This can result | +| | | | in a large amount of automatically generated code if each nested loop is | +| | | | below the ``max_unroll`` threshold. | ++------------------------------------------------+---------+-------------+--------------------------------------------------------------------------+ +|``verbose`` | Boolean | ``False`` | If ``True``, additional information will be printed to standard out | +| | | | during code generation, compilation, etc. | ++------------------------------------------------+---------+-------------+--------------------------------------------------------------------------+ +|``verbose_warnings`` | Boolean | ``False`` | If ``True``, Warp warnings will include extra information such as | +| | | | the source file and line number. | ++------------------------------------------------+---------+-------------+--------------------------------------------------------------------------+ +|``quiet`` | Boolean | ``False`` | If ``True``, Warp module initialization messages will be disabled. | +| | | | This setting does not affect error messages and warnings. | ++------------------------------------------------+---------+-------------+--------------------------------------------------------------------------+ +|``kernel_cache_dir`` | String | ``None`` | The path to the directory used for the user kernel cache. Subdirectories | +| | | | beginning with ``wp_`` will be created in this directory. If ``None``, | +| | | | a directory will be automatically determined using the value of the | +| | | | environment variable ``WARP_CACHE_PATH`` or the | +| | | | `appdirs.user_cache_directory `_ | +| | | | if ``WARP_CACHE_PATH`` is also not set. ``kernel_cache_dir`` will be | +| | | | updated to reflect the location of the cache directory used. | ++------------------------------------------------+---------+-------------+--------------------------------------------------------------------------+ +|``enable_backward`` | Boolean | ``True`` | If ``True``, backward passes of kernels will be compiled by default. | +| | | | Disabling this setting can reduce kernel compilation times. | ++------------------------------------------------+---------+-------------+--------------------------------------------------------------------------+ +|``enable_graph_capture_module_load_by_default`` | Boolean | ``True`` | If ``True``, ``wp.capture_begin()`` will call ``wp.force_load()`` to | +| | | | compile and load Warp kernels from all imported modules before graph | +| | | | capture if the ``force_module_load`` argument is not explicitly provided | +| | | | to ``wp.capture_begin()``. This setting is ignored if the CUDA driver | +| | | | supports CUDA 12.3 or newer. | ++------------------------------------------------+---------+-------------+--------------------------------------------------------------------------+ +|``enable_mempools_at_init`` | Boolean | ``False`` | If ``True``, ``wp.init()`` will enable pooled allocators on all CUDA | +| | | | devices that support memory pools. | +| | | | Pooled allocators are generally faster and can be used during CUDA graph | +| | | | capture. For the caveats, see CUDA Pooled Allocators documentation. | ++------------------------------------------------+---------+-------------+--------------------------------------------------------------------------+ + + +Advanced Global Settings +^^^^^^^^^^^^^^^^^^^^^^^^ + ++--------------------+---------+-------------+--------------------------------------------------------------------------+ +| Field | Type |Default Value| Description | ++====================+=========+=============+==========================================================================+ +|``cache_kernels`` | Boolean | ``True`` | If ``True``, kernels that have already been compiled from previous | +| | | | application launches will not be recompiled. | ++--------------------+---------+-------------+--------------------------------------------------------------------------+ +|``cuda_output`` | String | ``None`` | The preferred CUDA output format for kernels. Valid choices are ``None``,| +| | | | ``"ptx"``, and ``"cubin"``. If ``None``, a format will be determined | +| | | | automatically. | ++--------------------+---------+-------------+--------------------------------------------------------------------------+ +|``ptx_target_arch`` | Integer | 70 | The target architecture for PTX generation. | ++--------------------+---------+-------------+--------------------------------------------------------------------------+ +|``llvm_cuda`` | Boolean | ``False`` | If ``True``, Clang/LLVM will be used to compile CUDA code instead of | +| | | | NVTRC. | ++--------------------+---------+-------------+--------------------------------------------------------------------------+ + +Module Settings +--------------- + +Module-level settings to control runtime compilation and code generation may be changed by passing a dictionary of +option pairs to ``wp.set_module_options()``. + +For example, compilation of backward passes for the kernel in an entire module can be disabled with: + +.. code:: python + + wp.set_module_options({"enable_backward": False}) + +The options for a module can also be queried using ``wp.get_module_options()``. + ++--------------------+---------+-------------+--------------------------------------------------------------------------+ +| Field | Type |Default Value| Description | ++====================+=========+=============+==========================================================================+ +|``mode`` | String | Global | Controls whether to compile the module's kernels in debug or release | +| | | setting | mode by default. Valid choices are ``"release"`` or ``"debug"``. | ++--------------------+---------+-------------+--------------------------------------------------------------------------+ +|``max_unroll`` | Integer | Global | The maximum fixed-size loop to unroll. Note that ``max_unroll`` does not | +| | | setting | consider the total number of iterations in nested loops. This can result | +| | | | in a large amount of automatically generated code if each nested loop is | +| | | | below the ``max_unroll`` threshold. | ++--------------------+---------+-------------+--------------------------------------------------------------------------+ +|``enable_backward`` | Boolean | Global | If ``True``, backward passes of kernels will be compiled by default. | +| | | setting | Valid choices are ``"release"`` or ``"debug"``. | ++--------------------+---------+-------------+--------------------------------------------------------------------------+ +|``fast_math`` | Boolean | ``False`` | If ``True``, CUDA kernels will be compiled with the ``--use_fast_math`` | +| | | | compiler option, which enables some fast math operations that are faster | +| | | | but less accurate. | ++--------------------+---------+-------------+--------------------------------------------------------------------------+ +|``cuda_output`` | String | ``None`` | The preferred CUDA output format for kernels. Valid choices are ``None``,| +| | | | ``"ptx"``, and ``"cubin"``. If ``None``, a format will be determined | +| | | | automatically. The module-level setting takes precedence over the global | +| | | | setting. | ++--------------------+---------+-------------+--------------------------------------------------------------------------+ + +Kernel Settings +--------------- + +``enable_backward`` is currently the only setting that can also be configured on a per-kernel level. +Backward-pass compilation can be disabled by passing an argument into the ``@wp.kernel`` decorator +as in the following example: + +.. code-block:: python + + @wp.kernel(enable_backward=False) + def scale_2( + x: wp.array(dtype=float), + y: wp.array(dtype=float), + ): + y[0] = x[0] ** 2.0 diff --git a/_sources/debugging.rst.txt b/_sources/debugging.rst.txt new file mode 100644 index 00000000..4812ff0b --- /dev/null +++ b/_sources/debugging.rst.txt @@ -0,0 +1,89 @@ +Debugging +========= + +Printing Values +--------------- + +Often one of the best debugging methods is to simply print values from kernels. Warp supports printing all built-in +types using the ``print()`` function, e.g.:: + + v = wp.vec3(1.0, 2.0, 3.0) + + print(v) + +In addition, formatted C-style printing is available through the ``wp.printf()`` function, e.g.:: + + x = 1.0 + i = 2 + + wp.printf("A float value %f, an int value: %d", x, i) + +.. note:: Formatted printing is only available for scalar types (e.g.: ``int`` and ``float``) not vector types. + +Printing Launches +----------------- + +For complex applications it can be difficult to understand the order-of-operations that lead to a bug. To help diagnose +these issues Warp supports a simple option to print out all launches and arguments to the console:: + + wp.config.print_launches = True + + +Step-Through Debugging +---------------------- + +It is possible to attach IDE debuggers such as Visual Studio to Warp processes to step through generated kernel code. +Users should first compile the kernels in debug mode by setting:: + + wp.config.mode = "debug" + +This setting ensures that line numbers, and debug symbols are generated correctly. After launching the Python process, +the debugger should be attached, and a breakpoint inserted into the generated code. + +.. note:: Generated kernel code is not a 1:1 correspondence with the original Python code, but individual operations can still be replayed and variables inspected. + +Also see :github:`warp/tests/walkthrough_debug.py` for an example of how to debug Warp kernel code running on the CPU. + +Generated Code +-------------- + +Occasionally it can be useful to inspect the generated code for debugging or profiling. +The generated code for kernels is stored in a central cache location in the user's home directory, the cache location +is printed at startup when ``wp.init()`` is called, for example: + +.. code-block:: console + + Warp 0.8.1 initialized: + CUDA Toolkit: 11.8, Driver: 11.8 + Devices: + "cpu" | AMD64 Family 25 Model 33 Stepping 0, AuthenticAMD + "cuda:0" | NVIDIA GeForce RTX 3090 (sm_86) + "cuda:1" | NVIDIA GeForce RTX 2080 Ti (sm_75) + Kernel cache: C:\Users\LukasW\AppData\Local\NVIDIA Corporation\warp\Cache\0.8.1 + +The kernel cache has folders beginning with ``wp_`` that contain the generated C++/CUDA code and the compiled binaries +for each module that was compiled at runtime. +The name of each folder ends with a hexadecimal hash constructed from the module contents to avoid potential +conflicts when using multiple processes and to support the caching of runtime-defined kernels. + +Bounds Checking +--------------- + +Warp will perform bounds checking in debug build configurations to ensure that all array accesses lie within the defined +shape. + +CUDA Verification +----------------- + +It is possible to generate out-of-bounds memory access violations through poorly formed kernel code or inputs. In this +case the CUDA runtime will detect the violation and put the CUDA context into an error state. Subsequent kernel launches +may silently fail which can lead to hard to diagnose issues. + +If a CUDA error is suspected a simple verification method is to enable:: + + wp.config.verify_cuda = True + +This setting will check the CUDA context after every operation to ensure that it is still valid. If an error is +encountered it will raise an exception that often helps to narrow down the problematic kernel. + +.. note:: Verifying CUDA state at each launch requires synchronizing CPU and GPU which has a significant overhead. Users should ensure this setting is only used during debugging. diff --git a/_sources/faq.rst.txt b/_sources/faq.rst.txt new file mode 100644 index 00000000..2ab44721 --- /dev/null +++ b/_sources/faq.rst.txt @@ -0,0 +1,135 @@ +FAQ +=== + +How does Warp relate to other Python projects for GPU programming, e.g.: Numba, Taichi, cuPy, PyTorch, etc.? +------------------------------------------------------------------------------------------------------------ + +Warp is inspired by many of these projects, and is closely related to +Numba and Taichi which both expose kernel programming to Python. These +frameworks map to traditional GPU programming models, so many of the +high-level concepts are similar, however there are some functionality +and implementation differences. + +Compared to Numba, Warp supports a smaller subset of Python, but +offering auto-differentiation of kernel programs, which is useful for +machine learning. Compared to Taichi Warp uses C++/CUDA as an +intermediate representation, which makes it convenient to implement and +expose low-level routines. In addition, we are building in +data structures to support geometry processing (meshes, sparse volumes, +point clouds, USD data) as first-class citizens that are not exposed in +other runtimes. + +Warp does not offer a full tensor-based programming model like PyTorch +and JAX, but is designed to work well with these frameworks through data +sharing mechanisms like ``__cuda_array_interface__``. For computations +that map well to tensors (e.g.: neural-network inference) it makes sense +to use these existing tools. For problems with a lot of e.g.: sparsity, +conditional logic, heterogeneous workloads (like the ones we often find in +simulation and graphics), then the kernel-based programming model like +the one in Warp are often more convenient since users have control over +individual threads. + +Does Warp support all of the Python language? +--------------------------------------------- + +No, Warp supports a subset of Python that maps well to the GPU. Our goal +is to not have any performance cliffs so that users can expect +consistently good behavior from kernels that is close to native code. +Examples of unsupported concepts that don't map well to the GPU are +dynamic types, list comprehensions, exceptions, garbage collection, etc. + +When should I call ``wp.synchronize()``? +---------------------------------------- + +One of the common sources of confusion for new users is when calls to +``wp.synchronize()`` are necessary. The answer is “almost never”! +Synchronization is quite expensive and should generally be avoided +unless necessary. Warp naturally takes care of synchronization between +operations (e.g.: kernel launches, device memory copies). + +For example, the following requires no manual synchronization, as the +conversion to NumPy will automatically synchronize: + +.. code:: python + + # run some kernels + wp.launch(kernel_1, dim, [array_x, array_y], device="cuda") + wp.launch(kernel_2, dim, [array_y, array_z], device="cuda") + + # bring data back to host (and implicitly synchronize) + x = array_z.numpy() + +The *only* case where manual synchronization is needed is when copies +are being performed back to CPU asynchronously, e.g.: + +.. code:: python + + # copy data back to cpu from gpu, all copies will happen asynchronously to Python + wp.copy(cpu_array_1, gpu_array_1) + wp.copy(cpu_array_2, gpu_array_2) + wp.copy(cpu_array_3, gpu_array_3) + + # ensure that the copies have finished + wp.synchronize() + + # return a numpy wrapper around the cpu arrays, note there is no implicit synchronization here + a1 = cpu_array_1.numpy() + a2 = cpu_array_2.numpy() + a3 = cpu_array_3.numpy() + +For more information about asynchronous operations, please refer to the :doc:`concurrency documentation ` +and :ref:`synchronization guidance `. + +What happens when you differentiate a function like ``wp.abs(x)``? +------------------------------------------------------------------ + +Non-smooth functions such as :math:`y=|x|` do not have a single unique +gradient at :math:`x=0`, rather they have what is known as a +*subgradient*, which is formally the convex hull of directional +derivatives at that point. The way that Warp (and most +auto-differentiation frameworks) handles these points is to pick an +arbitrary gradient from this set, e.g.: for ``wp.abs()``, it will +arbitrarily choose the gradient to be 1.0 at the origin. You can find +the implementation for these functions in +`warp/native/builtin.h `_. + +Most optimizers (particularly ones that exploit stochasticity), are not +sensitive to the choice of which gradient to use from the subgradient, +although there are exceptions. + +Does Warp support multi-GPU programming? +---------------------------------------- + +Yes! Since version ``0.4.0`` we support allocating, launching, and +copying between multiple GPUs in a single process. We follow the naming +conventions of PyTorch and use aliases such as ``cuda:0``, ``cuda:1``, +``cpu`` to identify individual devices. + +Should I switch to Warp over IsaacGym/PhysX? +---------------------------------------------- + +Warp is not a replacement for IsaacGym, IsaacSim, or PhysX—while Warp +does offer some physical simulation capabilities, this is primarily aimed +at developers who need differentiable physics, rather than a fully +featured physics engine. Warp is also integrated with IsaacGym and is +great for performing auxiliary tasks such as reward and observation +computations for reinforcement learning. + +Why aren't assignments to Warp arrays supported outside of kernels? +------------------------------------------------------------------------ + +For best performance, reading and writing data that is living on the GPU can +only be performed inside Warp CUDA kernels. Otherwise individual element accesses +such as ``array[i] = 1.0`` in Python scope would require prohibitively slow device +synchronization and copies. + +We recommend to either initialize Warp arrays from other native arrays +(Python lists, NumPy arrays, etc.) or by launching a kernel to set its values. + +For the common use case of filling an array with a given value, we +also support the following forms: + +- ``wp.full(8, 1.23, dtype=float)``: initializes a new array of 8 float values set + to ``1.23``. +- ``arr.fill_(1.23)``: sets the content of an existing float array to ``1.23``. +- ``arr[:4].fill(1.23)``: sets the four first values of an existing float array to ``1.23``. diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt new file mode 100644 index 00000000..a354e37d --- /dev/null +++ b/_sources/index.rst.txt @@ -0,0 +1,391 @@ +NVIDIA Warp Documentation +========================= + +Warp is a Python framework for writing high-performance simulation and graphics code. Warp takes +regular Python functions and JIT compiles them to efficient kernel code that can run on the CPU or GPU. + +Warp is designed for `spatial computing `_ +and comes with a rich set of primitives that make it easy to write +programs for physics simulation, perception, robotics, and geometry processing. In addition, Warp kernels +are differentiable and can be used as part of machine-learning pipelines with frameworks such as PyTorch and JAX. + +Below are some examples of simulations implemented using Warp: + +.. image:: ./img/header.jpg + +Quickstart +---------- + +The easiest way to install Warp is from `PyPI `_: + +.. code-block:: sh + + $ pip install warp-lang + +You can also use ```pip install warp-lang[extras]``` to install additional dependencies for running examples +and USD-related features. + +The binaries hosted on PyPI are currently built with the CUDA 12 runtime and therefore +require a minimum version of the CUDA driver of 525.60.13 (Linux x86-64) or 528.33 (Windows x86-64). + +If you require GPU support on a system with an older CUDA driver, you can build Warp from source or +install wheels built with the CUDA 11.8 runtime as described in :ref:`GitHub Installation`. + +Basic Example +------------- + +An example first program that computes the lengths of random 3D vectors is given below:: + + import warp as wp + import numpy as np + + num_points = 1024 + + @wp.kernel + def length(points: wp.array(dtype=wp.vec3), + lengths: wp.array(dtype=float)): + + # thread index + tid = wp.tid() + + # compute distance of each point from origin + lengths[tid] = wp.length(points[tid]) + + + # allocate an array of 3d points + points = wp.array(np.random.rand(num_points, 3), dtype=wp.vec3) + lengths = wp.zeros(num_points, dtype=float) + + # launch kernel + wp.launch(kernel=length, + dim=len(points), + inputs=[points, lengths]) + + print(lengths) + +Additional Examples +------------------- + +The `warp/examples `_ directory in +the Github repository contains a number of scripts categorized under subdirectories +that show how to implement various simulation methods using the Warp API. Most examples +will generate USD files containing time-sampled animations in the current working directory. +Before running examples, users should ensure that the ``usd-core``, ``matplotlib``, and ``pyglet`` packages are installed using:: + + pip install warp-lang[extras] + +These dependencies can also be manually installed using:: + + pip install usd-core matplotlib pyglet + +Examples can be run from the command-line as follows:: + + python -m warp.examples.. + +Most examples can be run on either the CPU or a CUDA-capable device, but a handful require a CUDA-capable device. These are marked at the top of the example script. + +USD files can be viewed or rendered inside NVIDIA +`Omniverse `_, +Pixar's UsdView, and Blender. Note that Preview in macOS is not +recommended as it has limited support for time-sampled animations. + +Built-in unit tests can be run from the command-line as follows:: + + python -m warp.tests + +warp/examples/core +^^^^^^^^^^^^^^^^^^ + +.. list-table:: + :class: gallery + + * - .. image:: ./img/examples/core_dem.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/core/example_dem.py + - .. image:: ./img/examples/core_fluid.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/core/example_fluid.py + - .. image:: ./img/examples/core_graph_capture.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/core/example_graph_capture.py + - .. image:: ./img/examples/core_marching_cubes.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/core/example_marching_cubes.py + * - dem + - fluid + - graph capture + - marching cubes + * - .. image:: ./img/examples/core_mesh.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/core/example_mesh.py + - .. image:: ./img/examples/core_nvdb.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/core/example_nvdb.py + - .. image:: ./img/examples/core_raycast.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/core/example_raycast.py + - .. image:: ./img/examples/core_raymarch.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/core/example_raymarch.py + * - mesh + - nvdb + - raycast + - raymarch + * - .. image:: ./img/examples/core_sph.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/core/example_sph.py + - .. image:: ./img/examples/core_torch.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/core/example_torch.py + - .. image:: ./img/examples/core_wave.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/core/example_wave.py + - + * - sph + - torch + - wave + - + +warp/examples/fem +^^^^^^^^^^^^^^^^^ + +.. list-table:: + :class: gallery + + * - .. image:: ./img/examples/fem_apic_fluid.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/fem/example_apic_fluid.py + - .. image:: ./img/examples/fem_convection_diffusion.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/fem/example_convection_diffusion.py + - .. image:: ./img/examples/fem_diffusion_3d.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/fem/example_diffusion_3d.py + - .. image:: ./img/examples/fem_diffusion.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/fem/example_diffusion.py + * - apic fluid + - convection diffusion + - diffusion 3d + - diffusion + * - .. image:: ./img/examples/fem_mixed_elasticity.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/fem/example_mixed_elasticity.py + - .. image:: ./img/examples/fem_navier_stokes.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/fem/example_navier_stokes.py + - .. image:: ./img/examples/fem_stokes_transfer.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/fem/example_stokes_transfer.py + - .. image:: ./img/examples/fem_stokes.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/fem/example_stokes.py + * - mixed elasticity + - navier stokes + - stokes transfer + - stokes + +warp/examples/optim +^^^^^^^^^^^^^^^^^^^ + +.. list-table:: + :class: gallery + + * - .. image:: ./img/examples/optim_bounce.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/optim/example_bounce.py + - .. image:: ./img/examples/optim_cloth_throw.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/optim/example_cloth_throw.py + - .. image:: ./img/examples/optim_diffray.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/optim/example_diffray.py + - .. image:: ./img/examples/optim_drone.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/optim/example_drone.py + * - bounce + - cloth throw + - diffray + - drone + * - .. image:: ./img/examples/optim_inverse_kinematics.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/optim/example_inverse_kinematics.py + - .. image:: ./img/examples/optim_spring_cage.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/optim/example_spring_cage.py + - .. image:: ./img/examples/optim_trajectory.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/optim/example_trajectory.py + - .. image:: ./img/examples/optim_walker.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/optim/example_walker.py + * - inverse kinematics + - spring cage + - trajectory + - walker + +warp/examples/sim +^^^^^^^^^^^^^^^^^ + +.. list-table:: + :class: gallery + + * - .. image:: ./img/examples/sim_cartpole.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/sim/example_cartpole.py + - .. image:: ./img/examples/sim_cloth.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/sim/example_cloth.py + - .. image:: ./img/examples/sim_granular.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/sim/example_granular.py + - .. image:: ./img/examples/sim_granular_collision_sdf.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/sim/example_granular_collision_sdf.py + * - cartpole + - cloth + - granular + - granular collision sdf + * - .. image:: ./img/examples/sim_jacobian_ik.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/sim/example_jacobian_ik.py + - .. image:: ./img/examples/sim_quadruped.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/sim/example_quadruped.py + - .. image:: ./img/examples/sim_rigid_chain.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/sim/example_rigid_chain.py + - .. image:: ./img/examples/sim_rigid_contact.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/sim/example_rigid_contact.py + * - jacobian ik + - quadruped + - rigid chain + - rigid contact + * - .. image:: ./img/examples/sim_rigid_force.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/sim/example_rigid_force.py + - .. image:: ./img/examples/sim_rigid_gyroscopic.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/sim/example_rigid_gyroscopic.py + - .. image:: ./img/examples/sim_rigid_soft_contact.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/sim/example_rigid_soft_contact.py + - .. image:: ./img/examples/sim_soft_body.png + :target: https://github.com/NVIDIA/warp/tree/main/warp/examples/sim/example_soft_body.py + * - rigid force + - rigid gyroscopic + - rigid soft contact + - soft body + +Omniverse +--------- + +Omniverse extensions for Warp are available in the extension registry inside +Omniverse Kit or USD Composer. +The ``omni.warp.core`` extension installs Warp into the Omniverse Application's +Python environment, which allows users to import the module in their scripts and nodes. +The ``omni.warp`` extension provides a collection of OmniGraph nodes and sample +scenes demonstrating uses of Warp in OmniGraph. +Enabling the ``omni.warp`` extension automatically enables the ``omni.warp.core`` extension. + +Please see the +`Omniverse Warp Documentation `_ +for more details on how to use Warp in Omniverse. + + +Learn More +---------- + +Please see the following resources for additional background on Warp: + +- `Product Page `_ +- `GTC 2022 + Presentation `_ +- `GTC 2021 + Presentation `_ +- `SIGGRAPH Asia 2021 Differentiable Simulation + Course `_ +- `GTC 2024 Presentation `_ + +The underlying technology in Warp has been used in a number of research +projects at NVIDIA including the following publications: + +- Accelerated Policy Learning with Parallel Differentiable Simulation - + Xu, J., Makoviychuk, V., Narang, Y., Ramos, F., Matusik, W., Garg, + A., & Macklin, M. + `(2022) `__ +- DiSECt: Differentiable Simulator for Robotic Cutting - Heiden, E., + Macklin, M., Narang, Y., Fox, D., Garg, A., & Ramos, F + `(2021) `__ +- gradSim: Differentiable Simulation for System Identification and + Visuomotor Control - Murthy, J. Krishna, Miles Macklin, Florian + Golemo, Vikram Voleti, Linda Petrini, Martin Weiss, Breandan + Considine et + al. `(2021) `__ + +Support +------- + +Problems, questions, and feature requests can be opened on +`GitHub Issues `_. + +The Warp team also monitors the **#warp** channel on the public +`Omniverse Discord `_ server, come chat with us! + +Versioning +---------- + +Versions take the format X.Y.Z, similar to `Python itself `__: + +* Increments in X are reserved for major reworks of the project causing disruptive incompatibility (or reaching the 1.0 milestone). +* Increments in Y are for regular releases with a new set of features. +* Increments in Z are for bug fixes. In principle, there are no new features. Can be omitted if 0 or not relevant. + +This is similar to `Semantic Versioning `_ minor versions if well-documented and gradually introduced. + +Note that prior to 0.11.0, this schema was not strictly adhered to. + +License +------- + +Warp is provided under the NVIDIA Software License, please see +`LICENSE.md `__ for the full license text. + +Contributing +------------ + +Contributions and pull requests from the community are welcome and are taken under the +terms described in the **Feedback** section of `LICENSE.md `__. +`CONTRIBUTING.md `_ provides additional information on +how to open a pull request for Warp. + +Citing +------ + +If you use Warp in your research, please use the following citation: + +.. code:: bibtex + + @misc{warp2022, + title= {Warp: A High-performance Python Framework for GPU Simulation and Graphics}, + author = {Miles Macklin}, + month = {March}, + year = {2022}, + note= {NVIDIA GPU Technology Conference (GTC)}, + howpublished = {\url{https://github.com/nvidia/warp}} + } + +Full Table of Contents +---------------------- + +.. toctree:: + :maxdepth: 2 + :caption: User's Guide + + installation + basics + modules/devices + modules/differentiability + modules/generics + modules/interoperability + configuration + debugging + limitations + faq + +.. toctree:: + :maxdepth: 2 + :caption: Advanced Topics + + modules/allocators + modules/concurrency + profiling + +.. toctree:: + :maxdepth: 2 + :caption: Core Reference + + modules/runtime + modules/functions + +.. toctree:: + :maxdepth: 2 + :caption: Simulation Reference + + modules/sim + modules/sparse + modules/fem + modules/render + +.. toctree:: + :hidden: + :caption: Project Links + + GitHub + PyPI + Discord + +:ref:`Full Index ` diff --git a/_sources/installation.rst.txt b/_sources/installation.rst.txt new file mode 100644 index 00000000..eef093be --- /dev/null +++ b/_sources/installation.rst.txt @@ -0,0 +1,142 @@ +Installation +============ + +Python version 3.9 or newer is *recommended*. Warp can run on x86-64 and ARMv8 CPUs on Windows, Linux, and macOS. GPU support requires a CUDA-capable NVIDIA GPU and driver (minimum GeForce GTX 9xx). + +The easiest way to install Warp is from `PyPI `_: + +.. code-block:: sh + + $ pip install warp-lang + +.. _GitHub Installation: + +Installing from GitHub Releases +------------------------------- + +The binaries hosted on PyPI are currently built with the CUDA 12 runtime. +We also provide binaries built with the CUDA 11.8 runtime on the `GitHub Releases `_ page. +Copy the URL of the appropriate wheel file (``warp-lang-{ver}+cu11-py3-none-{platform}.whl``) and pass it to +the ``pip install`` command, e.g. + +.. list-table:: + :header-rows: 1 + + * - Platform + - Install Command + * - Linux aarch64 + - ``pip install https://github.com/NVIDIA/warp/releases/download/v1.3.1/warp_lang-1.3.1+cu11-py3-none-manylinux2014_aarch64.whl`` + * - Linux x86-64 + - ``pip install https://github.com/NVIDIA/warp/releases/download/v1.3.1/warp_lang-1.3.1+cu11-py3-none-manylinux2014_x86_64.whl`` + * - Windows x86-64 + - ``pip install https://github.com/NVIDIA/warp/releases/download/v1.3.1/warp_lang-1.3.1+cu11-py3-none-win_amd64.whl`` + +The ``--force-reinstall`` option may need to be used to overwrite a previous installation. + +CUDA Requirements +----------------- + +* Warp packages built with CUDA Toolkit 11.x require NVIDIA driver 470 or newer. +* Warp packages built with CUDA Toolkit 12.x require NVIDIA driver 525 or newer. + +This applies to pre-built packages distributed on PyPI and GitHub and also when building Warp from source. + +Note that building Warp with the ``--quick`` flag changes the driver requirements. +The quick build skips CUDA backward compatibility, so the minimum required driver is determined by the CUDA Toolkit version. +Refer to the `latest CUDA Toolkit release notes `_ +to find the minimum required driver for different CUDA Toolkit versions +(e.g., `this table from CUDA Toolkit 12.5 `_). + +Warp checks the installed driver during initialization and will report a warning if the driver is not suitable, e.g.: + +.. code-block:: text + + Warp UserWarning: + Insufficient CUDA driver version. + The minimum required CUDA driver version is 12.0, but the installed CUDA driver version is 11.8. + Visit https://github.com/NVIDIA/warp/blob/main/README.md#installing for guidance. + +This will make CUDA devices unavailable, but the CPU can still be used. + +To remedy the situation there are a few options: + +* Update the driver. +* Install a compatible pre-built Warp package. +* Build Warp from source using a CUDA Toolkit that's compatible with the installed driver. + +Dependencies +------------ + +Warp supports Python versions 3.7 onwards, with 3.9 or newer recommended for full functionality. Note that :ref:`some optional dependencies may not support the latest version of Python`. + +`NumPy `_ must be installed. + +The following optional dependencies are required to support certain features: + +* `usd-core `_: Required for some Warp examples, ``warp.sim.parse_usd()``, and ``warp.render.UsdRenderer``. +* `JAX `_: Required for JAX interoperability (see :ref:`jax-interop`). +* `PyTorch `_: Required for PyTorch interoperability (see :ref:`pytorch-interop`). +* `NVTX for Python `_: Required to use :class:`wp.ScopedTimer(use_nvtx=True) `. + +Building the Warp documentation requires: + +* `Sphinx `_ +* `Furo `_ +* `Sphinx-copybutton `_ + +Building from Source +-------------------- + +For developers who want to build the library themselves the following tools are required: + +* Microsoft Visual Studio (Windows), minimum version 2019 +* GCC (Linux), minimum version 9.4 +* `CUDA Toolkit `_, minimum version 11.5 +* `Git Large File Storage `_ + +After cloning the repository, users should run: + +.. code-block:: console + + $ python build_lib.py + +Upon success, the script will output platform-specific binary files in ``warp/bin/``. +The build script will look for the CUDA Toolkit in its default installation path. +This path can be overridden by setting the ``CUDA_PATH`` environment variable. Alternatively, +the path to the CUDA Toolkit can be passed to the build command as +``--cuda_path="..."``. After building, the Warp package should be installed using: + +.. code-block:: console + + $ pip install -e . + +The ``-e`` option is optional but ensures that subsequent modifications to the +library will be reflected in the Python package. + +.. _conda: + +Conda Environments +------------------ + +Some modules, such as ``usd-core``, don't support the latest Python version. +To manage running Warp and other projects on different Python versions one can +make use of an environment management system such as +`Conda `__. + +.. warning:: + + When building and running Warp in a different environment, make sure + the build environment has the same C++ runtime library version, or an older + one, than the execution environment. Otherwise Warp's shared libraries may end + up looking for a newer runtime library version than the one available in the + execution environment. For example, on Linux this error could occur:: + + OSError: <...>/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by <...>/warp/warp/bin/warp.so) + + This can be solved by installing a newer C++ runtime version in the runtime + Conda environment using ``conda install -c conda-forge libstdcxx-ng=12.1`` or + newer. + + Alternatively, the build environment's C++ toolchain can be downgraded using + ``conda install -c conda-forge libstdcxx-ng=8.5``. Or, one can ``activate`` or + ``deactivate`` Conda environments as needed for building vs. running Warp. diff --git a/_sources/limitations.rst.txt b/_sources/limitations.rst.txt new file mode 100644 index 00000000..f0286d34 --- /dev/null +++ b/_sources/limitations.rst.txt @@ -0,0 +1,142 @@ +Limitations +=========== + +.. currentmodule:: warp + +This section summarizes various limitations and currently unsupported features in Warp. +Problems, questions, and feature requests can be opened on `GitHub Issues `_. + +Unsupported Features +-------------------- + +To achieve good performance on GPUs some dynamic language features are not supported: + +* Lambda functions +* List comprehensions +* Exceptions +* Recursion +* Runtime evaluation of expressions, e.g.: eval() +* Dynamic structures such as lists, sets, dictionaries, etc. + +Kernels and User Functions +-------------------------- + +* Strings cannot be passed into kernels. +* Short-circuit evaluation is not supported +* :func:`wp.atomic_add() ` does not support ``wp.int64``. +* :func:`wp.tid() ` cannot be called from user functions. +* Modifying the value of a :class:`wp.constant() ` during runtime will not trigger + recompilation of the affected kernels if the modules have already been loaded + (e.g. through a :func:`wp.launch() ` or a ``wp.load_module()``). +* A :class:`wp.constant() ` can suffer precision loss if used with ``wp.float64`` + as it is initially assigned to a ``wp.float32`` variable in the generated code. + +A limitation of Warp is that each dimension of the grid used to launch a kernel must be representable as a 32-bit +signed integer. Therefore, no single dimension of a grid should exceed :math:`2^{31}-1`. + +Warp also currently uses a fixed block size of 256 (CUDA) threads per block. +By default, Warp will try to process one element from the Warp grid in one CUDA thread. +This is not always possible for kernels launched with multi-dimensional grid bounds, as there are +`hardware limitations `_ +on CUDA block dimensions. + +Warp will automatically fall back to using +`grid-stride loops `_ when +it is not possible for a CUDA thread to process only one element from the Warp grid. +When this happens, some CUDA threads may process more than one element from the Warp grid. +Users can also set the ``max_blocks`` parameter to fine-tune the grid-striding behavior of kernels, even for kernels that are otherwise +able to process one Warp-grid element per CUDA thread. + +Differentiability +----------------- +Please see the :ref:`Limitations and Workarounds ` section in the Differentiability page for auto-differentiation limitations. + +Arrays +------ + +* Arrays can have a maximum of four dimensions. +* Each dimension of a Warp array cannot be greater than the maximum value representable by a 32-bit signed integer, + :math:`2^{31}-1`. +* There are currently no data types that support complex numbers. + +Structs +------- + +* Structs cannot have generic members, i.e. of type ``typing.Any``. + +Volumes +------- + +* The sparse-volume *topology* cannot be changed after the tiles for the :class:`Volume` have been allocated. + +Multiple Processes +------------------ + +* A CUDA context created in the parent process cannot be used in a *forked* child process. + Use the spawn start method instead, or avoid creating CUDA contexts in the parent process. +* There can be issues with using same user kernel cache directory when running with multiple processes. + A workaround is to use a separate cache directory for every process. + See the :ref:`Configuration` section for how the cache directory may be changed. + +Scalar Math Functions +--------------------- + +This section details some limitations and differences from CPython semantics for scalar math functions. + +Modulus Operator +"""""""""""""""" + +Deviation from Python behavior can occur when the modulus operator (``%``) is used with a negative dividend or divisor +(also see :func:`wp.mod() `). +The behavior of the modulus operator in a Warp kernel follows that of C++11: The sign of the result follows the sign of +*dividend*. In Python, the sign of the result follows the sign of the *divisor*: + +.. code-block:: python + + @wp.kernel + def modulus_test(): + # Kernel-scope behavior: + a = -3 % 2 # a is -1 + b = 3 % -2 # b is 1 + c = 3 % 0 # Undefined behavior + + # Python-scope behavior: + a = -3 % 2 # a is 1 + b = 3 % -2 # b is -1 + c = 3 % 0 # ZeroDivisionError + +Power Operator +"""""""""""""" + +The power operator (``**``) in Warp kernels only works on floating-point numbers (also see :func:`wp.pow() `). +In Python, the power operator can also be used on integers. + +Inverse Sine and Cosine +""""""""""""""""""""""" + +:func:`wp.asin() ` and :func:`wp.acos() ` automatically clamp the input to fall in the range [-1, 1]. +In Python, using :external+python:py:func:`math.asin` or :external+python:py:func:`math.acos` +with an input outside [-1, 1] raises a ``ValueError`` exception. + +Rounding +"""""""" + +:func:`wp.round() ` rounds halfway cases away from zero, but Python's +:external+python:py:func:`round` rounds halfway cases to the nearest even +choice (Banker's rounding). Use :func:`wp.rint() ` when Banker's rounding is +desired. Unlike Python, the return type in Warp of both of these rounding +functions is the same type as the input: + +.. code-block:: python + + @wp.kernel + def halfway_rounding_test(): + # Kernel-scope behavior: + a = wp.round(0.5) # a is 1.0 + b = wp.rint(0.5) # b is 0.0 + c = wp.round(1.5) # c is 2.0 + d = wp.rint(1.5) # d is 2.0 + + # Python-scope behavior: + a = round(0.5) # a is 0 + c = round(1.5) # c is 2 diff --git a/_sources/modules/allocators.rst.txt b/_sources/modules/allocators.rst.txt new file mode 100644 index 00000000..bedd2845 --- /dev/null +++ b/_sources/modules/allocators.rst.txt @@ -0,0 +1,262 @@ +Allocators +========== + +.. _mempool_allocators: + +Stream-Ordered Memory Pool Allocators +------------------------------------- + +Introduction +~~~~~~~~~~~~ + +Warp 0.14.0 added support for `stream-ordered memory pool allocators for CUDA arrays `_. As of Warp 0.15.0, these allocators are enabled by default on +all CUDA devices that support them. "Stream-ordered memory pool allocator" is quite a mouthful, so let's unpack it one bit at a time. + +Whenever you create an array, the memory needs to be allocated on the device: + +.. code:: python + + a = wp.empty(n, dtype=float, device="cuda:0") + b = wp.zeros(n, dtype=float, device="cuda:0") + c = wp.ones(n, dtype=float, device="cuda:0") + d = wp.full(n, 42.0, dtype=float, device="cuda:0") + +Each of the calls above allocates a block of device memory large enough to hold the array and optionally initializes the contents with +the specified values. ``wp.empty()`` is the only function that does not initialize the contents in any way, it just allocates the memory. + +Memory pool allocators grab a block of memory from a larger pool of reserved memory, which is generally faster than asking +the operating system for a brand new chunk of storage. This is an important benefit of these pooled allocators - they are faster. + +Stream-ordered means that each allocation is scheduled on a :ref:`CUDA stream`, which represents a sequence of instructions that execute in order on the GPU. The main benefit is that it allows memory to be allocated in CUDA graphs, which was previously not possible: + +.. code:: python + + with wp.ScopedCapture() as capture: + a = wp.zeros(n, dtype=float) + wp.launch(kernel, dim=a.size, inputs=[a]) + + wp.capture_launch(capture.graph) + +From now on, we will refer to these allocators as mempool allocators, for short. + + +Configuration +~~~~~~~~~~~~~ + +Mempool allocators are a feature of CUDA that is supported on most modern devices and operating systems. However, +there can be systems where they are not supported, such as certain virtual machine setups. Warp is designed with resiliency in mind, +so existing code written prior to the introduction of these new allocators should continue to function regardless of whether they +are supported by the underlying system or not. + +Warp's startup message gives the status of these allocators, for example: + +.. code-block:: text + + Warp 0.15.1 initialized: + CUDA Toolkit 11.5, Driver 12.2 + Devices: + "cpu" : "x86_64" + "cuda:0" : "NVIDIA GeForce RTX 4090" (24 GiB, sm_89, mempool enabled) + "cuda:1" : "NVIDIA GeForce RTX 3090" (24 GiB, sm_86, mempool enabled) + +Note the ``mempool enabled`` text next to each CUDA device. This means that memory pools are enabled on the device. Whenever you create +an array on that device, it will be allocated using the mempool allocator. If you see ``mempool supported``, it means that memory +pools are supported but were not enabled on startup. If you see ``mempool not supported``, it means that memory pools can't be used +on this device. + +There is a configuration flag that controls whether memory pools should be automatically enabled during ``wp.init()``: + +.. code:: python + + import warp as wp + + wp.config.enable_mempools_at_init = False + + wp.init() + +The flag defaults to ``True``, but can be set to ``False`` if desired. Changing this configuration flag after ``wp.init()`` is called has no effect. + +After ``wp.init()``, you can check if the memory pool is enabled on each device like this: + +.. code:: python + + if wp.is_mempool_enabled("cuda:0"): + ... + +You can also independently control enablement on each device: + +.. code:: python + + if wp.is_mempool_supported("cuda:0"): + wp.set_mempool_enabled("cuda:0", True) + +It's possible to temporarily enable or disable memory pools using a scoped manager: + +.. code:: python + + with wp.ScopedMempool("cuda:0", True): + a = wp.zeros(n, dtype=float, device="cuda:0") + + with wp.ScopedMempool("cuda:0", False): + b = wp.zeros(n, dtype=float, device="cuda:0") + +In the snippet above, array ``a`` will be allocated using the mempool allocator and array ``b`` will be allocated using the default allocator. + +In most cases, it shouldn't be necessary to fiddle with these enablement functions, but they are there if you need them. +By default, Warp will enable memory pools on startup if they are supported, which will bring the benefits of improved allocation speed automatically. +Most Warp code should continue to function with or without mempool allocators, with the exception of memory allocations +during graph capture, which will raise an exception if memory pools are not enabled. + +.. autofunction:: warp.is_mempool_supported +.. autofunction:: warp.is_mempool_enabled +.. autofunction:: warp.set_mempool_enabled + + +Allocation Performance +~~~~~~~~~~~~~~~~~~~~~~ + +Allocating and releasing memory are rather expensive operations that can add overhead to a program. We can't avoid them, since we need to allocate storage for our data somewhere, but there are some simple strategies that can reduce the overall impact of allocations on performance. + +Consider the following example: + +.. code:: python + + for i in range(100): + a = wp.zeros(n, dtype=float, device="cuda:0") + wp.launch(kernel, dim=a.size, inputs=[a], device="cuda:0") + +On each iteration of the loop, we allocate an array and run a kernel on the data. This program has 100 allocations and 100 deallocations. When we assign a new value to ``a``, the previous value gets garbage collected by Python, which triggers the deallocation. + +Reusing Memory +^^^^^^^^^^^^^^ + +If the size of the array remains fixed, consider reusing the memory on subsequent iterations. We can allocate the array only once and just re-initialize its contents on each iteration: + +.. code:: python + + # pre-allocate the array + a = wp.empty(n, dtype=float, device="cuda:0") + for i in range(100): + # reset the contents + a.zero_() + wp.launch(kernel, dim=a.size, inputs=[a], device="cuda:0") + +This works well if the array size does not change on each iteration. If the size changes but the upper bound is known, we can still pre-allocate a buffer large enough to store all the elements at any iteration. + +.. code:: python + + # pre-allocate a big enough buffer + buffer = wp.empty(MAX_N, dtype=float, device="cuda:0") + for i in range(100): + # get a buffer slice of size n <= MAX_N + n = get_size(i) + a = buffer[:n] + # reset the contents + a.zero_() + wp.launch(kernel, dim=a.size, inputs=[a], device="cuda:0") + +Reusing memory this way can improve performance, but may also add undesirable complexity to our code. The mempool allocators have a useful feature that can improve allocation performance without modifying our original code in any way. + +Release Threshold +^^^^^^^^^^^^^^^^^ + +The memory pool release threshold determines how much reserved memory the allocator should hold on to before releasing it back to the operating system. For programs that frequently allocate and release memory, setting a higher release threshold can improve the performance of allocations. + +By default, the release threshold is set to 0. Setting it to a higher number will reduce the cost of allocations if memory was previously acquired and returned to the pool. + +.. code:: python + + # set the release threshold to reduce re-allocation overhead + wp.set_mempool_release_threshold("cuda:0", 1024**3) + + for i in range(100): + a = wp.zeros(n, dtype=float, device="cuda:0") + wp.launch(kernel, dim=a.size, inputs=[a], device="cuda:0") + +Threshold values between 0 and 1 are interpreted as fractions of available memory. For example, 0.5 means half of the device's physical memory and 1.0 means all of the memory. Greater values are interpreted as an absolute number of bytes. For example, 1024**3 means one GiB of memory. + +This is a simple optimization that can improve the performance of programs without modifying the existing code in any way. + +.. autofunction:: warp.set_mempool_release_threshold + +Graph Allocations +~~~~~~~~~~~~~~~~~ + +Mempool allocators can be used in CUDA graphs, which means that you can capture Warp code that creates arrays: + +.. code:: python + + with wp.ScopedCapture() as capture: + a = wp.full(n, 42, dtype=float) + + wp.capture_launch(capture.graph) + + print(a) + +Capturing allocations is similar to capturing other operations like kernel launches or memory copies. During capture, the operations don't actually execute, but are recorded. To execute the captured operations, we must launch the graph using :func:`wp.capture_launch() `. This is important to keep in mind if you want to use an array that was allocated during graph capture. The array doesn't actually exist until the captured graph is launched. In the snippet above, we would get an error if we tried to print the array before calling :func:`wp.capture_launch() `. + +More generally, the ability to allocate memory during graph capture greatly increases the range of code that can be captured in a graph. This includes any code that creates temporary allocations. CUDA graphs can be used to re-run operations with minimal CPU overhead, which can yield dramatic performance improvements. + +.. _mempool_access: + +Memory Pool Access +~~~~~~~~~~~~~~~~~~ + +On multi-GPU systems that support :ref:`peer access`, we can enable directly accessing a memory pool from a different device: + +.. code:: python + + if wp.is_mempool_access_supported("cuda:0", "cuda:1"): + wp.set_mempool_access_enabled("cuda:0", "cuda:1", True): + +This will allow the memory pool of device ``cuda:0`` to be directly accessed on device ``cuda:1``. Memory pool access is directional, which means that enabling access to ``cuda:0`` from ``cuda:1`` does not automatically enable access to ``cuda:1`` from ``cuda:0``. + +The benefit of enabling memory pool access is that it allows direct memory transfers (DMA) between the devices. This is generally a faster way to copy data, since otherwise the transfer needs to be done using a CPU staging buffer. + +The drawback is that enabling memory pool access can slightly reduce the performance of allocations and deallocations. However, for applications that rely on copying memory between devices, there should be a net benefit. + +It's possible to temporarily enable or disable memory pool access using a scoped manager: + +.. code:: python + + with wp.ScopedMempoolAccess("cuda:0", "cuda:1", True): + a0 = wp.zeros(n, dtype=float, device="cuda:0") + a1 = wp.empty(n, dtype=float, device="cuda:1") + + # use direct memory transfer between GPUs + wp.copy(a1, a0) + +Note that memory pool access only applies to memory allocated using mempool allocators. For memory allocated using default CUDA allocators, we can enable CUDA peer access to get similar benefits. + +Because enabling memory pool access can have drawbacks, Warp does not automatically enable it, even if it's supported. Programs that don't require copying data between GPUs are therefore not affected in any way. + +.. autofunction:: warp.is_mempool_access_supported +.. autofunction:: warp.is_mempool_access_enabled +.. autofunction:: warp.set_mempool_access_enabled + +Limitations +~~~~~~~~~~~ + +Mempool-to-Mempool Copies Between GPUs During Graph Capture +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Copying data between different GPUs will fail during graph capture if the source and destination are allocated using mempool allocators and mempool access is not enabled between devices. Note that this only applies to capturing mempool-to-mempool copies in a graph; copies done outside of graph capture are not affected. Copies within the same mempool (i.e., same device) are also not affected. + +There are two workarounds. If mempool access is supported, you can simply enable mempool access between the devices prior to graph capture, as shown in :ref:`mempool_access`. + +If mempool access is not supported, you will need to pre-allocate the arrays involved in the copy using the default CUDA allocators. This will need to be done before capture begins: + +.. code:: python + + # pre-allocate the arrays with mempools disabled + with wp.ScopedMempool("cuda:0", False): + a0 = wp.zeros(n, dtype=float, device="cuda:0") + with wp.ScopedMempool("cuda:1", False): + a1 = wp.empty(n, dtype=float, device="cuda:1") + + with wp.ScopedCapture("cuda:1") as capture: + wp.copy(a1, a0) + + wp.capture_launch(capture.graph) + +This is due to a limitation in CUDA, which we envision being fixed in the future. diff --git a/_sources/modules/concurrency.rst.txt b/_sources/modules/concurrency.rst.txt new file mode 100644 index 00000000..356bec8d --- /dev/null +++ b/_sources/modules/concurrency.rst.txt @@ -0,0 +1,590 @@ +Concurrency +=========== + +.. currentmodule:: warp + +Asynchronous Operations +----------------------- + +Kernel Launches +~~~~~~~~~~~~~~~ + +Kernels launched on a CUDA device are asynchronous with respect to the host (CPU Python thread). Launching a kernel schedules +its execution on the CUDA device, but the :func:`wp.launch() ` function can return before the kernel execution +completes. This allows us to run some CPU computations while the CUDA kernel is executing, which is an +easy way to introduce parallelism into our programs. + +.. code:: python + + wp.launch(kernel1, dim=n, inputs=[a], device="cuda:0") + + # do some CPU work while the CUDA kernel is running + do_cpu_work() + +Kernels launched on different CUDA devices can execute concurrently. This can be used to tackle independent sub-tasks in parallel on different GPUs while using the CPU to do other useful work: + +.. code:: python + + # launch concurrent kernels on different devices + wp.launch(kernel1, dim=n, inputs=[a0], device="cuda:0") + wp.launch(kernel2, dim=n, inputs=[a1], device="cuda:1") + + # do CPU work while kernels are running on both GPUs + do_cpu_work() + +Launching kernels on the CPU is currently a synchronous operation. In other words, :func:`wp.launch() ` will return only after the kernel has finished executing on the CPU. To run a CUDA kernel and a CPU kernel concurrently, the CUDA kernel should be launched first: + +.. code:: python + + # schedule a kernel on a CUDA device + wp.launch(kernel1, ..., device="cuda:0") + + # run a kernel on the CPU while the CUDA kernel is running + wp.launch(kernel2, ..., device="cpu") + + +Graph Launches +~~~~~~~~~~~~~~ + +The concurrency rules for CUDA graph launches are similar to CUDA kernel launches, except that graphs are not available on the CPU. + +.. code:: python + + # capture work on cuda:0 in a graph + with wp.ScopedCapture(device="cuda:0") as capture0: + do_gpu0_work() + + # capture work on cuda:1 in a graph + with wp.ScopedCapture(device="cuda:1") as capture1: + do_gpu1_work() + + # launch captured graphs on the respective devices concurrently + wp.capture_launch(capture0.graph) + wp.capture_launch(capture1.graph) + + # do some CPU work while the CUDA graphs are running + do_cpu_work() + + +Array Creation +~~~~~~~~~~~~~~ + +Creating CUDA arrays is also asynchronous with respect to the host. It involves allocating memory on the device +and initializing it, which is done under the hood using a kernel launch or an asynchronous CUDA memset operation. + +.. code:: python + + a0 = wp.zeros(n, dtype=float, device="cuda:0") + b0 = wp.ones(n, dtype=float, device="cuda:0") + + a1 = wp.empty(n, dtype=float, device="cuda:1") + b1 = wp.full(n, 42.0, dtype=float, device="cuda:1") + +In this snippet, arrays ``a0`` and ``b0`` are created on device ``cuda:0`` and arrays ``a1`` and ``b1`` are created +on device ``cuda:1``. The operations on the same device are sequential, but each device executes them independently of the +other device, so they can run concurrently. + + +Array Copying +~~~~~~~~~~~~~ + +Copying arrays between devices can also be asynchronous, but there are some details to be aware of. + +Copying from host memory to a CUDA device and copying from a CUDA device to host memory is asynchronous only if the host array is pinned. +Pinned memory allows the CUDA driver to use direct memory transfers (DMA), which are generally faster and can be done without involving the CPU. +There are a couple of drawbacks to using pinned memory: allocation and deallocation is usually slower and there are system-specific limits +on how much pinned memory can be allocated on the system. For this reason, Warp CPU arrays are not pinned by default. You can request a pinned +allocation by passing the ``pinned=True`` flag when creating a CPU array. This is a good option for arrays that are used to copy data +between host and device, especially if asynchronous transfers are desired. + +.. code:: python + + h = wp.zeros(n, dtype=float, device="cpu") + p = wp.zeros(n, dtype=float, device="cpu", pinned=True) + d = wp.zeros(n, dtype=float, device="cuda:0") + + # host-to-device copy + wp.copy(d, h) # synchronous + wp.copy(d, p) # asynchronous + + # device-to-host copy + wp.copy(h, d) # synchronous + wp.copy(p, d) # asynchronous + + # wait for asynchronous operations to complete + wp.synchronize_device("cuda:0") + +Copying between CUDA arrays on the same device is always asynchronous with respect to the host, since it does not involve the CPU: + +.. code:: python + + a = wp.zeros(n, dtype=float, device="cuda:0") + b = wp.empty(n, dtype=float, device="cuda:0") + + # asynchronous device-to-device copy + wp.copy(a, b) + + # wait for transfer to complete + wp.synchronize_device("cuda:0") + +Copying between CUDA arrays on different devices is also asynchronous with respect to the host. Peer-to-peer transfers require +extra care, because CUDA devices are also asynchronous with respect to each other. When copying an array from one GPU to another, +the destination GPU is used to perform the copy, so we need to ensure that prior work on the source GPU completes before the transfer. + +.. code:: python + + a0 = wp.zeros(n, dtype=float, device="cuda:0") + a1 = wp.empty(n, dtype=float, device="cuda:1") + + # wait for outstanding work on the source device to complete to ensure the source array is ready + wp.synchronize_device("cuda:0") + + # asynchronous peer-to-peer copy + wp.copy(a1, a0) + + # wait for the copy to complete on the destination device + wp.synchronize_device("cuda:1") + +Note that peer-to-peer transfers can be accelerated using :ref:`memory pool access ` or :ref:`peer access `, which enables DMA transfers between CUDA devices on supported systems. + +.. _streams: + +Streams +------- + +A CUDA stream is a sequence of operations that execute in order on the GPU. Operations from different streams may run concurrently +and may be interleaved by the device scheduler. + +Warp automatically creates a stream for each CUDA device during initialization. This becomes the current stream for the device. +All kernel launches and memory operations issued on that device are placed on the current stream. + +Creating Streams +~~~~~~~~~~~~~~~~ + +A stream is tied to a particular CUDA device. New streams can be created using the :class:`wp.Stream ` constructor: + +.. code:: python + + s1 = wp.Stream("cuda:0") # create a stream on a specific CUDA device + s2 = wp.Stream() # create a stream on the default device + +If the device parameter is omitted, the default device will be used, which can be managed using :class:`wp.ScopedDevice `. + +For interoperation with external code, it is possible to pass a CUDA stream handle to wrap an external stream: + +.. code:: python + + s3 = wp.Stream("cuda:0", cuda_stream=stream_handle) + +The ``cuda_stream`` argument must be a native stream handle (``cudaStream_t`` or ``CUstream``) passed as a Python integer. +This mechanism is used internally for sharing streams with external frameworks like PyTorch or DLPack. The caller is responsible for ensuring +that the external stream does not get destroyed while it is referenced by a ``wp.Stream`` object. + +Using Streams +~~~~~~~~~~~~~ + +Use :class:`wp.ScopedStream ` to temporarily change the current stream on a device and schedule a sequence of operations on that stream: + +.. code:: python + + stream = wp.Stream("cuda:0") + + with wp.ScopedStream(stream): + a = wp.zeros(n, dtype=float) + b = wp.empty(n, dtype=float) + wp.launch(kernel, dim=n, inputs=[a]) + wp.copy(b, a) + +Since streams are tied to a particular device, :class:`wp.ScopedStream ` subsumes the functionality of :class:`wp.ScopedDevice `. That's why we don't need to explicitly specify the ``device`` argument to each of the calls. + +An important benefit of streams is that they can be used to overlap compute and data transfer operations on the same device, +which can improve the overall throughput of a program by doing those operations in parallel. + +.. code:: python + + with wp.ScopedDevice("cuda:0"): + a = wp.zeros(n, dtype=float) + b = wp.empty(n, dtype=float) + c = wp.ones(n, dtype=float, device="cpu", pinned=True) + + compute_stream = wp.Stream() + transfer_stream = wp.Stream() + + # asynchronous kernel launch on a stream + with wp.ScopedStream(compute_stream) + wp.launch(kernel, dim=a.size, inputs=[a]) + + # asynchronous host-to-device copy on another stream + with wp.ScopedStream(transfer_stream) + wp.copy(b, c) + +The :func:`wp.get_stream() ` function can be used to get the current stream on a device: + +.. code:: python + + s1 = wp.get_stream("cuda:0") # get the current stream on a specific device + s2 = wp.get_stream() # get the current stream on the default device + +The :func:`wp.set_stream() ` function can be used to set the current stream on a device: + +.. code:: python + + wp.set_stream(stream, device="cuda:0") # set the stream on a specific device + wp.set_stream(stream) # set the stream on the default device + +In general, we recommend using :class:`wp.ScopedStream ` rather than :func:`wp.set_stream() `. + +Synchronization +~~~~~~~~~~~~~~~ + +The :func:`wp.synchronize_stream() ` function can be used to block the host thread until the given stream completes: + +.. code:: python + + wp.synchronize_stream(stream) + +In a program that uses multiple streams, this gives a more fine-grained level of control over synchronization behavior +than :func:`wp.synchronize_device() `, which synchronizes all streams on the device. +For example, if a program has multiple compute and transfer streams, the host might only want to wait for one transfer stream +to complete, without waiting for the other streams. By synchronizing only one stream, we allow the others to continue running +concurrently with the host thread. + +.. _cuda_events: + +Events +~~~~~~ + +Functions like :func:`wp.synchronize_device() ` or :func:`wp.synchronize_stream() ` block the CPU thread until work completes on a CUDA device, but they're not intended to synchronize multiple CUDA streams with each other. + +CUDA events provide a mechanism for device-side synchronization between streams. +This kind of synchronization does not block the host thread, but it allows one stream to wait for work on another stream +to complete. + +Like streams, events are tied to a particular device: + +.. code:: python + + e1 = wp.Event("cuda:0") # create an event on a specific CUDA device + e2 = wp.Event() # create an event on the default device + +To wait for a stream to complete some work, we first record the event on that stream. Then we make another stream +wait on that event: + +.. code:: python + + stream1 = wp.Stream("cuda:0") + stream2 = wp.Stream("cuda:0") + event = wp.Event("cuda:0") + + stream1.record_event(event) + stream2.wait_event(event) + +Note that when recording events, the event must be from the same device as the recording stream. +When waiting for events, the waiting stream can be from another device. This allows using events to synchronize streams +on different GPUs. + +If the ``record_event()`` method is called without an event argument, a temporary event will be created, recorded, and returned: + +.. code:: python + + event = stream1.record_event() + stream2.wait_event(event) + +The ``wait_stream()`` method combines the acts of recording and waiting on an event in one call: + +.. code:: python + + stream2.wait_stream(stream1) + +Warp also provides global functions :func:`wp.record_event() `, :func:`wp.wait_event() `, and :func:`wp.wait_stream() ` which operate on the current +stream of the default device: + +.. code:: python + + wp.record_event(event) # record an event on the current stream + wp.wait_event(event) # make the current stream wait for an event + wp.wait_stream(stream) # make the current stream wait for another stream + +These variants are convenient to use inside of :class:`wp.ScopedStream ` and :class:`wp.ScopedDevice ` managers. + +Here is a more complete example with a producer stream that copies data into an array and a consumer stream +that uses the array in a kernel: + +.. code:: python + + with wp.ScopedDevice("cuda:0"): + a = wp.empty(n, dtype=float) + b = wp.ones(n, dtype=float, device="cpu", pinned=True) + + producer_stream = wp.Stream() + consumer_stream = wp.Stream() + + with wp.ScopedStream(producer_stream) + # asynchronous host-to-device copy + wp.copy(a, b) + + # record an event to create a synchronization point for the consumer stream + event = wp.record_event() + + # do some unrelated work in the producer stream + do_other_producer_work() + + with wp.ScopedStream(consumer_stream) + # do some unrelated work in the consumer stream + do_other_consumer_work() + + # wait for the producer copy to complete + wp.wait_event(event) + + # consume the array in a kernel + wp.launch(kernel, dim=a.size, inputs=[a]) + +The function :func:`wp.synchronize_event() ` can be used to block the host thread until a recorded event completes. This is useful when the host wants to wait for a specific synchronization point on a stream, while allowing subsequent stream operations to continue executing asynchronously. + +.. code:: python + + with wp.ScopedDevice("cpu"): + # CPU buffers for readback + a_host = wp.empty(N, dtype=float, pinned=True) + b_host = wp.empty(N, dtype=float, pinned=True) + + with wp.ScopedDevice("cuda:0"): + stream = wp.get_stream() + + # initialize first GPU array + a = wp.full(N, 17, dtype=float) + # asynchronous readback + wp.copy(a_host, a) + # record event + a_event = stream.record_event() + + # initialize second GPU array + b = wp.full(N, 42, dtype=float) + # asynchronous readback + wp.copy(b_host, b) + # record event + b_event = stream.record_event() + + # wait for first array readback to complete + wp.synchronize_event(a_event) + # process first array on the CPU + assert np.array_equal(a_host.numpy(), np.full(N, fill_value=17.0)) + + # wait for second array readback to complete + wp.synchronize_event(b_event) + # process second array on the CPU + assert np.array_equal(b_host.numpy(), np.full(N, fill_value=42.0)) + + +CUDA Default Stream +~~~~~~~~~~~~~~~~~~~ + +Warp avoids using the synchronous CUDA default stream, which is a special stream that synchronizes with all other streams +on the same device. This stream is currently only used during readback operations that are provided for convenience, such as ``array.numpy()`` and ``array.list()``. + +.. code:: python + + stream1 = wp.Stream("cuda:0") + stream2 = wp.Stream("cuda:0") + + with wp.ScopedStream(stream1): + a = wp.zeros(n, dtype=float) + + with wp.ScopedStream(stream2): + b = wp.ones(n, dtype=float) + + print(a) + print(b) + +In the snippet above, there are two arrays that are initialized on different CUDA streams. Printing those arrays triggers +a readback, which is done using the ``array.numpy()`` method. This readback happens on the synchronous CUDA default stream, +which means that no explicit synchronization is required. The reason for this is convenience - printing an array is useful +for debugging purposes, so it's nice not to worry about synchronization. + +The drawback of this approach is that the CUDA default stream (and any methods that use it) cannot be used during graph capture. +The regular :func:`wp.copy() ` function should be used to capture readback operations in a graph. + + +Explicit Streams Arguments +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Several Warp functions accept optional ``stream`` arguments. This allows directly specifying the stream without +using a :class:`wp.ScopedStream ` manager. There are benefits and drawbacks to both approaches, which will be discussed below. +Functions that accept stream arguments directly include :func:`wp.launch() `, :func:`wp.capture_launch() `, and :func:`wp.copy() `. + +To launch a kernel on a specific stream: + +.. code:: python + + wp.launch(kernel, dim=n, inputs=[...], stream=my_stream) + +When launching a kernel with an explicit ``stream`` argument, the ``device`` argument should be omitted, since the device is inferred +from the stream. If both ``stream`` and ``device`` are specified, the ``stream`` argument takes precedence. + +To launch a graph on a specific stream: + +.. code:: python + + wp.capture_launch(graph, stream=my_stream) + +For both kernel and graph launches, specifying the stream directly can be faster than using :class:`wp.ScopedStream `. +While :class:`wp.ScopedStream ` is useful for scheduling a sequence of operations on a specific stream, there is some overhead +in setting and restoring the current stream on the device. This overhead is negligible for larger workloads, +but performance-sensitive code may benefit from specifying the stream directly instead of using :class:`wp.ScopedStream `, especially +for a single kernel or graph launch. + +In addition to these performance considerations, specifying the stream directly can be useful when copying arrays between +two CUDA devices. By default, Warp uses the following rules to determine which stream will be used for the copy: + +- If the destination array is on a CUDA device, use the current stream on the destination device. +- Otherwise, if the source array is on a CUDA device, use the current stream on the source device. + +In the case of peer-to-peer copies, specifying the ``stream`` argument allows overriding these rules, and the copy can +be performed on a stream from any device. + +.. code:: python + + stream0 = wp.get_stream("cuda:0") + stream1 = wp.get_stream("cuda:1") + + a0 = wp.zeros(n, dtype=float, device="cuda:0") + a1 = wp.empty(n, dtype=float, device="cuda:1") + + # wait for the destination array to be ready + stream0.wait_stream(stream1) + + # use the source device stream to do the copy + wp.copy(a1, a0, stream=stream0) + +Notice that we use event synchronization to make the source stream wait for the destination stream prior to the copy. +This is due to the :ref:`stream-ordered memory pool allocators` introduced in Warp 0.14.0. The allocation of the +empty array ``a1`` is scheduled on stream ``stream1``. To avoid use-before-alloc errors, we need to wait until the +allocation completes before using that array on a different stream. + + +Stream Usage Guidance +~~~~~~~~~~~~~~~~~~~~~ + +Stream synchronization can be a tricky business, even for experienced CUDA developers. Consider the following code: + +.. code:: python + + a = wp.zeros(n, dtype=float, device="cuda:0") + + s = wp.Stream("cuda:0") + + wp.launch(kernel, dim=a.size, inputs=[a], stream=s) + +This snippet has a stream synchronization problem that is difficult to detect at first glance. +It's quite possible that the code will work just fine, but it introduces undefined behaviour, +which may lead to incorrect results that manifest only once in a while. The issue is that the kernel is launched +on stream ``s``, which is different than the stream used for creating array ``a``. The array is allocated and +initialized on the current stream of device ``cuda:0``, which means that it might not be ready when stream ``s`` +begins executing the kernel that consumes the array. + +The solution is to synchronize the streams, which can be done like this: + +.. code:: python + + a = wp.zeros(n, dtype=float, device="cuda:0") + + s = wp.Stream("cuda:0") + + # wait for the current stream on cuda:0 to finish initializing the array + s.wait_stream(wp.get_stream("cuda:0")) + + wp.launch(kernel, dim=a.size, inputs=[a], stream=s) + +The :class:`wp.ScopedStream ` manager is designed to alleviate this common problem. It synchronizes the new stream with the +previous stream on the device. Its behavior is equivalent to inserting the ``wait_stream()`` call as shown above. +With :class:`wp.ScopedStream `, we don't need to explicitly sync the new stream with the previous stream: + +.. code:: python + + a = wp.zeros(n, dtype=float, device="cuda:0") + + s = wp.Stream("cuda:0") + + with wp.ScopedStream(s): + wp.launch(kernel, dim=a.size, inputs=[a]) + +This makes :class:`wp.ScopedStream ` the recommended way of getting started with streams in Warp. Using explicit stream arguments +might be slightly more performant, but it requires more attention to stream synchronization mechanics. +If you are a stream novice, consider the following trajectory for integrating streams into your Warp programs: + +- Level 1: Don't. You don't need to use streams to use Warp. Avoiding streams is a perfectly valid and respectable way to live. Many interesting and sophisticated algorithms can be developed without fancy stream juggling. Often it's better to focus on solving a problem in a simple and elegant way, unencumbered by the vagaries of low-level stream management. +- Level 2: Use :class:`wp.ScopedStream `. It helps to avoid some common hard-to-catch issues. There's a little bit of overhead, but it should be negligible if the GPU workloads are large enough. Consider adding streams into your program as a form of targeted optimization, especially if some areas like memory transfers ("feeding the beast") are a known bottleneck. Streams are great for overlapping memory transfers with compute workloads. +- Level 3: Use explicit stream arguments for kernel launches, array copying, etc. This will be the most performant approach that can get you close to the speed of light. You will need to take care of all stream synchronization yourself, but the results can be rewarding in the benchmarks. + +.. _synchronization_guidance: + +Synchronization Guidance +------------------------ + +The general rule with synchronization is to use as little of it as possible, but not less. + +Excessive synchronization can severely limit the performance of programs. Synchronization means that a stream or thread +is waiting for something else to complete. While it's waiting, it's not doing any useful work, which means that any +outstanding work cannot start until the synchronization point is reached. This limits parallel execution, which is +often important for squeezing the most juice out of the collection of hardware components. + +On the other hand, insufficient synchronization can lead to errors or incorrect results if operations execute out-of-order. +A fast program is no good if it can't guarantee correct results. + +Host-side Synchronization +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Host-side synchronization blocks the host thread (Python) until GPU work completes. This is necessary when +you are waiting for some GPU work to complete so that you can access the results on the CPU. + +:func:`wp.synchronize() ` is the most heavy-handed synchronization function, since it synchronizes all the devices in the system. It is almost never the right function to call if performance is important. However, it can sometimes be useful when debugging synchronization-related issues. + +:func:`wp.synchronize_device(device) ` synchronizes a single device, which is generally better and faster. This synchronizes all the streams on the specified device, including streams created by Warp and those created by any other framework. + +:func:`wp.synchronize_stream(stream) ` synchronizes a single stream, which is better still. If the program uses multiple streams, you can wait for a specific one to finish without waiting for the others. This is handy if you have a readback stream that is copying data from the GPU to the CPU. You can wait for the transfer to complete and start processing it on the CPU while other streams are still chugging along on the GPU, in parallel with the host code. + +:func:`wp.synchronize_event(event) ` is the most specific host synchronization function. It blocks the host until an event previously recorded on a CUDA stream completes. This can be used to wait for a specific stream synchronization point to be reached, while allowing subsequent operations on that stream to continue asynchronously. + +Device-side Synchronization +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Device-side synchronization uses CUDA events to make one stream wait for a synchronization point recorded on another stream (:func:`wp.record_event() `, :func:`wp.wait_event() `, :func:`wp.wait_stream() `). + +These functions don't block the host thread, so the CPU can stay busy doing useful work, like preparing the next batch of data +to feed the beast. Events can be used to synchronize streams on the same device or even different CUDA devices, so you can +choreograph very sophisticated multi-stream and multi-device workloads that execute entirely on the available GPUs. +This allows keeping host-side synchronization to a minimum, perhaps only when reading back the final results. + +Synchronization and Graph Capture +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +A CUDA graph captures a sequence of operations on a CUDA stream that can be replayed multiple times with low overhead. +During capture, certain CUDA functions are not allowed, which includes host-side synchronization functions. Using the synchronous +CUDA default stream is also not allowed. The only form of synchronization allowed in CUDA graphs is event-based synchronization. + +A CUDA graph capture must start and end on the same stream, but multiple streams can be used in the middle. This allows CUDA graphs to encompass multiple streams and even multiple GPUs. Events play a crucial role with multi-stream graph capture because they are used to fork and join new streams to the main capture stream, in addition to their regular synchronization duties. + +Here's an example of capturing a multi-GPU graph using a stream on each device: + +.. code:: python + + stream0 = wp.Stream("cuda:0") + stream1 = wp.Stream("cuda:1") + + # use stream0 as the main capture stream + with wp.ScopedCapture(stream=stream0) as capture: + + # fork stream1, which adds it to the set of streams being captured + stream1.wait_stream(stream0) + + # launch a kernel on stream0 + wp.launch(kernel, ..., stream=stream0) + + # launch a kernel on stream1 + wp.launch(kernel, ..., stream=stream1) + + # join stream1 + stream0.wait_stream(stream1) + + # launch the multi-GPU graph, which can execute the captured kernels concurrently + wp.capture_launch(capture.graph) diff --git a/_sources/modules/devices.rst.txt b/_sources/modules/devices.rst.txt new file mode 100644 index 00000000..856bbdaa --- /dev/null +++ b/_sources/modules/devices.rst.txt @@ -0,0 +1,254 @@ +Devices +======= + +Warp assigns unique string aliases to all supported compute devices in the system. There is currently a single CPU device exposed as ``"cpu"``. Each CUDA-capable GPU gets an alias of the form ``"cuda:i"``, where ``i`` is the CUDA device ordinal. This convention should be familiar to users of other popular frameworks like PyTorch. + +It is possible to explicitly target a specific device with each Warp API call using the ``device`` argument:: + + a = wp.zeros(n, device="cpu") + wp.launch(kernel, dim=a.size, inputs=[a], device="cpu") + + b = wp.zeros(n, device="cuda:0") + wp.launch(kernel, dim=b.size, inputs=[b], device="cuda:0") + + c = wp.zeros(n, device="cuda:1") + wp.launch(kernel, dim=c.size, inputs=[c], device="cuda:1") + +.. note:: + + A Warp CUDA device (``"cuda:i"``) corresponds to the primary CUDA context of device ``i``. + This is compatible with frameworks like PyTorch and other software that uses the CUDA Runtime API. + It makes interoperability easy because GPU resources like memory can be shared with Warp. + +.. autoclass:: warp.context.Device + :members: + :exclude-members: init_streams + +Default Device +-------------- + +To simplify writing code, Warp has the concept of **default device**. When the ``device`` argument is omitted from a Warp API call, the default device will be used. + +During Warp initialization, the default device is set to be ``"cuda:0"`` if CUDA is available. Otherwise, the default device is ``"cpu"``. + +The function ``wp.set_device()`` can be used to change the default device:: + + wp.set_device("cpu") + a = wp.zeros(n) + wp.launch(kernel, dim=a.size, inputs=[a]) + + wp.set_device("cuda:0") + b = wp.zeros(n) + wp.launch(kernel, dim=b.size, inputs=[b]) + + wp.set_device("cuda:1") + c = wp.zeros(n) + wp.launch(kernel, dim=c.size, inputs=[c]) + +.. note:: + + For CUDA devices, ``wp.set_device()`` does two things: it sets the Warp default device and it makes the device's CUDA context current. This helps to minimize the number of CUDA context switches in blocks of code targeting a single device. + +For PyTorch users, this function is similar to ``torch.cuda.set_device()``. It is still possible to specify a different device in individual API calls, like in this snippet:: + + # set default device + wp.set_device("cuda:0") + + # use default device + a = wp.zeros(n) + + # use explicit devices + b = wp.empty(n, device="cpu") + c = wp.empty(n, device="cuda:1") + + # use default device + wp.launch(kernel, dim=a.size, inputs=[a]) + + wp.copy(b, a) + wp.copy(c, a) + +Scoped Devices +-------------- + +Another way to manage the default device is using ``wp.ScopedDevice`` objects. They can be arbitrarily nested and restore the previous default device on exit:: + + with wp.ScopedDevice("cpu"): + # alloc and launch on "cpu" + a = wp.zeros(n) + wp.launch(kernel, dim=a.size, inputs=[a]) + + with wp.ScopedDevice("cuda:0"): + # alloc on "cuda:0" + b = wp.zeros(n) + + with wp.ScopedDevice("cuda:1"): + # alloc and launch on "cuda:1" + c = wp.zeros(n) + wp.launch(kernel, dim=c.size, inputs=[c]) + + # launch on "cuda:0" + wp.launch(kernel, dim=b.size, inputs=[b]) + +.. note:: + + For CUDA devices, ``wp.ScopedDevice`` makes the device's CUDA context current and restores the previous CUDA context on exit. This is handy when running Warp scripts as part of a bigger pipeline, because it avoids any side effects of changing the CUDA context in the enclosed code. + +Example: Using ``wp.ScopedDevice`` with multiple GPUs +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The following example shows how to allocate arrays and launch kernels on all available CUDA devices. + +.. code:: python + + import warp as wp + + + @wp.kernel + def inc(a: wp.array(dtype=float)): + tid = wp.tid() + a[tid] = a[tid] + 1.0 + + + # get all CUDA devices + devices = wp.get_cuda_devices() + device_count = len(devices) + + # number of launches + iters = 1000 + + # list of arrays, one per device + arrs = [] + + # loop over all devices + for device in devices: + # use a ScopedDevice to set the target device + with wp.ScopedDevice(device): + # allocate array + a = wp.zeros(250 * 1024 * 1024, dtype=float) + arrs.append(a) + + # launch kernels + for _ in range(iters): + wp.launch(inc, dim=a.size, inputs=[a]) + + # synchronize all devices + wp.synchronize() + + # print results + for i in range(device_count): + print(f"{arrs[i].device} -> {arrs[i].numpy()}") + + +Current CUDA Device +------------------- + +Warp uses the device alias ``"cuda"`` to target the current CUDA device. This allows external code to manage the CUDA device on which to execute Warp scripts. It is analogous to the PyTorch ``"cuda"`` device, which should be familiar to Torch users and simplify interoperation. + +In this snippet, we use PyTorch to manage the current CUDA device and invoke a Warp kernel on that device:: + + def example_function(): + # create a Torch tensor on the current CUDA device + t = torch.arange(10, dtype=torch.float32, device="cuda") + + a = wp.from_torch(t) + + # launch a Warp kernel on the current CUDA device + wp.launch(kernel, dim=a.size, inputs=[a], device="cuda") + + # use Torch to set the current CUDA device and run example_function() on that device + torch.cuda.set_device(0) + example_function() + + # use Torch to change the current CUDA device and re-run example_function() on that device + torch.cuda.set_device(1) + example_function() + +.. note:: + + Using the device alias ``"cuda"`` can be problematic if the code runs in an environment where another part of the code can unpredictably change the CUDA context. Using an explicit CUDA device like ``"cuda:i"`` is recommended to avoid such issues. + +Device Synchronization +---------------------- + +CUDA kernel launches and memory operations can execute asynchronously. This allows for overlapping compute and memory operations on different devices. Warp allows synchronizing the host with outstanding asynchronous operations on a specific device:: + + wp.synchronize_device("cuda:1") + +The ``wp.synchronize_device()`` function offers more fine-grained synchronization than ``wp.synchronize()``, as the latter waits for *all* devices to complete their work. + +Custom CUDA Contexts +-------------------- + +Warp is designed to work with arbitrary CUDA contexts so it can easily integrate into different workflows. + +Applications built on the CUDA Runtime API target the *primary context* of each device. The Runtime API hides CUDA context management under the hood. In Warp, device ``"cuda:i"`` represents the primary context of device ``i``, which aligns with the CUDA Runtime API. + +Applications built on the CUDA Driver API work with CUDA contexts directly and can create custom CUDA contexts on any device. Custom CUDA contexts can be created with specific affinity or interop features that benefit the application. Warp can work with these CUDA contexts as well. + +The special device alias ``"cuda"`` can be used to target the current CUDA context, whether this is a primary or custom context. + +In addition, Warp allows registering new device aliases for custom CUDA contexts, so that they can be explicitly targeted by name. If the ``CUcontext`` pointer is available, it can be used to create a new device alias like this:: + + wp.map_cuda_device("foo", ctypes.c_void_p(context_ptr)) + +Alternatively, if the custom CUDA context was made current by the application, the pointer can be omitted:: + + wp.map_cuda_device("foo") + +In either case, mapping the custom CUDA context allows us to target the context directly using the assigned alias:: + + with wp.ScopedDevice("foo"): + a = wp.zeros(n) + wp.launch(kernel, dim=a.size, inputs=[a]) + +.. _peer_access: + +CUDA Peer Access +---------------- + +CUDA allows direct memory access between different GPUs if the system hardware configuration supports it. Typically, the GPUs should be of the same type and a special interconnect may be required (e.g., NVLINK or PCIe topology). + +During initialization, Warp reports whether peer access is supported on multi-GPU systems: + +.. code:: text + + Warp 0.15.1 initialized: + CUDA Toolkit 11.5, Driver 12.2 + Devices: + "cpu" : "x86_64" + "cuda:0" : "NVIDIA L40" (48 GiB, sm_89, mempool enabled) + "cuda:1" : "NVIDIA L40" (48 GiB, sm_89, mempool enabled) + "cuda:2" : "NVIDIA L40" (48 GiB, sm_89, mempool enabled) + "cuda:3" : "NVIDIA L40" (48 GiB, sm_89, mempool enabled) + CUDA peer access: + Supported fully (all-directional) + +If the message reports that CUDA peer access is ``Supported fully``, it means that every CUDA device can access every other CUDA device in the system. If it says ``Supported partially``, it will be followed by the access matrix that shows which devices can access each other. If it says ``Not supported``, it means that access is not supported between any devices. + +In code, we can check support and enable peer access like this: + +.. code:: python + + if wp.is_peer_access_supported("cuda:0", "cuda:1"): + wp.set_peer_access_enabled("cuda:0", "cuda:1", True): + +This will allow the memory of device ``cuda:0`` to be directly accessed on device ``cuda:1``. Peer access is directional, which means that enabling access to ``cuda:0`` from ``cuda:1`` does not automatically enable access to ``cuda:1`` from ``cuda:0``. + +The benefit of enabling peer access is that it allows direct memory transfers (DMA) between the devices. This is generally a faster way to copy data, since otherwise the transfer needs to be done using a CPU staging buffer. + +The drawback is that enabling peer access can reduce the performance of allocations and deallocations. Programs that don't rely on peer-to-peer memory transfers should leave this setting disabled. + +It's possible to temporarily enable or disable peer access using a scoped manager: + +.. code:: python + + with wp.ScopedPeerAccess("cuda:0", "cuda:1", True): + ... + +.. note:: + + Peer access does not accelerate memory transfers between arrays allocated using the :ref:`stream-ordered memory pool allocators` introduced in Warp 0.14.0. To accelerate memory pool transfers, :ref:`memory pool access` should be enabled instead. + +.. autofunction:: warp.is_peer_access_supported +.. autofunction:: warp.is_peer_access_enabled +.. autofunction:: warp.set_peer_access_enabled diff --git a/_sources/modules/differentiability.rst.txt b/_sources/modules/differentiability.rst.txt new file mode 100644 index 00000000..f5c9bc09 --- /dev/null +++ b/_sources/modules/differentiability.rst.txt @@ -0,0 +1,1064 @@ +Differentiability +================= + +.. currentmodule:: warp + +By default, Warp generates a forward and backward (adjoint) version of each kernel definition. The backward version of a kernel can be used +to compute gradients of loss functions that can be back propagated to machine learning frameworks like PyTorch. + +Arrays that participate in the chain of computation which require gradients should be created with ``requires_grad=True``, for example:: + + a = wp.zeros(1024, dtype=wp.vec3, device="cuda", requires_grad=True) + +The ``wp.Tape`` class can then be used to record kernel launches, and replay them to compute the gradient of a scalar loss function with respect to the kernel inputs:: + + tape = wp.Tape() + + # forward pass + with tape: + wp.launch(kernel=compute1, inputs=[a, b], device="cuda") + wp.launch(kernel=compute2, inputs=[c, d], device="cuda") + wp.launch(kernel=loss, inputs=[d, l], device="cuda") + + # reverse pass + tape.backward(l) + +After the backward pass has completed, the gradients with respect to the inputs are available from the ``array.grad`` attribute:: + + # gradient of loss with respect to input a + print(a.grad) + +Note that gradients are accumulated on the participating buffers, so if you wish to reuse the same buffers for multiple backward passes you should first zero the gradients:: + + tape.zero() + +.. autoclass:: Tape + :members: + +Copying is Differentiable +######################### + +``wp.copy()``, ``wp.clone()``, and ``array.assign()`` are differentiable functions and can participate in the computation graph recorded on the tape. Consider the following examples and their +PyTorch equivalents (for comparison): + +``wp.copy()``:: + + @wp.kernel + def double(x: wp.array(dtype=float), y: wp.array(dtype=float)): + tid = wp.tid() + y[tid] = x[tid] * 2.0 + + x = wp.array(np.arange(3), dtype=float, requires_grad=True) + y = wp.zeros_like(x) + z = wp.zeros_like(x) + + tape = wp.Tape() + with tape: + wp.launch(double, dim=3, inputs=[x, y]) + wp.copy(z, y) + + tape.backward(grads={z: wp.ones_like(x)}) + + print(x.grad) + # [2. 2. 2.] + +Equivalently, in PyTorch:: + + x = torch.tensor(np.arange(3), dtype=torch.float32, requires_grad=True) + y = x * 2 + z = torch.zeros_like(y).copy_(y) + + z.sum().backward() + + print(x.grad) + # tensor([2., 2., 2.]) + +``wp.clone()``:: + + x = wp.array(np.arange(3), dtype=float, requires_grad=True) + y = wp.zeros_like(x) + + tape = wp.Tape() + with tape: + wp.launch(double, dim=3, inputs=[x, y]) + z = wp.clone(y, requires_grad=True) + + tape.backward(grads={z: wp.ones_like(x)}) + + print(x.grad) + # [2. 2. 2.] + +In PyTorch:: + + x = torch.tensor(np.arange(3), dtype=torch.float32, requires_grad=True) + y = x * 2 + z = torch.clone(y) + + z.sum().backward() + print(x.grad) + # tensor([2., 2., 2.]) + +.. note:: In PyTorch, one may clone a tensor x and detach it from the current computation graph by calling + ``x.clone().detach()``. The equivalent in Warp is ``wp.clone(x, requires_grad=False)``. + +``array.assign()``:: + + x = wp.array(np.arange(3), dtype=float, requires_grad=True) + y = wp.zeros_like(x) + z = wp.zeros_like(y) + + tape = wp.Tape() + with tape: + wp.launch(double, dim=3, inputs=[x], outputs=[y]) + z.assign(y) + + tape.backward(grads={z: wp.ones_like(x)}) + + print(x.grad) + # [2. 2. 2.] + +.. note:: ``array.assign()`` is equivalent to ``wp.copy()`` with an additional step that wraps the source array in a Warp array if it is not already a Warp array. + +Jacobians +######### + +To compute the Jacobian matrix :math:`J\in\mathbb{R}^{m\times n}` of a multi-valued function :math:`f: \mathbb{R}^n \to \mathbb{R}^m`, we can evaluate an entire row of the Jacobian in parallel by finding the Jacobian-vector product :math:`J^\top \mathbf{e}`. The vector :math:`\mathbf{e}\in\mathbb{R}^m` selects the indices in the output buffer to differentiate with respect to. +In Warp, instead of passing a scalar loss buffer to the ``tape.backward()`` method, we pass a dictionary ``grads`` mapping from the function output array to the selection vector :math:`\mathbf{e}` having the same type:: + + # compute the Jacobian for a function of single output + jacobian = np.empty((output_dim, input_dim), dtype=np.float32) + + # record computation + tape = wp.Tape() + with tape: + output_buffer = launch_kernels_to_be_differentiated(input_buffer) + + # compute each row of the Jacobian + for output_index in range(output_dim): + + # select which row of the Jacobian we want to compute + select_index = np.zeros(output_dim) + select_index[output_index] = 1.0 + e = wp.array(select_index, dtype=wp.float32) + + # pass input gradients to the output buffer to apply selection + tape.backward(grads={output_buffer: e}) + q_grad_i = tape.gradients[input_buffer] + jacobian[output_index, :] = q_grad_i.numpy() + + # zero gradient arrays for next row + tape.zero() + +When we run simulations independently in parallel, the Jacobian corresponding to the entire system dynamics is a block-diagonal matrix. In this case, we can compute the Jacobian in parallel for all environments by choosing a selection vector that has the output indices active for all environment copies. For example, to get the first rows of the Jacobians of all environments, :math:`\mathbf{e}=[\begin{smallmatrix}1 & 0 & 0 & \dots & 1 & 0 & 0 & \dots\end{smallmatrix}]^\top`, to compute the second rows, :math:`\mathbf{e}=[\begin{smallmatrix}0 & 1 & 0 & \dots & 0 & 1 & 0 & \dots\end{smallmatrix}]^\top`, etc.:: + + # compute the Jacobian for a function over multiple environments in parallel + jacobians = np.empty((num_envs, output_dim, input_dim), dtype=np.float32) + + # record computation + tape = wp.Tape() + with tape: + output_buffer = launch_kernels_to_be_differentiated(input_buffer) + + # compute each row of the Jacobian + for output_index in range(output_dim): + + # select which row of the Jacobian we want to compute + select_index = np.zeros(output_dim) + select_index[output_index] = 1.0 + + # assemble selection vector for all environments (can be precomputed) + e = wp.array(np.tile(select_index, num_envs), dtype=wp.float32) + tape.backward(grads={output_buffer: e}) + q_grad_i = tape.gradients[input_buffer] + jacobians[:, output_index, :] = q_grad_i.numpy().reshape(num_envs, input_dim) + + tape.zero() + + +Custom Gradient Functions +######################### + +Warp supports custom gradient function definitions for user-defined Warp functions. +This allows users to define code that should replace the automatically generated derivatives. + +To differentiate a function :math:`h(x) = f(g(x))` that has a nested call to function :math:`g(x)`, the chain rule is evaluated in the automatic differentiation of :math:`h(x)`: + +.. math:: + + h^\prime(x) = f^\prime({\color{green}{\underset{\textrm{replay}}{g(x)}}}) {\color{blue}{\underset{\textrm{grad}}{g^\prime(x)}}} + +This implies that a function to be compatible with the autodiff engine needs to provide an implementation of its forward version +:math:`\color{green}{g(x)}`, which we refer to as "replay" function (that matches the original function definition by default), +and its derivative :math:`\color{blue}{g^\prime(x)}`, referred to as "grad". + +Both the replay and the grad implementations can be customized by the user. They are defined as follows: + +.. list-table:: Customizing the replay and grad versions of function ``myfunc`` + :widths: 100 + :header-rows: 0 + + * - Forward Function + * - .. code-block:: python + + @wp.func + def myfunc(in1: InType1, ..., inN: InTypeN) -> OutType1, ..., OutTypeM: + return out1, ..., outM + + * - Custom Replay Function + * - .. code-block:: python + + @wp.func_replay(myfunc) + def replay_myfunc(in1: InType1, ..., inN: InTypeN) -> OutType1, ..., OutTypeM: + # Custom forward computations to be executed in the backward pass of a + # function calling `myfunc` go here + # Ensure the output variables match the original forward definition + return out1, ..., outM + + * - Custom Grad Function + * - .. code-block:: python + + @wp.func_grad(myfunc) + def adj_myfunc(in1: InType1, ..., inN: InTypeN, adj_out1: OutType1, ..., adj_outM: OutTypeM): + # Custom adjoint code goes here + # Update the partial derivatives for the inputs as follows: + wp.adjoint[in1] += ... + ... + wp.adjoint[inN] += ... + +.. note:: It is currently not possible to define custom replay or grad functions for functions that + have generic arguments, e.g. ``Any`` or ``wp.array(dtype=Any)``. Replay or grad functions that + themselves use generic arguments are also not yet supported. + +Example 1: Custom Grad Function +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In the following, we define a Warp function ``safe_sqrt`` that computes the square root of a number:: + + @wp.func + def safe_sqrt(x: float): + return wp.sqrt(x) + +To evaluate this function, we define a kernel that applies ``safe_sqrt`` to an array of input values:: + + @wp.kernel + def run_safe_sqrt(xs: wp.array(dtype=float), output: wp.array(dtype=float)): + i = wp.tid() + output[i] = safe_sqrt(xs[i]) + +Calling the kernel for an array of values ``[1.0, 2.0, 0.0]`` yields the expected outputs, the gradients are finite except for the zero input:: + + xs = wp.array([1.0, 2.0, 0.0], dtype=wp.float32, requires_grad=True) + ys = wp.zeros_like(xs) + + tape = wp.Tape() + with tape: + wp.launch(run_safe_sqrt, dim=len(xs), inputs=[xs], outputs=[ys]) + tape.backward(grads={ys: wp.array(np.ones(len(xs)), dtype=wp.float32)}) + + print("ys ", ys) + print("xs.grad", xs.grad) + + # ys [1. 1.4142135 0. ] + # xs.grad [0.5 0.35355338 inf] + +It is often desired to catch nonfinite gradients in the computation graph as they may cause the entire gradient computation to be nonfinite. +To do so, we can define a custom gradient function that replaces the adjoint function for ``safe_sqrt`` which is automatically generated by +decorating the custom gradient code via ``@wp.func_grad(safe_sqrt)``:: + + @wp.func_grad(safe_sqrt) + def adj_safe_sqrt(x: float, adj_ret: float): + if x > 0.0: + wp.adjoint[x] += 1.0 / (2.0 * wp.sqrt(x)) * adj_ret + +.. note:: The function signature of the custom grad code consists of the input arguments of the forward function plus the adjoint variables of the + forward function outputs. To access and modify the partial derivatives of the input arguments, we use the ``wp.adjoint`` dictionary. + The keys of this dictionary are the input arguments of the forward function, and the values are the partial derivatives of the forward function + output with respect to the input argument. + + +Example 2: Custom Replay Function +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In the following, we increment an array index in each thread via :func:`wp.atomic_add() ` and compute +the square root of an input array at the incremented index:: + + @wp.kernel + def test_add(counter: wp.array(dtype=int), input: wp.array(dtype=float), output: wp.array(dtype=float)): + idx = wp.atomic_add(counter, 0, 1) + output[idx] = wp.sqrt(input[idx]) + + def main(): + dim = 16 + use_reversible_increment = False + input = wp.array(np.arange(1, dim + 1), dtype=wp.float32, requires_grad=True) + counter = wp.zeros(1, dtype=wp.int32) + thread_ids = wp.zeros(dim, dtype=wp.int32) + output = wp.zeros(dim, dtype=wp.float32, requires_grad=True) + tape = wp.Tape() + with tape: + if use_reversible_increment: + wp.launch(test_add_diff, dim, inputs=[counter, thread_ids, input], outputs=[output]) + else: + wp.launch(test_add, dim, inputs=[counter, input], outputs=[output]) + + print("counter: ", counter.numpy()) + print("thread_ids: ", thread_ids.numpy()) + print("input: ", input.numpy()) + print("output: ", output.numpy()) + + tape.backward(grads={ + output: wp.array(np.ones(dim), dtype=wp.float32) + }) + print("input.grad: ", input.grad.numpy()) + + if __name__ == "__main__": + main() + +The output of the above code is: + +.. code-block:: js + + counter: [8] + thread_ids: [0 0 0 0 0 0 0 0] + input: [1. 2. 3. 4. 5. 6. 7. 8.] + output: [1. 1.4142135 1.7320508 2. 2.236068 2.4494898 2.6457512 2.828427] + input.grad: [4. 0. 0. 0. 0. 0. 0. 0.] + +The gradient of the input is incorrect because the backward pass involving the atomic operation ``wp.atomic_add()`` does not know which thread ID corresponds +to which input value. +The index returned by the adjoint of ``wp.atomic_add()`` is always zero so that the gradient the first entry of the input array, +i.e. :math:`\frac{1}{2\sqrt{1}} = 0.5`, is accumulated ``dim`` times (hence ``input.grad[0] == 4.0`` and all other entries zero). + +To fix this, we define a new Warp function ``reversible_increment()`` with a custom *replay* definition that stores the thread ID in a separate array:: + + @wp.func + def reversible_increment( + buf: wp.array(dtype=int), + buf_index: int, + value: int, + thread_values: wp.array(dtype=int), + tid: int + ): + next_index = wp.atomic_add(buf, buf_index, value) + # store which thread ID corresponds to which index for the backward pass + thread_values[tid] = next_index + return next_index + + + @wp.func_replay(reversible_increment) + def replay_reversible_increment( + buf: wp.array(dtype=int), + buf_index: int, + value: int, + thread_values: wp.array(dtype=int), + tid: int + ): + return thread_values[tid] + + +Instead of running ``reversible_increment()``, the custom replay code in ``replay_reversible_increment()`` is now executed +during forward phase in the backward pass of the function calling ``reversible_increment()``. +We first stored the array index to each thread ID in the forward pass, and now we retrieve the array index for each thread ID in the backward pass. +That way, the backward pass can reproduce the same addition operation as in the forward pass with exactly the same operands per thread. + +.. warning:: The function signature of the custom replay code must match the forward function signature. + +To use our function we write the following kernel:: + + @wp.kernel + def test_add_diff( + counter: wp.array(dtype=int), + thread_ids: wp.array(dtype=int), + input: wp.array(dtype=float), + output: wp.array(dtype=float) + ): + tid = wp.tid() + idx = reversible_increment(counter, 0, 1, thread_ids, tid) + output[idx] = wp.sqrt(input[idx]) + +Running the ``test_add_diff`` kernel via the previous ``main`` function with ``use_reversible_increment = True``, we now compute correct gradients +for the input array: + +.. code-block:: js + + counter: [8] + thread_ids: [0 1 2 3 4 5 6 7] + input: [1. 2. 3. 4. 5. 6. 7. 8.] + output: [1. 1.4142135 1.7320508 2. 2.236068 2.4494898 2.6457512 2.828427 ] + input.grad: [0.5 0.35355338 0.28867513 0.25 0.2236068 0.20412414 0.18898225 0.17677669] + +Custom Native Functions +####################### + +Users may insert native C++/CUDA code in Warp kernels using ``@func_native`` decorated functions. +These accept native code as strings that get compiled after code generation, and are called within ``@wp.kernel`` functions. +For example:: + + snippet = """ + __shared__ int sum[128]; + + sum[tid] = arr[tid]; + __syncthreads(); + + for (int stride = 64; stride > 0; stride >>= 1) { + if (tid < stride) { + sum[tid] += sum[tid + stride]; + } + __syncthreads(); + } + + if (tid == 0) { + out[0] = sum[0]; + } + """ + + @wp.func_native(snippet) + def reduce(arr: wp.array(dtype=int), out: wp.array(dtype=int), tid: int): + ... + + @wp.kernel + def reduce_kernel(arr: wp.array(dtype=int), out: wp.array(dtype=int)): + tid = wp.tid() + reduce(arr, out, tid) + + N = 128 + x = wp.array(np.arange(N, dtype=int), dtype=int, device=device) + out = wp.zeros(1, dtype=int, device=device) + + wp.launch(kernel=reduce_kernel, dim=N, inputs=[x, out], device=device) + +Notice the use of shared memory here: the Warp library does not expose shared memory as a feature, but the CUDA compiler will +readily accept the above snippet. This means CUDA features not exposed in Warp are still accessible in Warp scripts. +Warp kernels meant for the CPU won't be able to leverage CUDA features of course, but this same mechanism supports pure C++ snippets as well. + +Please bear in mind the following: the thread index in your snippet should be computed in a ``@wp.kernel`` and passed to your snippet, +as in the above example. This means your ``@wp.func_native`` function signature should include the variables used in your snippet, +as well as a thread index of type ``int``. The function body itself should be stubbed with ``...`` (the snippet will be inserted during compilation). + +Should you wish to record your native function on the tape and then subsequently rewind the tape, you must include an adjoint snippet +alongside your snippet as an additional input to the decorator, as in the following example:: + + snippet = """ + out[tid] = a * x[tid] + y[tid]; + """ + adj_snippet = """ + adj_a += x[tid] * adj_out[tid]; + adj_x[tid] += a * adj_out[tid]; + adj_y[tid] += adj_out[tid]; + """ + + @wp.func_native(snippet, adj_snippet) + def saxpy( + a: wp.float32, + x: wp.array(dtype=wp.float32), + y: wp.array(dtype=wp.float32), + out: wp.array(dtype=wp.float32), + tid: int, + ): + ... + + @wp.kernel + def saxpy_kernel( + a: wp.float32, + x: wp.array(dtype=wp.float32), + y: wp.array(dtype=wp.float32), + out: wp.array(dtype=wp.float32) + ): + tid = wp.tid() + saxpy(a, x, y, out, tid) + + N = 128 + a = 2.0 + x = wp.array(np.arange(N, dtype=np.float32), dtype=wp.float32, device=device, requires_grad=True) + y = wp.zeros_like(x1) + out = wp.array(np.arange(N, dtype=np.float32), dtype=wp.float32, device=device) + adj_out = wp.array(np.ones(N, dtype=np.float32), dtype=wp.float32, device=device) + + tape = wp.Tape() + + with tape: + wp.launch(kernel=saxpy_kernel, dim=N, inputs=[a, x, y], outputs=[out], device=device) + + tape.backward(grads={out: adj_out}) + +You may also include a custom replay snippet, to be executed as part of the adjoint (see `Custom Gradient Functions`_ for a full explanation). +Consider the following example:: + + def test_custom_replay_grad(): + num_threads = 8 + counter = wp.zeros(1, dtype=wp.int32) + thread_values = wp.zeros(num_threads, dtype=wp.int32) + inputs = wp.array(np.arange(num_threads, dtype=np.float32), requires_grad=True) + outputs = wp.zeros_like(inputs) + + snippet = """ + int next_index = atomicAdd(counter, 1); + thread_values[tid] = next_index; + """ + replay_snippet = "" + + @wp.func_native(snippet, replay_snippet=replay_snippet) + def reversible_increment( + counter: wp.array(dtype=int), thread_values: wp.array(dtype=int), tid: int + ): + ... + + @wp.kernel + def run_atomic_add( + input: wp.array(dtype=float), + counter: wp.array(dtype=int), + thread_values: wp.array(dtype=int), + output: wp.array(dtype=float), + ): + tid = wp.tid() + reversible_increment(counter, thread_values, tid) + idx = thread_values[tid] + output[idx] = input[idx] ** 2.0 + + tape = wp.Tape() + with tape: + wp.launch( + run_atomic_add, dim=num_threads, inputs=[inputs, counter, thread_values], outputs=[outputs] + ) + + tape.backward(grads={outputs: wp.array(np.ones(num_threads, dtype=np.float32))}) + +By default, ``snippet`` would be called in the backward pass, but in this case, we have a custom replay snippet defined, which is called instead. +In this case, ``replay_snippet`` is a no-op, which is all that we require, since ``thread_values`` are cached in the forward pass. +If we did not have a ``replay_snippet`` defined, ``thread_values`` would be overwritten with counter values that exceed the input array size in the backward pass. + +A native snippet may also include a return statement. If this is the case, you must specify the return type in the native function definition, as in the following example:: + + snippet = """ + float sq = x * x; + return sq; + """ + adj_snippet = """ + adj_x += 2.f * x * adj_ret; + """ + + @wp.func_native(snippet, adj_snippet) + def square(x: float) -> float: ... + + @wp.kernel + def square_kernel(input: wp.array(dtype=Any), output: wp.array(dtype=Any)): + tid = wp.tid() + x = input[tid] + output[tid] = square(x) + + N = 5 + x = wp.array(np.arange(N, dtype=float), dtype=float, requires_grad=True) + y = wp.zeros_like(x) + + tape = wp.Tape() + with tape: + wp.launch(kernel=square_kernel, dim=N, inputs=[x, y]) + + tape.backward(grads={y: wp.ones(N, dtype=float)}) + +Debugging Gradients +################### + +.. note:: + We are continuously expanding the debugging section to provide tools to help users debug gradient computations in upcoming Warp releases. + +Measuring Gradient Accuracy +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. currentmodule:: warp.autograd + +Warp provides utility functions to evaluate the partial Jacobian matrices for input/output argument pairs given to kernel launches. +:func:`jacobian` computes the Jacobian matrix of a kernel using Warp's automatic differentiation engine. +:func:`jacobian_fd` computes the Jacobian matrix of a kernel using finite differences. +:func:`gradcheck` compares the Jacobian matrices computed by the autodiff engine and finite differences to measure the accuracy of the gradients. +:func:`plot_kernel_jacobians` visualizes the Jacobian matrices returned by the :func:`jacobian` and :func:`jacobian_fd` functions. + +.. autofunction:: gradcheck + +.. autofunction:: gradcheck_tape + +.. autofunction:: jacobian + +.. autofunction:: jacobian_fd + +.. autofunction:: plot_kernel_jacobians + + +Example usage +""""""""""""" + +.. code-block:: python + + import warp as wp + import warp.autograd + + @wp.kernel + def my_kernel( + a: wp.array(dtype=float), b: wp.array(dtype=wp.vec3), + out1: wp.array(dtype=wp.vec2), out2: wp.array(dtype=wp.quat), + ): + tid = wp.tid() + ai, bi = a[tid], b[tid] + out1[tid] = wp.vec2(ai * wp.length(bi), -ai * wp.dot(bi, wp.vec3(0.1, 1.0, -0.1))) + out2[tid] = wp.normalize(wp.quat(ai, bi[0], bi[1], bi[2])) + + a = wp.array([2.0, -1.0], dtype=wp.float32, requires_grad=True) + b = wp.array([wp.vec3(3.0, 1.0, 2.0), wp.vec3(-4.0, -1.0, 0.0)], dtype=wp.vec3, requires_grad=True) + out1 = wp.zeros(2, dtype=wp.vec2, requires_grad=True) + out2 = wp.zeros(2, dtype=wp.quat, requires_grad=True) + + # compute the Jacobian matrices for all input/output pairs of the kernel using the autodiff engine + jacs = wp.autograd.jacobian( + my_kernel, dim=len(a), inputs=[a, b], outputs=[out1, out2], + plot_jacobians=True) + +.. image:: ../img/kernel_jacobian_ad.svg + +The ``jacs`` dictionary contains the Jacobian matrices as Warp arrays for all input/output pairs of the kernel. +The ``plot_jacobians`` argument visualizes the Jacobian matrices using the :func:`plot_kernel_jacobians` function. +The subplots show the Jacobian matrices for each input (column) and output (row) pair. +The major (thick) gridlines in these image plots separate the array elements of the respective Warp arrays. Since the kernel arguments ``b``, ``out1``, and ``out2`` are Warp arrays with vector-type elements, +the minor (thin, dashed) gridlines for the corresponding subplots indicate the vector elements. + + +Checking the gradient accuracy using the :func:`gradcheck` function: + +.. code-block:: python + + passed = wp.autograd.gradcheck( + my_kernel, dim=len(a), inputs=[a, b], outputs=[out1, out2], + plot_relative_error=False, plot_absolute_error=False, + raise_exception=False, show_summary=True) + + assert passed + +Output: + + .. list-table:: + :header-rows: 1 + + * - Input + - Output + - Max Abs Error + - Max Rel Error + - Pass + * - a + - out1 + - 1.5134811e-03 + - 4.0449476e-04 + - .. raw:: html + + PASS + * - a + - out2 + - 1.1073798e-04 + - 1.4098687e-03 + - .. raw:: html + + PASS + * - b + - out1 + - 9.8955631e-04 + - 4.6023726e-03 + - .. raw:: html + + PASS + * - b + - out2 + - 3.3494830e-04 + - 1.2789593e-02 + - .. raw:: html + + PASS + + .. raw:: html + + Gradient check for kernel my_kernel passed + + +Instead of evaluating Jacobians for all inputs and outputs of a kernel, we can also limit the computation to a specific subset of input/output pairs:: + + jacs = wp.autograd.jacobian( + my_kernel, dim=len(a), inputs=[a, b], outputs=[out1, out2], + plot_jacobians=True, + # select which input/output pairs to compute the Jacobian for + input_output_mask=[("a", "out1"), ("b", "out2")], + # limit the number of dimensions to query per output array + max_outputs_per_var=5, + ) + +.. image:: ../img/kernel_jacobian_ad_subset.svg + +The returned Jacobian matrices are now limited to the input/output pairs specified in the ``input_output_mask`` argument. +Furthermore, we limited the number of dimensions to evaluate the gradient for to 5 per output array using the ``max_outputs_per_var`` argument. +The corresponding non-evaluated Jacobian elements are set to ``NaN``. + +Furthermore, it is possible to check the gradients of multiple kernels recorded on a :class:`Tape` via the :func:`gradcheck_tape` function. Here, the inputs and outputs of the kernel launches are used to compute the Jacobian matrices for each kernel launch and compare them with finite differences:: + + tape = wp.Tape() + with tape: + wp.launch(my_kernel_1, dim=len(a), inputs=[a, b], outputs=[out1, c]) + wp.launch(my_kernel_2, dim=len(c), inputs=[c], outputs=[out2]) + + passed = wp.autograd.gradcheck_tape(tape, raise_exception=False, show_summary=True) + + assert passed + + +Visualizing Computation Graphs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. currentmodule:: warp + +Computing gradients via automatic differentiation can be error-prone, where arrays sometimes miss the ``requires_grad`` setting, or the wrong arrays are passed between kernels. To help debug gradient computations, Warp provides a +:meth:`Tape.visualize` method that generates a graph visualization of the kernel launches recorded on the tape in the `GraphViz `_ dot format. +The visualization shows how the Warp arrays are used as inputs and outputs of the kernel launches. + +Example usage:: + + import warp as wp + + + @wp.kernel + def add(a: wp.array(dtype=float), b: wp.array(dtype=float), c: wp.array(dtype=float)): + tid = wp.tid() + c[tid] = a[tid] + b[tid] + + + tape = wp.Tape() + + a = wp.array([2.0], dtype=wp.float32) + b = wp.array([3.0], dtype=wp.float32, requires_grad=True) + c = wp.array([4.0], dtype=wp.float32) + d = c + e = wp.array([5.0], dtype=wp.float32, requires_grad=True) + + result = wp.zeros(1, dtype=wp.float32, requires_grad=True) + + with tape: + wp.launch(add, dim=1, inputs=[b, e], outputs=[a]) + + # ScopedTimer registers itself as a scope on the tape + with wp.ScopedTimer("Adder"): + + # we can also manually record scopes + tape.record_scope_begin("Custom Scope") + wp.launch(add, dim=1, inputs=[a, b], outputs=[c]) + tape.record_scope_end() + + wp.launch(add, dim=1, inputs=[d, a], outputs=[result]) + + + tape.visualize( + filename="tape.dot", + array_labels={a: "a", b: "b", c: "c", e: "e", result: "result"}, + ) + +This will generate a file `tape.dot` that can be visualized using the `GraphViz `_ toolset: + +.. code-block:: bash + + dot -Tsvg tape.dot -o tape.svg + +The resulting SVG image can be rendered in a web browser: + +.. image:: ../img/tape.svg + +The graph visualization shows the kernel launches as grey boxes with the ports below them indicating the input and output arguments. Arrays +are shown as ellipses, where gray ellipses indicate arrays that do not require gradients, and green ellipses indicate arrays that have ``requires_grad=True``. + +In the example above we can see that the array ``c`` does not have its ``requires_grad`` flag set, which means gradients will not be propagated through this path. + +.. note:: + Arrays can be labeled with custom names using the ``array_labels`` argument to the ``tape.visualize()`` method. + +Array Overwrite Tracking +^^^^^^^^^^^^^^^^^^^^^^^^^ + +It is a common mistake to inadvertently overwrite an array that participates in the computation graph. For example:: + + with tape as wp.Tape(): + + # step 1 + wp.launch(compute_forces, dim=n, inputs=[pos0, vel0], outputs=[force]) + wp.launch(simulate, dim=n, inputs=[pos0, vel0, force], outputs=[pos1, vel1]) + + # step 2 (error, we are overwriting previous forces) + wp.launch(compute_forces, dim=n, inputs=[pos1, vel1], outputs=[force]) + wp.launch(simulate, dim=n, inputs=[pos1, vel1, force], outputs=[pos2, vel2]) + + # compute loss + wp.launch(loss, dim=n, inputs=[pos2]) + + tape.backward(loss) + +Running the tape backwards will incorrectly compute the gradient of the loss with respect to ``pos0`` and ``vel0``, because ``force`` is overwritten in the second simulation step. +The adjoint of ``force`` with respect to ``pos1`` and ``vel1`` will be correct, because the stored value of ``force`` from the forward pass is still correct, but the adjoint of +``force`` with respect to ``pos0`` and ``vel0`` will be incorrect, because the ``force`` value used in this calculation was calculated in step 2, not step 1. The solution is to allocate +two force arrays, ``force0`` and ``force1``, so that we are not overwriting data that participates in the computation graph. + +This sort of problem boils down to a single pattern to be avoided: writing to an array after reading from it. This typically happens over consecutive kernel launches (A), but it might also happen within a single kernel (B). + +A: Inter-Kernel Overwrite:: + + import warp as wp + + @wp.kernel + def square_kernel(x: wp.array(dtype=float), y: wp.array(dtype=float)): + tid = wp.tid() + y[tid] = x[tid] * x[tid] + + @wp.kernel + def overwrite_kernel(z: wp.array(dtype=float), x: wp.array(dtype=float)): + tid = wp.tid() + x[tid] = z[tid] + + @wp.kernel + def loss_kernel(x: wp.array(dtype=float), loss: wp.array(dtype=float)): + tid = wp.tid() + wp.atomic_add(loss, 0, x[tid]) + + a = wp.array(np.array([1.0, 2.0, 3.0]), dtype=float, requires_grad=True) + b = wp.zeros_like(a) + c = wp.array(np.array([-1.0, -2.0, -3.0]), dtype=float, requires_grad=True) + loss = wp.zeros(1, dtype=float, requires_grad=True) + + tape = wp.Tape() + with tape: + wp.launch(square_kernel, a.shape, inputs=[a], outputs=[b]) + wp.launch(overwrite_kernel, c.shape, inputs=[c], outputs=[a]) + wp.launch(loss_kernel, a.shape, inputs=[a, loss]) + + tape.backward(loss) + + print(a.grad) + # prints [-2. -4. -6.] instead of [2. 4. 6.] + +B: Intra-Kernel Overwrite:: + + import warp as wp + + @wp.kernel + def readwrite_kernel(a: wp.array(dtype=float), b: wp.array(dtype=float)): + tid = wp.tid() + b[tid] = a[tid] * a[tid] + a[tid] = 1.0 + + @wp.kernel + def loss_kernel(x: wp.array(dtype=float), loss: wp.array(dtype=float)): + tid = wp.tid() + wp.atomic_add(loss, 0, x[tid]) + + a = wp.array(np.array([1.0, 2.0, 3.0]), dtype=float, requires_grad=True) + b = wp.zeros_like(a) + loss = wp.zeros(1, dtype=float, requires_grad=True) + + tape = wp.Tape() + with tape: + wp.launch(readwrite_kernel, dim=a.shape, inputs=[a, b]) + wp.launch(loss_kernel, a.shape, inputs=[b, loss]) + + tape.backward(loss) + + print(a.grad) + # prints [2. 2. 2.] instead of [2. 4. 6.] + +If ``wp.config.verify_autograd_array_access = True`` is set, Warp will automatically detect and report array overwrites, covering the above two cases as well as other problematic configurations. +It does so by flagging which kernel array arguments are read from and/or written to in each kernel function during compilation. At runtime, if an array is passed to a kernel argument marked with a read flag, +it is marked as having been read from. Later, if the same array is passed to a kernel argument marked with a write flag, a warning is printed +(recall the pattern we wish to avoid: *write* after *read*). + +.. note:: + Setting ``wp.config.verify_autograd_array_access = True`` will disable kernel caching and force the current module to rebuild. + +.. note:: + Though in-place operations such as ``x[tid] += 1.0`` are technically ``read -> write``, the Warp graph specifically accomodates adjoint accumulation in these cases, so we mark them as write operations. + +.. note:: + This feature does not yet support arrays packed in Warp structs. + +If you make use of :py:meth:`Tape.record_func` in your graph (and so provide your own adjoint callback), be sure to also call :py:meth:`array.mark_write()` and :py:meth:`array.mark_read()`, which will manually mark your arrays as having been written to or read from. + +.. _limitations_and_workarounds: + +Limitations and Workarounds +########################### + +Warp uses a source-code transformation approach to auto-differentiation. +In this approach, the backwards pass must keep a record of intermediate values computed during the forward pass. +This imposes some restrictions on what kernels can do if they are to remain differentiable. + +Dynamic Loops +^^^^^^^^^^^^^ +Currently, dynamic loops are not replayed or unrolled in the backward pass, meaning intermediate values that are +meant to be computed in the loop and may be necessary for adjoint calculations are not updated. + +In the following example, the correct gradient is computed because the ``x`` array adjoints do not depend on intermediate values of ``sum``:: + + @wp.kernel + def dynamic_loop_sum(x: wp.array(dtype=float), + loss: wp.array(dtype=float), + iters: int): + + sum = float(0.0) + + for i in range(iters): + sum += x[i] + + wp.atomic_add(loss, 0, sum) + + iters = 3 + x = wp.full(shape=iters, value=1.0, dtype=float, requires_grad=True) + loss = wp.zeros(1, dtype=float, requires_grad=True) + + with wp.Tape() as tape: + wp.launch(dynamic_loop_sum, dim=1, inputs=[x, loss, iters]) + + tape.backward(loss) + + print(x.grad) + # [1. 1. 1.] (correct) + +In contrast, in this example, the ``x`` array adjoints do depend on intermediate values of ``prod`` +(``adj_x[i] = adj_prod[i+1] * prod[i]``) so the gradients are not correctly computed:: + + @wp.kernel + def dynamic_loop_mult(x: wp.array(dtype=float), + loss: wp.array(dtype=float), + iters: int): + + prod = float(1.0) + + for i in range(iters): + prod *= x[i] + + wp.atomic_add(loss, 0, prod) + + iters = 3 + x = wp.full(shape=iters, value=2.0, dtype=float, requires_grad=True) + loss = wp.zeros(1, dtype=float, requires_grad=True) + + with wp.Tape() as tape: + wp.launch(dynamic_loop_mult, dim=1, inputs=[x, loss, iters]) + + tape.backward(loss) + + print(x.grad) + # [32. 8. 2.] (incorrect) + +We can fix the latter case by switching to a static loop (e.g. replacing ``range(iters)`` with ``range(3)``). Static loops are +automatically unrolled if the number of loop iterations is less than or equal to the ``max_unroll`` parameter set in ``wp.config`` +or at the module level with ``wp.set_module_options({"max_unroll": N})``, and so intermediate values in the loop are individually stored. +But in scenarios where this is not possible, you may consider allocating additional memory to store intermediate values in the dynamic loop. +For example, we can fix the above case like so:: + + @wp.kernel + def dynamic_loop_mult(x: wp.array(dtype=float), + prods: wp.array(dtype=float), + loss: wp.array(dtype=float), + iters: int): + + for i in range(iters): + prods[i+1] = x[i] * prods[i] + + wp.atomic_add(loss, 0, prods[iters]) + + iters = 3 + x = wp.full(shape=iters, value=2.0, dtype=float, requires_grad=True) + prods = wp.full(shape=(iters + 1), value=1.0, dtype=float, requires_grad=True) + loss = wp.zeros(1, dtype=float, requires_grad=True) + + with wp.Tape() as tape: + wp.launch(dynamic_loop_mult, dim=1, inputs=[x, prods, loss, iters]) + + tape.backward(loss) + + print(x.grad) + # [4. 4. 4] (correct) + +Even if an array's adjoints do not depend on `intermediate` local values in a dynamic loop, it may be that +the `final` value of a local variable is necessary for the adjoint computation. Consider the following scenario:: + + @wp.kernel + def dynamic_loop_sum(x: wp.array(dtype=float), + weights: wp.array(dtype=float), + loss: wp.array(dtype=float), + iters: int): + + sum = float(0.0) + norm = float(0.0) + + for i in range(iters): + w = weights[i] + norm += w + sum += x[i]*w + + l = sum / norm + wp.atomic_add(loss, 0, l) + + iters = 3 + x = wp.full(shape=iters, value=1.0, dtype=float, requires_grad=True) + weights = wp.full(shape=iters, value=1.0, dtype=float, requires_grad=True) + loss = wp.zeros(1, dtype=float, requires_grad=True) + + with wp.Tape() as tape: + wp.launch(dynamic_loop_sum, dim=1, inputs=[x, weights, loss, iters]) + + tape.backward(loss) + + print(x.grad) + # [inf inf inf] (incorrect) + +In the backward pass, when computing the adjoint for ``sum``, which is used to compute the adjoint for the ``x`` array, there is a division by zero: +``norm`` is not recomputed in the backward pass because dynamic loops are not replayed. This means that ``norm`` is 0.0 at the start of the adjoint calculation +rather than the value computed in the forward pass, 3.0. + +There is a different remedy for this particular scenario. One can force a dynamic loop to replay in the backward pass by migrating the body of the loop to +a Warp function:: + + @wp.func + def loop(x: wp.array(dtype=float), + weights: wp.array(dtype=float), + iters: int): + + sum = float(0.0) + norm = float(0.0) + + for i in range(iters): + w = weights[i] + norm += w + sum += x[i]*w + + return sum, norm + + @wp.kernel + def dynamic_loop_sum(x: wp.array(dtype=float), + weights: wp.array(dtype=float), + loss: wp.array(dtype=float), + iters: int): + + sum, norm = loop(x, weights, iters) + + l = sum / norm + wp.atomic_add(loss, 0, l) + + iters = 3 + x = wp.full(shape=iters, value=1.0, dtype=float, requires_grad=True) + weights = wp.full(shape=iters, value=0.5, dtype=float, requires_grad=True) + loss = wp.zeros(1, dtype=float, requires_grad=True) + + with wp.Tape() as tape: + wp.launch(dynamic_loop_sum, dim=1, inputs=[x, weights, loss, iters]) + + tape.backward(loss) + + print(x.grad) + # [.33 .33 .33] (correct) + +However, this only works because the ``x`` array adjoints do not require an intermediate +value for ``sum``; they only need the adjoint of ``sum``. In general this workaround is only valid for simple add/subtract operations such as +``+=`` or ``-=``. + +.. note:: + + In a subsequent release, we will enable users to force-unroll dynamic loops in some circumstances, thereby obviating these workarounds. diff --git a/_sources/modules/fem.rst.txt b/_sources/modules/fem.rst.txt new file mode 100644 index 00000000..319781c1 --- /dev/null +++ b/_sources/modules/fem.rst.txt @@ -0,0 +1,493 @@ +warp.fem +======== + +.. currentmodule:: warp.fem + +The ``warp.fem`` module is designed to facilitate solving physical systems described as differential +equations. For example, it can solve PDEs for diffusion, convection, fluid flow, and elasticity problems +using finite-element-based (FEM) Galerkin methods and allows users to quickly experiment with various FEM +formulations and discretization schemes. + +Integrands +---------- + +The core functionality of the FEM toolkit is the ability to integrate constant, linear, and bilinear forms +over various domains and using arbitrary interpolation basis. + +The main mechanism is the :py:func:`.integrand` decorator, for instance: :: + + @integrand + def linear_form( + s: Sample, + domain: Domain, + v: Field, + ): + x = domain(s) + return v(s) * wp.max(0.0, 1.0 - wp.length(x)) + + + @integrand + def diffusion_form(s: Sample, u: Field, v: Field, nu: float): + return nu * wp.dot( + grad(u, s), + grad(v, s), + ) + +Integrands are normal Warp kernels, meaning that they may contain arbitrary Warp functions. +However, they accept a few special parameters: + + - :class:`.Sample` contains information about the current integration sample point, such as the element index and coordinates in element. + - :class:`.Field` designates an abstract field, which will be replaced at call time by the actual field type such as a discrete field, :class:`.field.TestField` or :class:`.field.TrialField` defined over some :class:`.FunctionSpace`, + an :class:`.ImplicitField` wrapping an arbitrary function, or any other of the available :ref:`Fields`. + A field `u` can then be evaluated at a given sample `s` using the usual call operator as ``u(s)``. + Several other operators are available, such as the gradient :func:`.grad`; see the :ref:`Operators` section. + - :class:`.Domain` designates an abstract integration domain. Evaluating a domain at a sample `s` as ``domain(s)`` yields the corresponding world position, + and several operators are also provided domains, for example evaluating the normal at a given sample: :: + + @integrand + def boundary_form( + s: Sample, + domain: Domain, + u: Field, + ): + nor = normal(domain, s) + return wp.dot(u(s), nor) + +Integrands cannot be used directly with :func:`warp.launch`, but must be called through :func:`.integrate` or :func:`.interpolate` instead. +The :class:`.Sample` and :class:`.Domain` arguments of the root integrand (`integrand` parameter passed to :func:`integrate` or :func:`interpolate` call) will get automatically populated. +:class:`.Field` arguments must be passed as a dictionary in the `fields` parameter of the launcher function, and all other standard Warp types arguments must be +passed as a dictionary in the `values` parameter of the launcher function, for instance: :: + + integrate(diffusion_form, fields={"u": trial, "v": test}, values={"nu": viscosity}) + + +Basic Workflow +-------------- + +The typical steps for solving a linearized PDE with ``warp.fem`` are as follow: + + - Define a :class:`.Geometry` (grid, mesh, etc). At the moment, 2D and 3D regular grids, NanoVDB volumes, and triangle, quadrilateral, tetrahedron and hexahedron unstructured meshes are supported. + - Define one or more :class:`.FunctionSpace`, by equipping the geometry elements with shape functions. See :func:`.make_polynomial_space`. At the moment, continuous/discontinuous Lagrange (:math:`P_{k[d]}, Q_{k[d]}`) and Serendipity (:math:`S_k`) shape functions of order :math:`k \leq 3` are supported. + - Define an integration domain, for instance the geometry's cells (:class:`.Cells`) or boundary sides (:class:`.BoundarySides`). + - Integrate linear forms to build the system's right-hand-side. Define a test function over the function space using :func:`.make_test`, + a :class:`.Quadrature` formula (or let the module choose one based on the function space degree), and call :func:`.integrate` with the linear form integrand. + The result is a :class:`warp.array` containing the integration result for each of the function space degrees of freedom. + - Integrate bilinear forms to build the system's left-hand-side. Define a trial function over the function space using :func:`.make_trial`, + then call :func:`.integrate` with the bilinear form integrand. + The result is a :class:`warp.sparse.BsrMatrix` containing the integration result for each pair of test and trial function space degrees of freedom. + Note that the trial and test functions do not have to be defined over the same function space, so that Mixed FEM is supported. + - Solve the resulting linear system using the solver of your choice, for instance one of the built-in :ref:`iterative-linear-solvers`. + + +The following excerpt from the introductory example ``warp/examples/fem/example_diffusion.py`` outlines this procedure: :: + + # Grid geometry + geo = Grid2D(n=50, cell_size=2) + + # Domain and function spaces + domain = Cells(geometry=geo) + scalar_space = make_polynomial_space(geo, degree=3) + + # Right-hand-side (forcing term) + test = make_test(space=scalar_space, domain=domain) + rhs = integrate(linear_form, fields={"v": test}) + + # Weakly-imposed boundary conditions on Y sides + boundary = BoundarySides(geo) + bd_test = make_test(space=scalar_space, domain=boundary) + bd_trial = make_trial(space=scalar_space, domain=boundary) + bd_matrix = integrate(y_mass_form, fields={"u": bd_trial, "v": bd_test}) + + # Diffusion form + trial = make_trial(space=scalar_space, domain=domain) + matrix = integrate(diffusion_form, fields={"u": trial, "v": test}, values={"nu": viscosity}) + + # Assemble linear system (add diffusion and boundary condition matrices) + matrix += bd_matrix * boundary_strength + + # Solve linear system using Conjugate Gradient + x = wp.zeros_like(rhs) + bsr_cg(matrix, b=rhs, x=x) + + +.. note:: + The :func:`.integrate` function does not check that the passed integrands are actually linear or bilinear forms; it is up to the user to ensure that they are. + To solve non-linear PDEs, one can use an iterative procedure and pass the current value of the studied function :class:`.DiscreteField` argument to the integrand, in which + arbitrary operations are permitted. However, the result of the form must remain linear in the test and trial fields. + This strategy is demonstrated in the ``example_mixed_elasticity.py`` example. + +Introductory Examples +--------------------- + +``warp.fem`` ships with a list of examples in the ``warp/examples/fem`` directory demonstrating how to solve classical model problems. + + - ``example_diffusion.py``: 2D diffusion with homogeneous Neumann and Dirichlet boundary conditions + * ``example_diffusion_3d.py``: 3D variant of the diffusion problem + - ``example_convection_diffusion.py``: 2D convection-diffusion using semi-Lagrangian advection + * ``example_convection_diffusion_dg.py``: 2D convection-diffusion using Discontinuous Galerkin with upwind transport and Symmetric Interior Penalty + - ``example_burgers.py``: 2D inviscid Burgers using Discontinuous Galerkin with upwind transport and slope limiter + - ``example_stokes.py``: 2D incompressible Stokes flow using mixed :math:`P_k/P_{k-1}` or :math:`Q_k/P_{(k-1)d}` elements + - ``example_navier_stokes.py``: 2D Navier-Stokes flow using mixed :math:`P_k/P_{k-1}` elements + - ``example_mixed_elasticity.py``: 2D nonlinear elasticity using mixed continuous/discontinuous :math:`S_k/P_{(k-1)d}` elements + - ``example_magnetostatics.py``: 2D magnetostatics using a curl-curl formulation + +Advanced Usages +--------------- + +High-order (curved) geometries +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +It is possible to convert any :class:`.Geometry` (grids and explicit meshes) into a curved, high-order variant by deforming them +with an arbitrary-order displacement field using the :meth:`~.field.GeometryField.make_deformed_geometry` method. +The process looks as follows:: + + # Define a base geometry + base_geo = fem.Grid3D(res=resolution) + + # Define a displacement field on the base geometry + deformation_space = fem.make_polynomial_space(base_geo, degree=deformation_degree, dtype=wp.vec3) + deformation_field = deformation_space.make_field() + + # Populate the field value by interpolating an expression + fem.interpolate(deformation_field_expr, dest=deformation_field) + + # Construct the deformed geometry from the displacement field + deform_geo = deformation_field.make_deformed_geometry() + + # Define new function spaces on the deformed geometry + scalar_space = fem.make_polynomial_space(deformed_geo, degree=scalar_space_degree) + +See ``example_deformed_geometry.py`` for a complete example. +It is also possible to define the deformation field from an :class:`ImplicitField`, as done in ``example_magnetostatics.py``. + +Particle-based quadrature and position lookups +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The global :func:`.lookup` operator allows generating a :class:`.Sample` from an arbitraty position; this is illustrated in +the ``example_streamlines.py`` example for generating 3D streamlines by tracing through a velocity field. + +This operator is also leveraged by the :class:`.PicQuadrature` to provide a way to define Particle-In-Cell quadratures from a set or arbitrary particles, +making it possible to implement MPM-type methods. +The particles are automatically bucketed to the geometry cells when the quadrature is initialized. +This is illustrated by the ``example_stokes_transfer.py`` and ``example_apic_fluid.py`` examples. + +.. note:: + The global :func:`.lookup` operator is not currently supported for :class:`Quadmesh2D`, :class:`Hexmesh` and deformed geometries. + +Nonconforming fields +^^^^^^^^^^^^^^^^^^^^ + +Fields defined on a given :class:`.Geometry` cannot be directly used for integrating over a distinct geometry; +however, they may be wrapped in a :class:`.NonconformingField` for this purpose. +This is leveraged by the ``example_nonconforming_contact.py`` to simulate contacting bodies that are discretized separately. + +.. note:: + Currently :class:`.NonconformingField` does not support wrapping a trial field, so it is not yet possible to define + bilinear forms over different geometries. + +.. note:: + The mapping between the different geometries is position based, so a :class:`.NonconformingField` is not able to accurately capture discontinuous function spaces. + Moreover, the integration domain must support the :func:`.lookup` operator. + +Partitioning +^^^^^^^^^^^^ + +The FEM toolkit makes it possible to perform integration on a subset of the domain elements, +possibly re-indexing degrees of freedom so that the linear system contains the local ones only. +This is useful for distributed computation (see ``warp/examples/fem/example_diffusion_mgpu.py``), or simply to limit the simulation domain to a subset of active cells (see ``warp/examples/fem/example_stokes_transfer.py``). + +A partition of the simulation geometry can be defined using subclasses of :class:`.GeometryPartition` +such as :class:`.LinearGeometryPartition` or :class:`.ExplicitGeometryPartition`. + +Function spaces can then be partitioned according to the geometry partition using :func:`.make_space_partition`. +The resulting :class:`.SpacePartition` object allows translating between space-wide and partition-wide node indices, +and differentiating interior, frontier and exterior nodes. + +The :class:`.Subdomain` class can be used to integrate over a subset of elements while keeping the full set of degrees of freedom, +i.e, without reindexing; this is illustrated in the ``example_streamlines.py`` example to define inflow and outflow boundaries. + +Memory management +^^^^^^^^^^^^^^^^^ + +Several ``warp.fem`` functions require allocating temporary buffers to perform their computations. +If such functions are called many times in a tight loop, those many allocations and de-allocations may degrade performance, +though this is a lot less signifiant when :ref:`mempool_allocators` are in use. +To overcome this issue, a :class:`.cache.TemporaryStore` object may be created to persist and reuse temporary allocations across calls, +either globally using :func:`set_default_temporary_store` or at a per-function granularity using the corresponding argument. + +Visualization +------------- + +Most functions spaces define a :meth:`.FunctionSpace.cells_to_vtk` method that returns a list of VTK-compatible cell types and node indices. +This can be used to visualize discrete fields in VTK-aware viewers such as ``pyvista``, for instance:: + + import numpy as np + import pyvista + + import warp as wp + import warp.fem as fem + + + @fem.integrand + def ackley(s: fem.Sample, domain: fem.Domain): + x = domain(s) + return ( + -20.0 * wp.exp(-0.2 * wp.sqrt(0.5 * wp.length_sq(x))) + - wp.exp(0.5 * (wp.cos(2.0 * wp.pi * x[0]) + wp.cos(2.0 * wp.pi * x[1]))) + + wp.e + + 20.0 + ) + + + # Define field + geo = fem.Grid2D(res=wp.vec2i(64, 64), bounds_lo=wp.vec2(-4.0, -4.0), bounds_hi=wp.vec2(4.0, 4.0)) + space = fem.make_polynomial_space(geo, degree=3) + field = space.make_field() + fem.interpolate(ackley, dest=field) + + # Extract cells, nodes and values + cells, types = field.space.vtk_cells() + nodes = field.space.node_positions().numpy() + values = field.dof_values.numpy() + positions = np.hstack((nodes, values[:, np.newaxis])) + + # Visualize with pyvista + grid = pyvista.UnstructuredGrid(cells, types, positions) + grid.point_data["scalars"] = values + plotter = pyvista.Plotter() + plotter.add_mesh(grid) + plotter.show() + + + +.. _Operators: + +Operators +--------- +.. autofunction:: position(domain: Domain, s: Sample) +.. autofunction:: normal(domain: Domain, s: Sample) +.. autofunction:: lookup(domain: Domain, x) +.. autofunction:: measure(domain: Domain, s: Sample) +.. autofunction:: measure_ratio(domain: Domain, s: Sample) +.. autofunction:: deformation_gradient(domain: Domain, s: Sample) + +.. autofunction:: degree(f: Field) +.. autofunction:: inner(f: Field, s: Sample) +.. autofunction:: outer(f: Field, s: Sample) +.. autofunction:: grad(f: Field, s: Sample) +.. autofunction:: grad_outer(f: Field, s: Sample) +.. autofunction:: div(f: Field, s: Sample) +.. autofunction:: div_outer(f: Field, s: Sample) +.. autofunction:: at_node(f: Field, s: Sample) + +.. autofunction:: D(f: Field, s: Sample) +.. autofunction:: curl(f: Field, s: Sample) +.. autofunction:: jump(f: Field, s: Sample) +.. autofunction:: average(f: Field, s: Sample) +.. autofunction:: grad_jump(f: Field, s: Sample) +.. autofunction:: grad_average(f: Field, s: Sample) + +.. autofunction:: warp.fem.operator.operator + +Integration +----------- + +.. autofunction:: integrate +.. autofunction:: interpolate + +.. autofunction:: integrand + +.. class:: Sample + + Per-sample point context for evaluating fields and related operators in integrands. + +.. autoclass:: Field + +.. autoclass:: Domain + +Geometry +-------- + +.. autoclass:: Grid2D + :show-inheritance: + +.. autoclass:: Trimesh2D + :show-inheritance: + +.. autoclass:: Quadmesh2D + :show-inheritance: + +.. autoclass:: Grid3D + :show-inheritance: + +.. autoclass:: Tetmesh + :show-inheritance: + +.. autoclass:: Hexmesh + :show-inheritance: + +.. autoclass:: Nanogrid + :show-inheritance: + +.. autoclass:: LinearGeometryPartition + +.. autoclass:: ExplicitGeometryPartition + +.. autoclass:: Cells + :show-inheritance: + +.. autoclass:: Sides + :show-inheritance: + +.. autoclass:: BoundarySides + :show-inheritance: + +.. autoclass:: FrontierSides + :show-inheritance: + +.. autoclass:: Subdomain + :show-inheritance: + +.. autoclass:: Polynomial + :members: + +.. autoclass:: RegularQuadrature + :show-inheritance: + +.. autoclass:: NodalQuadrature + :show-inheritance: + +.. autoclass:: ExplicitQuadrature + :show-inheritance: + +.. autoclass:: PicQuadrature + :show-inheritance: + +Function Spaces +--------------- + +.. autofunction:: make_polynomial_space + +.. autofunction:: make_polynomial_basis_space + +.. autofunction:: make_collocated_function_space + +.. autofunction:: make_space_partition + +.. autofunction:: make_space_restriction + +.. autoclass:: ElementBasis + :members: + +.. autoclass:: SymmetricTensorMapper + :show-inheritance: + +.. autoclass:: SkewSymmetricTensorMapper + :show-inheritance: + +.. autoclass:: PointBasisSpace + :show-inheritance: + +.. _Fields: + +Fields +------ + +.. autofunction:: make_test + +.. autofunction:: make_trial + +.. autofunction:: make_discrete_field + +.. autoclass:: ImplicitField + :show-inheritance: + :members: values + +.. autoclass:: UniformField + :show-inheritance: + :members: value + +.. autoclass:: NonconformingField + :show-inheritance: + +.. autofunction:: make_restriction + +Boundary Conditions +------------------- + +.. autofunction:: normalize_dirichlet_projector + +.. autofunction:: project_linear_system + +Memory Management +----------------- + +.. autofunction:: set_default_temporary_store + +.. autofunction:: borrow_temporary + +.. autofunction:: borrow_temporary_like + + +Interfaces +---------- + +Interface classes are not meant to be constructed directly, but can be derived from extend the built-in functionality. + +.. autoclass:: Geometry + :members: cell_count, side_count, boundary_side_count + +.. autoclass:: GeometryPartition + :members: cell_count, side_count, boundary_side_count, frontier_side_count + +.. autoclass:: GeometryDomain + :members: element_kind, dimension, element_count + +.. autoclass:: Quadrature + :members: domain, total_point_count + +.. autoclass:: FunctionSpace + :members: dtype, topology, geometry, dimension, degree, trace, make_field + +.. autoclass:: SpaceTopology + :members: dimension, geometry, node_count, element_node_indices, trace + +.. autoclass:: BasisSpace + :members: topology, geometry, node_positions + +.. autoclass:: warp.fem.space.shape.ShapeFunction + +.. autoclass:: SpacePartition + :members: node_count, owned_node_count, interior_node_count, space_node_indices + +.. autoclass:: SpaceRestriction + :members: node_count + +.. autoclass:: DofMapper + +.. autoclass:: FieldLike + +.. autoclass:: DiscreteField + :show-inheritance: + :members: dof_values + +.. autoclass:: warp.fem.field.FieldRestriction + +.. autoclass:: warp.fem.field.GeometryField + :show-inheritance: + :members: trace, make_deformed_geometry + +.. autoclass:: warp.fem.field.SpaceField + :show-inheritance: + +.. autoclass:: warp.fem.field.TestField + :show-inheritance: + +.. autoclass:: warp.fem.field.TrialField + :show-inheritance: + +.. autoclass:: TemporaryStore + :members: clear + +.. autoclass:: warp.fem.cache.Temporary + :members: array, detach, release diff --git a/_sources/modules/functions.rst.txt b/_sources/modules/functions.rst.txt new file mode 100644 index 00000000..a451050c --- /dev/null +++ b/_sources/modules/functions.rst.txt @@ -0,0 +1,2181 @@ +.. + Autogenerated File - Do not edit. Run build_docs.py to generate. + +.. functions: +.. currentmodule:: warp + +Kernel Reference +================ + +Scalar Types +------------ +.. class:: int8 +.. class:: uint8 +.. class:: int16 +.. class:: uint16 +.. class:: int32 +.. class:: uint32 +.. class:: int64 +.. class:: uint64 +.. class:: float16 +.. class:: float32 +.. class:: float64 +.. class:: bool + + +Vector Types +------------ +.. class:: vec2b +.. class:: vec2ub +.. class:: vec2s +.. class:: vec2us +.. class:: vec2i +.. class:: vec2ui +.. class:: vec2l +.. class:: vec2ul +.. class:: vec2h +.. class:: vec2f +.. class:: vec2d +.. class:: vec3b +.. class:: vec3ub +.. class:: vec3s +.. class:: vec3us +.. class:: vec3i +.. class:: vec3ui +.. class:: vec3l +.. class:: vec3ul +.. class:: vec3h +.. class:: vec3f +.. class:: vec3d +.. class:: vec4b +.. class:: vec4ub +.. class:: vec4s +.. class:: vec4us +.. class:: vec4i +.. class:: vec4ui +.. class:: vec4l +.. class:: vec4ul +.. class:: vec4h +.. class:: vec4f +.. class:: vec4d +.. class:: mat22h +.. class:: mat22f +.. class:: mat22d +.. class:: mat33h +.. class:: mat33f +.. class:: mat33d +.. class:: mat44h +.. class:: mat44f +.. class:: mat44d +.. class:: quath +.. class:: quatf +.. class:: quatd +.. class:: transformh +.. class:: transformf +.. class:: transformd +.. class:: spatial_vectorh +.. class:: spatial_vectorf +.. class:: spatial_vectord +.. class:: spatial_matrixh +.. class:: spatial_matrixf +.. class:: spatial_matrixd + +Generic Types +------------- +.. class:: Int +.. class:: Float +.. class:: Scalar +.. class:: Vector +.. class:: Matrix +.. class:: Quaternion +.. class:: Transformation +.. class:: Array + + +Scalar Math +--------------- +.. py:function:: min(a: Scalar, b: Scalar) -> Scalar + + Return the minimum of two scalars. + + +.. py:function:: min(a: Vector[Any,Scalar], b: Vector[Any,Scalar]) -> Vector[Any,Scalar] + :noindex: + :nocontentsentry: + + Return the element-wise minimum of two vectors. + + +.. py:function:: min(a: Vector[Any,Scalar]) -> Scalar + :noindex: + :nocontentsentry: + + Return the minimum element of a vector ``a``. + + +.. py:function:: max(a: Scalar, b: Scalar) -> Scalar + + Return the maximum of two scalars. + + +.. py:function:: max(a: Vector[Any,Scalar], b: Vector[Any,Scalar]) -> Vector[Any,Scalar] + :noindex: + :nocontentsentry: + + Return the element-wise maximum of two vectors. + + +.. py:function:: max(a: Vector[Any,Scalar]) -> Scalar + :noindex: + :nocontentsentry: + + Return the maximum element of a vector ``a``. + + +.. py:function:: clamp(x: Scalar, low: Scalar, high: Scalar) -> Scalar + + Clamp the value of ``x`` to the range [low, high]. + + +.. py:function:: abs(x: Scalar) -> Scalar + + Return the absolute value of ``x``. + + +.. py:function:: abs(x: Vector[Any,Scalar]) -> Vector[Any,Scalar] + :noindex: + :nocontentsentry: + + Return the absolute values of the elements of ``x``. + + +.. py:function:: sign(x: Scalar) -> Scalar + + Return -1 if ``x`` < 0, return 1 otherwise. + + +.. py:function:: sign(x: Vector[Any,Scalar]) -> Scalar + :noindex: + :nocontentsentry: + + Return -1 for the negative elements of ``x``, and 1 otherwise. + + +.. py:function:: step(x: Scalar) -> Scalar + + Return 1.0 if ``x`` < 0.0, return 0.0 otherwise. + + +.. py:function:: nonzero(x: Scalar) -> Scalar + + Return 1.0 if ``x`` is not equal to zero, return 0.0 otherwise. + + +.. py:function:: sin(x: Float) -> Float + + Return the sine of ``x`` in radians. + + +.. py:function:: cos(x: Float) -> Float + + Return the cosine of ``x`` in radians. + + +.. py:function:: acos(x: Float) -> Float + + Return arccos of ``x`` in radians. Inputs are automatically clamped to [-1.0, 1.0]. + + +.. py:function:: asin(x: Float) -> Float + + Return arcsin of ``x`` in radians. Inputs are automatically clamped to [-1.0, 1.0]. + + +.. py:function:: sqrt(x: Float) -> Float + + Return the square root of ``x``, where ``x`` is positive. + + +.. py:function:: cbrt(x: Float) -> Float + + Return the cube root of ``x``. + + +.. py:function:: tan(x: Float) -> Float + + Return the tangent of ``x`` in radians. + + +.. py:function:: atan(x: Float) -> Float + + Return the arctangent of ``x`` in radians. + + +.. py:function:: atan2(y: Float, x: Float) -> Float + + Return the 2-argument arctangent, atan2, of the point ``(x, y)`` in radians. + + +.. py:function:: sinh(x: Float) -> Float + + Return the sinh of ``x``. + + +.. py:function:: cosh(x: Float) -> Float + + Return the cosh of ``x``. + + +.. py:function:: tanh(x: Float) -> Float + + Return the tanh of ``x``. + + +.. py:function:: degrees(x: Float) -> Float + + Convert ``x`` from radians into degrees. + + +.. py:function:: radians(x: Float) -> Float + + Convert ``x`` from degrees into radians. + + +.. py:function:: log(x: Float) -> Float + + Return the natural logarithm (base-e) of ``x``, where ``x`` is positive. + + +.. py:function:: log2(x: Float) -> Float + + Return the binary logarithm (base-2) of ``x``, where ``x`` is positive. + + +.. py:function:: log10(x: Float) -> Float + + Return the common logarithm (base-10) of ``x``, where ``x`` is positive. + + +.. py:function:: exp(x: Float) -> Float + + Return the value of the exponential function :math:`e^x`. + + +.. py:function:: pow(x: Float, y: Float) -> Float + + Return the result of ``x`` raised to power of ``y``. + + +.. py:function:: round(x: Float) -> Float + + Return the nearest integer value to ``x``, rounding halfway cases away from zero. + + This is the most intuitive form of rounding in the colloquial sense, but can be slower than other options like :func:`warp.rint()`. + Differs from :func:`numpy.round()`, which behaves the same way as :func:`numpy.rint()`. + + +.. py:function:: rint(x: Float) -> Float + + Return the nearest integer value to ``x``, rounding halfway cases to nearest even integer. + + It is generally faster than :func:`warp.round()`. Equivalent to :func:`numpy.rint()`. + + +.. py:function:: trunc(x: Float) -> Float + + Return the nearest integer that is closer to zero than ``x``. + + In other words, it discards the fractional part of ``x``. + It is similar to casting ``float(int(a))``, but preserves the negative sign when ``x`` is in the range [-0.0, -1.0). + Equivalent to :func:`numpy.trunc()` and :func:`numpy.fix()`. + + +.. py:function:: floor(x: Float) -> Float + + Return the largest integer that is less than or equal to ``x``. + + +.. py:function:: ceil(x: Float) -> Float + + Return the smallest integer that is greater than or equal to ``x``. + + +.. py:function:: frac(x: Float) -> Float + + Retrieve the fractional part of ``x``. + + In other words, it discards the integer part of ``x`` and is equivalent to ``x - trunc(x)``. + + +.. py:function:: isfinite(a: Scalar) -> bool + + Return ``True`` if ``a`` is a finite number, otherwise return ``False``. + + +.. py:function:: isfinite(a: Vector[Any,Scalar]) -> bool + :noindex: + :nocontentsentry: + + Return ``True`` if all elements of the vector ``a`` are finite, otherwise return ``False``. + + +.. py:function:: isfinite(a: Quaternion[Scalar]) -> bool + :noindex: + :nocontentsentry: + + Return ``True`` if all elements of the quaternion ``a`` are finite, otherwise return ``False``. + + +.. py:function:: isfinite(a: Matrix[Any,Any,Scalar]) -> bool + :noindex: + :nocontentsentry: + + Return ``True`` if all elements of the matrix ``a`` are finite, otherwise return ``False``. + + +.. py:function:: isnan(a: Scalar) -> bool + + Return ``True`` if ``a`` is NaN, otherwise return ``False``. + + +.. py:function:: isnan(a: Vector[Any,Scalar]) -> bool + :noindex: + :nocontentsentry: + + Return ``True`` if any element of the vector ``a`` is NaN, otherwise return ``False``. + + +.. py:function:: isnan(a: Quaternion[Scalar]) -> bool + :noindex: + :nocontentsentry: + + Return ``True`` if any element of the quaternion ``a`` is NaN, otherwise return ``False``. + + +.. py:function:: isnan(a: Matrix[Any,Any,Scalar]) -> bool + :noindex: + :nocontentsentry: + + Return ``True`` if any element of the matrix ``a`` is NaN, otherwise return ``False``. + + +.. py:function:: isinf(a: Scalar) -> bool + + Return ``True`` if ``a`` is positive or negative infinity, otherwise return ``False``. + + +.. py:function:: isinf(a: Vector[Any,Scalar]) -> bool + :noindex: + :nocontentsentry: + + Return ``True`` if any element of the vector ``a`` is positive or negative infinity, otherwise return ``False``. + + +.. py:function:: isinf(a: Quaternion[Scalar]) -> bool + :noindex: + :nocontentsentry: + + Return ``True`` if any element of the quaternion ``a`` is positive or negative infinity, otherwise return ``False``. + + +.. py:function:: isinf(a: Matrix[Any,Any,Scalar]) -> bool + :noindex: + :nocontentsentry: + + Return ``True`` if any element of the matrix ``a`` is positive or negative infinity, otherwise return ``False``. + + + + +Vector Math +--------------- +.. py:function:: dot(a: Vector[Any,Scalar], b: Vector[Any,Scalar]) -> Scalar + + Compute the dot product between two vectors. + + +.. py:function:: dot(a: Quaternion[Float], b: Quaternion[Float]) -> Float + :noindex: + :nocontentsentry: + + Compute the dot product between two quaternions. + + +.. py:function:: ddot(a: Matrix[Any,Any,Scalar], b: Matrix[Any,Any,Scalar]) -> Scalar + + Compute the double dot product between two matrices. + + +.. py:function:: argmin(a: Vector[Any,Scalar]) -> uint32 + + Return the index of the minimum element of a vector ``a``. [1]_ + + +.. py:function:: argmax(a: Vector[Any,Scalar]) -> uint32 + + Return the index of the maximum element of a vector ``a``. [1]_ + + +.. py:function:: outer(a: Vector[Any,Scalar], b: Vector[Any,Scalar]) -> Matrix[Any,Any,Scalar] + + Compute the outer product ``a*b^T`` for two vectors. + + +.. py:function:: cross(a: Vector[3,Scalar], b: Vector[3,Scalar]) -> Vector[3,Scalar] + + Compute the cross product of two 3D vectors. + + +.. py:function:: skew(vec: Vector[3,Scalar]) -> Matrix[3,3,Scalar] + + Compute the skew-symmetric 3x3 matrix for a 3D vector ``vec``. + + +.. py:function:: length(a: Vector[Any,Float]) -> Float + + Compute the length of a floating-point vector ``a``. + + +.. py:function:: length(a: Quaternion[Float]) -> Float + :noindex: + :nocontentsentry: + + Compute the length of a quaternion ``a``. + + +.. py:function:: length_sq(a: Vector[Any,Scalar]) -> Scalar + + Compute the squared length of a vector ``a``. + + +.. py:function:: length_sq(a: Quaternion[Scalar]) -> Scalar + :noindex: + :nocontentsentry: + + Compute the squared length of a quaternion ``a``. + + +.. py:function:: normalize(a: Vector[Any,Float]) -> Vector[Any,Float] + + Compute the normalized value of ``a``. If ``length(a)`` is 0 then the zero vector is returned. + + +.. py:function:: normalize(a: Quaternion[Float]) -> Quaternion[Float] + :noindex: + :nocontentsentry: + + Compute the normalized value of ``a``. If ``length(a)`` is 0, then the zero quaternion is returned. + + +.. py:function:: transpose(a: Matrix[Any,Any,Scalar]) -> Matrix[Any,Any,Scalar] + + Return the transpose of the matrix ``a``. + + +.. py:function:: inverse(a: Matrix[2,2,Float]) -> Matrix[Any,Any,Float] + + Return the inverse of a 2x2 matrix ``a``. + + +.. py:function:: inverse(a: Matrix[3,3,Float]) -> Matrix[Any,Any,Float] + :noindex: + :nocontentsentry: + + Return the inverse of a 3x3 matrix ``a``. + + +.. py:function:: inverse(a: Matrix[4,4,Float]) -> Matrix[Any,Any,Float] + :noindex: + :nocontentsentry: + + Return the inverse of a 4x4 matrix ``a``. + + +.. py:function:: determinant(a: Matrix[2,2,Float]) -> Float + + Return the determinant of a 2x2 matrix ``a``. + + +.. py:function:: determinant(a: Matrix[3,3,Float]) -> Float + :noindex: + :nocontentsentry: + + Return the determinant of a 3x3 matrix ``a``. + + +.. py:function:: determinant(a: Matrix[4,4,Float]) -> Float + :noindex: + :nocontentsentry: + + Return the determinant of a 4x4 matrix ``a``. + + +.. py:function:: trace(a: Matrix[Any,Any,Scalar]) -> Scalar + + Return the trace of the matrix ``a``. + + +.. py:function:: diag(vec: Vector[Any,Scalar]) -> Matrix[Any,Any,Scalar] + + Returns a matrix with the components of the vector ``vec`` on the diagonal. + + +.. py:function:: get_diag(mat: Matrix[Any,Any,Scalar]) -> Vector[Any,Scalar] + + Returns a vector containing the diagonal elements of the square matrix ``mat``. + + +.. py:function:: cw_mul(a: Vector[Any,Scalar], b: Vector[Any,Scalar]) -> Vector[Any,Scalar] + + Component-wise multiplication of two vectors. + + +.. py:function:: cw_mul(a: Matrix[Any,Any,Scalar], b: Matrix[Any,Any,Scalar]) -> Matrix[Any,Any,Scalar] + :noindex: + :nocontentsentry: + + Component-wise multiplication of two matrices. + + +.. py:function:: cw_div(a: Vector[Any,Scalar], b: Vector[Any,Scalar]) -> Vector[Any,Scalar] + + Component-wise division of two vectors. + + +.. py:function:: cw_div(a: Matrix[Any,Any,Scalar], b: Matrix[Any,Any,Scalar]) -> Matrix[Any,Any,Scalar] + :noindex: + :nocontentsentry: + + Component-wise division of two matrices. + + +.. py:function:: vector(*args: Scalar, length: int32, dtype: Scalar) -> Vector[Any,Scalar] + + Construct a vector of given length and dtype. + + +.. py:function:: matrix(pos: Vector[3,Float], rot: Quaternion[Float], scale: Vector[3,Float], dtype: Float) -> Matrix[4,4,Float] + + Construct a 4x4 transformation matrix that applies the transformations as + Translation(pos)*Rotation(rot)*Scaling(scale) when applied to column vectors, i.e.: y = (TRS)*x + + +.. py:function:: matrix(*args: Scalar, shape: Tuple[int, int], dtype: Scalar) -> Matrix[Any,Any,Scalar] + :noindex: + :nocontentsentry: + + Construct a matrix. If the positional ``arg_types`` are not given, then matrix will be zero-initialized. + + +.. py:function:: identity(n: int32, dtype: Scalar) -> Matrix[Any,Any,Scalar] + + Create an identity matrix with shape=(n,n) with the type given by ``dtype``. + + +.. py:function:: svd3(A: Matrix[3,3,Float], U: Matrix[3,3,Float], sigma: Vector[3,Float], V: Matrix[3,3,Scalar]) -> None + + Compute the SVD of a 3x3 matrix ``A``. The singular values are returned in ``sigma``, + while the left and right basis vectors are returned in ``U`` and ``V``. + + +.. py:function:: qr3(A: Matrix[3,3,Float], Q: Matrix[3,3,Float], R: Matrix[3,3,Float]) -> None + + Compute the QR decomposition of a 3x3 matrix ``A``. The orthogonal matrix is returned in ``Q``, + while the upper triangular matrix is returned in ``R``. + + +.. py:function:: eig3(A: Matrix[3,3,Float], Q: Matrix[3,3,Float], d: Vector[3,Float]) -> None + + Compute the eigendecomposition of a 3x3 matrix ``A``. The eigenvectors are returned as the columns of ``Q``, + while the corresponding eigenvalues are returned in ``d``. + + + + +Quaternion Math +--------------- +.. py:function:: quaternion(dtype: Float) -> Quaternion[Float] + + Construct a zero-initialized quaternion. Quaternions are laid out as + [ix, iy, iz, r], where ix, iy, iz are the imaginary part, and r the real part. + + +.. py:function:: quaternion(x: Float, y: Float, z: Float, w: Float) -> Quaternion[Float] + :noindex: + :nocontentsentry: + + Create a quaternion using the supplied components (type inferred from component type). + + +.. py:function:: quaternion(ijk: Vector[3,Float], real: Float, dtype: Float) -> Quaternion[Float] + :noindex: + :nocontentsentry: + + Create a quaternion using the supplied vector/scalar (type inferred from scalar type). + + +.. py:function:: quaternion(quat: Quaternion[Float], dtype: Float) -> Quaternion[Float] + :noindex: + :nocontentsentry: + + Construct a quaternion of type dtype from another quaternion of a different dtype. + + +.. py:function:: quat_identity(dtype: Float) -> quatf + + Construct an identity quaternion with zero imaginary part and real part of 1.0 + + +.. py:function:: quat_from_axis_angle(axis: Vector[3,Float], angle: Float) -> Quaternion[Float] + + Construct a quaternion representing a rotation of angle radians around the given axis. + + +.. py:function:: quat_to_axis_angle(quat: Quaternion[Float], axis: Vector[3,Float], angle: Float) -> None + + Extract the rotation axis and angle radians a quaternion represents. + + +.. py:function:: quat_from_matrix(mat: Matrix[3,3,Float]) -> Quaternion[Float] + + Construct a quaternion from a 3x3 matrix. + + +.. py:function:: quat_rpy(roll: Float, pitch: Float, yaw: Float) -> Quaternion[Float] + + Construct a quaternion representing a combined roll (z), pitch (x), yaw rotations (y) in radians. + + +.. py:function:: quat_inverse(quat: Quaternion[Float]) -> Quaternion[Float] + + Compute quaternion conjugate. + + +.. py:function:: quat_rotate(quat: Quaternion[Float], vec: Vector[3,Float]) -> Vector[3,Float] + + Rotate a vector by a quaternion. + + +.. py:function:: quat_rotate_inv(quat: Quaternion[Float], vec: Vector[3,Float]) -> Vector[3,Float] + + Rotate a vector by the inverse of a quaternion. + + +.. py:function:: quat_slerp(a: Quaternion[Float], b: Quaternion[Float], t: Float) -> Quaternion[Float] + + Linearly interpolate between two quaternions. + + +.. py:function:: quat_to_matrix(quat: Quaternion[Float]) -> Matrix[3,3,Float] + + Convert a quaternion to a 3x3 rotation matrix. + + + + +Transformations +--------------- +.. py:function:: transformation(pos: Vector[3,Float], rot: Quaternion[Float], dtype: Float) -> Transformation[Float] + + Construct a rigid-body transformation with translation part ``pos`` and rotation ``rot``. + + +.. py:function:: transform_identity(dtype: Float) -> transformf + + Construct an identity transform with zero translation and identity rotation. + + +.. py:function:: transform_get_translation(xform: Transformation[Float]) -> Vector[3,Float] + + Return the translational part of a transform ``xform``. + + +.. py:function:: transform_get_rotation(xform: Transformation[Float]) -> Quaternion[Float] + + Return the rotational part of a transform ``xform``. + + +.. py:function:: transform_multiply(a: Transformation[Float], b: Transformation[Float]) -> Transformation[Float] + + Multiply two rigid body transformations together. + + +.. py:function:: transform_point(xform: Transformation[Float], point: Vector[3,Float]) -> Vector[3,Float] + + Apply the transform to a point ``point`` treating the homogeneous coordinate as w=1 (translation and rotation). + + +.. py:function:: transform_point(mat: Matrix[4,4,Float], point: Vector[3,Float]) -> Vector[3,Float] + :noindex: + :nocontentsentry: + + Apply the transform to a point ``point`` treating the homogeneous coordinate as w=1. + + The transformation is applied treating ``point`` as a column vector, e.g.: ``y = mat*point``. + Note this is in contrast to some libraries, notably USD, which applies transforms to row vectors, ``y^T = point^T*mat^T``. + If the transform is coming from a library that uses row-vectors, then users should transpose the transformation + matrix before calling this method. + + +.. py:function:: transform_vector(xform: Transformation[Float], vec: Vector[3,Float]) -> Vector[3,Float] + + Apply the transform to a vector ``vec`` treating the homogeneous coordinate as w=0 (rotation only). + + +.. py:function:: transform_vector(mat: Matrix[4,4,Float], vec: Vector[3,Float]) -> Vector[3,Float] + :noindex: + :nocontentsentry: + + Apply the transform to a vector ``vec`` treating the homogeneous coordinate as w=0. + + The transformation is applied treating ``vec`` as a column vector, e.g.: ``y = mat*vec`` + note this is in contrast to some libraries, notably USD, which applies transforms to row vectors, ``y^T = vec^T*mat^T``. + If the transform is coming from a library that uses row-vectors, then users should transpose the transformation + matrix before calling this method. + + +.. py:function:: transform_inverse(xform: Transformation[Float]) -> Transformation[Float] + + Compute the inverse of the transformation ``xform``. + + + + +Spatial Math +--------------- +.. py:function:: spatial_vector(dtype: Float) + + Zero-initialize a 6D screw vector. + + +.. py:function:: spatial_vector(w: Vector[3,Float], v: Vector[3,Float], dtype: Float) + :noindex: + :nocontentsentry: + + Construct a 6D screw vector from two 3D vectors. + + +.. py:function:: spatial_vector(wx: Float, wy: Float, wz: Float, vx: Float, vy: Float, vz: Float, dtype: Float) + :noindex: + :nocontentsentry: + + Construct a 6D screw vector from six values. + + +.. py:function:: spatial_adjoint(r: Matrix[3,3,Float], s: Matrix[3,3,Float]) -> Matrix[6,6,Float] + + Construct a 6x6 spatial inertial matrix from two 3x3 diagonal blocks. + + +.. py:function:: spatial_dot(a: Vector[6,Float], b: Vector[6,Float]) -> Float + + Compute the dot product of two 6D screw vectors. + + +.. py:function:: spatial_cross(a: Vector[6,Float], b: Vector[6,Float]) -> Vector[6,Float] + + Compute the cross product of two 6D screw vectors. + + +.. py:function:: spatial_cross_dual(a: Vector[6,Float], b: Vector[6,Float]) -> Vector[6,Float] + + Compute the dual cross product of two 6D screw vectors. + + +.. py:function:: spatial_top(svec: Vector[6,Float]) -> Vector[3,Float] + + Return the top (first) part of a 6D screw vector. + + +.. py:function:: spatial_bottom(svec: Vector[6,Float]) -> Vector[3,Float] + + Return the bottom (second) part of a 6D screw vector. + + +.. py:function:: spatial_jacobian(S: Array[Vector[6,Float]], joint_parents: Array[int32], joint_qd_start: Array[int32], joint_start: int32, joint_count: int32, J_start: int32, J_out: Array[Float]) -> None + + +.. py:function:: spatial_mass(I_s: Array[Matrix[6,6,Float]], joint_start: int32, joint_count: int32, M_start: int32, M: Array[Float]) -> None + + + + +Utility +--------------- +.. py:function:: mlp(weights: Array[float32], bias: Array[float32], activation: Callable, index: int32, x: Array[float32], out: Array[float32]) -> None + + Evaluate a multi-layer perceptron (MLP) layer in the form: ``out = act(weights*x + bias)``. + + :param weights: A layer's network weights with dimensions ``(m, n)``. + :param bias: An array with dimensions ``(n)``. + :param activation: A ``wp.func`` function that takes a single scalar float as input and returns a scalar float as output + :param index: The batch item to process, typically each thread will process one item in the batch, in which case + index should be ``wp.tid()`` + :param x: The feature matrix with dimensions ``(n, b)`` + :param out: The network output with dimensions ``(m, b)`` + + :note: Feature and output matrices are transposed compared to some other frameworks such as PyTorch. + All matrices are assumed to be stored in flattened row-major memory layout (NumPy default). + + +.. py:function:: printf(fmt: str, *args: Any) -> None + + Allows printing formatted strings using C-style format specifiers. + + +.. py:function:: print(value: Any) -> None + + Print variable to stdout + + +.. py:function:: breakpoint() -> None + + Debugger breakpoint + + +.. py:function:: tid() -> int + + Return the current thread index for a 1D kernel launch. + + Note that this is the *global* index of the thread in the range [0, dim) + where dim is the parameter passed to kernel launch. + + This function may not be called from user-defined Warp functions. + + +.. py:function:: tid() -> Tuple[int, int] + :noindex: + :nocontentsentry: + + Return the current thread indices for a 2D kernel launch. + + Use ``i,j = wp.tid()`` syntax to retrieve the coordinates inside the kernel thread grid. + + This function may not be called from user-defined Warp functions. + + +.. py:function:: tid() -> Tuple[int, int, int] + :noindex: + :nocontentsentry: + + Return the current thread indices for a 3D kernel launch. + + Use ``i,j,k = wp.tid()`` syntax to retrieve the coordinates inside the kernel thread grid. + + This function may not be called from user-defined Warp functions. + + +.. py:function:: tid() -> Tuple[int, int, int, int] + :noindex: + :nocontentsentry: + + Return the current thread indices for a 4D kernel launch. + + Use ``i,j,k,l = wp.tid()`` syntax to retrieve the coordinates inside the kernel thread grid. + + This function may not be called from user-defined Warp functions. + + +.. py:function:: select(cond: bool, value_if_false: Any, value_if_true: Any) -> Any + + Select between two arguments, if ``cond`` is ``False`` then return ``value_if_false``, otherwise return ``value_if_true`` + + +.. py:function:: select(cond: int8, value_if_false: Any, value_if_true: Any) -> Any + :noindex: + :nocontentsentry: + + Select between two arguments, if ``cond`` is ``False`` then return ``value_if_false``, otherwise return ``value_if_true`` + + +.. py:function:: select(cond: uint8, value_if_false: Any, value_if_true: Any) -> Any + :noindex: + :nocontentsentry: + + Select between two arguments, if ``cond`` is ``False`` then return ``value_if_false``, otherwise return ``value_if_true`` + + +.. py:function:: select(cond: int16, value_if_false: Any, value_if_true: Any) -> Any + :noindex: + :nocontentsentry: + + Select between two arguments, if ``cond`` is ``False`` then return ``value_if_false``, otherwise return ``value_if_true`` + + +.. py:function:: select(cond: uint16, value_if_false: Any, value_if_true: Any) -> Any + :noindex: + :nocontentsentry: + + Select between two arguments, if ``cond`` is ``False`` then return ``value_if_false``, otherwise return ``value_if_true`` + + +.. py:function:: select(cond: int32, value_if_false: Any, value_if_true: Any) -> Any + :noindex: + :nocontentsentry: + + Select between two arguments, if ``cond`` is ``False`` then return ``value_if_false``, otherwise return ``value_if_true`` + + +.. py:function:: select(cond: uint32, value_if_false: Any, value_if_true: Any) -> Any + :noindex: + :nocontentsentry: + + Select between two arguments, if ``cond`` is ``False`` then return ``value_if_false``, otherwise return ``value_if_true`` + + +.. py:function:: select(cond: int64, value_if_false: Any, value_if_true: Any) -> Any + :noindex: + :nocontentsentry: + + Select between two arguments, if ``cond`` is ``False`` then return ``value_if_false``, otherwise return ``value_if_true`` + + +.. py:function:: select(cond: uint64, value_if_false: Any, value_if_true: Any) -> Any + :noindex: + :nocontentsentry: + + Select between two arguments, if ``cond`` is ``False`` then return ``value_if_false``, otherwise return ``value_if_true`` + + +.. py:function:: select(arr: Array[Any], value_if_false: Any, value_if_true: Any) -> Any + :noindex: + :nocontentsentry: + + Select between two arguments, if ``arr`` is null then return ``value_if_false``, otherwise return ``value_if_true`` + + +.. py:function:: atomic_add(arr: Array[Any], i: int32, value: Any) -> Any + + Atomically add ``value`` onto ``arr[i]`` and return the old value. + + +.. py:function:: atomic_add(arr: Array[Any], i: int32, j: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically add ``value`` onto ``arr[i,j]`` and return the old value. + + +.. py:function:: atomic_add(arr: Array[Any], i: int32, j: int32, k: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically add ``value`` onto ``arr[i,j,k]`` and return the old value. + + +.. py:function:: atomic_add(arr: Array[Any], i: int32, j: int32, k: int32, l: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically add ``value`` onto ``arr[i,j,k,l]`` and return the old value. + + +.. py:function:: atomic_add(arr: FabricArray[Any], i: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically add ``value`` onto ``arr[i]`` and return the old value. + + +.. py:function:: atomic_add(arr: FabricArray[Any], i: int32, j: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically add ``value`` onto ``arr[i,j]`` and return the old value. + + +.. py:function:: atomic_add(arr: FabricArray[Any], i: int32, j: int32, k: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically add ``value`` onto ``arr[i,j,k]`` and return the old value. + + +.. py:function:: atomic_add(arr: FabricArray[Any], i: int32, j: int32, k: int32, l: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically add ``value`` onto ``arr[i,j,k,l]`` and return the old value. + + +.. py:function:: atomic_add(arr: IndexedFabricArray[Any], i: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically add ``value`` onto ``arr[i]`` and return the old value. + + +.. py:function:: atomic_add(arr: IndexedFabricArray[Any], i: int32, j: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically add ``value`` onto ``arr[i,j]`` and return the old value. + + +.. py:function:: atomic_add(arr: IndexedFabricArray[Any], i: int32, j: int32, k: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically add ``value`` onto ``arr[i,j,k]`` and return the old value. + + +.. py:function:: atomic_add(arr: IndexedFabricArray[Any], i: int32, j: int32, k: int32, l: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically add ``value`` onto ``arr[i,j,k,l]`` and return the old value. + + +.. py:function:: atomic_sub(arr: Array[Any], i: int32, value: Any) -> Any + + Atomically subtract ``value`` onto ``arr[i]`` and return the old value. + + +.. py:function:: atomic_sub(arr: Array[Any], i: int32, j: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically subtract ``value`` onto ``arr[i,j]`` and return the old value. + + +.. py:function:: atomic_sub(arr: Array[Any], i: int32, j: int32, k: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically subtract ``value`` onto ``arr[i,j,k]`` and return the old value. + + +.. py:function:: atomic_sub(arr: Array[Any], i: int32, j: int32, k: int32, l: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically subtract ``value`` onto ``arr[i,j,k,l]`` and return the old value. + + +.. py:function:: atomic_sub(arr: FabricArray[Any], i: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically subtract ``value`` onto ``arr[i]`` and return the old value. + + +.. py:function:: atomic_sub(arr: FabricArray[Any], i: int32, j: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically subtract ``value`` onto ``arr[i,j]`` and return the old value. + + +.. py:function:: atomic_sub(arr: FabricArray[Any], i: int32, j: int32, k: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically subtract ``value`` onto ``arr[i,j,k]`` and return the old value. + + +.. py:function:: atomic_sub(arr: FabricArray[Any], i: int32, j: int32, k: int32, l: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically subtract ``value`` onto ``arr[i,j,k,l]`` and return the old value. + + +.. py:function:: atomic_sub(arr: IndexedFabricArray[Any], i: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically subtract ``value`` onto ``arr[i]`` and return the old value. + + +.. py:function:: atomic_sub(arr: IndexedFabricArray[Any], i: int32, j: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically subtract ``value`` onto ``arr[i,j]`` and return the old value. + + +.. py:function:: atomic_sub(arr: IndexedFabricArray[Any], i: int32, j: int32, k: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically subtract ``value`` onto ``arr[i,j,k]`` and return the old value. + + +.. py:function:: atomic_sub(arr: IndexedFabricArray[Any], i: int32, j: int32, k: int32, l: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Atomically subtract ``value`` onto ``arr[i,j,k,l]`` and return the old value. + + +.. py:function:: atomic_min(arr: Array[Any], i: int32, value: Any) -> Any + + Compute the minimum of ``value`` and ``arr[i]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_min(arr: Array[Any], i: int32, j: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the minimum of ``value`` and ``arr[i,j]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_min(arr: Array[Any], i: int32, j: int32, k: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the minimum of ``value`` and ``arr[i,j,k]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_min(arr: Array[Any], i: int32, j: int32, k: int32, l: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the minimum of ``value`` and ``arr[i,j,k,l]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_min(arr: FabricArray[Any], i: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the minimum of ``value`` and ``arr[i]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_min(arr: FabricArray[Any], i: int32, j: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the minimum of ``value`` and ``arr[i,j]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_min(arr: FabricArray[Any], i: int32, j: int32, k: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the minimum of ``value`` and ``arr[i,j,k]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_min(arr: FabricArray[Any], i: int32, j: int32, k: int32, l: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the minimum of ``value`` and ``arr[i,j,k,l]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_min(arr: IndexedFabricArray[Any], i: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the minimum of ``value`` and ``arr[i]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_min(arr: IndexedFabricArray[Any], i: int32, j: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the minimum of ``value`` and ``arr[i,j]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_min(arr: IndexedFabricArray[Any], i: int32, j: int32, k: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the minimum of ``value`` and ``arr[i,j,k]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_min(arr: IndexedFabricArray[Any], i: int32, j: int32, k: int32, l: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the minimum of ``value`` and ``arr[i,j,k,l]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_max(arr: Array[Any], i: int32, value: Any) -> Any + + Compute the maximum of ``value`` and ``arr[i]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_max(arr: Array[Any], i: int32, j: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the maximum of ``value`` and ``arr[i,j]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_max(arr: Array[Any], i: int32, j: int32, k: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the maximum of ``value`` and ``arr[i,j,k]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_max(arr: Array[Any], i: int32, j: int32, k: int32, l: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the maximum of ``value`` and ``arr[i,j,k,l]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_max(arr: FabricArray[Any], i: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the maximum of ``value`` and ``arr[i]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_max(arr: FabricArray[Any], i: int32, j: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the maximum of ``value`` and ``arr[i,j]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_max(arr: FabricArray[Any], i: int32, j: int32, k: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the maximum of ``value`` and ``arr[i,j,k]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_max(arr: FabricArray[Any], i: int32, j: int32, k: int32, l: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the maximum of ``value`` and ``arr[i,j,k,l]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_max(arr: IndexedFabricArray[Any], i: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the maximum of ``value`` and ``arr[i]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_max(arr: IndexedFabricArray[Any], i: int32, j: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the maximum of ``value`` and ``arr[i,j]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_max(arr: IndexedFabricArray[Any], i: int32, j: int32, k: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the maximum of ``value`` and ``arr[i,j,k]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: atomic_max(arr: IndexedFabricArray[Any], i: int32, j: int32, k: int32, l: int32, value: Any) -> Any + :noindex: + :nocontentsentry: + + Compute the maximum of ``value`` and ``arr[i,j,k,l]``, atomically update the array, and return the old value. + + .. note:: The operation is only atomic on a per-component basis for vectors and matrices. + + +.. py:function:: lerp(a: Float, b: Float, t: Float) -> Float + + Linearly interpolate two values ``a`` and ``b`` using factor ``t``, computed as ``a*(1-t) + b*t`` + + +.. py:function:: lerp(a: Vector[Any,Float], b: Vector[Any,Float], t: Float) -> Vector[Any,Float] + :noindex: + :nocontentsentry: + + Linearly interpolate two values ``a`` and ``b`` using factor ``t``, computed as ``a*(1-t) + b*t`` + + +.. py:function:: lerp(a: Matrix[Any,Any,Float], b: Matrix[Any,Any,Float], t: Float) -> Matrix[Any,Any,Float] + :noindex: + :nocontentsentry: + + Linearly interpolate two values ``a`` and ``b`` using factor ``t``, computed as ``a*(1-t) + b*t`` + + +.. py:function:: lerp(a: Quaternion[Float], b: Quaternion[Float], t: Float) -> Quaternion[Float] + :noindex: + :nocontentsentry: + + Linearly interpolate two values ``a`` and ``b`` using factor ``t``, computed as ``a*(1-t) + b*t`` + + +.. py:function:: lerp(a: Transformation[Float], b: Transformation[Float], t: Float) -> Transformation[Float] + :noindex: + :nocontentsentry: + + Linearly interpolate two values ``a`` and ``b`` using factor ``t``, computed as ``a*(1-t) + b*t`` + + +.. py:function:: smoothstep(a: Float, b: Float, x: Float) -> Float + + Smoothly interpolate between two values ``a`` and ``b`` using a factor ``x``, + and return a result between 0 and 1 using a cubic Hermite interpolation after clamping. + + +.. py:function:: expect_near(a: Float, b: Float, tolerance: Float) -> None + + Prints an error to stdout if ``a`` and ``b`` are not closer than tolerance in magnitude + + +.. py:function:: expect_near(a: vec3f, b: vec3f, tolerance: float32) -> None + :noindex: + :nocontentsentry: + + Prints an error to stdout if any element of ``a`` and ``b`` are not closer than tolerance in magnitude + + + + +Geometry +--------------- +.. autoclass:: BvhQuery +.. py:function:: bvh_query_aabb(id: uint64, low: vec3f, high: vec3f) -> bvh_query_t + + Construct an axis-aligned bounding box query against a BVH object. + + This query can be used to iterate over all bounds inside a BVH. + + :param id: The BVH identifier + :param low: The lower bound of the bounding box in BVH space + :param high: The upper bound of the bounding box in BVH space + + +.. py:function:: bvh_query_ray(id: uint64, start: vec3f, dir: vec3f) -> bvh_query_t + + Construct a ray query against a BVH object. + + This query can be used to iterate over all bounds that intersect the ray. + + :param id: The BVH identifier + :param start: The start of the ray in BVH space + :param dir: The direction of the ray in BVH space + + +.. py:function:: bvh_query_next(query: bvh_query_t, index: int32) -> bool + + Move to the next bound returned by the query. + The index of the current bound is stored in ``index``, returns ``False`` if there are no more overlapping bound. + + +.. autoclass:: MeshQueryPoint +.. py:function:: mesh_query_point(id: uint64, point: vec3f, max_dist: float32) -> mesh_query_point_t + + Computes the closest point on the :class:`Mesh` with identifier ``id`` to the given ``point`` in space. + + Identifies the sign of the distance using additional ray-casts to determine if the point is inside or outside. + This method is relatively robust, but does increase computational cost. + See below for additional sign determination methods. + + :param id: The mesh identifier + :param point: The point in space to query + :param max_dist: Mesh faces above this distance will not be considered by the query + + +.. py:function:: mesh_query_point_no_sign(id: uint64, point: vec3f, max_dist: float32) -> mesh_query_point_t + + Computes the closest point on the :class:`Mesh` with identifier ``id`` to the given ``point`` in space. + + This method does not compute the sign of the point (inside/outside) which makes it faster than other point query methods. + + :param id: The mesh identifier + :param point: The point in space to query + :param max_dist: Mesh faces above this distance will not be considered by the query + + +.. py:function:: mesh_query_furthest_point_no_sign(id: uint64, point: vec3f, min_dist: float32) -> mesh_query_point_t + + Computes the furthest point on the mesh with identifier `id` to the given point in space. + + This method does not compute the sign of the point (inside/outside). + + :param id: The mesh identifier + :param point: The point in space to query + :param min_dist: Mesh faces below this distance will not be considered by the query + + +.. py:function:: mesh_query_point_sign_normal(id: uint64, point: vec3f, max_dist: float32, epsilon: float32) -> mesh_query_point_t + + Computes the closest point on the :class:`Mesh` with identifier ``id`` to the given ``point`` in space. + + Identifies the sign of the distance (inside/outside) using the angle-weighted pseudo normal. + This approach to sign determination is robust for well conditioned meshes that are watertight and non-self intersecting. + It is also comparatively fast to compute. + + :param id: The mesh identifier + :param point: The point in space to query + :param max_dist: Mesh faces above this distance will not be considered by the query + :param epsilon: Epsilon treating distance values as equal, when locating the minimum distance vertex/face/edge, as a + fraction of the average edge length, also for treating closest point as being on edge/vertex default 1e-3 + + +.. py:function:: mesh_query_point_sign_winding_number(id: uint64, point: vec3f, max_dist: float32, accuracy: float32, threshold: float32) -> mesh_query_point_t + + Computes the closest point on the :class:`Mesh` with identifier ``id`` to the given point in space. + + Identifies the sign using the winding number of the mesh relative to the query point. This method of sign determination is robust for poorly conditioned meshes + and provides a smooth approximation to sign even when the mesh is not watertight. This method is the most robust and accurate of the sign determination meshes + but also the most expensive. + + .. note:: The :class:`Mesh` object must be constructed with ``support_winding_number=True`` for this method to return correct results. + + :param id: The mesh identifier + :param point: The point in space to query + :param max_dist: Mesh faces above this distance will not be considered by the query + :param accuracy: Accuracy for computing the winding number with fast winding number method utilizing second-order dipole approximation, default 2.0 + :param threshold: The threshold of the winding number to be considered inside, default 0.5 + + +.. autoclass:: MeshQueryRay +.. py:function:: mesh_query_ray(id: uint64, start: vec3f, dir: vec3f, max_t: float32) -> mesh_query_ray_t + + Computes the closest ray hit on the :class:`Mesh` with identifier ``id``. + + :param id: The mesh identifier + :param start: The start point of the ray + :param dir: The ray direction (should be normalized) + :param max_t: The maximum distance along the ray to check for intersections + + +.. autoclass:: MeshQueryAABB +.. py:function:: mesh_query_aabb(id: uint64, low: vec3f, high: vec3f) -> mesh_query_aabb_t + + Construct an axis-aligned bounding box query against a :class:`Mesh`. + + This query can be used to iterate over all triangles inside a volume. + + :param id: The mesh identifier + :param low: The lower bound of the bounding box in mesh space + :param high: The upper bound of the bounding box in mesh space + + +.. py:function:: mesh_query_aabb_next(query: mesh_query_aabb_t, index: int32) -> bool + + Move to the next triangle overlapping the query bounding box. + + The index of the current face is stored in ``index``, returns ``False`` if there are no more overlapping triangles. + + +.. py:function:: mesh_eval_position(id: uint64, face: int32, bary_u: float32, bary_v: float32) -> vec3f + + Evaluates the position on the :class:`Mesh` given a face index and barycentric coordinates. + + +.. py:function:: mesh_eval_velocity(id: uint64, face: int32, bary_u: float32, bary_v: float32) -> vec3f + + Evaluates the velocity on the :class:`Mesh` given a face index and barycentric coordinates. + + +.. autoclass:: HashGridQuery +.. py:function:: hash_grid_query(id: uint64, point: vec3f, max_dist: float32) -> hash_grid_query_t + + Construct a point query against a :class:`HashGrid`. + + This query can be used to iterate over all neighboring point within a fixed radius from the query point. + + +.. py:function:: hash_grid_query_next(query: hash_grid_query_t, index: int32) -> bool + + Move to the next point in the hash grid query. + + The index of the current neighbor is stored in ``index``, returns ``False`` if there are no more neighbors. + + +.. py:function:: hash_grid_point_id(id: uint64, index: int32) -> int + + Return the index of a point in the :class:`HashGrid`. + + This can be used to reorder threads such that grid traversal occurs in a spatially coherent order. + + Returns -1 if the :class:`HashGrid` has not been reserved. + + +.. py:function:: intersect_tri_tri(v0: vec3f, v1: vec3f, v2: vec3f, u0: vec3f, u1: vec3f, u2: vec3f) -> int + + Tests for intersection between two triangles (v0, v1, v2) and (u0, u1, u2) using Moller's method. + + Returns > 0 if triangles intersect. + + +.. py:function:: mesh_get(id: uint64) -> Mesh + + Retrieves the mesh given its index. [1]_ + + +.. py:function:: mesh_eval_face_normal(id: uint64, face: int32) -> vec3f + + Evaluates the face normal the mesh given a face index. + + +.. py:function:: mesh_get_point(id: uint64, index: int32) -> vec3f + + Returns the point of the mesh given a index. + + +.. py:function:: mesh_get_velocity(id: uint64, index: int32) -> vec3f + + Returns the velocity of the mesh given a index. + + +.. py:function:: mesh_get_index(id: uint64, index: int32) -> int + + Returns the point-index of the mesh given a face-vertex index. + + +.. py:function:: closest_point_edge_edge(p1: vec3f, q1: vec3f, p2: vec3f, q2: vec3f, epsilon: float32) -> vec3f + + Finds the closest points between two edges. + + Returns barycentric weights to the points on each edge, as well as the closest distance between the edges. + + :param p1: First point of first edge + :param q1: Second point of first edge + :param p2: First point of second edge + :param q2: Second point of second edge + :param epsilon: Zero tolerance for determining if points in an edge are degenerate. + :param out: vec3 output containing (s,t,d), where `s` in [0,1] is the barycentric weight for the first edge, `t` is the barycentric weight for the second edge, and `d` is the distance between the two edges at these two closest points. + + + + +Volumes +--------------- +.. py:function:: volume_sample(id: uint64, uvw: vec3f, sampling_mode: int32, dtype: Any) -> Any + + Sample the volume of type `dtype` given by ``id`` at the volume local-space point ``uvw``. + + Interpolation should be :attr:`warp.Volume.CLOSEST` or :attr:`wp.Volume.LINEAR.` + + +.. py:function:: volume_sample_grad(id: uint64, uvw: vec3f, sampling_mode: int32, grad: Any, dtype: Any) -> Any + + Sample the volume given by ``id`` and its gradient at the volume local-space point ``uvw``. + + Interpolation should be :attr:`warp.Volume.CLOSEST` or :attr:`wp.Volume.LINEAR.` + + +.. py:function:: volume_lookup(id: uint64, i: int32, j: int32, k: int32, dtype: Any) -> Any + + Returns the value of voxel with coordinates ``i``, ``j``, ``k`` for a volume of type type `dtype`. + + If the voxel at this index does not exist, this function returns the background value. + + +.. py:function:: volume_store(id: uint64, i: int32, j: int32, k: int32, value: Any) -> None + + Store ``value`` at the voxel with coordinates ``i``, ``j``, ``k``. + + +.. py:function:: volume_sample_f(id: uint64, uvw: vec3f, sampling_mode: int32) -> float + + Sample the volume given by ``id`` at the volume local-space point ``uvw``. + + Interpolation should be :attr:`warp.Volume.CLOSEST` or :attr:`wp.Volume.LINEAR.` + + +.. py:function:: volume_sample_grad_f(id: uint64, uvw: vec3f, sampling_mode: int32, grad: vec3f) -> float + + Sample the volume and its gradient given by ``id`` at the volume local-space point ``uvw``. + + Interpolation should be :attr:`warp.Volume.CLOSEST` or :attr:`wp.Volume.LINEAR.` + + +.. py:function:: volume_lookup_f(id: uint64, i: int32, j: int32, k: int32) -> float + + Returns the value of voxel with coordinates ``i``, ``j``, ``k``. + + If the voxel at this index does not exist, this function returns the background value + + +.. py:function:: volume_store_f(id: uint64, i: int32, j: int32, k: int32, value: float32) -> None + + Store ``value`` at the voxel with coordinates ``i``, ``j``, ``k``. + + +.. py:function:: volume_sample_v(id: uint64, uvw: vec3f, sampling_mode: int32) -> vec3f + + Sample the vector volume given by ``id`` at the volume local-space point ``uvw``. + + Interpolation should be :attr:`warp.Volume.CLOSEST` or :attr:`wp.Volume.LINEAR.` + + +.. py:function:: volume_lookup_v(id: uint64, i: int32, j: int32, k: int32) -> vec3f + + Returns the vector value of voxel with coordinates ``i``, ``j``, ``k``. + + If the voxel at this index does not exist, this function returns the background value. + + +.. py:function:: volume_store_v(id: uint64, i: int32, j: int32, k: int32, value: vec3f) -> None + + Store ``value`` at the voxel with coordinates ``i``, ``j``, ``k``. + + +.. py:function:: volume_sample_i(id: uint64, uvw: vec3f) -> int + + Sample the :class:`int32` volume given by ``id`` at the volume local-space point ``uvw``. + + +.. py:function:: volume_lookup_i(id: uint64, i: int32, j: int32, k: int32) -> int + + Returns the :class:`int32` value of voxel with coordinates ``i``, ``j``, ``k``. + + If the voxel at this index does not exist, this function returns the background value. + + +.. py:function:: volume_store_i(id: uint64, i: int32, j: int32, k: int32, value: int32) -> None + + Store ``value`` at the voxel with coordinates ``i``, ``j``, ``k``. + + +.. py:function:: volume_sample_index(id: uint64, uvw: vec3f, sampling_mode: int32, voxel_data: Array[Any], background: Any) -> Any + + Sample the volume given by ``id`` at the volume local-space point ``uvw``. + + Values for allocated voxels are read from the ``voxel_data`` array, and `background` is used as the value of non-existing voxels. + Interpolation should be :attr:`warp.Volume.CLOSEST` or :attr:`wp.Volume.LINEAR`. + This function is available for both index grids and classical volumes. + + + +.. py:function:: volume_sample_grad_index(id: uint64, uvw: vec3f, sampling_mode: int32, voxel_data: Array[Any], background: Any, grad: Any) -> Any + + Sample the volume given by ``id`` and its gradient at the volume local-space point ``uvw``. + + Values for allocated voxels are read from the ``voxel_data`` array, and `background` is used as the value of non-existing voxels. + Interpolation should be :attr:`warp.Volume.CLOSEST` or :attr:`wp.Volume.LINEAR`. + This function is available for both index grids and classical volumes. + + + +.. py:function:: volume_lookup_index(id: uint64, i: int32, j: int32, k: int32) -> int32 + + Returns the index associated to the voxel with coordinates ``i``, ``j``, ``k``. + + If the voxel at this index does not exist, this function returns -1. + This function is available for both index grids and classical volumes. + + + +.. py:function:: volume_index_to_world(id: uint64, uvw: vec3f) -> vec3f + + Transform a point ``uvw`` defined in volume index space to world space given the volume's intrinsic affine transformation. + + +.. py:function:: volume_world_to_index(id: uint64, xyz: vec3f) -> vec3f + + Transform a point ``xyz`` defined in volume world space to the volume's index space given the volume's intrinsic affine transformation. + + +.. py:function:: volume_index_to_world_dir(id: uint64, uvw: vec3f) -> vec3f + + Transform a direction ``uvw`` defined in volume index space to world space given the volume's intrinsic affine transformation. + + +.. py:function:: volume_world_to_index_dir(id: uint64, xyz: vec3f) -> vec3f + + Transform a direction ``xyz`` defined in volume world space to the volume's index space given the volume's intrinsic affine transformation. + + + + +Random +--------------- +.. py:function:: rand_init(seed: int32) -> uint32 + + Initialize a new random number generator given a user-defined seed. Returns a 32-bit integer representing the RNG state. + + +.. py:function:: rand_init(seed: int32, offset: int32) -> uint32 + :noindex: + :nocontentsentry: + + Initialize a new random number generator given a user-defined seed and an offset. + + This alternative constructor can be useful in parallel programs, where a kernel as a whole should share a seed, + but each thread should generate uncorrelated values. In this case usage should be ``r = rand_init(seed, tid)`` + + +.. py:function:: randi(state: uint32) -> int + + Return a random integer in the range [0, 2^32). + + +.. py:function:: randi(state: uint32, low: int32, high: int32) -> int + :noindex: + :nocontentsentry: + + Return a random integer between [low, high). + + +.. py:function:: randf(state: uint32) -> float + + Return a random float between [0.0, 1.0). + + +.. py:function:: randf(state: uint32, low: float32, high: float32) -> float + :noindex: + :nocontentsentry: + + Return a random float between [low, high). + + +.. py:function:: randn(state: uint32) -> float + + Sample a normal distribution. + + +.. py:function:: sample_cdf(state: uint32, cdf: Array[float32]) -> int + + Inverse-transform sample a cumulative distribution function. + + +.. py:function:: sample_triangle(state: uint32) -> vec2f + + Uniformly sample a triangle. Returns sample barycentric coordinates. + + +.. py:function:: sample_unit_ring(state: uint32) -> vec2f + + Uniformly sample a ring in the xy plane. + + +.. py:function:: sample_unit_disk(state: uint32) -> vec2f + + Uniformly sample a disk in the xy plane. + + +.. py:function:: sample_unit_sphere_surface(state: uint32) -> vec3f + + Uniformly sample a unit sphere surface. + + +.. py:function:: sample_unit_sphere(state: uint32) -> vec3f + + Uniformly sample a unit sphere. + + +.. py:function:: sample_unit_hemisphere_surface(state: uint32) -> vec3f + + Uniformly sample a unit hemisphere surface. + + +.. py:function:: sample_unit_hemisphere(state: uint32) -> vec3f + + Uniformly sample a unit hemisphere. + + +.. py:function:: sample_unit_square(state: uint32) -> vec2f + + Uniformly sample a unit square. + + +.. py:function:: sample_unit_cube(state: uint32) -> vec3f + + Uniformly sample a unit cube. + + +.. py:function:: poisson(state: uint32, lam: float32) -> uint32 + + Generate a random sample from a Poisson distribution. + + :param state: RNG state + :param lam: The expected value of the distribution + + +.. py:function:: noise(state: uint32, x: float32) -> float + + Non-periodic Perlin-style noise in 1D. + + +.. py:function:: noise(state: uint32, xy: vec2f) -> float + :noindex: + :nocontentsentry: + + Non-periodic Perlin-style noise in 2D. + + +.. py:function:: noise(state: uint32, xyz: vec3f) -> float + :noindex: + :nocontentsentry: + + Non-periodic Perlin-style noise in 3D. + + +.. py:function:: noise(state: uint32, xyzt: vec4f) -> float + :noindex: + :nocontentsentry: + + Non-periodic Perlin-style noise in 4D. + + +.. py:function:: pnoise(state: uint32, x: float32, px: int32) -> float + + Periodic Perlin-style noise in 1D. + + +.. py:function:: pnoise(state: uint32, xy: vec2f, px: int32, py: int32) -> float + :noindex: + :nocontentsentry: + + Periodic Perlin-style noise in 2D. + + +.. py:function:: pnoise(state: uint32, xyz: vec3f, px: int32, py: int32, pz: int32) -> float + :noindex: + :nocontentsentry: + + Periodic Perlin-style noise in 3D. + + +.. py:function:: pnoise(state: uint32, xyzt: vec4f, px: int32, py: int32, pz: int32, pt: int32) -> float + :noindex: + :nocontentsentry: + + Periodic Perlin-style noise in 4D. + + +.. py:function:: curlnoise(state: uint32, xy: vec2f, octaves: uint32, lacunarity: float32, gain: float32) -> vec2f + + Divergence-free vector field based on the gradient of a Perlin noise function. [1]_ + + +.. py:function:: curlnoise(state: uint32, xyz: vec3f, octaves: uint32, lacunarity: float32, gain: float32) -> vec3f + :noindex: + :nocontentsentry: + + Divergence-free vector field based on the curl of three Perlin noise functions. [1]_ + + +.. py:function:: curlnoise(state: uint32, xyzt: vec4f, octaves: uint32, lacunarity: float32, gain: float32) -> vec3f + :noindex: + :nocontentsentry: + + Divergence-free vector field based on the curl of three Perlin noise functions. [1]_ + + + + +Other +--------------- +.. py:function:: lower_bound(arr: Array[Scalar], value: Scalar) -> int + + Search a sorted array ``arr`` for the closest element greater than or equal to ``value``. + + +.. py:function:: lower_bound(arr: Array[Scalar], arr_begin: int32, arr_end: int32, value: Scalar) -> int + :noindex: + :nocontentsentry: + + Search a sorted array ``arr`` in the range [arr_begin, arr_end) for the closest element greater than or equal to ``value``. + + +.. py:function:: bit_and(a: Int, b: Int) -> Int + + +.. py:function:: bit_or(a: Int, b: Int) -> Int + + +.. py:function:: bit_xor(a: Int, b: Int) -> Int + + +.. py:function:: lshift(a: Int, b: Int) -> Int + + +.. py:function:: rshift(a: Int, b: Int) -> Int + + +.. py:function:: invert(a: Int) -> Int + + + + +Operators +--------------- +.. py:function:: add(a: Scalar, b: Scalar) -> Scalar + + +.. py:function:: add(a: Vector[Any,Scalar], b: Vector[Any,Scalar]) -> Vector[Any,Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: add(a: Quaternion[Scalar], b: Quaternion[Scalar]) -> Quaternion[Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: add(a: Matrix[Any,Any,Scalar], b: Matrix[Any,Any,Scalar]) -> Matrix[Any,Any,Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: add(a: Transformation[Scalar], b: Transformation[Scalar]) -> Transformation[Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: sub(a: Scalar, b: Scalar) -> Scalar + + +.. py:function:: sub(a: Vector[Any,Scalar], b: Vector[Any,Scalar]) -> Vector[Any,Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: sub(a: Matrix[Any,Any,Scalar], b: Matrix[Any,Any,Scalar]) -> Matrix[Any,Any,Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: sub(a: Quaternion[Scalar], b: Quaternion[Scalar]) -> Quaternion[Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: sub(a: Transformation[Scalar], b: Transformation[Scalar]) -> Transformation[Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: mul(a: Scalar, b: Scalar) -> Scalar + + +.. py:function:: mul(a: Vector[Any,Scalar], b: Scalar) -> Vector[Any,Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: mul(a: Scalar, b: Vector[Any,Scalar]) -> Vector[Any,Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: mul(a: Quaternion[Scalar], b: Scalar) -> Quaternion[Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: mul(a: Scalar, b: Quaternion[Scalar]) -> Quaternion[Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: mul(a: Quaternion[Scalar], b: Quaternion[Scalar]) -> Quaternion[Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: mul(a: Scalar, b: Matrix[Any,Any,Scalar]) -> Matrix[Any,Any,Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: mul(a: Matrix[Any,Any,Scalar], b: Scalar) -> Matrix[Any,Any,Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: mul(a: Matrix[Any,Any,Scalar], b: Vector[Any,Scalar]) -> Vector[Any,Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: mul(a: Vector[Any,Scalar], b: Matrix[Any,Any,Scalar]) -> Vector[Any,Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: mul(a: Matrix[Any,Any,Scalar], b: Matrix[Any,Any,Scalar]) -> Matrix[Any,Any,Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: mul(a: Transformation[Scalar], b: Transformation[Scalar]) -> Transformation[Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: mul(a: Scalar, b: Transformation[Scalar]) -> Transformation[Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: mul(a: Transformation[Scalar], b: Scalar) -> Transformation[Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: mod(a: Scalar, b: Scalar) -> Scalar + + Modulo operation using truncated division. + + +.. py:function:: div(a: Scalar, b: Scalar) -> Scalar + + +.. py:function:: div(a: Vector[Any,Scalar], b: Scalar) -> Vector[Any,Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: div(a: Scalar, b: Vector[Any,Scalar]) -> Vector[Any,Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: div(a: Matrix[Any,Any,Scalar], b: Scalar) -> Matrix[Any,Any,Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: div(a: Scalar, b: Matrix[Any,Any,Scalar]) -> Matrix[Any,Any,Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: div(a: Quaternion[Scalar], b: Scalar) -> Quaternion[Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: div(a: Scalar, b: Quaternion[Scalar]) -> Quaternion[Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: floordiv(a: Scalar, b: Scalar) -> Scalar + + +.. py:function:: pos(x: Scalar) -> Scalar + + +.. py:function:: pos(x: Vector[Any,Scalar]) -> Vector[Any,Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: pos(x: Quaternion[Scalar]) -> Quaternion[Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: pos(x: Matrix[Any,Any,Scalar]) -> Matrix[Any,Any,Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: neg(x: Scalar) -> Scalar + + +.. py:function:: neg(x: Vector[Any,Scalar]) -> Vector[Any,Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: neg(x: Quaternion[Scalar]) -> Quaternion[Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: neg(x: Matrix[Any,Any,Scalar]) -> Matrix[Any,Any,Scalar] + :noindex: + :nocontentsentry: + + +.. py:function:: unot(a: bool) -> bool + + +.. py:function:: unot(a: int8) -> bool + :noindex: + :nocontentsentry: + + +.. py:function:: unot(a: uint8) -> bool + :noindex: + :nocontentsentry: + + +.. py:function:: unot(a: int16) -> bool + :noindex: + :nocontentsentry: + + +.. py:function:: unot(a: uint16) -> bool + :noindex: + :nocontentsentry: + + +.. py:function:: unot(a: int32) -> bool + :noindex: + :nocontentsentry: + + +.. py:function:: unot(a: uint32) -> bool + :noindex: + :nocontentsentry: + + +.. py:function:: unot(a: int64) -> bool + :noindex: + :nocontentsentry: + + +.. py:function:: unot(a: uint64) -> bool + :noindex: + :nocontentsentry: + + +.. py:function:: unot(a: Array[Any]) -> bool + :noindex: + :nocontentsentry: + + +.. rubric:: Footnotes +.. [1] Function gradients have not been implemented for backpropagation. diff --git a/_sources/modules/generics.rst.txt b/_sources/modules/generics.rst.txt new file mode 100644 index 00000000..7298c189 --- /dev/null +++ b/_sources/modules/generics.rst.txt @@ -0,0 +1,306 @@ +Generics +======== + +Warp supports writing generic kernels and functions, which act as templates that can be instantiated with different concrete types. +This allows you to write code once and reuse it with multiple data types. +The concepts discussed on this page also apply to :ref:`Runtime Kernel Creation`. + +Generic Kernels +--------------- + +Generic kernel definition syntax is the same as regular kernels, but you can use ``typing.Any`` in place of concrete types: + +.. code:: python + + from typing import Any + + # generic kernel definition using Any as a placeholder for concrete types + @wp.kernel + def scale(x: wp.array(dtype=Any), s: Any): + i = wp.tid() + x[i] = s * x[i] + + data = [1, 2, 3, 4, 5, 6, 7, 8, 9] + n = len(data) + + x16 = wp.array(data, dtype=wp.float16) + x32 = wp.array(data, dtype=wp.float32) + x64 = wp.array(data, dtype=wp.float64) + + # run the generic kernel with different data types + wp.launch(scale, dim=n, inputs=[x16, wp.float16(3)]) + wp.launch(scale, dim=n, inputs=[x32, wp.float32(3)]) + wp.launch(scale, dim=n, inputs=[x64, wp.float64(3)]) + + print(x16) + print(x32) + print(x64) + +Under the hood, Warp will automatically generate new instances of the generic kernel to match the given argument types. + + +Type Inference +~~~~~~~~~~~~~~ + +When a generic kernel is being launched, Warp infers the concrete types from the arguments. ``wp.launch()`` handles generic kernels without any special syntax, but we should be mindful of the data types passed as arguments to make sure that the correct types are inferred. + + - Scalars can be passed as regular Python numeric values (e.g., ``42`` or ``0.5``). Python integers are interpreted as ``wp.int32`` and Python floating point values are interpreted as ``wp.float32``. To specify a different data type and to avoid ambiguity, Warp data types should be used instead (e.g., ``wp.int64(42)`` or ``wp.float16(0.5)``). + + - Vectors and matrices should be passed as Warp types rather than tuples or lists (e.g., ``wp.vec3f(1.0, 2.0, 3.0)`` or ``wp.mat22h([[1.0, 0.0], [0.0, 1.0]])``). + + - Warp arrays and structs can be passed normally. + +.. _implicit_instantiation: + +Implicit Instantiation +~~~~~~~~~~~~~~~~~~~~~~ + +When you launch a generic kernel with a new set of data types, Warp automatically creates a new instance of this kernel with the given types. This is convenient, but there are some downsides to this implicit instantiation. + +Consider these three generic kernel launches: + +.. code:: python + + wp.launch(scale, dim=n, inputs=[x16, wp.float16(3)]) + wp.launch(scale, dim=n, inputs=[x32, wp.float32(3)]) + wp.launch(scale, dim=n, inputs=[x64, wp.float64(3)]) + +During each one of these launches, a new kernel instance is being generated, which forces the module to be reloaded. You might see something like this in the output: + +.. code:: text + + Module __main__ load on device 'cuda:0' took 170.37 ms + Module __main__ load on device 'cuda:0' took 171.43 ms + Module __main__ load on device 'cuda:0' took 179.49 ms + +This leads to a couple of potential problems: + + - The overhead of repeatedly rebuilding the modules can impact the overall performance of the program. + + - Module reloading during graph capture is not allowed on older CUDA drivers, which will cause captures to fail. + +Explicit instantiation can be used to overcome these issues. + + +.. _explicit_instantiation: + +Explicit Instantiation +~~~~~~~~~~~~~~~~~~~~~~ + +Warp allows explicitly declaring instances of generic kernels with different types. One way is to use the ``@wp.overload`` decorator: + +.. code:: python + + @wp.overload + def scale(x: wp.array(dtype=wp.float16), s: wp.float16): + ... + + @wp.overload + def scale(x: wp.array(dtype=wp.float32), s: wp.float32): + ... + + @wp.overload + def scale(x: wp.array(dtype=wp.float64), s: wp.float64): + ... + + wp.launch(scale, dim=n, inputs=[x16, wp.float16(3)]) + wp.launch(scale, dim=n, inputs=[x32, wp.float32(3)]) + wp.launch(scale, dim=n, inputs=[x64, wp.float64(3)]) + +The ``@wp.overload`` decorator allows re-declaring generic kernels without repeating the kernel code. The kernel body is just replaced with the ellipsis (``...``). Warp keeps track of known overloads for each kernel, so if an overload exists it will not be instantiated again. If all the overloads are declared prior to kernel launches, the module will only load once with all the kernel instances in place. + +We can also use ``wp.overload()`` as a function for a slightly more concise syntax. We just need to specify the generic kernel and a list of concrete argument types: + +.. code:: python + + wp.overload(scale, [wp.array(dtype=wp.float16), wp.float16]) + wp.overload(scale, [wp.array(dtype=wp.float32), wp.float32]) + wp.overload(scale, [wp.array(dtype=wp.float64), wp.float64]) + +Instead of an argument list, a dictionary can also be provided: + +.. code:: python + + wp.overload(scale, {"x": wp.array(dtype=wp.float16), "s": wp.float16}) + wp.overload(scale, {"x": wp.array(dtype=wp.float32), "s": wp.float32}) + wp.overload(scale, {"x": wp.array(dtype=wp.float64), "s": wp.float64}) + +A dictionary might be preferred for readability. With dictionaries, only generic arguments need to be specified, which can be even more concise when overloading kernels where some of the arguments are not generic. + +We can easily create overloads in a single loop, like this: + +.. code:: python + + for T in [wp.float16, wp.float32, wp.float64]: + wp.overload(scale, [wp.array(dtype=T), T]) + +Finally, the ``wp.overload()`` function returns the concrete kernel instance, which can be saved in a variable: + +.. code:: python + + scale_f16 = wp.overload(scale, [wp.array(dtype=wp.float16), wp.float16]) + scale_f32 = wp.overload(scale, [wp.array(dtype=wp.float32), wp.float32]) + scale_f64 = wp.overload(scale, [wp.array(dtype=wp.float64), wp.float64]) + +These instances are treated as regular kernels, not generic. This means that launches should be faster, because Warp doesn't need to infer data types from the arguments like it does when launching generic kernels. The typing requirements for kernel arguments are also more relaxed than with generic kernels, because Warp can convert scalars, vectors, and matrices to the known required types. + +.. code:: python + + # launch concrete kernel instances + wp.launch(scale_f16, dim=n, inputs=[x16, 3]) + wp.launch(scale_f32, dim=n, inputs=[x32, 3]) + wp.launch(scale_f64, dim=n, inputs=[x64, 3]) + +.. _Generic Functions: + +Generic Functions +----------------- + +Like Warp kernels, we can also define generic Warp functions: + +.. code:: python + + # generic function + @wp.func + def f(x: Any): + return x * x + + # use generic function in a regular kernel + @wp.kernel + def square_float(a: wp.array(dtype=float)): + i = wp.tid() + a[i] = f(a[i]) + + # use generic function in a generic kernel + @wp.kernel + def square_any(a: wp.array(dtype=Any)): + i = wp.tid() + a[i] = f(a[i]) + + data = [1, 2, 3, 4, 5, 6, 7, 8, 9] + n = len(data) + + af = wp.array(data, dtype=float) + ai = wp.array(data, dtype=int) + + # launch regular kernel + wp.launch(square_float, dim=n, inputs=[af]) + + # launch generic kernel + wp.launch(square_any, dim=n, inputs=[af]) + wp.launch(square_any, dim=n, inputs=[ai]) + +A generic function can be used in regular and generic kernels. It's not necessary to explicitly overload generic functions. All required function overloads are generated automatically when those functions are used in kernels. + + +type() Operator +--------------- + +Consider the following generic function: + +.. code:: python + + @wp.func + def triple(x: Any): + return 3 * x + +Using numeric literals like ``3`` is problematic in generic expressions due to Warp's strict typing rules. Operands in arithmetic expressions must have the same data types, but integer literals are always treated as ``wp.int32``. This function will fail to compile if ``x`` has a data type other than ``wp.int32``, which means that it's not generic at all. + +The ``type()`` operator comes to the rescue here. The ``type()`` operator returns the type of its argument, which is handy in generic functions or kernels where the data types are not known in advance. We can rewrite the function like this to make it work with a wider range of types: + +.. code:: python + + @wp.func + def triple(x: Any): + return type(x)(3) * x + +The ``type()`` operator is useful for type conversions in Warp kernels and functions. For example, here is a simple generic ``arange()`` kernel: + +.. code:: python + + @wp.kernel + def arange(a: wp.array(dtype=Any)): + i = wp.tid() + a[i] = type(a[0])(i) + + n = 10 + ai = wp.empty(n, dtype=wp.int32) + af = wp.empty(n, dtype=wp.float32) + + wp.launch(arange, dim=n, inputs=[ai]) + wp.launch(arange, dim=n, inputs=[af]) + +``wp.tid()`` returns an integer, but the value gets converted to the array's data type before storing it in the array. Alternatively, we could write our ``arange()`` kernel like this: + +.. code:: python + + @wp.kernel + def arange(a: wp.array(dtype=Any)): + i = wp.tid() + a[i] = a.dtype(i) + +This variant uses the ``array.dtype()`` operator, which returns the type of the array's contents. + + +Limitations and Rough Edges +--------------------------- + +Warp generics are still in development and there are some limitations. + +Module Reloading Behavior +~~~~~~~~~~~~~~~~~~~~~~~~~ + +As mentioned in the :ref:`implicit instantiation ` section, launching new kernel overloads triggers the recompilation of the kernel module. This adds overhead and doesn't play well with Warp's current kernel caching strategy. Kernel caching relies on hashing the contents of the module, which includes all the concrete kernels and functions encountered in the Python program so far. Whenever a new kernel or a new instance of a generic kernel is added, the module needs to be reloaded. Re-running the Python program leads to the same sequence of kernels being added to the module, which means that implicit instantiation of generic kernels will trigger the same module reloading on every run. This is clearly not ideal, and we intend to improve this behavior in the future. + +Using :ref:`explicit instantiation ` is usually a good workaround for this, as long as the overloads are added in the same order before any kernel launches. + +Note that this issue is not specific to generic kernels. Adding new regular kernels to a module can also trigger repetitive module reloading if the kernel definitions are intermixed with kernel launches. For example: + +.. code:: python + + @wp.kernel + def foo(x: float): + wp.print(x) + + wp.launch(foo, dim=1, inputs=[17]) + + @wp.kernel + def bar(x: float): + wp.print(x) + + wp.launch(bar, dim=1, inputs=[42]) + +This code will also trigger module reloading during each kernel launch, even though it doesn't use generics at all: + +.. code:: text + + Module __main__ load on device 'cuda:0' took 155.73 ms + 17 + Module __main__ load on device 'cuda:0' took 164.83 ms + 42 + + +Graph Capture +~~~~~~~~~~~~~ + +Module reloading is not allowed during graph capture in CUDA 12.2 or older. Kernel instantiation can trigger module reloading, which will cause graph capture to fail on drivers that don't support newer versions of CUDA. The workaround, again, is to explicitly declare the required overloads before capture begins. + + +Type Variables +~~~~~~~~~~~~~~ + +Warp's ``type()`` operator is similar in principle to Python's ``type()`` function, but it's currently not possible to use types as variables in Warp kernels and functions. For example, the following is currently `not` allowed: + +.. code:: python + + @wp.func + def triple(x: Any): + # TODO: + T = type(x) + return T(3) * x + + +Kernel Overloading Restrictions +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +It's currently not possible to define multiple kernels with the same name but different argument counts, but this restriction may be lifted in the future. diff --git a/_sources/modules/interoperability.rst.txt b/_sources/modules/interoperability.rst.txt new file mode 100644 index 00000000..eb2217c1 --- /dev/null +++ b/_sources/modules/interoperability.rst.txt @@ -0,0 +1,509 @@ +Interoperability +================ + +Warp can interoperate with other Python-based frameworks such as NumPy through standard interface protocols. + +Warp supports passing external arrays to kernels directly, as long as they implement the ``__array__``, ``__array_interface__``, or ``__cuda_array_interface__`` protocols. This works with many common frameworks like NumPy, CuPy, or PyTorch. + +For example, we can use NumPy arrays directly when launching Warp kernels on the CPU: + +.. code:: python + + import numpy as np + import warp as wp + + @wp.kernel + def saxpy(x: wp.array(dtype=float), y: wp.array(dtype=float), a: float): + i = wp.tid() + y[i] = a * x[i] + y[i] + + x = np.arange(n, dtype=np.float32) + y = np.ones(n, dtype=np.float32) + + wp.launch(saxpy, dim=n, inputs=[x, y, 1.0], device="cpu") + +Likewise, we can use CuPy arrays on a CUDA device: + +.. code:: python + + import cupy as cp + + with cp.cuda.Device(0): + x = cp.arange(n, dtype=cp.float32) + y = cp.ones(n, dtype=cp.float32) + + wp.launch(saxpy, dim=n, inputs=[x, y, 1.0], device="cuda:0") + +Note that with CUDA arrays, it's important to ensure that the device on which the arrays reside is the same as the device on which the kernel is launched. + +PyTorch supports both CPU and GPU tensors and both kinds can be passed to Warp kernels on the appropriate device. + +.. code:: python + + import random + import torch + + if random.choice([False, True]): + device = "cpu" + else: + device = "cuda:0" + + x = torch.arange(n, dtype=torch.float32, device=device) + y = torch.ones(n, dtype=torch.float32, device=device) + + wp.launch(saxpy, dim=n, inputs=[x, y, 1.0], device=device) + +NumPy +----- + +Warp arrays may be converted to a NumPy array through the ``warp.array.numpy()`` method. When the Warp array lives on +the ``cpu`` device this will return a zero-copy view onto the underlying Warp allocation. If the array lives on a +``cuda`` device then it will first be copied back to a temporary buffer and copied to NumPy. + +Warp CPU arrays also implement the ``__array_interface__`` protocol and so can be used to construct NumPy arrays +directly:: + + w = wp.array([1.0, 2.0, 3.0], dtype=float, device="cpu") + a = np.array(w) + print(a) + > [1. 2. 3.] + +Data type conversion utilities are also available for convenience: + +.. code:: python + + warp_type = wp.float32 + ... + numpy_type = wp.dtype_to_numpy(warp_type) + ... + a = wp.zeros(n, dtype=warp_type) + b = np.zeros(n, dtype=numpy_type) + +To create Warp arrays from NumPy arrays, use :func:`warp.from_numpy` +or pass the NumPy array as the ``data`` argument of the :class:`warp.array` constructor directly. + +.. autofunction:: warp.from_numpy +.. autofunction:: warp.dtype_from_numpy +.. autofunction:: warp.dtype_to_numpy + +.. _pytorch-interop: + +PyTorch +------- + +Warp provides helper functions to convert arrays to/from PyTorch:: + + w = wp.array([1.0, 2.0, 3.0], dtype=float, device="cpu") + + # convert to Torch tensor + t = wp.to_torch(w) + + # convert from Torch tensor + w = wp.from_torch(t) + +These helper functions allow the conversion of Warp arrays to/from PyTorch tensors without copying the underlying data. +At the same time, if available, gradient arrays and tensors are converted to/from PyTorch autograd tensors, allowing the use of Warp arrays +in PyTorch autograd computations. + +.. autofunction:: warp.from_torch +.. autofunction:: warp.to_torch +.. autofunction:: warp.device_from_torch +.. autofunction:: warp.device_to_torch +.. autofunction:: warp.dtype_from_torch +.. autofunction:: warp.dtype_to_torch + +To convert a PyTorch CUDA stream to a Warp CUDA stream and vice versa, Warp provides the following functions: + +.. autofunction:: warp.stream_from_torch +.. autofunction:: warp.stream_to_torch + +Example: Optimization using ``warp.from_torch()`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +An example usage of minimizing a loss function over an array of 2D points written in Warp via PyTorch's Adam optimizer +using :func:`warp.from_torch` is as follows:: + + import warp as wp + import torch + + + @wp.kernel() + def loss(xs: wp.array(dtype=float, ndim=2), l: wp.array(dtype=float)): + tid = wp.tid() + wp.atomic_add(l, 0, xs[tid, 0] ** 2.0 + xs[tid, 1] ** 2.0) + + # indicate requires_grad so that Warp can accumulate gradients in the grad buffers + xs = torch.randn(100, 2, requires_grad=True) + l = torch.zeros(1, requires_grad=True) + opt = torch.optim.Adam([xs], lr=0.1) + + wp_xs = wp.from_torch(xs) + wp_l = wp.from_torch(l) + + tape = wp.Tape() + with tape: + # record the loss function kernel launch on the tape + wp.launch(loss, dim=len(xs), inputs=[wp_xs], outputs=[wp_l], device=wp_xs.device) + + for i in range(500): + tape.zero() + tape.backward(loss=wp_l) # compute gradients + # now xs.grad will be populated with the gradients computed by Warp + opt.step() # update xs (and thereby wp_xs) + + # these lines are only needed for evaluating the loss + # (the optimization just needs the gradient, not the loss value) + wp_l.zero_() + wp.launch(loss, dim=len(xs), inputs=[wp_xs], outputs=[wp_l], device=wp_xs.device) + print(f"{i}\tloss: {l.item()}") + +Example: Optimization using ``warp.to_torch`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Less code is needed when we declare the optimization variables directly in Warp and use :func:`warp.to_torch` to convert them to PyTorch tensors. +Here, we revisit the same example from above where now only a single conversion to a torch tensor is needed to supply Adam with the optimization variables:: + + import warp as wp + import numpy as np + import torch + + + @wp.kernel() + def loss(xs: wp.array(dtype=float, ndim=2), l: wp.array(dtype=float)): + tid = wp.tid() + wp.atomic_add(l, 0, xs[tid, 0] ** 2.0 + xs[tid, 1] ** 2.0) + + # initialize the optimization variables in Warp + xs = wp.array(np.random.randn(100, 2), dtype=wp.float32, requires_grad=True) + l = wp.zeros(1, dtype=wp.float32, requires_grad=True) + # just a single wp.to_torch call is needed, Adam optimizes using the Warp array gradients + opt = torch.optim.Adam([wp.to_torch(xs)], lr=0.1) + + tape = wp.Tape() + with tape: + wp.launch(loss, dim=len(xs), inputs=[xs], outputs=[l], device=xs.device) + + for i in range(500): + tape.zero() + tape.backward(loss=l) + opt.step() + + l.zero_() + wp.launch(loss, dim=len(xs), inputs=[xs], outputs=[l], device=xs.device) + print(f"{i}\tloss: {l.numpy()[0]}") + +Example: Optimization using ``torch.autograd.function`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +One can insert Warp kernel launches in a PyTorch graph by defining a :class:`torch.autograd.Function` class, which +requires forward and backward functions to be defined. After mapping incoming torch arrays to Warp arrays, a Warp kernel +may be launched in the usual way. In the backward pass, the same kernel's adjoint may be launched by +setting ``adjoint = True`` in :func:`wp.launch() `. Alternatively, the user may choose to rely on Warp's tape. +In the following example, we demonstrate how Warp may be used to evaluate the Rosenbrock function in an optimization context:: + + import warp as wp + import numpy as np + import torch + + pvec2 = wp.types.vector(length=2, dtype=wp.float32) + + # Define the Rosenbrock function + @wp.func + def rosenbrock(x: float, y: float): + return (1.0 - x) ** 2.0 + 100.0 * (y - x**2.0) ** 2.0 + + @wp.kernel + def eval_rosenbrock( + xs: wp.array(dtype=pvec2), + # outputs + z: wp.array(dtype=float), + ): + i = wp.tid() + x = xs[i] + z[i] = rosenbrock(x[0], x[1]) + + + class Rosenbrock(torch.autograd.Function): + @staticmethod + def forward(ctx, xy, num_points): + ctx.xy = wp.from_torch(xy, dtype=pvec2, requires_grad=True) + ctx.num_points = num_points + + # allocate output + ctx.z = wp.zeros(num_points, requires_grad=True) + + wp.launch( + kernel=eval_rosenbrock, + dim=ctx.num_points, + inputs=[ctx.xy], + outputs=[ctx.z] + ) + + return wp.to_torch(ctx.z) + + @staticmethod + def backward(ctx, adj_z): + # map incoming Torch grads to our output variables + ctx.z.grad = wp.from_torch(adj_z) + + wp.launch( + kernel=eval_rosenbrock, + dim=ctx.num_points, + inputs=[ctx.xy], + outputs=[ctx.z], + adj_inputs=[ctx.xy.grad], + adj_outputs=[ctx.z.grad], + adjoint=True + ) + + # return adjoint w.r.t. inputs + return (wp.to_torch(ctx.xy.grad), None) + + + num_points = 1500 + learning_rate = 5e-2 + + torch_device = wp.device_to_torch(wp.get_device()) + + rng = np.random.default_rng(42) + xy = torch.tensor(rng.normal(size=(num_points, 2)), dtype=torch.float32, requires_grad=True, device=torch_device) + opt = torch.optim.Adam([xy], lr=learning_rate) + + for _ in range(10000): + # step + opt.zero_grad() + z = Rosenbrock.apply(xy, num_points) + z.backward(torch.ones_like(z)) + + opt.step() + + # minimum at (1, 1) + xy_np = xy.numpy(force=True) + print(np.mean(xy_np, axis=0)) + +Note that if Warp code is wrapped in a torch.autograd.function that gets called in ``torch.compile()``, it will automatically +exclude that function from compiler optimizations. If your script uses ``torch.compile()``, we recommend using Pytorch version 2.3.0+, +which has improvements that address this scenario. + +Performance Notes +^^^^^^^^^^^^^^^^^ + +The ``wp.from_torch()`` function creates a Warp array object that shares data with a PyTorch tensor. Although this function does not copy the data, there is always some CPU overhead during the conversion. If these conversions happen frequently, the overall program performance may suffer. As a general rule, it's good to avoid repeated conversions of the same tensor. Instead of: + +.. code:: python + + x_t = torch.arange(n, dtype=torch.float32, device=device) + y_t = torch.ones(n, dtype=torch.float32, device=device) + + for i in range(10): + x_w = wp.from_torch(x_t) + y_w = wp.from_torch(y_t) + wp.launch(saxpy, dim=n, inputs=[x_w, y_w, 1.0], device=device) + +Try converting the arrays only once and reuse them: + +.. code:: python + + x_t = torch.arange(n, dtype=torch.float32, device=device) + y_t = torch.ones(n, dtype=torch.float32, device=device) + + x_w = wp.from_torch(x_t) + y_w = wp.from_torch(y_t) + + for i in range(10): + wp.launch(saxpy, dim=n, inputs=[x_w, y_w, 1.0], device=device) + +If reusing arrays is not possible (e.g., a new PyTorch tensor is constructed on every iteration), passing ``return_ctype=True`` to ``wp.from_torch()`` should yield faster performance. Setting this argument to True avoids constructing a ``wp.array`` object and instead returns a low-level array descriptor. This descriptor is a simple C structure that can be passed to Warp kernels instead of a ``wp.array``, but cannot be used in other places that require a ``wp.array``. + +.. code:: python + + for n in range(1, 10): + # get Torch tensors for this iteration + x_t = torch.arange(n, dtype=torch.float32, device=device) + y_t = torch.ones(n, dtype=torch.float32, device=device) + + # get Warp array descriptors + x_ctype = wp.from_torch(x_t, return_ctype=True) + y_ctype = wp.from_torch(y_t, return_ctype=True) + + wp.launch(saxpy, dim=n, inputs=[x_ctype, y_ctype, 1.0], device=device) + +An alternative approach is to pass the PyTorch tensors to Warp kernels directly. This avoids constructing temporary Warp arrays by leveraging standard array interfaces (like ``__cuda_array_interface__``) supported by both PyTorch and Warp. The main advantage of this approach is convenience, since there is no need to call any conversion functions. The main limitation is that it does not handle gradients, because gradient information is not included in the standard array interfaces. This technique is therefore most suitable for algorithms that do not involve differentiation. + +.. code:: python + + x = torch.arange(n, dtype=torch.float32, device=device) + y = torch.ones(n, dtype=torch.float32, device=device) + + for i in range(10): + wp.launch(saxpy, dim=n, inputs=[x, y, 1.0], device=device) + +.. code:: shell + + python -m warp.examples.benchmarks.benchmark_interop_torch + +Sample output: + +.. code:: + + 5095 ms from_torch(...) + 2113 ms from_torch(..., return_ctype=True) + 2950 ms direct from torch + +The default ``wp.from_torch()`` conversion is the slowest. Passing ``return_ctype=True`` is the fastest, because it skips creating temporary Warp array objects. Passing PyTorch tensors to Warp kernels directly falls somewhere in between. It skips creating temporary Warp arrays, but accessing the ``__cuda_array_interface__`` attributes of PyTorch tensors adds overhead because they are initialized on-demand. + + +CuPy/Numba +---------- + +Warp GPU arrays support the ``__cuda_array_interface__`` protocol for sharing data with other Python GPU frameworks. This allows frameworks like CuPy to use Warp GPU arrays directly. + +Likewise, Warp arrays can be created from any object that exposes the ``__cuda_array_interface__``. Such objects can also be passed to Warp kernels directly without creating a Warp array object. + +.. _jax-interop: + +JAX +--- + +Interoperability with JAX arrays is supported through the following methods. +Internally these use the DLPack protocol to exchange data in a zero-copy way with JAX:: + + warp_array = wp.from_jax(jax_array) + jax_array = wp.to_jax(warp_array) + +It may be preferable to use the :ref:`DLPack` protocol directly for better performance and control over stream synchronization behaviour. + +.. autofunction:: warp.from_jax +.. autofunction:: warp.to_jax +.. autofunction:: warp.device_from_jax +.. autofunction:: warp.device_to_jax +.. autofunction:: warp.dtype_from_jax +.. autofunction:: warp.dtype_to_jax + + +Using Warp kernels as JAX primitives +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. note:: + This is an experimental feature under development. + +Warp kernels can be used as JAX primitives, which can be used to call Warp kernels inside of jitted JAX functions:: + + import warp as wp + import jax + import jax.numpy as jp + + # import experimental feature + from warp.jax_experimental import jax_kernel + + @wp.kernel + def triple_kernel(input: wp.array(dtype=float), output: wp.array(dtype=float)): + tid = wp.tid() + output[tid] = 3.0 * input[tid] + + # create a Jax primitive from a Warp kernel + jax_triple = jax_kernel(triple_kernel) + + # use the Warp kernel in a Jax jitted function + @jax.jit + def f(): + x = jp.arange(0, 64, dtype=jp.float32) + return jax_triple(x) + + print(f()) + +Since this is an experimental feature, there are some limitations: + + - All kernel arguments must be arrays. + - Kernel launch dimensions are inferred from the shape of the first argument. + - Input arguments are followed by output arguments in the Warp kernel definition. + - There must be at least one input argument and at least one output argument. + - Output shapes must match the launch dimensions (i.e., output shapes must match the shape of the first argument). + - All arrays must be contiguous. + - Only the CUDA backend is supported. + +Here is an example of an operation with three inputs and two outputs:: + + import warp as wp + import jax + import jax.numpy as jp + + # import experimental feature + from warp.jax_experimental import jax_kernel + + # kernel with multiple inputs and outputs + @wp.kernel + def multiarg_kernel( + # inputs + a: wp.array(dtype=float), + b: wp.array(dtype=float), + c: wp.array(dtype=float), + # outputs + ab: wp.array(dtype=float), + bc: wp.array(dtype=float), + ): + tid = wp.tid() + ab[tid] = a[tid] + b[tid] + bc[tid] = b[tid] + c[tid] + + # create a Jax primitive from a Warp kernel + jax_multiarg = jax_kernel(multiarg_kernel) + + # use the Warp kernel in a Jax jitted function with three inputs and two outputs + @jax.jit + def f(): + a = jp.full(64, 1, dtype=jp.float32) + b = jp.full(64, 2, dtype=jp.float32) + c = jp.full(64, 3, dtype=jp.float32) + return jax_multiarg(a, b, c) + + x, y = f() + + print(x) + print(y) + +.. _DLPack: + +DLPack +------ + +Warp supports the DLPack protocol included in the Python Array API standard v2022.12. +See the `Python Specification for DLPack `_ for reference. + +The canonical way to import an external array into Warp is using the ``warp.from_dlpack()`` function:: + + warp_array = wp.from_dlpack(external_array) + +The external array can be a PyTorch tensor, Jax array, or any other array type compatible with this version of the DLPack protocol. +For CUDA arrays, this approach requires the producer to perform stream synchronization which ensures that operations on the array +are ordered correctly. The ``warp.from_dlpack()`` function asks the producer to synchronize the current Warp stream on the device where +the array resides. Thus it should be safe to use the array in Warp kernels on that device without any additional synchronization. + +The canonical way to export a Warp array to an external framework is to use the ``from_dlpack()`` function in that framework:: + + jax_array = jax.dlpack.from_dlpack(warp_array) + torch_tensor = torch.utils.dlpack.from_dlpack(warp_array) + +For CUDA arrays, this will synchronize the current stream of the consumer framework with the current Warp stream on the array's device. +Thus it should be safe to use the wrapped array in the consumer framework, even if the array was previously used in a Warp kernel +on the device. + +Alternatively, arrays can be shared by explicitly creating PyCapsules using a ``to_dlpack()`` function provided by the producer framework. +This approach may be used for older versions of frameworks that do not support the v2022.12 standard:: + + warp_array1 = wp.from_dlpack(jax.dlpack.to_dlpack(jax_array)) + warp_array2 = wp.from_dlpack(torch.utils.dlpack.to_dlpack(torch_tensor)) + + jax_array = jax.dlpack.from_dlpack(wp.to_dlpack(warp_array)) + torch_tensor = torch.utils.dlpack.from_dlpack(wp.to_dlpack(warp_array)) + +This approach is generally faster because it skips any stream synchronization, but another solution must be used to ensure correct +ordering of operations. In situations where no synchronization is required, using this approach can yield better performance. +This may be a good choice in situations like these: + + - The external framework is using the synchronous CUDA default stream. + - Warp and the external framework are using the same CUDA stream. + - Another synchronization mechanism is already in place. + +.. autofunction:: warp.from_dlpack +.. autofunction:: warp.to_dlpack diff --git a/_sources/modules/render.rst.txt b/_sources/modules/render.rst.txt new file mode 100644 index 00000000..c275e4a9 --- /dev/null +++ b/_sources/modules/render.rst.txt @@ -0,0 +1,50 @@ +warp.render +=========== + +.. currentmodule:: warp.render + +The ``warp.render`` module provides a set of renderers that can be used for visualizing scenes involving shapes of various types. + +Built on top of these stand-alone renderers, the ``warp.sim.render`` module provides renderers that can be used to +visualize scenes directly from ``warp.sim.ModelBuilder`` objects and update them from ``warp.sim.State`` objects. + +Standalone Renderers +-------------------- + +The ``OpenGLRenderer`` provides an interactive renderer to play back animations in real time, the ``UsdRenderer`` +provides a renderer that exports the scene to a USD file that can be rendered in a renderer of your choice. + +.. autoclass:: UsdRenderer + :members: + + +.. autoclass:: OpenGLRenderer + :members: + +Simulation Renderers +-------------------- + +Based on these renderers from ``warp.render``, the ``SimRendererUsd`` (which equals ``SimRenderer``) and +``SimRendererOpenGL`` classes from ``warp.sim.render`` are derived to populate the renderers directly from +``warp.sim.ModelBuilder`` scenes and update them from ``warp.sim.State`` objects. + +.. currentmodule:: warp.sim.render + +.. autoclass:: SimRendererUsd + :members: + +.. autoclass:: SimRendererOpenGL + :members: + +CUDA Graphics Interface +----------------------- + +Warp provides a CUDA graphics interface that allows you to access OpenGL buffers from CUDA kernels. +This is useful for manipulating OpenGL array buffers without having to copy them back and forth between the CPU and GPU. + +See the `CUDA documentation on OpenGL Interoperability `_ for more information. + +.. currentmodule:: warp.context + +.. autoclass:: RegisteredGLBuffer + :members: diff --git a/_sources/modules/runtime.rst.txt b/_sources/modules/runtime.rst.txt new file mode 100644 index 00000000..95767c26 --- /dev/null +++ b/_sources/modules/runtime.rst.txt @@ -0,0 +1,1197 @@ +Runtime Reference +================= + +.. currentmodule:: warp + +This section describes the Warp Python runtime API, how to manage memory, launch kernels, and high-level functionality +for dealing with objects such as meshes and volumes. The APIs described in this section are intended to be used at +the *Python Scope* and run inside the CPython interpreter. For a comprehensive list of functions available at +the *Kernel Scope*, please see the :doc:`functions` section. + +Kernels +------- + +Kernels are launched with the :func:`wp.launch() ` function on a specific device (CPU/GPU):: + + wp.launch(simple_kernel, dim=1024, inputs=[a, b, c], device="cuda") + +Note that all the kernel inputs must live on the target device or a runtime exception will be raised. +Kernels may be launched with multi-dimensional grid bounds. In this case, threads are not assigned a single index, +but a coordinate in an n-dimensional grid, e.g.:: + + wp.launch(complex_kernel, dim=(128, 128, 3), ...) + +Launches a 3D grid of threads with dimension 128 x 128 x 3. To retrieve the 3D index for each thread, use the following syntax:: + + i,j,k = wp.tid() + +.. note:: + Currently, kernels launched on CPU devices will be executed in serial. + Kernels launched on CUDA devices will be launched in parallel with a fixed block-size. + +In the Warp :ref:`Compilation Model`, kernels are just-in-time compiled into dynamic libraries and PTX using +C++/CUDA as an intermediate representation. +To avoid excessive runtime recompilation of kernel code, these files are stored in a cache directory +named with a module-dependent hash to allow for the reuse of previously compiled modules. +The location of the kernel cache is printed when Warp is initialized. +:func:`wp.clear_kernel_cache() ` can be used to clear the kernel cache of previously +generated compilation artifacts as Warp does not automatically try to keep the cache below a certain size. + +.. autofunction:: launch +.. autofunction:: clear_kernel_cache + +.. _Runtime Kernel Creation: + +Runtime Kernel Creation +####################### + +It is often desirable to specialize kernels for different types, constants, or functions at runtime. +We can achieve this through the use of runtime kernel specialization using Python closures. + +For example, we might require a variety of kernels that execute particular functions for each item in an array. +We might also want this function call to be valid for a variety of data types. Making use of closure and generics, we can generate +these kernels using a single kernel definition:: + + def make_kernel(func, dtype): + def closure_kernel_fn(data: wp.array(dtype=dtype), out: wp.array(dtype=dtype)): + tid = wp.tid() + out[tid] = func(data[tid]) + + return wp.Kernel(closure_kernel_fn) + +In practice, we might use our kernel generator, ``make_kernel()`` as follows:: + + @wp.func + def sqr(x: Any) -> Any: + return x * x + + @wp.func + def cube(x: Any) -> Any: + return sqr(x) * x + + sqr_float = make_kernel(sqr, wp.float32) + cube_double = make_kernel(cube, wp.float64) + + arr = [1.0, 2.0, 3.0] + N = len(arr) + + data_float = wp.array(arr, dtype=wp.float32, device=device) + data_double = wp.array(arr, dtype=wp.float64, device=device) + + out_float = wp.zeros(N, dtype=wp.float32, device=device) + out_double = wp.zeros(N, dtype=wp.float64, device=device) + + wp.launch(sqr_float, dim=N, inputs=[data_float], outputs=[out_float], device=device) + wp.launch(cube_double, dim=N, inputs=[data_double], outputs=[out_double], device=device) + +We can specialize kernel definitions over Warp constants similarly. The following generates kernels that add a specified constant +to a generic-typed array value:: + + def make_add_kernel(key, constant): + def closure_kernel_fn(data: wp.array(dtype=Any), out: wp.array(dtype=Any)): + tid = wp.tid() + out[tid] = data[tid] + constant + + return wp.Kernel(closure_kernel_fn, key=key) + + add_ones_int = make_add_kernel("add_one", wp.constant(1)) + add_ones_vec3 = make_add_kernel("add_ones_vec3", wp.constant(wp.vec3(1.0, 1.0, 1.0))) + + a = wp.zeros(2, dtype=int) + b = wp.zeros(2, dtype=wp.vec3) + + a_out = wp.zeros_like(a) + b_out = wp.zeros_like(b) + + wp.launch(add_ones_int, dim=a.size, inputs=[a], outputs=[a_out], device=device) + wp.launch(add_ones_vec3, dim=b.size, inputs=[b], outputs=[b_out], device=device) + + +.. _Arrays: + +Arrays +------ + +Arrays are the fundamental memory abstraction in Warp; they are created through the following global constructors: :: + + wp.empty(shape=1024, dtype=wp.vec3, device="cpu") + wp.zeros(shape=1024, dtype=float, device="cuda") + wp.full(shape=1024, value=10, dtype=int, device="cuda") + + +Arrays can also be constructed directly from ``numpy`` ndarrays as follows: :: + + r = np.random.rand(1024) + + # copy to Warp owned array + a = wp.array(r, dtype=float, device="cpu") + + # return a Warp array wrapper around the NumPy data (zero-copy) + a = wp.array(r, dtype=float, copy=False, device="cpu") + + # return a Warp copy of the array data on the GPU + a = wp.array(r, dtype=float, device="cuda") + +Note that for multi-dimensional data the ``dtype`` parameter must be specified explicitly, e.g.: :: + + r = np.random.rand((1024, 3)) + + # initialize as an array of vec3 objects + a = wp.array(r, dtype=wp.vec3, device="cuda") + +If the shapes are incompatible, an error will be raised. + +Warp arrays can also be constructed from objects that define the ``__cuda_array_interface__`` attribute. For example: :: + + import cupy + import warp as wp + + device = wp.get_cuda_device() + + r = cupy.arange(10) + + # return a Warp array wrapper around the cupy data (zero-copy) + a = wp.array(r, device=device) + +Arrays can be moved between devices using the ``array.to()`` method: :: + + host_array = wp.array(a, dtype=float, device="cpu") + + # allocate and copy to GPU + device_array = host_array.to("cuda") + +Additionally, arrays can be copied directly between memory spaces: :: + + src_array = wp.array(a, dtype=float, device="cpu") + dest_array = wp.empty_like(host_array) + + # copy from source CPU buffer to GPU + wp.copy(dest_array, src_array) + +.. autoclass:: array + :members: + :undoc-members: + :exclude-members: vars + + +Multi-dimensional Arrays +######################## + +Multi-dimensional arrays can be constructed by passing a tuple of sizes for each dimension, e.g.: the following constructs a 2d array of size 1024x16:: + + wp.zeros(shape=(1024, 16), dtype=float, device="cuda") + +When passing multi-dimensional arrays to kernels users must specify the expected array dimension inside the kernel signature, +e.g. to pass a 2d array to a kernel the number of dims is specified using the ``ndim=2`` parameter:: + + @wp.kernel + def test(input: wp.array(dtype=float, ndim=2)): + +Type-hint helpers are provided for common array sizes, e.g.: ``array2d()``, ``array3d()``, which are equivalent to calling ``array(..., ndim=2)```, etc. To index a multi-dimensional array use a the following kernel syntax:: + + # returns a float from the 2d array + value = input[i,j] + +To create an array slice use the following syntax, where the number of indices is less than the array dimensions:: + + # returns an 1d array slice representing a row of the 2d array + row = input[i] + +Slice operators can be concatenated, e.g.: ``s = array[i][j][k]``. Slices can be passed to ``wp.func`` user functions provided +the function also declares the expected array dimension. Currently only single-index slicing is supported. + +.. note:: + Currently Warp limits arrays to 4 dimensions maximum. This is in addition to the contained datatype, which may be 1-2 dimensional for vector and matrix types such as ``vec3``, and ``mat33``. + + +The following construction methods are provided for allocating zero-initialized and empty (non-initialized) arrays: + +.. autofunction:: zeros +.. autofunction:: zeros_like +.. autofunction:: ones +.. autofunction:: ones_like +.. autofunction:: full +.. autofunction:: full_like +.. autofunction:: empty +.. autofunction:: empty_like +.. autofunction:: copy +.. autofunction:: clone + +Matrix Multiplication +##################### + +Warp 2D array multiplication is built on NVIDIA's `CUTLASS `_ library, +which enables fast matrix multiplication of large arrays on the GPU. + +If no GPU is detected, matrix multiplication falls back to Numpy's implementation on the CPU. + +Matrix multiplication is fully differentiable, and can be recorded on the tape like so:: + + tape = wp.Tape() + with tape: + wp.matmul(A, B, C, D, device=device) + wp.launch(loss_kernel, dim=(m, n), inputs=[D, loss], device=device) + + tape.backward(loss=loss) + A_grad = A.grad.numpy() + +Using the ``@`` operator (``D = A @ B``) will default to the same CUTLASS algorithm used in ``wp.matmul``. + +.. autofunction:: matmul + +.. autofunction:: batched_matmul + +Data Types +---------- + +Scalar Types +############ + +The following scalar storage types are supported for array structures: + ++---------+------------------------+ +| bool | boolean | ++---------+------------------------+ +| int8 | signed byte | ++---------+------------------------+ +| uint8 | unsigned byte | ++---------+------------------------+ +| int16 | signed short | ++---------+------------------------+ +| uint16 | unsigned short | ++---------+------------------------+ +| int32 | signed integer | ++---------+------------------------+ +| uint32 | unsigned integer | ++---------+------------------------+ +| int64 | signed long integer | ++---------+------------------------+ +| uint64 | unsigned long integer | ++---------+------------------------+ +| float16 | half-precision float | ++---------+------------------------+ +| float32 | single-precision float | ++---------+------------------------+ +| float64 | double-precision float | ++---------+------------------------+ + +Warp supports ``float`` and ``int`` as aliases for ``wp.float32`` and ``wp.int32`` respectively. + +.. _vec: + +Vectors +####### + +Warp provides built-in math and geometry types for common simulation and graphics problems. +A full reference for operators and functions for these types is available in the :doc:`/modules/functions`. + +Warp supports vectors of numbers with an arbitrary length/numeric type. The built-in concrete types are as follows: + ++-----------------------+------------------------------------------------+ +| vec2 vec3 vec4 | 2D, 3D, 4D vector of single-precision floats | ++-----------------------+------------------------------------------------+ +| vec2b vec3b vec4b | 2D, 3D, 4D vector of signed bytes | ++-----------------------+------------------------------------------------+ +| vec2ub vec3ub vec4ub | 2D, 3D, 4D vector of unsigned bytes | ++-----------------------+------------------------------------------------+ +| vec2s vec3s vec4s | 2D, 3D, 4D vector of signed shorts | ++-----------------------+------------------------------------------------+ +| vec2us vec3us vec4us | 2D, 3D, 4D vector of unsigned shorts | ++-----------------------+------------------------------------------------+ +| vec2i vec3i vec4i | 2D, 3D, 4D vector of signed integers | ++-----------------------+------------------------------------------------+ +| vec2ui vec3ui vec4ui | 2D, 3D, 4D vector of unsigned integers | ++-----------------------+------------------------------------------------+ +| vec2l vec3l vec4l | 2D, 3D, 4D vector of signed long integers | ++-----------------------+------------------------------------------------+ +| vec2ul vec3ul vec4ul | 2D, 3D, 4D vector of unsigned long integers | ++-----------------------+------------------------------------------------+ +| vec2h vec3h vec4h | 2D, 3D, 4D vector of half-precision floats | ++-----------------------+------------------------------------------------+ +| vec2f vec3f vec4f | 2D, 3D, 4D vector of single-precision floats | ++-----------------------+------------------------------------------------+ +| vec2d vec3d vec4d | 2D, 3D, 4D vector of double-precision floats | ++-----------------------+------------------------------------------------+ +| spatial_vector | 6D vector of single-precision floats | ++-----------------------+------------------------------------------------+ +| spatial_vectorf | 6D vector of single-precision floats | ++-----------------------+------------------------------------------------+ +| spatial_vectord | 6D vector of double-precision floats | ++-----------------------+------------------------------------------------+ +| spatial_vectorh | 6D vector of half-precision floats | ++-----------------------+------------------------------------------------+ + +Vectors support most standard linear algebra operations, e.g.: :: + + @wp.kernel + def compute( ... ): + + # basis vectors + a = wp.vec3(1.0, 0.0, 0.0) + b = wp.vec3(0.0, 1.0, 0.0) + + # take the cross product + c = wp.cross(a, b) + + # compute + r = wp.dot(c, c) + + ... + + +It's possible to declare additional vector types with different lengths and data types. This is done in outside of kernels in *Python scope* using ``warp.types.vector()``, for example: :: + + # declare a new vector type for holding 5 double precision floats: + vec5d = wp.types.vector(length=5, dtype=wp.float64) + +Once declared, the new type can be used when allocating arrays or inside kernels: :: + + # create an array of vec5d + arr = wp.zeros(10, dtype=vec5d) + + # use inside a kernel + @wp.kernel + def compute( ... ): + + # zero initialize a custom named vector type + v = vec5d() + ... + + # component-wise initialize a named vector type + v = vec5d(wp.float64(1.0), + wp.float64(2.0), + wp.float64(3.0), + wp.float64(4.0), + wp.float64(5.0)) + ... + +In addition, it's possible to directly create *anonymously* typed instances of these vectors without declaring their type in advance. In this case the type will be inferred by the constructor arguments. For example: :: + + @wp.kernel + def compute( ... ): + + # zero initialize vector of 5 doubles: + v = wp.vector(dtype=wp.float64, length=5) + + # scalar initialize a vector of 5 doubles to the same value: + v = wp.vector(wp.float64(1.0), length=5) + + # component-wise initialize a vector of 5 doubles + v = wp.vector(wp.float64(1.0), + wp.float64(2.0), + wp.float64(3.0), + wp.float64(4.0), + wp.float64(5.0)) + + +These can be used with all the standard vector arithmetic operators, e.g.: ``+``, ``-``, scalar multiplication, and can also be transformed using matrices with compatible dimensions, potentially returning vectors with a different length. + +.. _mat: + +Matrices +######## + +Matrices with arbitrary shapes/numeric types are also supported. The built-in concrete matrix types are as follows: + ++--------------------------+-------------------------------------------------+ +| mat22 mat33 mat44 | 2x2, 3x3, 4x4 matrix of single-precision floats | ++--------------------------+-------------------------------------------------+ +| mat22f mat33f mat44f | 2x2, 3x3, 4x4 matrix of single-precision floats | ++--------------------------+-------------------------------------------------+ +| mat22d mat33d mat44d | 2x2, 3x3, 4x4 matrix of double-precision floats | ++--------------------------+-------------------------------------------------+ +| mat22h mat33h mat44h | 2x2, 3x3, 4x4 matrix of half-precision floats | ++--------------------------+-------------------------------------------------+ +| spatial_matrix | 6x6 matrix of single-precision floats | ++--------------------------+-------------------------------------------------+ +| spatial_matrixf | 6x6 matrix of single-precision floats | ++--------------------------+-------------------------------------------------+ +| spatial_matrixd | 6x6 matrix of double-precision floats | ++--------------------------+-------------------------------------------------+ +| spatial_matrixh | 6x6 matrix of half-precision floats | ++--------------------------+-------------------------------------------------+ + +Matrices are stored in row-major format and support most standard linear algebra operations: :: + + @wp.kernel + def compute( ... ): + + # initialize matrix + m = wp.mat22(1.0, 2.0, + 3.0, 4.0) + + # compute inverse + minv = wp.inverse(m) + + # transform vector + v = minv * wp.vec2(0.5, 0.3) + + ... + + +In a similar manner to vectors, it's possible to declare new matrix types with arbitrary shapes and data types using ``wp.types.matrix()``, for example: :: + + # declare a new 3x2 half precision float matrix type: + mat32h = wp.types.matrix(shape=(3,2), dtype=wp.float64) + + # create an array of this type + a = wp.zeros(10, dtype=mat32h) + +These can be used inside a kernel:: + + @wp.kernel + def compute( ... ): + ... + + # initialize a mat32h matrix + m = mat32h(wp.float16(1.0), wp.float16(2.0), + wp.float16(3.0), wp.float16(4.0), + wp.float16(5.0), wp.float16(6.0)) + + # declare a 2 component half precision vector + v2 = wp.vec2h(wp.float16(1.0), wp.float16(1.0)) + + # multiply by the matrix, returning a 3 component vector: + v3 = m * v2 + ... + +It's also possible to directly create anonymously typed instances inside kernels where the type is inferred from constructor arguments as follows:: + + @wp.kernel + def compute( ... ): + ... + + # create a 3x2 half precision matrix from components (row major ordering): + m = wp.matrix( + wp.float16(1.0), wp.float16(2.0), + wp.float16(1.0), wp.float16(2.0), + wp.float16(1.0), wp.float16(2.0), + shape=(3,2)) + + # zero initialize a 3x2 half precision matrix: + m = wp.matrix(wp.float16(0.0),shape=(3,2)) + + # create a 5x5 double precision identity matrix: + m = wp.identity(n=5, dtype=wp.float64) + +As with vectors, you can do standard matrix arithmetic with these variables, along with multiplying matrices with compatible shapes and potentially returning a matrix with a new shape. + +.. _quat: + +Quaternions +########### + +Warp supports quaternions with the layout ``i, j, k, w`` where ``w`` is the real part. Here are the built-in concrete quaternion types: + ++-----------------+--------------------------------------------+ +| quat | Single-precision floating point quaternion | ++-----------------+--------------------------------------------+ +| quatf | Single-precision floating point quaternion | ++-----------------+--------------------------------------------+ +| quatd | Double-precision floating point quaternion | ++-----------------+--------------------------------------------+ +| quath | Half-precision floating point quaternion | ++-----------------+--------------------------------------------+ + +Quaternions can be used to transform vectors as follows:: + + @wp.kernel + def compute( ... ): + ... + + # construct a 30 degree rotation around the x-axis + q = wp.quat_from_axis_angle(wp.vec3(1.0, 0.0, 0.0), wp.degrees(30.0)) + + # rotate an axis by this quaternion + v = wp.quat_rotate(q, wp.vec3(0.0, 1.0, 0.0)) + + +As with vectors and matrices, you can declare quaternion types with an arbitrary numeric type like so:: + + quatd = wp.types.quaternion(dtype=wp.float64) + +You can also create identity quaternion and anonymously typed instances inside a kernel like so:: + + @wp.kernel + def compute( ... ): + ... + + # create a double precision identity quaternion: + qd = wp.quat_identity(dtype=wp.float64) + + # precision defaults to wp.float32 so this creates a single precision identity quaternion: + qf = wp.quat_identity() + + # create a half precision quaternion from components, or a vector/scalar: + qh = wp.quaternion(wp.float16(0.0), + wp.float16(0.0), + wp.float16(0.0), + wp.float16(1.0)) + + + qh = wp.quaternion( + wp.vector(wp.float16(0.0),wp.float16(0.0),wp.float16(0.0)), + wp.float16(1.0)) + +.. _transform: + +Transforms +########## + +Transforms are 7D vectors of floats representing a spatial rigid body transformation in format (p, q) where p is a 3D vector, and q is a quaternion. + ++-----------------+--------------------------------------------+ +| transform | Single-precision floating point transform | ++-----------------+--------------------------------------------+ +| transformf | Single-precision floating point transform | ++-----------------+--------------------------------------------+ +| transformd | Double-precision floating point transform | ++-----------------+--------------------------------------------+ +| transformh | Half-precision floating point transform | ++-----------------+--------------------------------------------+ + +Transforms can be constructed inside kernels from translation and rotation parts:: + + @wp.kernel + def compute( ... ): + ... + + # create a transform from a vector/quaternion: + t = wp.transform( + wp.vec3(1.0, 2.0, 3.0), + wp.quat_from_axis_angle(wp.vec3(0.0, 1.0, 0.0), wp.degrees(30.0))) + + # transform a point + p = wp.transform_point(t, wp.vec3(10.0, 0.5, 1.0)) + + # transform a vector (ignore translation) + p = wp.transform_vector(t, wp.vec3(10.0, 0.5, 1.0)) + + +As with vectors and matrices, you can declare transform types with an arbitrary numeric type using ``wp.types.transformation()``, for example:: + + transformd = wp.types.transformation(dtype=wp.float64) + +You can also create identity transforms and anonymously typed instances inside a kernel like so:: + + @wp.kernel + def compute( ... ): + + # create double precision identity transform: + qd = wp.transform_identity(dtype=wp.float64) + +.. _Structs: + +Structs +####### + +Users can define custom structure types using the ``@wp.struct`` decorator as follows:: + + @wp.struct + class MyStruct: + + param1: int + param2: float + param3: wp.array(dtype=wp.vec3) + +Struct attributes must be annotated with their respective type. They can be constructed in Python scope and then passed to kernels as arguments:: + + @wp.kernel + def compute(args: MyStruct): + + tid = wp.tid() + + print(args.param1) + print(args.param2) + print(args.param3[tid]) + + # construct an instance of the struct in Python + s = MyStruct() + s.param1 = 10 + s.param2 = 2.5 + s.param3 = wp.zeros(shape=10, dtype=wp.vec3) + + # pass to our compute kernel + wp.launch(compute, dim=10, inputs=[s]) + +An array of structs can be zero-initialized as follows:: + + a = wp.zeros(shape=10, dtype=MyStruct) + +An array of structs can also be initialized from a list of struct objects:: + + a = wp.array([MyStruct(), MyStruct(), MyStruct()], dtype=MyStruct) + +Example: Using a struct in gradient computation +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code:: python + + import numpy as np + import warp as wp + + @wp.struct + class TestStruct: + x: wp.vec3 + a: wp.array(dtype=wp.vec3) + b: wp.array(dtype=wp.vec3) + + @wp.kernel + def test_kernel(s: TestStruct): + tid = wp.tid() + + s.b[tid] = s.a[tid] + s.x + + @wp.kernel + def loss_kernel(s: TestStruct, loss: wp.array(dtype=float)): + tid = wp.tid() + + v = s.b[tid] + wp.atomic_add(loss, 0, float(tid + 1) * (v[0] + 2.0 * v[1] + 3.0 * v[2])) + + # create struct + ts = TestStruct() + + # set members + ts.x = wp.vec3(1.0, 2.0, 3.0) + ts.a = wp.array(np.array([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]), dtype=wp.vec3, requires_grad=True) + ts.b = wp.zeros(2, dtype=wp.vec3, requires_grad=True) + + loss = wp.zeros(1, dtype=float, requires_grad=True) + + tape = wp.Tape() + with tape: + wp.launch(test_kernel, dim=2, inputs=[ts]) + wp.launch(loss_kernel, dim=2, inputs=[ts, loss]) + + tape.backward(loss) + + print(loss) + print(ts.a) + + +Type Conversions +################ + +Warp is particularly strict regarding type conversions and does not perform *any* implicit conversion between numeric types. +The user is responsible for ensuring types for most arithmetic operators match, e.g.: ``x = float(0.0) + int(4)`` will result in an error. +This can be surprising for users that are accustomed to C-style conversions but avoids a class of common bugs that result from implicit conversions. + +.. note:: + Warp does not currently perform implicit type conversions between numeric types. + Users should explicitly cast variables to compatible types using constructors like + ``int()``, ``float()``, ``wp.float16()``, ``wp.uint8()``, etc. + +Constants +--------- + +In general, Warp kernels cannot access variables in the global Python interpreter state. One exception to this is for compile-time constants, which may be declared globally (or as class attributes) and folded into the kernel definition. + +Constants are defined using the ``wp.constant()`` function. An example is shown below:: + + TYPE_SPHERE = wp.constant(0) + TYPE_CUBE = wp.constant(1) + TYPE_CAPSULE = wp.constant(2) + + @wp.kernel + def collide(geometry: wp.array(dtype=int)): + + t = geometry[wp.tid()] + + if (t == TYPE_SPHERE): + print("sphere") + if (t == TYPE_CUBE): + print("cube") + if (t == TYPE_CAPSULE): + print("capsule") + + +.. autoclass:: constant + +Predefined Constants +#################### + +For convenience, Warp has a number of predefined mathematical constants that +may be used both inside and outside Warp kernels. +The constants in the following table also have lowercase versions defined, +e.g. ``wp.E`` and ``wp.e`` are equivalent. + +================ ========================= +Name Value +================ ========================= +wp.E 2.71828182845904523536 +wp.LOG2E 1.44269504088896340736 +wp.LOG10E 0.43429448190325182765 +wp.LN2 0.69314718055994530942 +wp.LN10 2.30258509299404568402 +wp.PHI 1.61803398874989484820 +wp.PI 3.14159265358979323846 +wp.HALF_PI 1.57079632679489661923 +wp.TAU 6.28318530717958647692 +wp.INF math.inf +wp.NAN float('nan') +================ ========================= + +The ``wp.NAN`` constant may only be used with floating-point types. +Comparisons involving ``wp.NAN`` follow the IEEE 754 standard, +e.g. ``wp.float32(wp.NAN) == wp.float32(wp.NAN)`` returns ``False``. +The :func:`wp.isnan() ` built-in function can be used to determine whether a +value is a NaN (or if a vector, matrix, or quaternion contains a NaN entry). + +The following example shows how positive and negative infinity +can be used with floating-point types in Warp using the ``wp.inf`` constant: + +.. code-block:: python + + @wp.kernel + def test_infinity(outputs: wp.array(dtype=wp.float32)): + outputs[0] = wp.float32(wp.inf) # inf + outputs[1] = wp.float32(-wp.inf) # -inf + outputs[2] = wp.float32(2.0 * wp.inf) # inf + outputs[3] = wp.float32(-2.0 * wp.inf) # -inf + outputs[4] = wp.float32(2.0 / 0.0) # inf + outputs[5] = wp.float32(-2.0 / 0.0) # -inf + +Operators +---------- + +Boolean Operators +################# + ++--------------+--------------------------------------+ +| a and b | True if a and b are True | ++--------------+--------------------------------------+ +| a or b | True if a or b is True | ++--------------+--------------------------------------+ +| not a | True if a is False, otherwise False | ++--------------+--------------------------------------+ + +.. note:: + Expressions such as ``if (a and b):`` currently do not perform short-circuit evaluation. + In this case ``b`` will also be evaluated even when ``a`` is ``False``. + Users should take care to ensure that secondary conditions are safe to evaluate (e.g.: do not index out of bounds) in all cases. + + +Comparison Operators +#################### + ++----------+---------------------------------------+ +| a > b | True if a strictly greater than b | ++----------+---------------------------------------+ +| a < b | True if a strictly less than b | ++----------+---------------------------------------+ +| a >= b | True if a greater than or equal to b | ++----------+---------------------------------------+ +| a <= b | True if a less than or equal to b | ++----------+---------------------------------------+ +| a == b | True if a equals b | ++----------+---------------------------------------+ +| a != b | True if a not equal to b | ++----------+---------------------------------------+ + +Arithmetic Operators +#################### + ++-----------+--------------------------+ +| a + b | Addition | ++-----------+--------------------------+ +| a - b | Subtraction | ++-----------+--------------------------+ +| a * b | Multiplication | ++-----------+--------------------------+ +| a / b | Floating point division | ++-----------+--------------------------+ +| a // b | Floored division | ++-----------+--------------------------+ +| a ** b | Exponentiation | ++-----------+--------------------------+ +| a % b | Modulus | ++-----------+--------------------------+ + +.. note:: + Since implicit conversions are not performed arguments types to operators should match. + Users should use type constructors, e.g.: ``float()``, ``int()``, ``wp.int64()``, etc. to cast variables + to the correct type. Also note that the multiplication expression ``a * b`` is used to represent scalar + multiplication and matrix multiplication. The ``@`` operator is not currently supported. + +Graphs +----------- + +Launching kernels from Python introduces significant additional overhead compared to C++ or native programs. +To address this, Warp exposes the concept of `CUDA graphs `_ +to allow recording large batches of kernels and replaying them with very little CPU overhead. + +To record a series of kernel launches use the :func:`wp.capture_begin() ` and +:func:`wp.capture_end() ` API as follows: + +.. code:: python + + # begin capture + wp.capture_begin(device="cuda") + + try: + # record launches + for i in range(100): + wp.launch(kernel=compute1, inputs=[a, b], device="cuda") + finally: + # end capture and return a graph object + graph = wp.capture_end(device="cuda") + +We strongly recommend the use of the the try-finally pattern when capturing graphs because the `finally` +statement will ensure :func:`wp.capture_end ` gets called, even if an exception occurs during +capture, which would otherwise trap the stream in a capturing state. + +Once a graph has been constructed it can be executed: :: + + wp.capture_launch(graph) + +The :class:`wp.ScopedCapture ` context manager can be used to simplify the code and +ensure that :func:`wp.capture_end ` is called regardless of exceptions: + +.. code:: python + + with wp.ScopedCapture(device="cuda") as capture: + # record launches + for i in range(100): + wp.launch(kernel=compute1, inputs=[a, b], device="cuda") + + wp.capture_launch(capture.graph) + +Note that only launch calls are recorded in the graph, any Python executed outside of the kernel code will not be recorded. +Typically it is only beneficial to use CUDA graphs when the graph will be reused or launched multiple times. + +.. autofunction:: capture_begin +.. autofunction:: capture_end +.. autofunction:: capture_launch + +.. autoclass:: ScopedCapture + :members: + + +Meshes +------ + +Warp provides a ``wp.Mesh`` class to manage triangle mesh data. To create a mesh users provide a points, indices and optionally a velocity array:: + + mesh = wp.Mesh(points, indices, velocities) + +.. note:: + Mesh objects maintain references to their input geometry buffers. All buffers should live on the same device. + +Meshes can be passed to kernels using their ``id`` attribute which uniquely identifies the mesh by a unique ``uint64`` value. +Once inside a kernel you can perform geometric queries against the mesh such as ray-casts or closest point lookups:: + + @wp.kernel + def raycast(mesh: wp.uint64, + ray_origin: wp.array(dtype=wp.vec3), + ray_dir: wp.array(dtype=wp.vec3), + ray_hit: wp.array(dtype=wp.vec3)): + + tid = wp.tid() + + t = float(0.0) # hit distance along ray + u = float(0.0) # hit face barycentric u + v = float(0.0) # hit face barycentric v + sign = float(0.0) # hit face sign + n = wp.vec3() # hit face normal + f = int(0) # hit face index + + color = wp.vec3() + + # ray cast against the mesh + if wp.mesh_query_ray(mesh, ray_origin[tid], ray_dir[tid], 1.e+6, t, u, v, sign, n, f): + + # if we got a hit then set color to the face normal + color = n*0.5 + wp.vec3(0.5, 0.5, 0.5) + + ray_hit[tid] = color + + +Users may update mesh vertex positions at runtime simply by modifying the points buffer. +After modifying point locations users should call ``Mesh.refit()`` to rebuild the bounding volume hierarchy (BVH) structure and ensure that queries work correctly. + +.. note:: + Updating Mesh topology (indices) at runtime is not currently supported. Users should instead recreate a new Mesh object. + +.. autoclass:: Mesh + :members: + +Hash Grids +---------- + +Many particle-based simulation methods such as the Discrete Element Method (DEM), or Smoothed Particle Hydrodynamics (SPH), involve iterating over spatial neighbors to compute force interactions. Hash grids are a well-established data structure to accelerate these nearest neighbor queries, and particularly well-suited to the GPU. + +To support spatial neighbor queries Warp provides a ``HashGrid`` object that may be created as follows:: + + grid = wp.HashGrid(dim_x=128, dim_y=128, dim_z=128, device="cuda") + + grid.build(points=p, radius=r) + +``p`` is an array of ``wp.vec3`` point positions, and ``r`` is the radius to use when building the grid. +Neighbors can then be iterated over inside the kernel code using :func:`wp.hash_grid_query() ` +and :func:`wp.hash_grid_query_next() ` as follows: + +.. code:: python + + @wp.kernel + def sum(grid : wp.uint64, + points: wp.array(dtype=wp.vec3), + output: wp.array(dtype=wp.vec3), + radius: float): + + tid = wp.tid() + + # query point + p = points[tid] + + # create grid query around point + query = wp.hash_grid_query(grid, p, radius) + index = int(0) + + sum = wp.vec3() + + while(wp.hash_grid_query_next(query, index)): + + neighbor = points[index] + + # compute distance to neighbor point + dist = wp.length(p-neighbor) + if (dist <= radius): + sum += neighbor + + output[tid] = sum + +.. note:: + The ``HashGrid`` query will give back all points in *cells* that fall inside the query radius. + When there are hash conflicts it means that some points outside of query radius will be returned, and users should + check the distance themselves inside their kernels. The reason the query doesn't do the check itself for each + returned point is because it's common for kernels to compute the distance themselves, so it would redundant to + check/compute the distance twice. + + +.. autoclass:: HashGrid + :members: + +Volumes +------- + +Sparse volumes are incredibly useful for representing grid data over large domains, such as signed distance fields +(SDFs) for complex objects, or velocities for large-scale fluid flow. Warp supports reading sparse volumetric grids +stored using the `NanoVDB `_ standard. Users can access voxels directly +or use built-in closest-point or trilinear interpolation to sample grid data from world or local space. + +Volume objects can be created directly from Warp arrays containing a NanoVDB grid, from the contents of a +standard ``.nvdb`` file using :func:`load_from_nvdb() `, +from an uncompressed in-memory buffer using :func:`load_from_address() `, +or from a dense 3D NumPy array using :func:`load_from_numpy() `. + +Volumes can also be created using :func:`allocate() `, +:func:`allocate_by_tiles() ` or :func:`allocate_by_voxels() `. +The values for a Volume object can be modified in a Warp kernel using :func:`wp.volume_store() `. + +.. note:: + Warp does not currently support modifying the topology of sparse volumes at runtime. + +Below we give an example of creating a Volume object from an existing NanoVDB file:: + + # open NanoVDB file on disk + file = open("mygrid.nvdb", "rb") + + # create Volume object + volume = wp.Volume.load_from_nvdb(file, device="cpu") + +.. note:: + Files written by the NanoVDB library, commonly marked by the ``.nvdb`` extension, can contain multiple grids with + various compression methods, but a :class:`Volume` object represents a single NanoVDB grid. + The first grid is loaded by default, then Warp volumes corresponding to the other grids in the file can be created + using repeated calls to :func:`load_next_grid() `. + NanoVDB's uncompressed and zip-compressed file formats are supported out-of-the-box, blosc compressed files require + the `blosc` Python package to be installed. + +To sample the volume inside a kernel we pass a reference to it by ID, and use the built-in sampling modes:: + + @wp.kernel + def sample_grid(volume: wp.uint64, + points: wp.array(dtype=wp.vec3), + samples: wp.array(dtype=float)): + + tid = wp.tid() + + # load sample point in world-space + p = points[tid] + + # transform position to the volume's local-space + q = wp.volume_world_to_index(volume, p) + + # sample volume with trilinear interpolation + f = wp.volume_sample(volume, q, wp.Volume.LINEAR, dtype=float) + + # write result + samples[tid] = f + +Warp also supports NanoVDB index grids, which provide a memory-efficient linearization of voxel indices that can refer +to values in arbitrarily shaped arrays:: + + @wp.kernel + def sample_index_grid(volume: wp.uint64, + points: wp.array(dtype=wp.vec3), + voxel_values: wp.array(dtype=Any)): + + tid = wp.tid() + + # load sample point in world-space + p = points[tid] + + # transform position to the volume's local-space + q = wp.volume_world_to_index(volume, p) + + # sample volume with trilinear interpolation + background_value = voxel_values.dtype(0.0) + f = wp.volume_sample_index(volume, q, wp.Volume.LINEAR, voxel_values, background_value) + +The coordinates of all indexable voxels can be recovered using :func:`get_voxels() `. +NanoVDB grids may also contains embedded *blind* data arrays; those can be accessed with the +:func:`feature_array() ` function. + +.. autoclass:: Volume + :members: + :undoc-members: + +.. seealso:: `Reference `__ for the volume functions available in kernels. + + +Bounding Value Hierarchies (BVH) +-------------------------------- + +The :class:`wp.Bvh ` class can be used to create a BVH for a group of bounding volumes. This object can then be traversed +to determine which parts are intersected by a ray using :func:`bvh_query_ray` and which parts overlap +with a certain bounding volume using :func:`bvh_query_aabb`. + +The following snippet demonstrates how to create a :class:`wp.Bvh ` object from 100 random bounding volumes: + +.. code:: python + + rng = np.random.default_rng(123) + + num_bounds = 100 + lowers = rng.random(size=(num_bounds, 3)) * 5.0 + uppers = lowers + rng.random(size=(num_bounds, 3)) * 5.0 + + device_lowers = wp.array(lowers, dtype=wp.vec3, device="cuda:0") + device_uppers = wp.array(uppers, dtype=wp.vec3, device="cuda:0") + + bvh = wp.Bvh(device_lowers, device_uppers) + +.. autoclass:: Bvh + :members: + +Example: BVH Ray Traversal +########################## + +An example of performing a ray traversal on the data structure is as follows: + +.. code:: python + + @wp.kernel + def bvh_query_ray( + bvh_id: wp.uint64, + start: wp.vec3, + dir: wp.vec3, + bounds_intersected: wp.array(dtype=wp.bool), + ): + query = wp.bvh_query_ray(bvh_id, start, dir) + bounds_nr = wp.int32(0) + + while wp.bvh_query_next(query, bounds_nr): + # The ray intersects the volume with index bounds_nr + bounds_intersected[bounds_nr] = True + + + bounds_intersected = wp.zeros(shape=(num_bounds), dtype=wp.bool, device="cuda:0") + query_start = wp.vec3(0.0, 0.0, 0.0) + query_dir = wp.normalize(wp.vec3(1.0, 1.0, 1.0)) + + wp.launch( + kernel=bvh_query_ray, + dim=1, + inputs=[bvh.id, query_start, query_dir, bounds_intersected], + device="cuda:0", + ) + +The Warp kernel ``bvh_query_ray`` is launched with a single thread, provided the unique :class:`uint64` +identifier of the :class:`wp.Bvh ` object, parameters describing the ray, and an array to store the results. +In ``bvh_query_ray``, :func:`wp.bvh_query_ray() ` is called once to obtain an object that is stored in the +variable ``query``. An integer is also allocated as ``bounds_nr`` to store the volume index of the traversal. +A while statement is used for the actual traversal using :func:`wp.bvh_query_next() `, +which returns ``True`` as long as there are intersecting bounds. + +Example: BVH Volume Traversal +############################# + +Similar to the ray-traversal example, we can perform volume traversal to find the volumes that are fully contained +within a specified bounding box. + +.. code:: python + + @wp.kernel + def bvh_query_aabb( + bvh_id: wp.uint64, + lower: wp.vec3, + upper: wp.vec3, + bounds_intersected: wp.array(dtype=wp.bool), + ): + query = wp.bvh_query_aabb(bvh_id, lower, upper) + bounds_nr = wp.int32(0) + + while wp.bvh_query_next(query, bounds_nr): + # The volume with index bounds_nr is fully contained + # in the (lower,upper) bounding box + bounds_intersected[bounds_nr] = True + + + bounds_intersected = wp.zeros(shape=(num_bounds), dtype=wp.bool, device="cuda:0") + query_lower = wp.vec3(4.0, 4.0, 4.0) + query_upper = wp.vec3(6.0, 6.0, 6.0) + + wp.launch( + kernel=bvh_query_aabb, + dim=1, + inputs=[bvh.id, query_lower, query_upper, bounds_intersected], + device="cuda:0", + ) + +The kernel is nearly identical to the ray-traversal example, except we obtain ``query`` using +:func:`wp.bvh_query_aabb() `. + +Marching Cubes +-------------- + +The :class:`wp.MarchingCubes ` class can be used to extract a 2-D mesh approximating an +isosurface of a 3-D scalar field. The resulting triangle mesh can be saved to a USD +file using the :class:`warp.renderer.UsdRenderer`. + +See :github:`warp/examples/core/example_marching_cubes.py` for a usage example. + +.. autoclass:: MarchingCubes + :members: + +Profiling +--------- + +``wp.ScopedTimer`` objects can be used to gain some basic insight into the performance of Warp applications: + +.. code:: python + + with wp.ScopedTimer("grid build"): + self.grid.build(self.x, self.point_radius) + +This results in a printout at runtime to the standard output stream like: + +.. code:: console + + grid build took 0.06 ms + +See :doc:`../profiling` documentation for more information. + +.. autoclass:: warp.ScopedTimer + :noindex: diff --git a/_sources/modules/sim.rst.txt b/_sources/modules/sim.rst.txt new file mode 100644 index 00000000..f6d6ce06 --- /dev/null +++ b/_sources/modules/sim.rst.txt @@ -0,0 +1,190 @@ +warp.sim +======== + +.. currentmodule:: warp.sim + +Warp includes a simulation module ``warp.sim`` that includes many common physical simulation models and integrators for explicit and implicit time-stepping. + +Model +----- + +.. autoclass:: ModelBuilder + :members: + +.. autoclass:: Model + :members: + +.. autoclass:: ModelShapeMaterials + :members: + +.. autoclass:: ModelShapeGeometry + :members: + +.. autoclass:: JointAxis + :members: + +.. autoclass:: Mesh + :members: + +.. autoclass:: SDF + :members: + +.. _Joint types: + +Joint types +^^^^^^^^^^^^^^ + +.. data:: JOINT_PRISMATIC + + Prismatic (slider) joint + +.. data:: JOINT_REVOLUTE + + Revolute (hinge) joint + +.. data:: JOINT_BALL + + Ball (spherical) joint with quaternion state representation + +.. data:: JOINT_FIXED + + Fixed (static) joint + +.. data:: JOINT_FREE + + Free (floating) joint + +.. data:: JOINT_COMPOUND + + Compound joint with 3 rotational degrees of freedom + +.. data:: JOINT_UNIVERSAL + + Universal joint with 2 rotational degrees of freedom + +.. data:: JOINT_DISTANCE + + Distance joint that keeps two bodies at a distance within its joint limits (only supported in :class:`XPBDIntegrator` at the moment) + +.. data:: JOINT_D6 + + Generic D6 joint with up to 3 translational and 3 rotational degrees of freedom + +.. _Joint modes: + +Joint control modes +^^^^^^^^^^^^^^^^^^^ + +Joint modes control the behavior of how the joint control input :attr:`Control.joint_act` affects the torque applied at a given joint axis. +By default, it behaves as a direct force application via :data:`JOINT_MODE_FORCE`. Other modes can be used to implement joint position or velocity drives: + +.. data:: JOINT_MODE_FORCE + + This is the default control mode where the control input is the torque :math:`\tau` applied at the joint axis. + +.. data:: JOINT_MODE_TARGET_POSITION + + The control input is the target position :math:`\mathbf{q}_{\text{target}}` which is achieved via PD control of torque :math:`\tau` where the proportional and derivative gains are set by :attr:`Model.joint_target_ke` and :attr:`Model.joint_target_kd`: + + .. math:: + + \tau = k_e (\mathbf{q}_{\text{target}} - \mathbf{q}) - k_d \mathbf{\dot{q}} + +.. data:: JOINT_MODE_TARGET_VELOCITY + + The control input is the target velocity :math:`\mathbf{\dot{q}}_{\text{target}}` which is achieved via a controller of torque :math:`\tau` that brings the velocity at the joint axis to the target through proportional gain :attr:`Model.joint_target_ke`: + + .. math:: + + \tau = k_e (\mathbf{\dot{q}}_{\text{target}} - \mathbf{\dot{q}}) + +State +-------------- + +.. autoclass:: State + :members: + +Control +-------------- + +.. autoclass:: Control + :members: + +.. _FK-IK: + +Forward / Inverse Kinematics +---------------------------- + +Articulated rigid-body mechanisms are kinematically described by the joints that connect the bodies as well as the relative relative transform from the parent and child body to the respective anchor frames of the joint in the parent and child body: + +.. image:: /img/joint_transforms.png + :width: 400 + :align: center + +.. list-table:: Variable names in the kernels from articulation.py + :widths: 10 90 + :header-rows: 1 + + * - Symbol + - Description + * - x_wp + - World transform of the parent body (stored at :attr:`State.body_q`) + * - x_wc + - World transform of the child body (stored at :attr:`State.body_q`) + * - x_pj + - Transform from the parent body to the joint parent anchor frame (defined by :attr:`Model.joint_X_p`) + * - x_cj + - Transform from the child body to the joint child anchor frame (defined by :attr:`Model.joint_X_c`) + * - x_j + - Joint transform from the joint parent anchor frame to the joint child anchor frame + +In the forward kinematics, the joint transform is determined by the joint coordinates (generalized joint positions :attr:`State.joint_q` and velocities :attr:`State.joint_qd`). +Given the parent body's world transform :math:`x_{wp}` and the joint transform :math:`x_{j}`, the child body's world transform :math:`x_{wc}` is computed as: + +.. math:: + x_{wc} = x_{wp} \cdot x_{pj} \cdot x_{j} \cdot x_{cj}^{-1}. + +.. autofunction:: eval_fk + +.. autofunction:: eval_ik + +Integrators +----------- + +.. autoclass:: Integrator + :members: + +.. autoclass:: SemiImplicitIntegrator + :members: + +.. autoclass:: XPBDIntegrator + :members: + +.. autoclass:: FeatherstoneIntegrator + :members: + +Importers +--------- + +Warp sim supports the loading of simulation models from URDF, MuJoCo (MJCF), and USD Physics files. + +.. autofunction:: parse_urdf + +.. autofunction:: parse_mjcf + +.. autofunction:: parse_usd + +.. autofunction:: resolve_usd_from_url + +Utility Functions +----------------- + +Common utility functions used in simulators. + +.. autofunction:: velocity_at_point + +.. autofunction:: quat_to_euler + +.. autofunction:: quat_from_euler + +.. autofunction:: load_mesh diff --git a/_sources/modules/sparse.rst.txt b/_sources/modules/sparse.rst.txt new file mode 100644 index 00000000..f56493a3 --- /dev/null +++ b/_sources/modules/sparse.rst.txt @@ -0,0 +1,36 @@ +warp.sparse +=============================== + +.. currentmodule:: warp.sparse + +.. + .. toctree:: + :maxdepth: 2 + +Warp includes a sparse linear algebra module ``warp.sparse`` that implements some common sparse matrix operations that arise in simulation. + +Sparse Matrices +------------------------- + +Currently `warp.sparse` supports Block Sparse Row (BSR) matrices, the BSR format can also be used to represent Compressed Sparse Row (CSR) matrices as a special case with a 1x1 block size. + +Overloaded Python mathematical operators are supported for sparse matrix addition (`+`), subtraction (`-`), multiplication by a scalar (`*`) and matrix-matrix or matrix-vector multiplication (`@`), +including in-place variants where possible. + +.. automodule:: warp.sparse + :members: + +.. _iterative-linear-solvers: + +Iterative Linear Solvers +------------------------ + +.. currentmodule:: warp.optim.linear + +Warp provides a few common iterative linear solvers (:func:`cg`, :func:`cr`, :func:`bicgstab`, :func:`gmres`) with optional preconditioning. + +.. note:: While primarily intended to work with sparse matrices, those solvers also accept dense linear operators provided as 2D Warp arrays. + It is also possible to provide custom operators, see :class:`LinearOperator`. + +.. automodule:: warp.optim.linear + :members: diff --git a/_sources/profiling.rst.txt b/_sources/profiling.rst.txt new file mode 100644 index 00000000..178b99aa --- /dev/null +++ b/_sources/profiling.rst.txt @@ -0,0 +1,277 @@ +Profiling +========= + +ScopedTimer +----------- + +``wp.ScopedTimer`` objects can be used to gain some basic insight into the performance of Warp applications: + +.. code:: python + + @wp.kernel + def inc_loop(a: wp.array(dtype=float), num_iters: int): + i = wp.tid() + for j in range(num_iters): + a[i] += 1.0 + + n = 10_000_000 + devices = wp.get_cuda_devices() + + # pre-allocate host arrays for readback + host_arrays = [ + wp.empty(n, dtype=float, device="cpu", pinned=True) for _ in devices + ] + + # code for profiling + with wp.ScopedTimer("Demo"): + for i, device in enumerate(devices): + a = wp.zeros(n, dtype=float, device=device) + wp.launch(inc_loop, dim=n, inputs=[a, 500], device=device) + wp.launch(inc_loop, dim=n, inputs=[a, 1000], device=device) + wp.launch(inc_loop, dim=n, inputs=[a, 1500], device=device) + wp.copy(host_arrays[i], a) + +The only required argument for the ``ScopedTimer`` constructor is a string label, which can be used to distinguish multiple timed code sections when reading the output. The snippet above will print a message like this: + +.. code:: console + + Demo took 0.52 ms + +By default, ``ScopedTimer`` measures the elapsed time on the CPU and does not introduce any CUDA synchronization. Since most CUDA operations are asynchronous, the result does not include the time spent executing kernels and memory transfers on the CUDA device. It's still a useful measurement, because it shows how long it took to schedule the CUDA operations on the CPU. + +To get the total amount of time including the device executions time, create the ``ScopedTimer`` with the ``synchronize=True`` flag. This is equivalent to calling ``wp.synchronize()`` before and after the timed section of code. Synchronizing at the beginning ensures that all prior CUDA work has completed prior to starting the timer. Synchronizing at the end ensures that all timed work finishes before stopping the timer. With the example above, the result might look like this: + +.. code:: console + + Demo took 4.91 ms + +The timing values will vary slightly from run to run and will depend on the system hardware and current load. The sample results presented here were obtained on a system with one RTX 4090 GPU, one RTX 3090 GPU, and an AMD Ryzen Threadripper Pro 5965WX CPU. For each GPU, the code allocates and initializes an array with 10 million floating point elements. It then launches the ``inc_loop`` kernel three times on the array. The kernel increments each array element a given number of times - 500, 1000, and 1500. Finally, the code copies the array contents to the CPU. + +Profiling complex programs with many asynchronous and concurrent operations can be tricky. Profiling tools like `NVIDIA Nsight Systems `_ can present the results in a visual way and capture a plethora of timing information for deeper study. For profiling tools capable of visualizing NVTX ranges, ``ScopedTimer`` can be created with the ``use_nvtx=True`` argument. This will mark the CPU execution range on the timeline for easier visual inspection. The color can be customized using the ``color`` argument, as shown below: + +.. code:: python + + with wp.ScopedTimer("Demo", use_nvtx=True, color="yellow"): + ... + +To use NVTX integration, you will need to install the `NVIDIA NVTX Python package `_. + +.. code:: + + pip install nvtx + +The package allows you to insert custom NVTX ranges into your code (``nvtx.annotate``) and customize the `colors `_. + +Here is what the demo code looks like in Nsight Systems (click to enlarge the image): + +.. image:: ./img/profiling_nosync.png + :width: 95% + :align: center + +There are a few noteworthy observations we can make from this capture. Scheduling and launching the work on the CPU takes about half a millisecond, as shown in the `NVTX / Start & End` row. This time also includes the allocation of arrays on both CUDA devices. We can see that the execution on each device is asynchronous with respect to the host, since CUDA operations start running before the yellow `Demo` NVTX range finishes. We can also see that the operations on different CUDA devices execute concurrently, including kernels and memory transfers. The kernels run faster on the first CUDA device (RTX 4090) than the second device (RTX 3090). Memory transfers take about the same time on each device. Using pinned CPU arrays for the transfer destinations allows the transfers to run asynchronously without involving the CPU. + +Check out the :doc:`concurrency documentation ` for more information about asynchronous operations. + +Note that synchronization was not enabled in this run, so the NVTX range only spans the CPU operations used to schedule the CUDA work. When synchronization is enabled, the timer will wait for all CUDA work to complete, so the NVTX range will span the synchronization of both devices: + +.. code:: python + + with wp.ScopedTimer("Demo", use_nvtx=True, color="yellow", synchronize=True): + ... + +.. image:: ./img/profiling_sync.png + :width: 95% + :align: center + + +CUDA Activity Profiling +----------------------- + +``ScopedTimer`` supports timing individual CUDA activities like kernels and memory operations. This is done by measuring the time taken between :ref:`CUDA events ` on the device. To get information about CUDA activities, pass the ``cuda_filter`` argument to the ``ScopedTimer`` constructor. The ``cuda_filter`` can be a bitwise combination of the following values: + +.. list-table:: CUDA profiling flags + :widths: 25 50 + :header-rows: 0 + + * - ``wp.TIMING_KERNELS`` + - Warp kernels (this includes all kernels written in Python as ``@wp.kernel``) + * - ``wp.TIMING_KERNELS_BUILTIN`` + - Builtin kernels (this includes kernels used by the Warp library under the hood) + * - ``wp.TIMING_MEMCPY`` + - CUDA memory transfers (host-to-device, device-to-host, device-to-device, and peer-to-peer) + * - ``wp.TIMING_MEMSET`` + - CUDA memset operations (e.g., zeroing out memory in ``wp.zeros()``) + * - ``wp.TIMING_GRAPH`` + - CUDA graph launches + * - ``wp.TIMING_ALL`` + - Combines all of the above for convenience. + +When a non-zero ``cuda_filter`` is specified, Warp will inject CUDA events for timing purposes and report the results when the ``ScopeTimer`` finishes. This adds some overhead to the code, so should be used only during profiling. + +CUDA event timing resolution is about 0.5 microseconds. The reported execution time of short operations will likely be longer than the operations actually took on the device. This is due to the timing resolution and the overhead of added instrumentation code. For more precise analysis of short operations, a tool like Nsight Systems can report more accurate data. + +Enabling CUDA profiling with the demo code can be done like this: + +.. code:: python + + with wp.ScopedTimer("Demo", cuda_filter=wp.TIMING_ALL): + ... + +This adds additional information to the output: + +.. code:: + + CUDA timeline: + ----------------+---------+------------------------ + Time | Device | Activity + ----------------+---------+------------------------ + 0.021504 ms | cuda:0 | memset + 0.163840 ms | cuda:0 | forward kernel inc_loop + 0.306176 ms | cuda:0 | forward kernel inc_loop + 0.451584 ms | cuda:0 | forward kernel inc_loop + 2.455520 ms | cuda:0 | memcpy DtoH + 0.051200 ms | cuda:1 | memset + 0.374784 ms | cuda:1 | forward kernel inc_loop + 0.707584 ms | cuda:1 | forward kernel inc_loop + 1.042432 ms | cuda:1 | forward kernel inc_loop + 2.136096 ms | cuda:1 | memcpy DtoH + + CUDA activity summary: + ----------------+---------+------------------------ + Total time | Count | Activity + ----------------+---------+------------------------ + 0.072704 ms | 2 | memset + 3.046400 ms | 6 | forward kernel inc_loop + 4.591616 ms | 2 | memcpy DtoH + + CUDA device summary: + ----------------+---------+------------------------ + Total time | Count | Device + ----------------+---------+------------------------ + 3.398624 ms | 5 | cuda:0 + 4.312096 ms | 5 | cuda:1 + Demo took 0.92 ms + +The first section is the `CUDA timeline`, which lists all captured activities in issue order. We see a `memset` on device ``cuda:0``, which corresponds to clearing the memory in ``wp.zeros()``. This is followed by three launches of the ``inc_loop`` kernel on ``cuda:0`` and a memory transfer from device to host issued by ``wp.copy()``. The remaining entries repeat similar operations on device ``cuda:1``. + +The next section is the `CUDA activity summary`, which reports the cumulative time taken by each activity type. Here, the `memsets`, kernel launches, and memory transfer operations are grouped together. This is a good way to see where time is being spent overall. The `memsets` are quite fast. The ``inc_loop`` kernel launches took about three milliseconds of combined GPU time. The memory transfers took the longest, over four milliseconds. + +The `CUDA device summary` shows the total time taken per device. We see that device ``cuda:0`` took about 3.4 ms to complete the tasks and device ``cuda:1`` took about 4.3 ms. This summary can be used to asses the workload distribution in multi-GPU applications. + +The final line shows the time taken by the CPU, as with the default ``ScopedTimer`` options (without synchronization in this case). + +Customizing the output +~~~~~~~~~~~~~~~~~~~~~~ + +It is possible to customize how the activity timing results are reported. The function :func:`warp.timing_print` is used by default. To use a different reporting function, pass it as the ``report_func`` argument to ``ScopedTimer``. The custom report function should take a list of :class:`warp.TimingResult` objects as the first argument. Each result in the list corresponds to a single activity and the list represents the complete recorded timeline. By manually traversing the list, you can customize the formatting of the output, apply custom sorting rules, and aggregate the results as desired. The second argument is a string indent that should be printed at the beginning of each line. This is for compatibility with ``ScopedTimer`` indenting rules used with nested timers. + +Here is an example of a custom reporting function, which aggregates the total time spend in forward and backward kernels: + +.. code:: python + + def print_custom_report(results, indent=""): + forward_time = 0 + backward_time = 0 + + for r in results: + # aggregate all forward kernels + if r.name.startswith("forward kernel"): + forward_time += r.elapsed + # aggregate all backward kernels + elif r.name.startswith("backward kernel"): + backward_time += r.elapsed + + print(f"{indent}Forward kernels : {forward_time:.6f} ms") + print(f"{indent}Backward kernels : {backward_time:.6f} ms") + +Let's apply it to one of the Warp examples: + +.. code:: python + + from warp.examples.optim.example_cloth_throw import Example + + example = Example(None) + example.use_graph = False # disable graphs so we get timings for individual kernels + + with wp.ScopedTimer("Example", cuda_filter=wp.TIMING_KERNEL, report_func=print_custom_report): + for iteration in range(5): + example.step() + +This produces a report like this: + +.. code:: + + Forward kernels : 187.098367 ms + Backward kernels : 245.070177 ms + + +Using the activity timing functions directly +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +It is also possible to capture activity timings without using the ``ScopedTimer`` at all. Simply call :func:`warp.timing_begin` to start recording activity timings and :func:`warp.timing_end` to stop and get a list of recorded activities. You can use :func:`warp.timing_print` to print the default activity report or generate your own report from the list of results. + +.. code:: python + + wp.timing_begin(cuda_filter=wp.TIMING_ALL) + ... + results = wp.timing_end() + + wp.timing_print(results) + + +Limitations +~~~~~~~~~~~ + +Currently, detailed activity timing is only available for CUDA devices, but support for CPU timing may be added in the future. + +The activity profiling only records activities initiated using the Warp API. It does not capture CUDA activity initiated by other frameworks. A profiling tool like Nsight Systems can be used to examine whole program activities. + + +Using CUDA Events +----------------- + +CUDA events can be used for timing purposes outside of the ``ScopedTimer``. Here is an example: + +.. code:: python + + with wp.ScopedDevice("cuda:0") as device: + + # ensure the module is loaded + wp.load_module(device=device) + + # create events with enabled timing + e1 = wp.Event(enable_timing=True) + e2 = wp.Event(enable_timing=True) + + n = 10000000 + + # start timing... + wp.record_event(e1) + + a = wp.zeros(n, dtype=float) + wp.launch(inc, dim=n, inputs=[a]) + + # ...end timing + wp.record_event(e2) + + # get elapsed time between the two events + elapsed = wp.get_event_elapsed_time(e1, e2) + print(elapsed) + +The events must be created with the flag ``enable_timing=True``. The first event is recorded at the start of the timed code and the second event is recorded at the end. The function :func:`warp.get_event_elapsed_time()` is used to compute the time difference between the two events. We must ensure that both events have completed on the device before calling :func:`warp.get_event_elapsed_time()`. By default, this function will synchronize on the second event using :func:`warp.synchronize_event()`. If that is not desired, the user may pass the ``synchronize=False`` flag and must use some other means of ensuring that both events have completed prior to calling the function. + +Note that timing very short operations may yield inflated results, due to the timing resolution of CUDA events and the overhead of the profiling code. In most cases, CUDA activity profiling with ``ScopedTimer`` will have less overhead and better precision. For the most accurate results, a profiling tool such as Nsight Systems should be used. The main benefit of using the manual event timing API is that it allows timing arbitrary sections of code rather than individual activities. + +Profiling API Reference +----------------------- + +.. autoclass:: warp.ScopedTimer + +.. autofunction:: warp.get_event_elapsed_time +.. autofunction:: warp.synchronize_event + +.. autoclass:: warp.TimingResult + +.. autofunction:: warp.timing_begin +.. autofunction:: warp.timing_end +.. autofunction:: warp.timing_print diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 00000000..f316efcb --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/check-solid.svg b/_static/check-solid.svg new file mode 100644 index 00000000..92fad4b5 --- /dev/null +++ b/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/_static/clipboard.min.js b/_static/clipboard.min.js new file mode 100644 index 00000000..54b3c463 --- /dev/null +++ b/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/_static/copybutton.css b/_static/copybutton.css new file mode 100644 index 00000000..f1916ec7 --- /dev/null +++ b/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

    Short

    + */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/_static/copybutton.js b/_static/copybutton.js new file mode 100644 index 00000000..ff4aa329 --- /dev/null +++ b/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copier dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos'; + + let text = filterText(target, exclude); + return formatCopyText(text, '>>> |\\.\\.\\. |\\$ ', true, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/_static/copybutton_funcs.js b/_static/copybutton_funcs.js new file mode 100644 index 00000000..dbe1aaad --- /dev/null +++ b/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/_static/custom.css b/_static/custom.css new file mode 100644 index 00000000..39672c9d --- /dev/null +++ b/_static/custom.css @@ -0,0 +1,56 @@ +/* hides the TOC caption from the main page since we already have an H1 heading */ +.section .caption-text { + display: none; +} + +/* note title text in white */ +.admonition p.admonition-title { + color: white; + font-weight: 700; +} + +/* .admonition.note { + background: #e5f4d8; +} */ + +/* left align tables */ +table.docutils { + margin-left: 1em; + font-family: monospace; +} + +/* inline code snippets #E74C3C, var(--color-link), #4e9a06 */ +code.literal { + color: #4e9a06; + font-family: monospace; + font-size: var(--font-size-normal); +} + +.sidebar-brand-text { + text-align: center; + margin: 0 0; +} + +article div.gallery { + overflow-x: unset; +} + +article table.gallery { + margin: 0 auto; + text-align: center; +} + +article table.gallery td { + padding: 0; +} + +article table.gallery img { + margin: 8px; + max-width: 160px; + vertical-align: middle; +} + + + +/* normalize size across Firefox / Chrome */ +html { font-size: 100%; } diff --git a/_static/debug.css b/_static/debug.css new file mode 100644 index 00000000..74d4aec3 --- /dev/null +++ b/_static/debug.css @@ -0,0 +1,69 @@ +/* + This CSS file should be overridden by the theme authors. It's + meant for debugging and developing the skeleton that this theme provides. +*/ +body { + font-family: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, + "Apple Color Emoji", "Segoe UI Emoji"; + background: lavender; +} +.sb-announcement { + background: rgb(131, 131, 131); +} +.sb-announcement__inner { + background: black; + color: white; +} +.sb-header { + background: lightskyblue; +} +.sb-header__inner { + background: royalblue; + color: white; +} +.sb-header-secondary { + background: lightcyan; +} +.sb-header-secondary__inner { + background: cornflowerblue; + color: white; +} +.sb-sidebar-primary { + background: lightgreen; +} +.sb-main { + background: blanchedalmond; +} +.sb-main__inner { + background: antiquewhite; +} +.sb-header-article { + background: lightsteelblue; +} +.sb-article-container { + background: snow; +} +.sb-article-main { + background: white; +} +.sb-footer-article { + background: lightpink; +} +.sb-sidebar-secondary { + background: lightgoldenrodyellow; +} +.sb-footer-content { + background: plum; +} +.sb-footer-content__inner { + background: palevioletred; +} +.sb-footer { + background: pink; +} +.sb-footer__inner { + background: salmon; +} +.sb-article { + background: white; +} diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 00000000..4d67807d --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 00000000..b1151d07 --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '1.3.3', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/_static/language_data.js b/_static/language_data.js new file mode 100644 index 00000000..367b8ed8 --- /dev/null +++ b/_static/language_data.js @@ -0,0 +1,199 @@ +/* + * language_data.js + * ~~~~~~~~~~~~~~~~ + * + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, if available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/_static/logo-dark-mode.png b/_static/logo-dark-mode.png new file mode 100644 index 0000000000000000000000000000000000000000..ce0016561a8ad6995fdb5729fcb78b9cadb56829 GIT binary patch literal 8504 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

    Rg%L{ZkooGEsxn(rig; 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 literal 0 HcmV?d00001 diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..d96755fdaf8bb2214971e0db9c1fd3077d7c419d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu=nj kDsEF_5m^0CR;1wuP-*O&G^0G}KYk!hp00i_>zopr08q^qX#fBK literal 0 HcmV?d00001 diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..7107cec93a979b9a5f64843235a16651d563ce2d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2 m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz literal 0 HcmV?d00001 diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 00000000..02b4b128 --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,258 @@ +.highlight pre { line-height: 125%; } +.highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +.highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +.highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #8f5902; font-style: italic } /* Comment */ +.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */ +.highlight .g { color: #000000 } /* Generic */ +.highlight .k { color: #204a87; font-weight: bold } /* Keyword */ +.highlight .l { color: #000000 } /* Literal */ +.highlight .n { color: #000000 } /* Name */ +.highlight .o { color: #ce5c00; font-weight: bold } /* Operator */ +.highlight .x { color: #000000 } /* Other */ +.highlight .p { color: #000000; font-weight: bold } /* Punctuation */ +.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #8f5902; font-style: italic } /* Comment.Preproc */ +.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #a40000 } /* Generic.Deleted */ +.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */ +.highlight .ges { color: #000000; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +.highlight .gr { color: #ef2929 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #000000; font-style: italic } /* Generic.Output */ +.highlight .gp { color: #8f5902 } /* Generic.Prompt */ +.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */ +.highlight .kc { color: #204a87; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #204a87; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #204a87; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #204a87; font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { color: #204a87; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #204a87; font-weight: bold } /* Keyword.Type */ +.highlight .ld { color: #000000 } /* Literal.Date */ +.highlight .m { color: #0000cf; font-weight: bold } /* Literal.Number */ +.highlight .s { color: #4e9a06 } /* Literal.String */ +.highlight .na { color: #c4a000 } /* Name.Attribute */ +.highlight .nb { color: #204a87 } /* Name.Builtin */ +.highlight .nc { color: #000000 } /* Name.Class */ +.highlight .no { color: #000000 } /* Name.Constant */ +.highlight .nd { color: #5c35cc; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #ce5c00 } /* Name.Entity */ +.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #000000 } /* Name.Function */ +.highlight .nl { color: #f57900 } /* Name.Label */ +.highlight .nn { color: #000000 } /* Name.Namespace */ +.highlight .nx { color: #000000 } /* Name.Other */ +.highlight .py { color: #000000 } /* Name.Property */ +.highlight .nt { color: #204a87; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #000000 } /* Name.Variable */ +.highlight .ow { color: #204a87; font-weight: bold } /* Operator.Word */ +.highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */ +.highlight .w { color: #f8f8f8 } /* Text.Whitespace */ +.highlight .mb { color: #0000cf; font-weight: bold } /* Literal.Number.Bin */ +.highlight .mf { color: #0000cf; font-weight: bold } /* Literal.Number.Float */ +.highlight .mh { color: #0000cf; font-weight: bold } /* Literal.Number.Hex */ +.highlight .mi { color: #0000cf; font-weight: bold } /* Literal.Number.Integer */ +.highlight .mo { color: #0000cf; font-weight: bold } /* Literal.Number.Oct */ +.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */ +.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */ +.highlight .sc { color: #4e9a06 } /* Literal.String.Char */ +.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */ +.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */ +.highlight .se { color: #4e9a06 } /* Literal.String.Escape */ +.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */ +.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */ +.highlight .sx { color: #4e9a06 } /* Literal.String.Other */ +.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */ +.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */ +.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */ +.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #000000 } /* Name.Function.Magic */ +.highlight .vc { color: #000000 } /* Name.Variable.Class */ +.highlight .vg { color: #000000 } /* Name.Variable.Global */ +.highlight .vi { color: #000000 } /* Name.Variable.Instance */ +.highlight .vm { color: #000000 } /* Name.Variable.Magic */ +.highlight .il { color: #0000cf; font-weight: bold } /* Literal.Number.Integer.Long */ +@media not print { +body[data-theme="dark"] .highlight pre { line-height: 125%; } +body[data-theme="dark"] .highlight td.linenos .normal { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight span.linenos { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight .hll { background-color: #404040 } +body[data-theme="dark"] .highlight { background: #202020; color: #d0d0d0 } +body[data-theme="dark"] .highlight .c { color: #ababab; font-style: italic } /* Comment */ +body[data-theme="dark"] .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +body[data-theme="dark"] .highlight .esc { color: #d0d0d0 } /* Escape */ +body[data-theme="dark"] .highlight .g { color: #d0d0d0 } /* Generic */ +body[data-theme="dark"] .highlight .k { color: #6ebf26; font-weight: bold } /* Keyword */ +body[data-theme="dark"] .highlight .l { color: #d0d0d0 } /* Literal */ +body[data-theme="dark"] .highlight .n { color: #d0d0d0 } /* Name */ +body[data-theme="dark"] .highlight .o { color: #d0d0d0 } /* Operator */ +body[data-theme="dark"] .highlight .x { color: #d0d0d0 } /* Other */ +body[data-theme="dark"] .highlight .p { color: #d0d0d0 } /* Punctuation */ +body[data-theme="dark"] .highlight .ch { color: #ababab; font-style: italic } /* Comment.Hashbang */ +body[data-theme="dark"] .highlight .cm { color: #ababab; font-style: italic } /* Comment.Multiline */ +body[data-theme="dark"] .highlight .cp { color: #ff3a3a; font-weight: bold } /* Comment.Preproc */ +body[data-theme="dark"] .highlight .cpf { color: #ababab; font-style: italic } /* Comment.PreprocFile */ +body[data-theme="dark"] .highlight .c1 { color: #ababab; font-style: italic } /* Comment.Single */ +body[data-theme="dark"] .highlight .cs { color: #e50808; font-weight: bold; background-color: #520000 } /* Comment.Special */ +body[data-theme="dark"] .highlight .gd { color: #ff3a3a } /* Generic.Deleted */ +body[data-theme="dark"] .highlight .ge { color: #d0d0d0; font-style: italic } /* Generic.Emph */ +body[data-theme="dark"] .highlight .ges { color: #d0d0d0; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +body[data-theme="dark"] .highlight .gr { color: #ff3a3a } /* Generic.Error */ +body[data-theme="dark"] .highlight .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */ +body[data-theme="dark"] .highlight .gi { color: #589819 } /* Generic.Inserted */ +body[data-theme="dark"] .highlight .go { color: #cccccc } /* Generic.Output */ +body[data-theme="dark"] .highlight .gp { color: #aaaaaa } /* Generic.Prompt */ +body[data-theme="dark"] .highlight .gs { color: #d0d0d0; font-weight: bold } /* Generic.Strong */ +body[data-theme="dark"] .highlight .gu { color: #ffffff; text-decoration: underline } /* Generic.Subheading */ +body[data-theme="dark"] .highlight .gt { color: #ff3a3a } /* Generic.Traceback */ +body[data-theme="dark"] .highlight .kc { color: #6ebf26; font-weight: bold } /* Keyword.Constant */ +body[data-theme="dark"] .highlight .kd { color: #6ebf26; font-weight: bold } /* Keyword.Declaration */ +body[data-theme="dark"] .highlight .kn { color: #6ebf26; font-weight: bold } /* Keyword.Namespace */ +body[data-theme="dark"] .highlight .kp { color: #6ebf26 } /* Keyword.Pseudo */ +body[data-theme="dark"] .highlight .kr { color: #6ebf26; font-weight: bold } /* Keyword.Reserved */ +body[data-theme="dark"] .highlight .kt { color: #6ebf26; font-weight: bold } /* Keyword.Type */ +body[data-theme="dark"] .highlight .ld { color: #d0d0d0 } /* Literal.Date */ +body[data-theme="dark"] .highlight .m { color: #51b2fd } /* Literal.Number */ +body[data-theme="dark"] .highlight .s { color: #ed9d13 } /* Literal.String */ +body[data-theme="dark"] .highlight .na { color: #bbbbbb } /* Name.Attribute */ +body[data-theme="dark"] .highlight .nb { color: #2fbccd } /* Name.Builtin */ +body[data-theme="dark"] .highlight .nc { color: #71adff; text-decoration: underline } /* Name.Class */ +body[data-theme="dark"] .highlight .no { color: #40ffff } /* Name.Constant */ +body[data-theme="dark"] .highlight .nd { color: #ffa500 } /* Name.Decorator */ +body[data-theme="dark"] .highlight .ni { color: #d0d0d0 } /* Name.Entity */ +body[data-theme="dark"] .highlight .ne { color: #bbbbbb } /* Name.Exception */ +body[data-theme="dark"] .highlight .nf { color: #71adff } /* Name.Function */ +body[data-theme="dark"] .highlight .nl { color: #d0d0d0 } /* Name.Label */ +body[data-theme="dark"] .highlight .nn { color: #71adff; text-decoration: underline } /* Name.Namespace */ +body[data-theme="dark"] .highlight .nx { color: #d0d0d0 } /* Name.Other */ +body[data-theme="dark"] .highlight .py { color: #d0d0d0 } /* Name.Property */ +body[data-theme="dark"] .highlight .nt { color: #6ebf26; font-weight: bold } /* Name.Tag */ +body[data-theme="dark"] .highlight .nv { color: #40ffff } /* Name.Variable */ +body[data-theme="dark"] .highlight .ow { color: #6ebf26; font-weight: bold } /* Operator.Word */ +body[data-theme="dark"] .highlight .pm { color: #d0d0d0 } /* Punctuation.Marker */ +body[data-theme="dark"] .highlight .w { color: #666666 } /* Text.Whitespace */ +body[data-theme="dark"] .highlight .mb { color: #51b2fd } /* Literal.Number.Bin */ +body[data-theme="dark"] .highlight .mf { color: #51b2fd } /* Literal.Number.Float */ +body[data-theme="dark"] .highlight .mh { color: #51b2fd } /* Literal.Number.Hex */ +body[data-theme="dark"] .highlight .mi { color: #51b2fd } /* Literal.Number.Integer */ +body[data-theme="dark"] .highlight .mo { color: #51b2fd } /* Literal.Number.Oct */ +body[data-theme="dark"] .highlight .sa { color: #ed9d13 } /* Literal.String.Affix */ +body[data-theme="dark"] .highlight .sb { color: #ed9d13 } /* Literal.String.Backtick */ +body[data-theme="dark"] .highlight .sc { color: #ed9d13 } /* Literal.String.Char */ +body[data-theme="dark"] .highlight .dl { color: #ed9d13 } /* Literal.String.Delimiter */ +body[data-theme="dark"] .highlight .sd { color: #ed9d13 } /* Literal.String.Doc */ +body[data-theme="dark"] .highlight .s2 { color: #ed9d13 } /* Literal.String.Double */ +body[data-theme="dark"] .highlight .se { color: #ed9d13 } /* Literal.String.Escape */ +body[data-theme="dark"] .highlight .sh { color: #ed9d13 } /* Literal.String.Heredoc */ +body[data-theme="dark"] .highlight .si { color: #ed9d13 } /* Literal.String.Interpol */ +body[data-theme="dark"] .highlight .sx { color: #ffa500 } /* Literal.String.Other */ +body[data-theme="dark"] .highlight .sr { color: #ed9d13 } /* Literal.String.Regex */ +body[data-theme="dark"] .highlight .s1 { color: #ed9d13 } /* Literal.String.Single */ +body[data-theme="dark"] .highlight .ss { color: #ed9d13 } /* Literal.String.Symbol */ +body[data-theme="dark"] .highlight .bp { color: #2fbccd } /* Name.Builtin.Pseudo */ +body[data-theme="dark"] .highlight .fm { color: #71adff } /* Name.Function.Magic */ +body[data-theme="dark"] .highlight .vc { color: #40ffff } /* Name.Variable.Class */ +body[data-theme="dark"] .highlight .vg { color: #40ffff } /* Name.Variable.Global */ +body[data-theme="dark"] .highlight .vi { color: #40ffff } /* Name.Variable.Instance */ +body[data-theme="dark"] .highlight .vm { color: #40ffff } /* Name.Variable.Magic */ +body[data-theme="dark"] .highlight .il { color: #51b2fd } /* Literal.Number.Integer.Long */ +@media (prefers-color-scheme: dark) { +body:not([data-theme="light"]) .highlight pre { line-height: 125%; } +body:not([data-theme="light"]) .highlight td.linenos .normal { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight span.linenos { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight .hll { background-color: #404040 } +body:not([data-theme="light"]) .highlight { background: #202020; color: #d0d0d0 } +body:not([data-theme="light"]) .highlight .c { color: #ababab; font-style: italic } /* Comment */ +body:not([data-theme="light"]) .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +body:not([data-theme="light"]) .highlight .esc { color: #d0d0d0 } /* Escape */ +body:not([data-theme="light"]) .highlight .g { color: #d0d0d0 } /* Generic */ +body:not([data-theme="light"]) .highlight .k { color: #6ebf26; font-weight: bold } /* Keyword */ +body:not([data-theme="light"]) .highlight .l { color: #d0d0d0 } /* Literal */ +body:not([data-theme="light"]) .highlight .n { color: #d0d0d0 } /* Name */ +body:not([data-theme="light"]) .highlight .o { color: #d0d0d0 } /* Operator */ +body:not([data-theme="light"]) .highlight .x { color: #d0d0d0 } /* Other */ +body:not([data-theme="light"]) .highlight .p { color: #d0d0d0 } /* Punctuation */ +body:not([data-theme="light"]) .highlight .ch { color: #ababab; font-style: italic } /* Comment.Hashbang */ +body:not([data-theme="light"]) .highlight .cm { color: #ababab; font-style: italic } /* Comment.Multiline */ +body:not([data-theme="light"]) .highlight .cp { color: #ff3a3a; font-weight: bold } /* Comment.Preproc */ +body:not([data-theme="light"]) .highlight .cpf { color: #ababab; font-style: italic } /* Comment.PreprocFile */ +body:not([data-theme="light"]) .highlight .c1 { color: #ababab; font-style: italic } /* Comment.Single */ +body:not([data-theme="light"]) .highlight .cs { color: #e50808; font-weight: bold; background-color: #520000 } /* Comment.Special */ +body:not([data-theme="light"]) .highlight .gd { color: #ff3a3a } /* Generic.Deleted */ +body:not([data-theme="light"]) .highlight .ge { color: #d0d0d0; font-style: italic } /* Generic.Emph */ +body:not([data-theme="light"]) .highlight .ges { color: #d0d0d0; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +body:not([data-theme="light"]) .highlight .gr { color: #ff3a3a } /* Generic.Error */ +body:not([data-theme="light"]) .highlight .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */ +body:not([data-theme="light"]) .highlight .gi { color: #589819 } /* Generic.Inserted */ +body:not([data-theme="light"]) .highlight .go { color: #cccccc } /* Generic.Output */ +body:not([data-theme="light"]) .highlight .gp { color: #aaaaaa } /* Generic.Prompt */ +body:not([data-theme="light"]) .highlight .gs { color: #d0d0d0; font-weight: bold } /* Generic.Strong */ +body:not([data-theme="light"]) .highlight .gu { color: #ffffff; text-decoration: underline } /* Generic.Subheading */ +body:not([data-theme="light"]) .highlight .gt { color: #ff3a3a } /* Generic.Traceback */ +body:not([data-theme="light"]) .highlight .kc { color: #6ebf26; font-weight: bold } /* Keyword.Constant */ +body:not([data-theme="light"]) .highlight .kd { color: #6ebf26; font-weight: bold } /* Keyword.Declaration */ +body:not([data-theme="light"]) .highlight .kn { color: #6ebf26; font-weight: bold } /* Keyword.Namespace */ +body:not([data-theme="light"]) .highlight .kp { color: #6ebf26 } /* Keyword.Pseudo */ +body:not([data-theme="light"]) .highlight .kr { color: #6ebf26; font-weight: bold } /* Keyword.Reserved */ +body:not([data-theme="light"]) .highlight .kt { color: #6ebf26; font-weight: bold } /* Keyword.Type */ +body:not([data-theme="light"]) .highlight .ld { color: #d0d0d0 } /* Literal.Date */ +body:not([data-theme="light"]) .highlight .m { color: #51b2fd } /* Literal.Number */ +body:not([data-theme="light"]) .highlight .s { color: #ed9d13 } /* Literal.String */ +body:not([data-theme="light"]) .highlight .na { color: #bbbbbb } /* Name.Attribute */ +body:not([data-theme="light"]) .highlight .nb { color: #2fbccd } /* Name.Builtin */ +body:not([data-theme="light"]) .highlight .nc { color: #71adff; text-decoration: underline } /* Name.Class */ +body:not([data-theme="light"]) .highlight .no { color: #40ffff } /* Name.Constant */ +body:not([data-theme="light"]) .highlight .nd { color: #ffa500 } /* Name.Decorator */ +body:not([data-theme="light"]) .highlight .ni { color: #d0d0d0 } /* Name.Entity */ +body:not([data-theme="light"]) .highlight .ne { color: #bbbbbb } /* Name.Exception */ +body:not([data-theme="light"]) .highlight .nf { color: #71adff } /* Name.Function */ +body:not([data-theme="light"]) .highlight .nl { color: #d0d0d0 } /* Name.Label */ +body:not([data-theme="light"]) .highlight .nn { color: #71adff; text-decoration: underline } /* Name.Namespace */ +body:not([data-theme="light"]) .highlight .nx { color: #d0d0d0 } /* Name.Other */ +body:not([data-theme="light"]) .highlight .py { color: #d0d0d0 } /* Name.Property */ +body:not([data-theme="light"]) .highlight .nt { color: #6ebf26; font-weight: bold } /* Name.Tag */ +body:not([data-theme="light"]) .highlight .nv { color: #40ffff } /* Name.Variable */ +body:not([data-theme="light"]) .highlight .ow { color: #6ebf26; font-weight: bold } /* Operator.Word */ +body:not([data-theme="light"]) .highlight .pm { color: #d0d0d0 } /* Punctuation.Marker */ +body:not([data-theme="light"]) .highlight .w { color: #666666 } /* Text.Whitespace */ +body:not([data-theme="light"]) .highlight .mb { color: #51b2fd } /* Literal.Number.Bin */ +body:not([data-theme="light"]) .highlight .mf { color: #51b2fd } /* Literal.Number.Float */ +body:not([data-theme="light"]) .highlight .mh { color: #51b2fd } /* Literal.Number.Hex */ +body:not([data-theme="light"]) .highlight .mi { color: #51b2fd } /* Literal.Number.Integer */ +body:not([data-theme="light"]) .highlight .mo { color: #51b2fd } /* Literal.Number.Oct */ +body:not([data-theme="light"]) .highlight .sa { color: #ed9d13 } /* Literal.String.Affix */ +body:not([data-theme="light"]) .highlight .sb { color: #ed9d13 } /* Literal.String.Backtick */ +body:not([data-theme="light"]) .highlight .sc { color: #ed9d13 } /* Literal.String.Char */ +body:not([data-theme="light"]) .highlight .dl { color: #ed9d13 } /* Literal.String.Delimiter */ +body:not([data-theme="light"]) .highlight .sd { color: #ed9d13 } /* Literal.String.Doc */ +body:not([data-theme="light"]) .highlight .s2 { color: #ed9d13 } /* Literal.String.Double */ +body:not([data-theme="light"]) .highlight .se { color: #ed9d13 } /* Literal.String.Escape */ +body:not([data-theme="light"]) .highlight .sh { color: #ed9d13 } /* Literal.String.Heredoc */ +body:not([data-theme="light"]) .highlight .si { color: #ed9d13 } /* Literal.String.Interpol */ +body:not([data-theme="light"]) .highlight .sx { color: #ffa500 } /* Literal.String.Other */ +body:not([data-theme="light"]) .highlight .sr { color: #ed9d13 } /* Literal.String.Regex */ +body:not([data-theme="light"]) .highlight .s1 { color: #ed9d13 } /* Literal.String.Single */ +body:not([data-theme="light"]) .highlight .ss { color: #ed9d13 } /* Literal.String.Symbol */ +body:not([data-theme="light"]) .highlight .bp { color: #2fbccd } /* Name.Builtin.Pseudo */ +body:not([data-theme="light"]) .highlight .fm { color: #71adff } /* Name.Function.Magic */ +body:not([data-theme="light"]) .highlight .vc { color: #40ffff } /* Name.Variable.Class */ +body:not([data-theme="light"]) .highlight .vg { color: #40ffff } /* Name.Variable.Global */ +body:not([data-theme="light"]) .highlight .vi { color: #40ffff } /* Name.Variable.Instance */ +body:not([data-theme="light"]) .highlight .vm { color: #40ffff } /* Name.Variable.Magic */ +body:not([data-theme="light"]) .highlight .il { color: #51b2fd } /* Literal.Number.Integer.Long */ +} +} \ No newline at end of file diff --git a/_static/scripts/furo-extensions.js b/_static/scripts/furo-extensions.js new file mode 100644 index 00000000..e69de29b diff --git a/_static/scripts/furo.js b/_static/scripts/furo.js new file mode 100644 index 00000000..0abb2afa --- /dev/null +++ b/_static/scripts/furo.js @@ -0,0 +1,3 @@ +/*! For license information please see furo.js.LICENSE.txt */ +(()=>{var t={856:function(t,e,n){var o,r;r=void 0!==n.g?n.g:"undefined"!=typeof window?window:this,o=function(){return function(t){"use strict";var e={navClass:"active",contentClass:"active",nested:!1,nestedClass:"active",offset:0,reflow:!1,events:!0},n=function(t,e,n){if(n.settings.events){var o=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:n});e.dispatchEvent(o)}},o=function(t){var e=0;if(t.offsetParent)for(;t;)e+=t.offsetTop,t=t.offsetParent;return e>=0?e:0},r=function(t){t&&t.sort((function(t,e){return o(t.content)=Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},l=function(t,e){var n=t[t.length-1];if(function(t,e){return!(!s()||!c(t.content,e,!0))}(n,e))return n;for(var o=t.length-1;o>=0;o--)if(c(t[o].content,e))return t[o]},a=function(t,e){if(e.nested&&t.parentNode){var n=t.parentNode.closest("li");n&&(n.classList.remove(e.nestedClass),a(n,e))}},i=function(t,e){if(t){var o=t.nav.closest("li");o&&(o.classList.remove(e.navClass),t.content.classList.remove(e.contentClass),a(o,e),n("gumshoeDeactivate",o,{link:t.nav,content:t.content,settings:e}))}},u=function(t,e){if(e.nested){var n=t.parentNode.closest("li");n&&(n.classList.add(e.nestedClass),u(n,e))}};return function(o,c){var s,a,d,f,m,v={setup:function(){s=document.querySelectorAll(o),a=[],Array.prototype.forEach.call(s,(function(t){var e=document.getElementById(decodeURIComponent(t.hash.substr(1)));e&&a.push({nav:t,content:e})})),r(a)},detect:function(){var t=l(a,m);t?d&&t.content===d.content||(i(d,m),function(t,e){if(t){var o=t.nav.closest("li");o&&(o.classList.add(e.navClass),t.content.classList.add(e.contentClass),u(o,e),n("gumshoeActivate",o,{link:t.nav,content:t.content,settings:e}))}}(t,m),d=t):d&&(i(d,m),d=null)}},h=function(e){f&&t.cancelAnimationFrame(f),f=t.requestAnimationFrame(v.detect)},g=function(e){f&&t.cancelAnimationFrame(f),f=t.requestAnimationFrame((function(){r(a),v.detect()}))};return v.destroy=function(){d&&i(d,m),t.removeEventListener("scroll",h,!1),m.reflow&&t.removeEventListener("resize",g,!1),a=null,s=null,d=null,f=null,m=null},m=function(){var t={};return Array.prototype.forEach.call(arguments,(function(e){for(var n in e){if(!e.hasOwnProperty(n))return;t[n]=e[n]}})),t}(e,c||{}),v.setup(),v.detect(),t.addEventListener("scroll",h,!1),m.reflow&&t.addEventListener("resize",g,!1),v}}(r)}.apply(e,[]),void 0===o||(t.exports=o)}},e={};function n(o){var r=e[o];if(void 0!==r)return r.exports;var c=e[o]={exports:{}};return t[o].call(c.exports,c,c.exports,n),c.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var o in e)n.o(e,o)&&!n.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{"use strict";var t=n(856),e=n.n(t),o=null,r=null,c=document.documentElement.scrollTop;const s=64;function l(){const t=localStorage.getItem("theme")||"auto";var e;"light"!==(e=window.matchMedia("(prefers-color-scheme: dark)").matches?"auto"===t?"light":"light"==t?"dark":"auto":"auto"===t?"dark":"dark"==t?"light":"auto")&&"dark"!==e&&"auto"!==e&&(console.error(`Got invalid theme mode: ${e}. Resetting to auto.`),e="auto"),document.body.dataset.theme=e,localStorage.setItem("theme",e),console.log(`Changed to ${e} mode.`)}function a(){!function(){const t=document.getElementsByClassName("theme-toggle");Array.from(t).forEach((t=>{t.addEventListener("click",l)}))}(),function(){let t=0,e=!1;window.addEventListener("scroll",(function(n){t=window.scrollY,e||(window.requestAnimationFrame((function(){var n;(function(t){const e=Math.floor(r.getBoundingClientRect().top);console.log(`headerTop: ${e}`),0==e&&t!=e?r.classList.add("scrolled"):r.classList.remove("scrolled")})(n=t),function(t){tc&&document.documentElement.classList.remove("show-back-to-top"),c=t}(n),function(t){null!==o&&(0==t?o.scrollTo(0,0):Math.ceil(t)>=Math.floor(document.documentElement.scrollHeight-window.innerHeight)?o.scrollTo(0,o.scrollHeight):document.querySelector(".scroll-current"))}(n),e=!1})),e=!0)})),window.scroll()}(),null!==o&&new(e())(".toc-tree a",{reflow:!0,recursive:!0,navClass:"scroll-current",offset:()=>{let t=parseFloat(getComputedStyle(document.documentElement).fontSize);return r.getBoundingClientRect().height+2.5*t+1}})}document.addEventListener("DOMContentLoaded",(function(){document.body.parentNode.classList.remove("no-js"),r=document.querySelector("header"),o=document.querySelector(".toc-scroll"),a()}))})()})(); +//# sourceMappingURL=furo.js.map \ No newline at end of file diff --git a/_static/scripts/furo.js.LICENSE.txt b/_static/scripts/furo.js.LICENSE.txt new file mode 100644 index 00000000..1632189c --- /dev/null +++ b/_static/scripts/furo.js.LICENSE.txt @@ -0,0 +1,7 @@ +/*! + * gumshoejs v5.1.2 (patched by @pradyunsg) + * A simple, framework-agnostic scrollspy script. + * (c) 2019 Chris Ferdinandi + * MIT License + * http://github.com/cferdinandi/gumshoe + */ diff --git a/_static/scripts/furo.js.map b/_static/scripts/furo.js.map new file mode 100644 index 00000000..80ea12b8 --- /dev/null +++ b/_static/scripts/furo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scripts/furo.js","mappings":"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","sources":["webpack:///./src/furo/assets/scripts/gumshoe-patched.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./src/furo/assets/scripts/furo.js"],"sourcesContent":["/*!\n * gumshoejs v5.1.2 (patched by @pradyunsg)\n * A simple, framework-agnostic scrollspy script.\n * (c) 2019 Chris Ferdinandi\n * MIT License\n * http://github.com/cferdinandi/gumshoe\n */\n\n(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([], function () {\n return factory(root);\n });\n } else if (typeof exports === \"object\") {\n module.exports = factory(root);\n } else {\n root.Gumshoe = factory(root);\n }\n})(\n typeof global !== \"undefined\"\n ? global\n : typeof window !== \"undefined\"\n ? window\n : this,\n function (window) {\n \"use strict\";\n\n //\n // Defaults\n //\n\n var defaults = {\n // Active classes\n navClass: \"active\",\n contentClass: \"active\",\n\n // Nested navigation\n nested: false,\n nestedClass: \"active\",\n\n // Offset & reflow\n offset: 0,\n reflow: false,\n\n // Event support\n events: true,\n };\n\n //\n // Methods\n //\n\n /**\n * Merge two or more objects together.\n * @param {Object} objects The objects to merge together\n * @returns {Object} Merged values of defaults and options\n */\n var extend = function () {\n var merged = {};\n Array.prototype.forEach.call(arguments, function (obj) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) return;\n merged[key] = obj[key];\n }\n });\n return merged;\n };\n\n /**\n * Emit a custom event\n * @param {String} type The event type\n * @param {Node} elem The element to attach the event to\n * @param {Object} detail Any details to pass along with the event\n */\n var emitEvent = function (type, elem, detail) {\n // Make sure events are enabled\n if (!detail.settings.events) return;\n\n // Create a new event\n var event = new CustomEvent(type, {\n bubbles: true,\n cancelable: true,\n detail: detail,\n });\n\n // Dispatch the event\n elem.dispatchEvent(event);\n };\n\n /**\n * Get an element's distance from the top of the Document.\n * @param {Node} elem The element\n * @return {Number} Distance from the top in pixels\n */\n var getOffsetTop = function (elem) {\n var location = 0;\n if (elem.offsetParent) {\n while (elem) {\n location += elem.offsetTop;\n elem = elem.offsetParent;\n }\n }\n return location >= 0 ? location : 0;\n };\n\n /**\n * Sort content from first to last in the DOM\n * @param {Array} contents The content areas\n */\n var sortContents = function (contents) {\n if (contents) {\n contents.sort(function (item1, item2) {\n var offset1 = getOffsetTop(item1.content);\n var offset2 = getOffsetTop(item2.content);\n if (offset1 < offset2) return -1;\n return 1;\n });\n }\n };\n\n /**\n * Get the offset to use for calculating position\n * @param {Object} settings The settings for this instantiation\n * @return {Float} The number of pixels to offset the calculations\n */\n var getOffset = function (settings) {\n // if the offset is a function run it\n if (typeof settings.offset === \"function\") {\n return parseFloat(settings.offset());\n }\n\n // Otherwise, return it as-is\n return parseFloat(settings.offset);\n };\n\n /**\n * Get the document element's height\n * @private\n * @returns {Number}\n */\n var getDocumentHeight = function () {\n return Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.offsetHeight,\n document.body.clientHeight,\n document.documentElement.clientHeight,\n );\n };\n\n /**\n * Determine if an element is in view\n * @param {Node} elem The element\n * @param {Object} settings The settings for this instantiation\n * @param {Boolean} bottom If true, check if element is above bottom of viewport instead\n * @return {Boolean} Returns true if element is in the viewport\n */\n var isInView = function (elem, settings, bottom) {\n var bounds = elem.getBoundingClientRect();\n var offset = getOffset(settings);\n if (bottom) {\n return (\n parseInt(bounds.bottom, 10) <\n (window.innerHeight || document.documentElement.clientHeight)\n );\n }\n return parseInt(bounds.top, 10) <= offset;\n };\n\n /**\n * Check if at the bottom of the viewport\n * @return {Boolean} If true, page is at the bottom of the viewport\n */\n var isAtBottom = function () {\n if (\n Math.ceil(window.innerHeight + window.pageYOffset) >=\n getDocumentHeight()\n )\n return true;\n return false;\n };\n\n /**\n * Check if the last item should be used (even if not at the top of the page)\n * @param {Object} item The last item\n * @param {Object} settings The settings for this instantiation\n * @return {Boolean} If true, use the last item\n */\n var useLastItem = function (item, settings) {\n if (isAtBottom() && isInView(item.content, settings, true)) return true;\n return false;\n };\n\n /**\n * Get the active content\n * @param {Array} contents The content areas\n * @param {Object} settings The settings for this instantiation\n * @return {Object} The content area and matching navigation link\n */\n var getActive = function (contents, settings) {\n var last = contents[contents.length - 1];\n if (useLastItem(last, settings)) return last;\n for (var i = contents.length - 1; i >= 0; i--) {\n if (isInView(contents[i].content, settings)) return contents[i];\n }\n };\n\n /**\n * Deactivate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var deactivateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested || !nav.parentNode) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Remove the active class\n li.classList.remove(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n deactivateNested(li, settings);\n };\n\n /**\n * Deactivate a nav and content area\n * @param {Object} items The nav item and content to deactivate\n * @param {Object} settings The settings for this instantiation\n */\n var deactivate = function (items, settings) {\n // Make sure there are items to deactivate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Remove the active class from the nav and content\n li.classList.remove(settings.navClass);\n items.content.classList.remove(settings.contentClass);\n\n // Deactivate any parent navs in a nested navigation\n deactivateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeDeactivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Activate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var activateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Add the active class\n li.classList.add(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n activateNested(li, settings);\n };\n\n /**\n * Activate a nav and content area\n * @param {Object} items The nav item and content to activate\n * @param {Object} settings The settings for this instantiation\n */\n var activate = function (items, settings) {\n // Make sure there are items to activate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Add the active class to the nav and content\n li.classList.add(settings.navClass);\n items.content.classList.add(settings.contentClass);\n\n // Activate any parent navs in a nested navigation\n activateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeActivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Create the Constructor object\n * @param {String} selector The selector to use for navigation items\n * @param {Object} options User options and settings\n */\n var Constructor = function (selector, options) {\n //\n // Variables\n //\n\n var publicAPIs = {};\n var navItems, contents, current, timeout, settings;\n\n //\n // Methods\n //\n\n /**\n * Set variables from DOM elements\n */\n publicAPIs.setup = function () {\n // Get all nav items\n navItems = document.querySelectorAll(selector);\n\n // Create contents array\n contents = [];\n\n // Loop through each item, get it's matching content, and push to the array\n Array.prototype.forEach.call(navItems, function (item) {\n // Get the content for the nav item\n var content = document.getElementById(\n decodeURIComponent(item.hash.substr(1)),\n );\n if (!content) return;\n\n // Push to the contents array\n contents.push({\n nav: item,\n content: content,\n });\n });\n\n // Sort contents by the order they appear in the DOM\n sortContents(contents);\n };\n\n /**\n * Detect which content is currently active\n */\n publicAPIs.detect = function () {\n // Get the active content\n var active = getActive(contents, settings);\n\n // if there's no active content, deactivate and bail\n if (!active) {\n if (current) {\n deactivate(current, settings);\n current = null;\n }\n return;\n }\n\n // If the active content is the one currently active, do nothing\n if (current && active.content === current.content) return;\n\n // Deactivate the current content and activate the new content\n deactivate(current, settings);\n activate(active, settings);\n\n // Update the currently active content\n current = active;\n };\n\n /**\n * Detect the active content on scroll\n * Debounced for performance\n */\n var scrollHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(publicAPIs.detect);\n };\n\n /**\n * Update content sorting on resize\n * Debounced for performance\n */\n var resizeHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(function () {\n sortContents(contents);\n publicAPIs.detect();\n });\n };\n\n /**\n * Destroy the current instantiation\n */\n publicAPIs.destroy = function () {\n // Undo DOM changes\n if (current) {\n deactivate(current, settings);\n }\n\n // Remove event listeners\n window.removeEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.removeEventListener(\"resize\", resizeHandler, false);\n }\n\n // Reset variables\n contents = null;\n navItems = null;\n current = null;\n timeout = null;\n settings = null;\n };\n\n /**\n * Initialize the current instantiation\n */\n var init = function () {\n // Merge user options into defaults\n settings = extend(defaults, options || {});\n\n // Setup variables based on the current DOM\n publicAPIs.setup();\n\n // Find the currently active content\n publicAPIs.detect();\n\n // Setup event listeners\n window.addEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.addEventListener(\"resize\", resizeHandler, false);\n }\n };\n\n //\n // Initialize and return the public APIs\n //\n\n init();\n return publicAPIs;\n };\n\n //\n // Return the Constructor\n //\n\n return Constructor;\n },\n);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import Gumshoe from \"./gumshoe-patched.js\";\n\n////////////////////////////////////////////////////////////////////////////////\n// Scroll Handling\n////////////////////////////////////////////////////////////////////////////////\nvar tocScroll = null;\nvar header = null;\nvar lastScrollTop = document.documentElement.scrollTop;\nconst GO_TO_TOP_OFFSET = 64;\n\nfunction scrollHandlerForHeader(positionY) {\n const headerTop = Math.floor(header.getBoundingClientRect().top);\n\n console.log(`headerTop: ${headerTop}`);\n if (headerTop == 0 && positionY != headerTop) {\n header.classList.add(\"scrolled\");\n } else {\n header.classList.remove(\"scrolled\");\n }\n}\n\nfunction scrollHandlerForBackToTop(positionY) {\n if (positionY < GO_TO_TOP_OFFSET) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n } else {\n if (positionY < lastScrollTop) {\n document.documentElement.classList.add(\"show-back-to-top\");\n } else if (positionY > lastScrollTop) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n }\n }\n lastScrollTop = positionY;\n}\n\nfunction scrollHandlerForTOC(positionY) {\n if (tocScroll === null) {\n return;\n }\n\n // top of page.\n if (positionY == 0) {\n tocScroll.scrollTo(0, 0);\n } else if (\n // bottom of page.\n Math.ceil(positionY) >=\n Math.floor(document.documentElement.scrollHeight - window.innerHeight)\n ) {\n tocScroll.scrollTo(0, tocScroll.scrollHeight);\n } else {\n // somewhere in the middle.\n const current = document.querySelector(\".scroll-current\");\n if (current == null) {\n return;\n }\n\n // https://github.com/pypa/pip/issues/9159 This breaks scroll behaviours.\n // // scroll the currently \"active\" heading in toc, into view.\n // const rect = current.getBoundingClientRect();\n // if (0 > rect.top) {\n // current.scrollIntoView(true); // the argument is \"alignTop\"\n // } else if (rect.bottom > window.innerHeight) {\n // current.scrollIntoView(false);\n // }\n }\n}\n\nfunction scrollHandler(positionY) {\n scrollHandlerForHeader(positionY);\n scrollHandlerForBackToTop(positionY);\n scrollHandlerForTOC(positionY);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Theme Toggle\n////////////////////////////////////////////////////////////////////////////////\nfunction setTheme(mode) {\n if (mode !== \"light\" && mode !== \"dark\" && mode !== \"auto\") {\n console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`);\n mode = \"auto\";\n }\n\n document.body.dataset.theme = mode;\n localStorage.setItem(\"theme\", mode);\n console.log(`Changed to ${mode} mode.`);\n}\n\nfunction cycleThemeOnce() {\n const currentTheme = localStorage.getItem(\"theme\") || \"auto\";\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n\n if (prefersDark) {\n // Auto (dark) -> Light -> Dark\n if (currentTheme === \"auto\") {\n setTheme(\"light\");\n } else if (currentTheme == \"light\") {\n setTheme(\"dark\");\n } else {\n setTheme(\"auto\");\n }\n } else {\n // Auto (light) -> Dark -> Light\n if (currentTheme === \"auto\") {\n setTheme(\"dark\");\n } else if (currentTheme == \"dark\") {\n setTheme(\"light\");\n } else {\n setTheme(\"auto\");\n }\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Setup\n////////////////////////////////////////////////////////////////////////////////\nfunction setupScrollHandler() {\n // Taken from https://developer.mozilla.org/en-US/docs/Web/API/Document/scroll_event\n let last_known_scroll_position = 0;\n let ticking = false;\n\n window.addEventListener(\"scroll\", function (e) {\n last_known_scroll_position = window.scrollY;\n\n if (!ticking) {\n window.requestAnimationFrame(function () {\n scrollHandler(last_known_scroll_position);\n ticking = false;\n });\n\n ticking = true;\n }\n });\n window.scroll();\n}\n\nfunction setupScrollSpy() {\n if (tocScroll === null) {\n return;\n }\n\n // Scrollspy -- highlight table on contents, based on scroll\n new Gumshoe(\".toc-tree a\", {\n reflow: true,\n recursive: true,\n navClass: \"scroll-current\",\n offset: () => {\n let rem = parseFloat(getComputedStyle(document.documentElement).fontSize);\n return header.getBoundingClientRect().height + 2.5 * rem + 1;\n },\n });\n}\n\nfunction setupTheme() {\n // Attach event handlers for toggling themes\n const buttons = document.getElementsByClassName(\"theme-toggle\");\n Array.from(buttons).forEach((btn) => {\n btn.addEventListener(\"click\", cycleThemeOnce);\n });\n}\n\nfunction setup() {\n setupTheme();\n setupScrollHandler();\n setupScrollSpy();\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Main entrypoint\n////////////////////////////////////////////////////////////////////////////////\nfunction main() {\n document.body.parentNode.classList.remove(\"no-js\");\n\n header = document.querySelector(\"header\");\n tocScroll = document.querySelector(\".toc-scroll\");\n\n setup();\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", main);\n"],"names":["root","g","window","this","defaults","navClass","contentClass","nested","nestedClass","offset","reflow","events","emitEvent","type","elem","detail","settings","event","CustomEvent","bubbles","cancelable","dispatchEvent","getOffsetTop","location","offsetParent","offsetTop","sortContents","contents","sort","item1","item2","content","isInView","bottom","bounds","getBoundingClientRect","parseFloat","getOffset","parseInt","innerHeight","document","documentElement","clientHeight","top","isAtBottom","Math","ceil","pageYOffset","max","body","scrollHeight","offsetHeight","getActive","last","length","item","useLastItem","i","deactivateNested","nav","parentNode","li","closest","classList","remove","deactivate","items","link","activateNested","add","selector","options","navItems","current","timeout","publicAPIs","querySelectorAll","Array","prototype","forEach","call","getElementById","decodeURIComponent","hash","substr","push","active","activate","scrollHandler","cancelAnimationFrame","requestAnimationFrame","detect","resizeHandler","destroy","removeEventListener","merged","arguments","obj","key","hasOwnProperty","extend","setup","addEventListener","factory","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","o","Object","defineProperty","enumerable","get","globalThis","Function","e","prop","tocScroll","header","lastScrollTop","scrollTop","GO_TO_TOP_OFFSET","cycleThemeOnce","currentTheme","localStorage","getItem","mode","matchMedia","matches","console","error","dataset","theme","setItem","log","buttons","getElementsByClassName","from","btn","setupTheme","last_known_scroll_position","ticking","scrollY","positionY","headerTop","floor","scrollHandlerForHeader","scrollHandlerForBackToTop","scrollTo","querySelector","scrollHandlerForTOC","scroll","setupScrollHandler","recursive","rem","getComputedStyle","fontSize","height"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/searchtools.js b/_static/searchtools.js new file mode 100644 index 00000000..b08d58c9 --- /dev/null +++ b/_static/searchtools.js @@ -0,0 +1,620 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms, anchor) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + "Search finished, found ${resultCount} page(s) matching the search query." + ).replace('${resultCount}', resultCount); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; +// Helper function used by query() to order search results. +// Each input is an array of [docname, title, anchor, descr, score, filename]. +// Order the results by score (in opposite order of appearance, since the +// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. +const _orderResultsByScoreThenName = (a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString, anchor) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + for (const removalQuery of [".headerlink", "script", "style"]) { + htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); + } + if (anchor) { + const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); + if (anchorContent) return anchorContent.textContent; + + console.warn( + `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` + ); + } + + // if anchor not specified or not found, fall back to main content + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent) return docContent.textContent; + + console.warn( + "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + _parseQuery: (query) => { + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; + }, + + /** + * execute search (requires search index to be loaded) + */ + _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // Collect multiple result groups to be sorted separately and then ordered. + // Each is an array of [docname, title, anchor, descr, score, filename]. + const normalResults = []; + const nonMainIndexResults = []; + + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase().trim(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + const score = Math.round(Scorer.title * queryLower.length / title.length); + const boost = titles[file] === title ? 1 : 0; // add a boost for document titles + normalResults.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score + boost, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id, isMain] of foundEntries) { + const score = Math.round(100 * queryLower.length / entry.length); + const result = [ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]; + if (isMain) { + normalResults.push(result); + } else { + nonMainIndexResults.push(result); + } + } + } + } + + // lookup as object + objectTerms.forEach((term) => + normalResults.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) { + normalResults.forEach((item) => (item[4] = Scorer.score(item))); + nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); + } + + // Sort each group of results by score and then alphabetically by name. + normalResults.sort(_orderResultsByScoreThenName); + nonMainIndexResults.sort(_orderResultsByScoreThenName); + + // Combine the result groups in (reverse) order. + // Non-main index entries are typically arbitrary cross-references, + // so display them after other results. + let results = [...nonMainIndexResults, ...normalResults]; + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + return results.reverse(); + }, + + query: (query) => { + const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); + const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms, highlightTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + if (!terms.hasOwnProperty(word)) { + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + } + if (!titleTerms.hasOwnProperty(word)) { + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); + }); + } + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (!fileMap.has(file)) fileMap.set(file, [word]); + else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords, anchor) => { + const text = Search.htmlToText(htmlText, anchor); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/_static/skeleton.css b/_static/skeleton.css new file mode 100644 index 00000000..467c878c --- /dev/null +++ b/_static/skeleton.css @@ -0,0 +1,296 @@ +/* Some sane resets. */ +html { + height: 100%; +} + +body { + margin: 0; + min-height: 100%; +} + +/* All the flexbox magic! */ +body, +.sb-announcement, +.sb-content, +.sb-main, +.sb-container, +.sb-container__inner, +.sb-article-container, +.sb-footer-content, +.sb-header, +.sb-header-secondary, +.sb-footer { + display: flex; +} + +/* These order things vertically */ +body, +.sb-main, +.sb-article-container { + flex-direction: column; +} + +/* Put elements in the center */ +.sb-header, +.sb-header-secondary, +.sb-container, +.sb-content, +.sb-footer, +.sb-footer-content { + justify-content: center; +} +/* Put elements at the ends */ +.sb-article-container { + justify-content: space-between; +} + +/* These elements grow. */ +.sb-main, +.sb-content, +.sb-container, +article { + flex-grow: 1; +} + +/* Because padding making this wider is not fun */ +article { + box-sizing: border-box; +} + +/* The announcements element should never be wider than the page. */ +.sb-announcement { + max-width: 100%; +} + +.sb-sidebar-primary, +.sb-sidebar-secondary { + flex-shrink: 0; + width: 17rem; +} + +.sb-announcement__inner { + justify-content: center; + + box-sizing: border-box; + height: 3rem; + + overflow-x: auto; + white-space: nowrap; +} + +/* Sidebars, with checkbox-based toggle */ +.sb-sidebar-primary, +.sb-sidebar-secondary { + position: fixed; + height: 100%; + top: 0; +} + +.sb-sidebar-primary { + left: -17rem; + transition: left 250ms ease-in-out; +} +.sb-sidebar-secondary { + right: -17rem; + transition: right 250ms ease-in-out; +} + +.sb-sidebar-toggle { + display: none; +} +.sb-sidebar-overlay { + position: fixed; + top: 0; + width: 0; + height: 0; + + transition: width 0ms ease 250ms, height 0ms ease 250ms, opacity 250ms ease; + + opacity: 0; + background-color: rgba(0, 0, 0, 0.54); +} + +#sb-sidebar-toggle--primary:checked + ~ .sb-sidebar-overlay[for="sb-sidebar-toggle--primary"], +#sb-sidebar-toggle--secondary:checked + ~ .sb-sidebar-overlay[for="sb-sidebar-toggle--secondary"] { + width: 100%; + height: 100%; + opacity: 1; + transition: width 0ms ease, height 0ms ease, opacity 250ms ease; +} + +#sb-sidebar-toggle--primary:checked ~ .sb-container .sb-sidebar-primary { + left: 0; +} +#sb-sidebar-toggle--secondary:checked ~ .sb-container .sb-sidebar-secondary { + right: 0; +} + +/* Full-width mode */ +.drop-secondary-sidebar-for-full-width-content + .hide-when-secondary-sidebar-shown { + display: none !important; +} +.drop-secondary-sidebar-for-full-width-content .sb-sidebar-secondary { + display: none !important; +} + +/* Mobile views */ +.sb-page-width { + width: 100%; +} + +.sb-article-container, +.sb-footer-content__inner, +.drop-secondary-sidebar-for-full-width-content .sb-article, +.drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 100vw; +} + +.sb-article, +.match-content-width { + padding: 0 1rem; + box-sizing: border-box; +} + +@media (min-width: 32rem) { + .sb-article, + .match-content-width { + padding: 0 2rem; + } +} + +/* Tablet views */ +@media (min-width: 42rem) { + .sb-article-container { + width: auto; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 42rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} +@media (min-width: 46rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 46rem; + } + .sb-article, + .match-content-width { + width: 46rem; + } +} +@media (min-width: 50rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 50rem; + } + .sb-article, + .match-content-width { + width: 50rem; + } +} + +/* Tablet views */ +@media (min-width: 59rem) { + .sb-sidebar-secondary { + position: static; + } + .hide-when-secondary-sidebar-shown { + display: none !important; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 59rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} +@media (min-width: 63rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 63rem; + } + .sb-article, + .match-content-width { + width: 46rem; + } +} +@media (min-width: 67rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } + .sb-article, + .match-content-width { + width: 50rem; + } +} + +/* Desktop views */ +@media (min-width: 76rem) { + .sb-sidebar-primary { + position: static; + } + .hide-when-primary-sidebar-shown { + display: none !important; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 59rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} + +/* Full desktop views */ +@media (min-width: 80rem) { + .sb-article, + .match-content-width { + width: 46rem; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 63rem; + } +} + +@media (min-width: 84rem) { + .sb-article, + .match-content-width { + width: 50rem; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } +} + +@media (min-width: 88rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } + .sb-page-width { + width: 88rem; + } +} diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js new file mode 100644 index 00000000..8a96c69a --- /dev/null +++ b/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '

    " + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/_static/styles/furo-extensions.css b/_static/styles/furo-extensions.css new file mode 100644 index 00000000..82295876 --- /dev/null +++ b/_static/styles/furo-extensions.css @@ -0,0 +1,2 @@ +#furo-sidebar-ad-placement{padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)}#furo-sidebar-ad-placement .ethical-sidebar{background:var(--color-background-secondary);border:none;box-shadow:none}#furo-sidebar-ad-placement .ethical-sidebar:hover{background:var(--color-background-hover)}#furo-sidebar-ad-placement .ethical-sidebar a{color:var(--color-foreground-primary)}#furo-sidebar-ad-placement .ethical-callout a{color:var(--color-foreground-secondary)!important}#furo-readthedocs-versions{background:transparent;display:block;position:static;width:100%}#furo-readthedocs-versions .rst-versions{background:#1a1c1e}#furo-readthedocs-versions .rst-current-version{background:var(--color-sidebar-item-background);cursor:unset}#furo-readthedocs-versions .rst-current-version:hover{background:var(--color-sidebar-item-background)}#furo-readthedocs-versions .rst-current-version .fa-book{color:var(--color-foreground-primary)}#furo-readthedocs-versions>.rst-other-versions{padding:0}#furo-readthedocs-versions>.rst-other-versions small{opacity:1}#furo-readthedocs-versions .injected .rst-versions{position:unset}#furo-readthedocs-versions:focus-within,#furo-readthedocs-versions:hover{box-shadow:0 0 0 1px var(--color-sidebar-background-border)}#furo-readthedocs-versions:focus-within .rst-current-version,#furo-readthedocs-versions:hover .rst-current-version{background:#1a1c1e;font-size:inherit;height:auto;line-height:inherit;padding:12px;text-align:right}#furo-readthedocs-versions:focus-within .rst-current-version .fa-book,#furo-readthedocs-versions:hover .rst-current-version .fa-book{color:#fff;float:left}#furo-readthedocs-versions:focus-within .fa-caret-down,#furo-readthedocs-versions:hover .fa-caret-down{display:none}#furo-readthedocs-versions:focus-within .injected,#furo-readthedocs-versions:focus-within .rst-current-version,#furo-readthedocs-versions:focus-within .rst-other-versions,#furo-readthedocs-versions:hover .injected,#furo-readthedocs-versions:hover .rst-current-version,#furo-readthedocs-versions:hover .rst-other-versions{display:block}#furo-readthedocs-versions:focus-within>.rst-current-version,#furo-readthedocs-versions:hover>.rst-current-version{display:none}.highlight:hover button.copybtn{color:var(--color-code-foreground)}.highlight button.copybtn{align-items:center;background-color:var(--color-code-background);border:none;color:var(--color-background-item);cursor:pointer;height:1.25em;right:.5rem;top:.625rem;transition:color .3s,opacity .3s;width:1.25em}.highlight button.copybtn:hover{background-color:var(--color-code-background);color:var(--color-brand-content)}.highlight button.copybtn:after{background-color:transparent;color:var(--color-code-foreground);display:none}.highlight button.copybtn.success{color:#22863a;transition:color 0ms}.highlight button.copybtn.success:after{display:block}.highlight button.copybtn svg{padding:0}body{--sd-color-primary:var(--color-brand-primary);--sd-color-primary-highlight:var(--color-brand-content);--sd-color-primary-text:var(--color-background-primary);--sd-color-shadow:rgba(0,0,0,.05);--sd-color-card-border:var(--color-card-border);--sd-color-card-border-hover:var(--color-brand-content);--sd-color-card-background:var(--color-card-background);--sd-color-card-text:var(--color-foreground-primary);--sd-color-card-header:var(--color-card-marginals-background);--sd-color-card-footer:var(--color-card-marginals-background);--sd-color-tabs-label-active:var(--color-brand-content);--sd-color-tabs-label-hover:var(--color-foreground-muted);--sd-color-tabs-label-inactive:var(--color-foreground-muted);--sd-color-tabs-underline-active:var(--color-brand-content);--sd-color-tabs-underline-hover:var(--color-foreground-border);--sd-color-tabs-underline-inactive:var(--color-background-border);--sd-color-tabs-overline:var(--color-background-border);--sd-color-tabs-underline:var(--color-background-border)}.sd-tab-content{box-shadow:0 -2px var(--sd-color-tabs-overline),0 1px var(--sd-color-tabs-underline)}.sd-card{box-shadow:0 .1rem .25rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)}.sd-shadow-sm{box-shadow:0 .1rem .25rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-shadow-md{box-shadow:0 .3rem .75rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-shadow-lg{box-shadow:0 .6rem 1.5rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-card-hover:hover{transform:none}.sd-cards-carousel{gap:.25rem;padding:.25rem}body{--tabs--label-text:var(--color-foreground-muted);--tabs--label-text--hover:var(--color-foreground-muted);--tabs--label-text--active:var(--color-brand-content);--tabs--label-text--active--hover:var(--color-brand-content);--tabs--label-background:transparent;--tabs--label-background--hover:transparent;--tabs--label-background--active:transparent;--tabs--label-background--active--hover:transparent;--tabs--padding-x:0.25em;--tabs--margin-x:1em;--tabs--border:var(--color-background-border);--tabs--label-border:transparent;--tabs--label-border--hover:var(--color-foreground-muted);--tabs--label-border--active:var(--color-brand-content);--tabs--label-border--active--hover:var(--color-brand-content)}[role=main] .container{max-width:none;padding-left:0;padding-right:0}.shadow.docutils{border:none;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1)!important}.sphinx-bs .card{background-color:var(--color-background-secondary);color:var(--color-foreground)} +/*# sourceMappingURL=furo-extensions.css.map*/ \ No newline at end of file diff --git a/_static/styles/furo-extensions.css.map b/_static/styles/furo-extensions.css.map new file mode 100644 index 00000000..c26eac7f --- /dev/null +++ b/_static/styles/furo-extensions.css.map @@ -0,0 +1 @@ +{"version":3,"file":"styles/furo-extensions.css","mappings":"AAGA,2BACE,oFACA,4CAKE,6CAHA,YACA,eAEA,CACA,kDACE,yCAEF,8CACE,sCAEJ,8CACE,kDAEJ,2BAGE,uBACA,cAHA,gBACA,UAEA,CAGA,yCACE,mBAEF,gDAEE,gDADA,YACA,CACA,sDACE,gDACF,yDACE,sCAEJ,+CACE,UACA,qDACE,UAGF,mDACE,eAEJ,yEAEE,4DAEA,mHASE,mBAPA,kBAEA,YADA,oBAGA,aADA,gBAIA,CAEA,qIAEE,WADA,UACA,CAEJ,uGACE,aAEF,iUAGE,cAEF,mHACE,aC1EJ,gCACE,mCAEF,0BAEE,mBAUA,8CACA,YAFA,mCAKA,eAZA,cAIA,YADA,YAYA,iCAdA,YAcA,CAEA,gCAEE,8CADA,gCACA,CAEF,gCAGE,6BADA,mCADA,YAEA,CAEF,kCAEE,cADA,oBACA,CACA,wCACE,cAEJ,8BACE,UCzCN,KAEE,6CAA8C,CAC9C,uDAAwD,CACxD,uDAAwD,CAGxD,iCAAsC,CAGtC,+CAAgD,CAChD,uDAAwD,CACxD,uDAAwD,CACxD,oDAAqD,CACrD,6DAA8D,CAC9D,6DAA8D,CAG9D,uDAAwD,CACxD,yDAA0D,CAC1D,4DAA6D,CAC7D,2DAA4D,CAC5D,8DAA+D,CAC/D,iEAAkE,CAClE,uDAAwD,CACxD,wDAAyD,CAG3D,gBACE,qFAGF,SACE,6EAEF,cACE,uFAEF,cACE,uFAEF,cACE,uFAGF,qBACE,eAEF,mBACE,WACA,eChDF,KACE,gDAAiD,CACjD,uDAAwD,CACxD,qDAAsD,CACtD,4DAA6D,CAC7D,oCAAqC,CACrC,2CAA4C,CAC5C,4CAA6C,CAC7C,mDAAoD,CACpD,wBAAyB,CACzB,oBAAqB,CACrB,6CAA8C,CAC9C,gCAAiC,CACjC,yDAA0D,CAC1D,uDAAwD,CACxD,8DAA+D,CCbjE,uBACE,eACA,eACA,gBAGF,iBACE,YACA,+EAGF,iBACE,mDACA","sources":["webpack:///./src/furo/assets/styles/extensions/_readthedocs.sass","webpack:///./src/furo/assets/styles/extensions/_copybutton.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-design.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-inline-tabs.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-panels.sass"],"sourcesContent":["// This file contains the styles used for tweaking how ReadTheDoc's embedded\n// contents would show up inside the theme.\n\n#furo-sidebar-ad-placement\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n .ethical-sidebar\n // Remove the border and box-shadow.\n border: none\n box-shadow: none\n // Manage the background colors.\n background: var(--color-background-secondary)\n &:hover\n background: var(--color-background-hover)\n // Ensure the text is legible.\n a\n color: var(--color-foreground-primary)\n\n .ethical-callout a\n color: var(--color-foreground-secondary) !important\n\n#furo-readthedocs-versions\n position: static\n width: 100%\n background: transparent\n display: block\n\n // Make the background color fit with the theme's aesthetic.\n .rst-versions\n background: rgb(26, 28, 30)\n\n .rst-current-version\n cursor: unset\n background: var(--color-sidebar-item-background)\n &:hover\n background: var(--color-sidebar-item-background)\n .fa-book\n color: var(--color-foreground-primary)\n\n > .rst-other-versions\n padding: 0\n small\n opacity: 1\n\n .injected\n .rst-versions\n position: unset\n\n &:hover,\n &:focus-within\n box-shadow: 0 0 0 1px var(--color-sidebar-background-border)\n\n .rst-current-version\n // Undo the tweaks done in RTD's CSS\n font-size: inherit\n line-height: inherit\n height: auto\n text-align: right\n padding: 12px\n\n // Match the rest of the body\n background: #1a1c1e\n\n .fa-book\n float: left\n color: white\n\n .fa-caret-down\n display: none\n\n .rst-current-version,\n .rst-other-versions,\n .injected\n display: block\n\n > .rst-current-version\n display: none\n",".highlight\n &:hover button.copybtn\n color: var(--color-code-foreground)\n\n button.copybtn\n // Align things correctly\n align-items: center\n\n height: 1.25em\n width: 1.25em\n\n top: 0.625rem // $code-spacing-vertical\n right: 0.5rem\n\n // Make it look better\n color: var(--color-background-item)\n background-color: var(--color-code-background)\n border: none\n\n // Change to cursor to make it obvious that you can click on it\n cursor: pointer\n\n // Transition smoothly, for aesthetics\n transition: color 300ms, opacity 300ms\n\n &:hover\n color: var(--color-brand-content)\n background-color: var(--color-code-background)\n\n &::after\n display: none\n color: var(--color-code-foreground)\n background-color: transparent\n\n &.success\n transition: color 0ms\n color: #22863a\n &::after\n display: block\n\n svg\n padding: 0\n","body\n // Colors\n --sd-color-primary: var(--color-brand-primary)\n --sd-color-primary-highlight: var(--color-brand-content)\n --sd-color-primary-text: var(--color-background-primary)\n\n // Shadows\n --sd-color-shadow: rgba(0, 0, 0, 0.05)\n\n // Cards\n --sd-color-card-border: var(--color-card-border)\n --sd-color-card-border-hover: var(--color-brand-content)\n --sd-color-card-background: var(--color-card-background)\n --sd-color-card-text: var(--color-foreground-primary)\n --sd-color-card-header: var(--color-card-marginals-background)\n --sd-color-card-footer: var(--color-card-marginals-background)\n\n // Tabs\n --sd-color-tabs-label-active: var(--color-brand-content)\n --sd-color-tabs-label-hover: var(--color-foreground-muted)\n --sd-color-tabs-label-inactive: var(--color-foreground-muted)\n --sd-color-tabs-underline-active: var(--color-brand-content)\n --sd-color-tabs-underline-hover: var(--color-foreground-border)\n --sd-color-tabs-underline-inactive: var(--color-background-border)\n --sd-color-tabs-overline: var(--color-background-border)\n --sd-color-tabs-underline: var(--color-background-border)\n\n// Tabs\n.sd-tab-content\n box-shadow: 0 -2px var(--sd-color-tabs-overline), 0 1px var(--sd-color-tabs-underline)\n\n// Shadows\n.sd-card // Have a shadow by default\n box-shadow: 0 0.1rem 0.25rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n.sd-shadow-sm\n box-shadow: 0 0.1rem 0.25rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n.sd-shadow-md\n box-shadow: 0 0.3rem 0.75rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n.sd-shadow-lg\n box-shadow: 0 0.6rem 1.5rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n// Cards\n.sd-card-hover:hover // Don't change scale on hover\n transform: none\n\n.sd-cards-carousel // Have a bit of gap in the carousel by default\n gap: 0.25rem\n padding: 0.25rem\n","// This file contains styles to tweak sphinx-inline-tabs to work well with Furo.\n\nbody\n --tabs--label-text: var(--color-foreground-muted)\n --tabs--label-text--hover: var(--color-foreground-muted)\n --tabs--label-text--active: var(--color-brand-content)\n --tabs--label-text--active--hover: var(--color-brand-content)\n --tabs--label-background: transparent\n --tabs--label-background--hover: transparent\n --tabs--label-background--active: transparent\n --tabs--label-background--active--hover: transparent\n --tabs--padding-x: 0.25em\n --tabs--margin-x: 1em\n --tabs--border: var(--color-background-border)\n --tabs--label-border: transparent\n --tabs--label-border--hover: var(--color-foreground-muted)\n --tabs--label-border--active: var(--color-brand-content)\n --tabs--label-border--active--hover: var(--color-brand-content)\n","// This file contains styles to tweak sphinx-panels to work well with Furo.\n\n// sphinx-panels includes Bootstrap 4, which uses .container which can conflict\n// with docutils' `.. container::` directive.\n[role=\"main\"] .container\n max-width: initial\n padding-left: initial\n padding-right: initial\n\n// Make the panels look nicer!\n.shadow.docutils\n border: none\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n// Make panel colors respond to dark mode\n.sphinx-bs .card\n background-color: var(--color-background-secondary)\n color: var(--color-foreground)\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/_static/styles/furo.css b/_static/styles/furo.css new file mode 100644 index 00000000..21836d6a --- /dev/null +++ b/_static/styles/furo.css @@ -0,0 +1,2 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}@media print{.content-icon-container,.headerlink,.mobile-header,.related-pages{display:none!important}.highlight{border:.1pt solid var(--color-foreground-border)}a,blockquote,dl,ol,pre,table,ul{page-break-inside:avoid}caption,figure,h1,h2,h3,h4,h5,h6,img{page-break-after:avoid;page-break-inside:avoid}dl,ol,ul{page-break-before:avoid}}.visually-hidden{height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;background:var(--color-background-primary);border:0!important;color:var(--color-foreground-primary);white-space:nowrap!important}:-moz-focusring{outline:auto}body{--font-stack:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;--font-stack--monospace:"SFMono-Regular",Menlo,Consolas,Monaco,Liberation Mono,Lucida Console,monospace;--font-stack--headings:var(--font-stack);--font-size--normal:100%;--font-size--small:87.5%;--font-size--small--2:81.25%;--font-size--small--3:75%;--font-size--small--4:62.5%;--sidebar-caption-font-size:var(--font-size--small--2);--sidebar-item-font-size:var(--font-size--small);--sidebar-search-input-font-size:var(--font-size--small);--toc-font-size:var(--font-size--small--3);--toc-font-size--mobile:var(--font-size--normal);--toc-title-font-size:var(--font-size--small--4);--admonition-font-size:0.8125rem;--admonition-title-font-size:0.8125rem;--code-font-size:var(--font-size--small--2);--api-font-size:var(--font-size--small);--header-height:calc(var(--sidebar-item-line-height) + var(--sidebar-item-spacing-vertical)*4);--header-padding:0.5rem;--sidebar-tree-space-above:1.5rem;--sidebar-caption-space-above:1rem;--sidebar-item-line-height:1rem;--sidebar-item-spacing-vertical:0.5rem;--sidebar-item-spacing-horizontal:1rem;--sidebar-item-height:calc(var(--sidebar-item-line-height) + var(--sidebar-item-spacing-vertical)*2);--sidebar-expander-width:var(--sidebar-item-height);--sidebar-search-space-above:0.5rem;--sidebar-search-input-spacing-vertical:0.5rem;--sidebar-search-input-spacing-horizontal:0.5rem;--sidebar-search-input-height:1rem;--sidebar-search-icon-size:var(--sidebar-search-input-height);--toc-title-padding:0.25rem 0;--toc-spacing-vertical:1.5rem;--toc-spacing-horizontal:1.5rem;--toc-item-spacing-vertical:0.4rem;--toc-item-spacing-horizontal:1rem;--icon-search:url('data:image/svg+xml;charset=utf-8,');--icon-pencil:url('data:image/svg+xml;charset=utf-8,');--icon-abstract:url('data:image/svg+xml;charset=utf-8,');--icon-info:url('data:image/svg+xml;charset=utf-8,');--icon-flame:url('data:image/svg+xml;charset=utf-8,');--icon-question:url('data:image/svg+xml;charset=utf-8,');--icon-warning:url('data:image/svg+xml;charset=utf-8,');--icon-failure:url('data:image/svg+xml;charset=utf-8,');--icon-spark:url('data:image/svg+xml;charset=utf-8,');--color-admonition-title--caution:#ff9100;--color-admonition-title-background--caution:rgba(255,145,0,.2);--color-admonition-title--warning:#ff9100;--color-admonition-title-background--warning:rgba(255,145,0,.2);--color-admonition-title--danger:#ff5252;--color-admonition-title-background--danger:rgba(255,82,82,.2);--color-admonition-title--attention:#ff5252;--color-admonition-title-background--attention:rgba(255,82,82,.2);--color-admonition-title--error:#ff5252;--color-admonition-title-background--error:rgba(255,82,82,.2);--color-admonition-title--hint:#00c852;--color-admonition-title-background--hint:rgba(0,200,82,.2);--color-admonition-title--tip:#00c852;--color-admonition-title-background--tip:rgba(0,200,82,.2);--color-admonition-title--important:#00bfa5;--color-admonition-title-background--important:rgba(0,191,165,.2);--color-admonition-title--note:#00b0ff;--color-admonition-title-background--note:rgba(0,176,255,.2);--color-admonition-title--seealso:#448aff;--color-admonition-title-background--seealso:rgba(68,138,255,.2);--color-admonition-title--admonition-todo:grey;--color-admonition-title-background--admonition-todo:hsla(0,0%,50%,.2);--color-admonition-title:#651fff;--color-admonition-title-background:rgba(101,31,255,.2);--icon-admonition-default:var(--icon-abstract);--color-topic-title:#14b8a6;--color-topic-title-background:rgba(20,184,166,.2);--icon-topic-default:var(--icon-pencil);--color-problematic:#b30000;--color-foreground-primary:#000;--color-foreground-secondary:#5a5c63;--color-foreground-muted:#6b6f76;--color-foreground-border:#878787;--color-background-primary:#fff;--color-background-secondary:#f8f9fb;--color-background-hover:#efeff4;--color-background-hover--transparent:#efeff400;--color-background-border:#eeebee;--color-background-item:#ccc;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#0a4bff;--color-brand-content:#2757dd;--color-brand-visited:#872ee0;--color-api-background:var(--color-background-hover--transparent);--color-api-background-hover:var(--color-background-hover);--color-api-overall:var(--color-foreground-secondary);--color-api-name:var(--color-problematic);--color-api-pre-name:var(--color-problematic);--color-api-paren:var(--color-foreground-secondary);--color-api-keyword:var(--color-foreground-primary);--color-api-added:#21632c;--color-api-added-border:#38a84d;--color-api-changed:#046172;--color-api-changed-border:#06a1bc;--color-api-deprecated:#605706;--color-api-deprecated-border:#f0d90f;--color-api-removed:#b30000;--color-api-removed-border:#ff5c5c;--color-highlight-on-target:#ffc;--color-inline-code-background:var(--color-background-secondary);--color-highlighted-background:#def;--color-highlighted-text:var(--color-foreground-primary);--color-guilabel-background:#ddeeff80;--color-guilabel-border:#bedaf580;--color-guilabel-text:var(--color-foreground-primary);--color-admonition-background:transparent;--color-table-header-background:var(--color-background-secondary);--color-table-border:var(--color-background-border);--color-card-border:var(--color-background-secondary);--color-card-background:transparent;--color-card-marginals-background:var(--color-background-secondary);--color-header-background:var(--color-background-primary);--color-header-border:var(--color-background-border);--color-header-text:var(--color-foreground-primary);--color-sidebar-background:var(--color-background-secondary);--color-sidebar-background-border:var(--color-background-border);--color-sidebar-brand-text:var(--color-foreground-primary);--color-sidebar-caption-text:var(--color-foreground-muted);--color-sidebar-link-text:var(--color-foreground-secondary);--color-sidebar-link-text--top-level:var(--color-brand-primary);--color-sidebar-item-background:var(--color-sidebar-background);--color-sidebar-item-background--current:var( --color-sidebar-item-background );--color-sidebar-item-background--hover:linear-gradient(90deg,var(--color-background-hover--transparent) 0%,var(--color-background-hover) var(--sidebar-item-spacing-horizontal),var(--color-background-hover) 100%);--color-sidebar-item-expander-background:transparent;--color-sidebar-item-expander-background--hover:var( --color-background-hover );--color-sidebar-search-text:var(--color-foreground-primary);--color-sidebar-search-background:var(--color-background-secondary);--color-sidebar-search-background--focus:var(--color-background-primary);--color-sidebar-search-border:var(--color-background-border);--color-sidebar-search-icon:var(--color-foreground-muted);--color-toc-background:var(--color-background-primary);--color-toc-title-text:var(--color-foreground-muted);--color-toc-item-text:var(--color-foreground-secondary);--color-toc-item-text--hover:var(--color-foreground-primary);--color-toc-item-text--active:var(--color-brand-primary);--color-content-foreground:var(--color-foreground-primary);--color-content-background:transparent;--color-link:var(--color-brand-content);--color-link-underline:var(--color-background-border);--color-link--hover:var(--color-brand-content);--color-link-underline--hover:var(--color-foreground-border);--color-link--visited:var(--color-brand-visited);--color-link-underline--visited:var(--color-background-border);--color-link--visited--hover:var(--color-brand-visited);--color-link-underline--visited--hover:var(--color-foreground-border)}.only-light{display:block!important}html body .only-dark{display:none!important}@media not print{body[data-theme=dark]{--color-problematic:#ee5151;--color-foreground-primary:#cfd0d0;--color-foreground-secondary:#9ca0a5;--color-foreground-muted:#81868d;--color-foreground-border:#666;--color-background-primary:#131416;--color-background-secondary:#1a1c1e;--color-background-hover:#1e2124;--color-background-hover--transparent:#1e212400;--color-background-border:#303335;--color-background-item:#444;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#3d94ff;--color-brand-content:#5ca5ff;--color-brand-visited:#b27aeb;--color-highlighted-background:#083563;--color-guilabel-background:#08356380;--color-guilabel-border:#13395f80;--color-api-keyword:var(--color-foreground-secondary);--color-highlight-on-target:#330;--color-api-added:#3db854;--color-api-added-border:#267334;--color-api-changed:#09b0ce;--color-api-changed-border:#056d80;--color-api-deprecated:#b1a10b;--color-api-deprecated-border:#6e6407;--color-api-removed:#ff7575;--color-api-removed-border:#b03b3b;--color-admonition-background:#18181a;--color-card-border:var(--color-background-secondary);--color-card-background:#18181a;--color-card-marginals-background:var(--color-background-hover)}html body[data-theme=dark] .only-light{display:none!important}body[data-theme=dark] .only-dark{display:block!important}@media(prefers-color-scheme:dark){body:not([data-theme=light]){--color-problematic:#ee5151;--color-foreground-primary:#cfd0d0;--color-foreground-secondary:#9ca0a5;--color-foreground-muted:#81868d;--color-foreground-border:#666;--color-background-primary:#131416;--color-background-secondary:#1a1c1e;--color-background-hover:#1e2124;--color-background-hover--transparent:#1e212400;--color-background-border:#303335;--color-background-item:#444;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#3d94ff;--color-brand-content:#5ca5ff;--color-brand-visited:#b27aeb;--color-highlighted-background:#083563;--color-guilabel-background:#08356380;--color-guilabel-border:#13395f80;--color-api-keyword:var(--color-foreground-secondary);--color-highlight-on-target:#330;--color-api-added:#3db854;--color-api-added-border:#267334;--color-api-changed:#09b0ce;--color-api-changed-border:#056d80;--color-api-deprecated:#b1a10b;--color-api-deprecated-border:#6e6407;--color-api-removed:#ff7575;--color-api-removed-border:#b03b3b;--color-admonition-background:#18181a;--color-card-border:var(--color-background-secondary);--color-card-background:#18181a;--color-card-marginals-background:var(--color-background-hover)}html body:not([data-theme=light]) .only-light{display:none!important}body:not([data-theme=light]) .only-dark{display:block!important}}}body[data-theme=auto] .theme-toggle svg.theme-icon-when-auto-light{display:block}@media(prefers-color-scheme:dark){body[data-theme=auto] .theme-toggle svg.theme-icon-when-auto-dark{display:block}body[data-theme=auto] .theme-toggle svg.theme-icon-when-auto-light{display:none}}body[data-theme=dark] .theme-toggle svg.theme-icon-when-dark,body[data-theme=light] .theme-toggle svg.theme-icon-when-light{display:block}body{font-family:var(--font-stack)}code,kbd,pre,samp{font-family:var(--font-stack--monospace)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}article{line-height:1.5}h1,h2,h3,h4,h5,h6{border-radius:.5rem;font-family:var(--font-stack--headings);font-weight:700;line-height:1.25;margin:.5rem -.5rem;padding-left:.5rem;padding-right:.5rem}h1+p,h2+p,h3+p,h4+p,h5+p,h6+p{margin-top:0}h1{font-size:2.5em;margin-bottom:1rem}h1,h2{margin-top:1.75rem}h2{font-size:2em}h3{font-size:1.5em}h4{font-size:1.25em}h5{font-size:1.125em}h6{font-size:1em}small{font-size:80%;opacity:75%}p{margin-bottom:.75rem;margin-top:.5rem}hr.docutils{background-color:var(--color-background-border);border:0;height:1px;margin:2rem 0;padding:0}.centered{text-align:center}a{color:var(--color-link);text-decoration:underline;text-decoration-color:var(--color-link-underline)}a:visited{color:var(--color-link--visited);text-decoration-color:var(--color-link-underline--visited)}a:visited:hover{color:var(--color-link--visited--hover);text-decoration-color:var(--color-link-underline--visited--hover)}a:hover{color:var(--color-link--hover);text-decoration-color:var(--color-link-underline--hover)}a.muted-link{color:inherit}a.muted-link:hover{color:var(--color-link--hover);text-decoration-color:var(--color-link-underline--hover)}a.muted-link:hover:visited{color:var(--color-link--visited--hover);text-decoration-color:var(--color-link-underline--visited--hover)}html{overflow-x:hidden;overflow-y:scroll;scroll-behavior:smooth}.sidebar-scroll,.toc-scroll,article[role=main] *{scrollbar-color:var(--color-foreground-border) transparent;scrollbar-width:thin}.sidebar-scroll::-webkit-scrollbar,.toc-scroll::-webkit-scrollbar,article[role=main] ::-webkit-scrollbar{height:.25rem;width:.25rem}.sidebar-scroll::-webkit-scrollbar-thumb,.toc-scroll::-webkit-scrollbar-thumb,article[role=main] ::-webkit-scrollbar-thumb{background-color:var(--color-foreground-border);border-radius:.125rem}body,html{height:100%}.skip-to-content,body,html{background:var(--color-background-primary);color:var(--color-foreground-primary)}.skip-to-content{border-radius:1rem;left:.25rem;padding:1rem;position:fixed;top:.25rem;transform:translateY(-200%);transition:transform .3s ease-in-out;z-index:40}.skip-to-content:focus-within{transform:translateY(0)}article{background:var(--color-content-background);color:var(--color-content-foreground);overflow-wrap:break-word}.page{display:flex;min-height:100%}.mobile-header{background-color:var(--color-header-background);border-bottom:1px solid var(--color-header-border);color:var(--color-header-text);display:none;height:var(--header-height);width:100%;z-index:10}.mobile-header.scrolled{border-bottom:none;box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2)}.mobile-header .header-center a{color:var(--color-header-text);text-decoration:none}.main{display:flex;flex:1}.sidebar-drawer{background:var(--color-sidebar-background);border-right:1px solid var(--color-sidebar-background-border);box-sizing:border-box;display:flex;justify-content:flex-end;min-width:15em;width:calc(50% - 26em)}.sidebar-container,.toc-drawer{box-sizing:border-box;width:15em}.toc-drawer{background:var(--color-toc-background);padding-right:1rem}.sidebar-sticky,.toc-sticky{display:flex;flex-direction:column;height:min(100%,100vh);height:100vh;position:sticky;top:0}.sidebar-scroll,.toc-scroll{flex-grow:1;flex-shrink:1;overflow:auto;scroll-behavior:smooth}.content{display:flex;flex-direction:column;justify-content:space-between;padding:0 3em;width:46em}.icon{display:inline-block;height:1rem;width:1rem}.icon svg{height:100%;width:100%}.announcement{align-items:center;background-color:var(--color-announcement-background);color:var(--color-announcement-text);display:flex;height:var(--header-height);overflow-x:auto}.announcement+.page{min-height:calc(100% - var(--header-height))}.announcement-content{box-sizing:border-box;min-width:100%;padding:.5rem;text-align:center;white-space:nowrap}.announcement-content a{color:var(--color-announcement-text);text-decoration-color:var(--color-announcement-text)}.announcement-content a:hover{color:var(--color-announcement-text);text-decoration-color:var(--color-link--hover)}.no-js .theme-toggle-container{display:none}.theme-toggle-container{display:flex}.theme-toggle{background:transparent;border:none;cursor:pointer;display:flex;padding:0}.theme-toggle svg{color:var(--color-foreground-primary);display:none;height:1.25rem;width:1.25rem}.theme-toggle-header{align-items:center;display:flex;justify-content:center}.nav-overlay-icon,.toc-overlay-icon{cursor:pointer;display:none}.nav-overlay-icon .icon,.toc-overlay-icon .icon{color:var(--color-foreground-secondary);height:1.5rem;width:1.5rem}.nav-overlay-icon,.toc-header-icon{align-items:center;justify-content:center}.toc-content-icon{height:1.5rem;width:1.5rem}.content-icon-container{display:flex;float:right;gap:.5rem;margin-bottom:1rem;margin-left:1rem;margin-top:1.5rem}.content-icon-container .edit-this-page svg,.content-icon-container .view-this-page svg{color:inherit;height:1.25rem;width:1.25rem}.sidebar-toggle{display:none;position:absolute}.sidebar-toggle[name=__toc]{left:20px}.sidebar-toggle:checked{left:40px}.overlay{background-color:rgba(0,0,0,.54);height:0;opacity:0;position:fixed;top:0;transition:width 0ms,height 0ms,opacity .25s ease-out;width:0}.sidebar-overlay{z-index:20}.toc-overlay{z-index:40}.sidebar-drawer{transition:left .25s ease-in-out;z-index:30}.toc-drawer{transition:right .25s ease-in-out;z-index:50}#__navigation:checked~.sidebar-overlay{height:100%;opacity:1;width:100%}#__navigation:checked~.page .sidebar-drawer{left:0;top:0}#__toc:checked~.toc-overlay{height:100%;opacity:1;width:100%}#__toc:checked~.page .toc-drawer{right:0;top:0}.back-to-top{background:var(--color-background-primary);border-radius:1rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 1px 0 hsla(220,9%,46%,.502);display:none;font-size:.8125rem;left:0;margin-left:50%;padding:.5rem .75rem .5rem .5rem;position:fixed;text-decoration:none;top:1rem;transform:translateX(-50%);z-index:10}.back-to-top svg{height:1rem;width:1rem;fill:currentColor;display:inline-block}.back-to-top span{margin-left:.25rem}.show-back-to-top .back-to-top{align-items:center;display:flex}@media(min-width:97em){html{font-size:110%}}@media(max-width:82em){.toc-content-icon{display:flex}.toc-drawer{border-left:1px solid var(--color-background-muted);height:100vh;position:fixed;right:-15em;top:0}.toc-tree{border-left:none;font-size:var(--toc-font-size--mobile)}.sidebar-drawer{width:calc(50% - 18.5em)}}@media(max-width:67em){.nav-overlay-icon{display:flex}.sidebar-drawer{height:100vh;left:-15em;position:fixed;top:0;width:15em}.theme-toggle-header,.toc-header-icon{display:flex}.theme-toggle-content,.toc-content-icon{display:none}.mobile-header{align-items:center;display:flex;justify-content:space-between;position:sticky;top:0}.mobile-header .header-left,.mobile-header .header-right{display:flex;height:var(--header-height);padding:0 var(--header-padding)}.mobile-header .header-left label,.mobile-header .header-right label{height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.nav-overlay-icon .icon,.theme-toggle svg{height:1.5rem;width:1.5rem}:target{scroll-margin-top:calc(var(--header-height) + 2.5rem)}.back-to-top{top:calc(var(--header-height) + .5rem)}.page{flex-direction:column;justify-content:center}.content{margin-left:auto;margin-right:auto}}@media(max-width:52em){.content{overflow-x:auto;width:100%}}@media(max-width:46em){.content{padding:0 1em}article aside.sidebar{float:none;margin:1rem 0;width:100%}}.admonition,.topic{background:var(--color-admonition-background);border-radius:.2rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1);font-size:var(--admonition-font-size);margin:1rem auto;overflow:hidden;padding:0 .5rem .5rem;page-break-inside:avoid}.admonition>:nth-child(2),.topic>:nth-child(2){margin-top:0}.admonition>:last-child,.topic>:last-child{margin-bottom:0}.admonition p.admonition-title,p.topic-title{font-size:var(--admonition-title-font-size);font-weight:500;line-height:1.3;margin:0 -.5rem .5rem;padding:.4rem .5rem .4rem 2rem;position:relative}.admonition p.admonition-title:before,p.topic-title:before{content:"";height:1rem;left:.5rem;position:absolute;width:1rem}p.admonition-title{background-color:var(--color-admonition-title-background)}p.admonition-title:before{background-color:var(--color-admonition-title);-webkit-mask-image:var(--icon-admonition-default);mask-image:var(--icon-admonition-default);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}p.topic-title{background-color:var(--color-topic-title-background)}p.topic-title:before{background-color:var(--color-topic-title);-webkit-mask-image:var(--icon-topic-default);mask-image:var(--icon-topic-default);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.admonition{border-left:.2rem solid var(--color-admonition-title)}.admonition.caution{border-left-color:var(--color-admonition-title--caution)}.admonition.caution>.admonition-title{background-color:var(--color-admonition-title-background--caution)}.admonition.caution>.admonition-title:before{background-color:var(--color-admonition-title--caution);-webkit-mask-image:var(--icon-spark);mask-image:var(--icon-spark)}.admonition.warning{border-left-color:var(--color-admonition-title--warning)}.admonition.warning>.admonition-title{background-color:var(--color-admonition-title-background--warning)}.admonition.warning>.admonition-title:before{background-color:var(--color-admonition-title--warning);-webkit-mask-image:var(--icon-warning);mask-image:var(--icon-warning)}.admonition.danger{border-left-color:var(--color-admonition-title--danger)}.admonition.danger>.admonition-title{background-color:var(--color-admonition-title-background--danger)}.admonition.danger>.admonition-title:before{background-color:var(--color-admonition-title--danger);-webkit-mask-image:var(--icon-spark);mask-image:var(--icon-spark)}.admonition.attention{border-left-color:var(--color-admonition-title--attention)}.admonition.attention>.admonition-title{background-color:var(--color-admonition-title-background--attention)}.admonition.attention>.admonition-title:before{background-color:var(--color-admonition-title--attention);-webkit-mask-image:var(--icon-warning);mask-image:var(--icon-warning)}.admonition.error{border-left-color:var(--color-admonition-title--error)}.admonition.error>.admonition-title{background-color:var(--color-admonition-title-background--error)}.admonition.error>.admonition-title:before{background-color:var(--color-admonition-title--error);-webkit-mask-image:var(--icon-failure);mask-image:var(--icon-failure)}.admonition.hint{border-left-color:var(--color-admonition-title--hint)}.admonition.hint>.admonition-title{background-color:var(--color-admonition-title-background--hint)}.admonition.hint>.admonition-title:before{background-color:var(--color-admonition-title--hint);-webkit-mask-image:var(--icon-question);mask-image:var(--icon-question)}.admonition.tip{border-left-color:var(--color-admonition-title--tip)}.admonition.tip>.admonition-title{background-color:var(--color-admonition-title-background--tip)}.admonition.tip>.admonition-title:before{background-color:var(--color-admonition-title--tip);-webkit-mask-image:var(--icon-info);mask-image:var(--icon-info)}.admonition.important{border-left-color:var(--color-admonition-title--important)}.admonition.important>.admonition-title{background-color:var(--color-admonition-title-background--important)}.admonition.important>.admonition-title:before{background-color:var(--color-admonition-title--important);-webkit-mask-image:var(--icon-flame);mask-image:var(--icon-flame)}.admonition.note{border-left-color:var(--color-admonition-title--note)}.admonition.note>.admonition-title{background-color:var(--color-admonition-title-background--note)}.admonition.note>.admonition-title:before{background-color:var(--color-admonition-title--note);-webkit-mask-image:var(--icon-pencil);mask-image:var(--icon-pencil)}.admonition.seealso{border-left-color:var(--color-admonition-title--seealso)}.admonition.seealso>.admonition-title{background-color:var(--color-admonition-title-background--seealso)}.admonition.seealso>.admonition-title:before{background-color:var(--color-admonition-title--seealso);-webkit-mask-image:var(--icon-info);mask-image:var(--icon-info)}.admonition.admonition-todo{border-left-color:var(--color-admonition-title--admonition-todo)}.admonition.admonition-todo>.admonition-title{background-color:var(--color-admonition-title-background--admonition-todo)}.admonition.admonition-todo>.admonition-title:before{background-color:var(--color-admonition-title--admonition-todo);-webkit-mask-image:var(--icon-pencil);mask-image:var(--icon-pencil)}.admonition-todo>.admonition-title{text-transform:uppercase}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd{margin-left:2rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd>:first-child{margin-top:.125rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list,dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd>:last-child{margin-bottom:.75rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list>dt{font-size:var(--font-size--small);text-transform:uppercase}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd:empty{margin-bottom:.5rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul{margin-left:-1.2rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul>li>p:nth-child(2){margin-top:0}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul>li>p+p:last-child:empty{margin-bottom:0;margin-top:0}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt{color:var(--color-api-overall)}.sig:not(.sig-inline){background:var(--color-api-background);border-radius:.25rem;font-family:var(--font-stack--monospace);font-size:var(--api-font-size);font-weight:700;margin-left:-.25rem;margin-right:-.25rem;padding:.25rem .5rem .25rem 3em;text-indent:-2.5em;transition:background .1s ease-out}.sig:not(.sig-inline):hover{background:var(--color-api-background-hover)}.sig:not(.sig-inline) a.reference .viewcode-link{font-weight:400;width:4.25rem}em.property{font-style:normal}em.property:first-child{color:var(--color-api-keyword)}.sig-name{color:var(--color-api-name)}.sig-prename{color:var(--color-api-pre-name);font-weight:400}.sig-paren{color:var(--color-api-paren)}.sig-param{font-style:normal}div.deprecated,div.versionadded,div.versionchanged,div.versionremoved{border-left:.1875rem solid;border-radius:.125rem;padding-left:.75rem}div.deprecated p,div.versionadded p,div.versionchanged p,div.versionremoved p{margin-bottom:.125rem;margin-top:.125rem}div.versionadded{border-color:var(--color-api-added-border)}div.versionadded .versionmodified{color:var(--color-api-added)}div.versionchanged{border-color:var(--color-api-changed-border)}div.versionchanged .versionmodified{color:var(--color-api-changed)}div.deprecated{border-color:var(--color-api-deprecated-border)}div.deprecated .versionmodified{color:var(--color-api-deprecated)}div.versionremoved{border-color:var(--color-api-removed-border)}div.versionremoved .versionmodified{color:var(--color-api-removed)}.viewcode-back,.viewcode-link{float:right;text-align:right}.line-block{margin-bottom:.75rem;margin-top:.5rem}.line-block .line-block{margin-bottom:0;margin-top:0;padding-left:1rem}.code-block-caption,article p.caption,table>caption{font-size:var(--font-size--small);text-align:center}.toctree-wrapper.compound .caption,.toctree-wrapper.compound :not(.caption)>.caption-text{font-size:var(--font-size--small);margin-bottom:0;text-align:initial;text-transform:uppercase}.toctree-wrapper.compound>ul{margin-bottom:0;margin-top:0}.sig-inline,code.literal{background:var(--color-inline-code-background);border-radius:.2em;font-size:var(--font-size--small--2);padding:.1em .2em}pre.literal-block .sig-inline,pre.literal-block code.literal{font-size:inherit;padding:0}p .sig-inline,p code.literal{border:1px solid var(--color-background-border)}.sig-inline{font-family:var(--font-stack--monospace)}div[class*=" highlight-"],div[class^=highlight-]{display:flex;margin:1em 0}div[class*=" highlight-"] .table-wrapper,div[class^=highlight-] .table-wrapper,pre{margin:0;padding:0}pre{overflow:auto}article[role=main] .highlight pre{line-height:1.5}.highlight pre,pre.literal-block{font-size:var(--code-font-size);padding:.625rem .875rem}pre.literal-block{background-color:var(--color-code-background);border-radius:.2rem;color:var(--color-code-foreground);margin-bottom:1rem;margin-top:1rem}.highlight{border-radius:.2rem;width:100%}.highlight .gp,.highlight span.linenos{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.highlight .hll{display:block;margin-left:-.875rem;margin-right:-.875rem;padding-left:.875rem;padding-right:.875rem}.code-block-caption{background-color:var(--color-code-background);border-bottom:1px solid;border-radius:.25rem;border-bottom-left-radius:0;border-bottom-right-radius:0;border-color:var(--color-background-border);color:var(--color-code-foreground);display:flex;font-weight:300;padding:.625rem .875rem}.code-block-caption+div[class]{margin-top:0}.code-block-caption+div[class] pre{border-top-left-radius:0;border-top-right-radius:0}.highlighttable{display:block;width:100%}.highlighttable tbody{display:block}.highlighttable tr{display:flex}.highlighttable td.linenos{background-color:var(--color-code-background);border-bottom-left-radius:.2rem;border-top-left-radius:.2rem;color:var(--color-code-foreground);padding:.625rem 0 .625rem .875rem}.highlighttable .linenodiv{box-shadow:-.0625rem 0 var(--color-foreground-border) inset;font-size:var(--code-font-size);padding-right:.875rem}.highlighttable td.code{display:block;flex:1;overflow:hidden;padding:0}.highlighttable td.code .highlight{border-bottom-left-radius:0;border-top-left-radius:0}.highlight span.linenos{box-shadow:-.0625rem 0 var(--color-foreground-border) inset;display:inline-block;margin-right:.875rem;padding-left:0;padding-right:.875rem}.footnote-reference{font-size:var(--font-size--small--4);vertical-align:super}dl.footnote.brackets{color:var(--color-foreground-secondary);display:grid;font-size:var(--font-size--small);grid-template-columns:max-content auto}dl.footnote.brackets dt{margin:0}dl.footnote.brackets dt>.fn-backref{margin-left:.25rem}dl.footnote.brackets dt:after{content:":"}dl.footnote.brackets dt .brackets:before{content:"["}dl.footnote.brackets dt .brackets:after{content:"]"}dl.footnote.brackets dd{margin:0;padding:0 1rem}aside.footnote{color:var(--color-foreground-secondary);font-size:var(--font-size--small)}aside.footnote>span,div.citation>span{float:left;font-weight:500;padding-right:.25rem}aside.footnote>:not(span),div.citation>p{margin-left:2rem}img{box-sizing:border-box;height:auto;max-width:100%}article .figure,article figure{border-radius:.2rem;margin:0}article .figure :last-child,article figure :last-child{margin-bottom:0}article .align-left{clear:left;float:left;margin:0 1rem 1rem}article .align-right{clear:right;float:right;margin:0 1rem 1rem}article .align-center,article .align-default{display:block;margin-left:auto;margin-right:auto;text-align:center}article table.align-default{display:table;text-align:initial}.domainindex-jumpbox,.genindex-jumpbox{border-bottom:1px solid var(--color-background-border);border-top:1px solid var(--color-background-border);padding:.25rem}.domainindex-section h2,.genindex-section h2{margin-bottom:.5rem;margin-top:.75rem}.domainindex-section ul,.genindex-section ul{margin-bottom:0;margin-top:0}ol,ul{margin-bottom:1rem;margin-top:1rem;padding-left:1.2rem}ol li>p:first-child,ul li>p:first-child{margin-bottom:.25rem;margin-top:.25rem}ol li>p:last-child,ul li>p:last-child{margin-top:.25rem}ol li>ol,ol li>ul,ul li>ol,ul li>ul{margin-bottom:.5rem;margin-top:.5rem}ol.arabic{list-style:decimal}ol.loweralpha{list-style:lower-alpha}ol.upperalpha{list-style:upper-alpha}ol.lowerroman{list-style:lower-roman}ol.upperroman{list-style:upper-roman}.simple li>ol,.simple li>ul,.toctree-wrapper li>ol,.toctree-wrapper li>ul{margin-bottom:0;margin-top:0}.field-list dt,.option-list dt,dl.footnote dt,dl.glossary dt,dl.simple dt,dl:not([class]) dt{font-weight:500;margin-top:.25rem}.field-list dt+dt,.option-list dt+dt,dl.footnote dt+dt,dl.glossary dt+dt,dl.simple dt+dt,dl:not([class]) dt+dt{margin-top:0}.field-list dt .classifier:before,.option-list dt .classifier:before,dl.footnote dt .classifier:before,dl.glossary dt .classifier:before,dl.simple dt .classifier:before,dl:not([class]) dt .classifier:before{content:":";margin-left:.2rem;margin-right:.2rem}.field-list dd ul,.field-list dd>p:first-child,.option-list dd ul,.option-list dd>p:first-child,dl.footnote dd ul,dl.footnote dd>p:first-child,dl.glossary dd ul,dl.glossary dd>p:first-child,dl.simple dd ul,dl.simple dd>p:first-child,dl:not([class]) dd ul,dl:not([class]) dd>p:first-child{margin-top:.125rem}.field-list dd ul,.option-list dd ul,dl.footnote dd ul,dl.glossary dd ul,dl.simple dd ul,dl:not([class]) dd ul{margin-bottom:.125rem}.math-wrapper{overflow-x:auto;width:100%}div.math{position:relative;text-align:center}div.math .headerlink,div.math:focus .headerlink{display:none}div.math:hover .headerlink{display:inline-block}div.math span.eqno{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);z-index:1}abbr[title]{cursor:help}.problematic{color:var(--color-problematic)}kbd:not(.compound){background-color:var(--color-background-secondary);border:1px solid var(--color-foreground-border);border-radius:.2rem;box-shadow:0 .0625rem 0 rgba(0,0,0,.2),inset 0 0 0 .125rem var(--color-background-primary);color:var(--color-foreground-primary);display:inline-block;font-size:var(--font-size--small--3);margin:0 .2rem;padding:0 .2rem;vertical-align:text-bottom}blockquote{background:var(--color-background-secondary);border-left:4px solid var(--color-background-border);margin-left:0;margin-right:0;padding:.5rem 1rem}blockquote .attribution{font-weight:600;text-align:right}blockquote.highlights,blockquote.pull-quote{font-size:1.25em}blockquote.epigraph,blockquote.pull-quote{border-left-width:0;border-radius:.5rem}blockquote.highlights{background:transparent;border-left-width:0}p .reference img{vertical-align:middle}p.rubric{font-size:1.125em;font-weight:700;line-height:1.25}dd p.rubric{font-size:var(--font-size--small);font-weight:inherit;line-height:inherit;text-transform:uppercase}article .sidebar{background-color:var(--color-background-secondary);border:1px solid var(--color-background-border);border-radius:.2rem;clear:right;float:right;margin-left:1rem;margin-right:0;width:30%}article .sidebar>*{padding-left:1rem;padding-right:1rem}article .sidebar>ol,article .sidebar>ul{padding-left:2.2rem}article .sidebar .sidebar-title{border-bottom:1px solid var(--color-background-border);font-weight:500;margin:0;padding:.5rem 1rem}.table-wrapper{margin-bottom:.5rem;margin-top:1rem;overflow-x:auto;padding:.2rem .2rem .75rem;width:100%}table.docutils{border-collapse:collapse;border-radius:.2rem;border-spacing:0;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1)}table.docutils th{background:var(--color-table-header-background)}table.docutils td,table.docutils th{border-bottom:1px solid var(--color-table-border);border-left:1px solid var(--color-table-border);border-right:1px solid var(--color-table-border);padding:0 .25rem}table.docutils td p,table.docutils th p{margin:.25rem}table.docutils td:first-child,table.docutils th:first-child{border-left:none}table.docutils td:last-child,table.docutils th:last-child{border-right:none}table.docutils td.text-left,table.docutils th.text-left{text-align:left}table.docutils td.text-right,table.docutils th.text-right{text-align:right}table.docutils td.text-center,table.docutils th.text-center{text-align:center}:target{scroll-margin-top:2.5rem}@media(max-width:67em){:target{scroll-margin-top:calc(2.5rem + var(--header-height))}section>span:target{scroll-margin-top:calc(2.8rem + var(--header-height))}}.headerlink{font-weight:100;-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-block-caption>.headerlink,dl dt>.headerlink,figcaption p>.headerlink,h1>.headerlink,h2>.headerlink,h3>.headerlink,h4>.headerlink,h5>.headerlink,h6>.headerlink,p.caption>.headerlink,table>caption>.headerlink{margin-left:.5rem;visibility:hidden}.code-block-caption:hover>.headerlink,dl dt:hover>.headerlink,figcaption p:hover>.headerlink,h1:hover>.headerlink,h2:hover>.headerlink,h3:hover>.headerlink,h4:hover>.headerlink,h5:hover>.headerlink,h6:hover>.headerlink,p.caption:hover>.headerlink,table>caption:hover>.headerlink{visibility:visible}.code-block-caption>.toc-backref,dl dt>.toc-backref,figcaption p>.toc-backref,h1>.toc-backref,h2>.toc-backref,h3>.toc-backref,h4>.toc-backref,h5>.toc-backref,h6>.toc-backref,p.caption>.toc-backref,table>caption>.toc-backref{color:inherit;text-decoration-line:none}figure:hover>figcaption>p>.headerlink,table:hover>caption>.headerlink{visibility:visible}:target>h1:first-of-type,:target>h2:first-of-type,:target>h3:first-of-type,:target>h4:first-of-type,:target>h5:first-of-type,:target>h6:first-of-type,span:target~h1:first-of-type,span:target~h2:first-of-type,span:target~h3:first-of-type,span:target~h4:first-of-type,span:target~h5:first-of-type,span:target~h6:first-of-type{background-color:var(--color-highlight-on-target)}:target>h1:first-of-type code.literal,:target>h2:first-of-type code.literal,:target>h3:first-of-type code.literal,:target>h4:first-of-type code.literal,:target>h5:first-of-type code.literal,:target>h6:first-of-type code.literal,span:target~h1:first-of-type code.literal,span:target~h2:first-of-type code.literal,span:target~h3:first-of-type code.literal,span:target~h4:first-of-type code.literal,span:target~h5:first-of-type code.literal,span:target~h6:first-of-type code.literal{background-color:transparent}.literal-block-wrapper:target .code-block-caption,.this-will-duplicate-information-and-it-is-still-useful-here li :target,figure:target,table:target>caption{background-color:var(--color-highlight-on-target)}dt:target{background-color:var(--color-highlight-on-target)!important}.footnote-reference:target,.footnote>dt:target+dd{background-color:var(--color-highlight-on-target)}.guilabel{background-color:var(--color-guilabel-background);border:1px solid var(--color-guilabel-border);border-radius:.5em;color:var(--color-guilabel-text);font-size:.9em;padding:0 .3em}footer{display:flex;flex-direction:column;font-size:var(--font-size--small);margin-top:2rem}.bottom-of-page{align-items:center;border-top:1px solid var(--color-background-border);color:var(--color-foreground-secondary);display:flex;justify-content:space-between;line-height:1.5;margin-top:1rem;padding-bottom:1rem;padding-top:1rem}@media(max-width:46em){.bottom-of-page{flex-direction:column-reverse;gap:.25rem;text-align:center}}.bottom-of-page .left-details{font-size:var(--font-size--small)}.bottom-of-page .right-details{display:flex;flex-direction:column;gap:.25rem;text-align:right}.bottom-of-page .icons{display:flex;font-size:1rem;gap:.25rem;justify-content:flex-end}.bottom-of-page .icons a{text-decoration:none}.bottom-of-page .icons img,.bottom-of-page .icons svg{font-size:1.125rem;height:1em;width:1em}.related-pages a{align-items:center;display:flex;text-decoration:none}.related-pages a:hover .page-info .title{color:var(--color-link);text-decoration:underline;text-decoration-color:var(--color-link-underline)}.related-pages a svg.furo-related-icon,.related-pages a svg.furo-related-icon>use{color:var(--color-foreground-border);flex-shrink:0;height:.75rem;margin:0 .5rem;width:.75rem}.related-pages a.next-page{clear:right;float:right;max-width:50%;text-align:right}.related-pages a.prev-page{clear:left;float:left;max-width:50%}.related-pages a.prev-page svg{transform:rotate(180deg)}.page-info{display:flex;flex-direction:column;overflow-wrap:anywhere}.next-page .page-info{align-items:flex-end}.page-info .context{align-items:center;color:var(--color-foreground-muted);display:flex;font-size:var(--font-size--small);padding-bottom:.1rem;text-decoration:none}ul.search{list-style:none;padding-left:0}ul.search li{border-bottom:1px solid var(--color-background-border);padding:1rem 0}[role=main] .highlighted{background-color:var(--color-highlighted-background);color:var(--color-highlighted-text)}.sidebar-brand{display:flex;flex-direction:column;flex-shrink:0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-decoration:none}.sidebar-brand-text{color:var(--color-sidebar-brand-text);font-size:1.5rem;overflow-wrap:break-word}.sidebar-brand-text,.sidebar-logo-container{margin:var(--sidebar-item-spacing-vertical) 0}.sidebar-logo{display:block;margin:0 auto;max-width:100%}.sidebar-search-container{align-items:center;background:var(--color-sidebar-search-background);display:flex;margin-top:var(--sidebar-search-space-above);position:relative}.sidebar-search-container:focus-within,.sidebar-search-container:hover{background:var(--color-sidebar-search-background--focus)}.sidebar-search-container:before{background-color:var(--color-sidebar-search-icon);content:"";height:var(--sidebar-search-icon-size);left:var(--sidebar-item-spacing-horizontal);-webkit-mask-image:var(--icon-search);mask-image:var(--icon-search);position:absolute;width:var(--sidebar-search-icon-size)}.sidebar-search{background:transparent;border:none;border-bottom:1px solid var(--color-sidebar-search-border);border-top:1px solid var(--color-sidebar-search-border);box-sizing:border-box;color:var(--color-sidebar-search-foreground);padding:var(--sidebar-search-input-spacing-vertical) var(--sidebar-search-input-spacing-horizontal) var(--sidebar-search-input-spacing-vertical) calc(var(--sidebar-item-spacing-horizontal) + var(--sidebar-search-input-spacing-horizontal) + var(--sidebar-search-icon-size));width:100%;z-index:10}.sidebar-search:focus{outline:none}.sidebar-search::-moz-placeholder{font-size:var(--sidebar-search-input-font-size)}.sidebar-search::placeholder{font-size:var(--sidebar-search-input-font-size)}#searchbox .highlight-link{margin:0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal) 0;text-align:center}#searchbox .highlight-link a{color:var(--color-sidebar-search-icon);font-size:var(--font-size--small--2)}.sidebar-tree{font-size:var(--sidebar-item-font-size);margin-bottom:var(--sidebar-item-spacing-vertical);margin-top:var(--sidebar-tree-space-above)}.sidebar-tree ul{display:flex;flex-direction:column;list-style:none;margin-bottom:0;margin-top:0;padding:0}.sidebar-tree li{margin:0;position:relative}.sidebar-tree li>ul{margin-left:var(--sidebar-item-spacing-horizontal)}.sidebar-tree .icon,.sidebar-tree .reference{color:var(--color-sidebar-link-text)}.sidebar-tree .reference{box-sizing:border-box;display:inline-block;height:100%;line-height:var(--sidebar-item-line-height);overflow-wrap:anywhere;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-decoration:none;width:100%}.sidebar-tree .reference:hover{background:var(--color-sidebar-item-background--hover);color:var(--color-sidebar-link-text)}.sidebar-tree .reference.external:after{color:var(--color-sidebar-link-text);content:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23607D8B' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' viewBox='0 0 24 24'%3E%3Cpath stroke='none' d='M0 0h24v24H0z'/%3E%3Cpath d='M11 7H6a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2v-5M10 14 20 4M15 4h5v5'/%3E%3C/svg%3E");margin:0 .25rem;vertical-align:middle}.sidebar-tree .current-page>.reference{font-weight:700}.sidebar-tree label{align-items:center;cursor:pointer;display:flex;height:var(--sidebar-item-height);justify-content:center;position:absolute;right:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:var(--sidebar-expander-width)}.sidebar-tree .caption,.sidebar-tree :not(.caption)>.caption-text{color:var(--color-sidebar-caption-text);font-size:var(--sidebar-caption-font-size);font-weight:700;margin:var(--sidebar-caption-space-above) 0 0 0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-transform:uppercase}.sidebar-tree li.has-children>.reference{padding-right:var(--sidebar-expander-width)}.sidebar-tree .toctree-l1>.reference,.sidebar-tree .toctree-l1>label .icon{color:var(--color-sidebar-link-text--top-level)}.sidebar-tree label{background:var(--color-sidebar-item-expander-background)}.sidebar-tree label:hover{background:var(--color-sidebar-item-expander-background--hover)}.sidebar-tree .current>.reference{background:var(--color-sidebar-item-background--current)}.sidebar-tree .current>.reference:hover{background:var(--color-sidebar-item-background--hover)}.toctree-checkbox{display:none;position:absolute}.toctree-checkbox~ul{display:none}.toctree-checkbox~label .icon svg{transform:rotate(90deg)}.toctree-checkbox:checked~ul{display:block}.toctree-checkbox:checked~label .icon svg{transform:rotate(-90deg)}.toc-title-container{padding:var(--toc-title-padding);padding-top:var(--toc-spacing-vertical)}.toc-title{color:var(--color-toc-title-text);font-size:var(--toc-title-font-size);padding-left:var(--toc-spacing-horizontal);text-transform:uppercase}.no-toc{display:none}.toc-tree-container{padding-bottom:var(--toc-spacing-vertical)}.toc-tree{border-left:1px solid var(--color-background-border);font-size:var(--toc-font-size);line-height:1.3;padding-left:calc(var(--toc-spacing-horizontal) - var(--toc-item-spacing-horizontal))}.toc-tree>ul>li:first-child{padding-top:0}.toc-tree>ul>li:first-child>ul{padding-left:0}.toc-tree>ul>li:first-child>a{display:none}.toc-tree ul{list-style-type:none;margin-bottom:0;margin-top:0;padding-left:var(--toc-item-spacing-horizontal)}.toc-tree li{padding-top:var(--toc-item-spacing-vertical)}.toc-tree li.scroll-current>.reference{color:var(--color-toc-item-text--active);font-weight:700}.toc-tree a.reference{color:var(--color-toc-item-text);overflow-wrap:anywhere;text-decoration:none}.toc-scroll{max-height:100vh;overflow-y:scroll}.contents:not(.this-will-duplicate-information-and-it-is-still-useful-here){background:rgba(255,0,0,.25);color:var(--color-problematic)}.contents:not(.this-will-duplicate-information-and-it-is-still-useful-here):before{content:"ERROR: Adding a table of contents in Furo-based documentation is unnecessary, and does not work well with existing styling. Add a 'this-will-duplicate-information-and-it-is-still-useful-here' class, if you want an escape hatch."}.text-align\:left>p{text-align:left}.text-align\:center>p{text-align:center}.text-align\:right>p{text-align:right} +/*# sourceMappingURL=furo.css.map*/ \ No newline at end of file diff --git a/_static/styles/furo.css.map b/_static/styles/furo.css.map new file mode 100644 index 00000000..0ee3acbe --- /dev/null +++ b/_static/styles/furo.css.map @@ -0,0 +1 @@ +{"version":3,"file":"styles/furo.css","mappings":"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","sources":["webpack:///./node_modules/normalize.css/normalize.css","webpack:///./src/furo/assets/styles/base/_print.sass","webpack:///./src/furo/assets/styles/base/_screen-readers.sass","webpack:///./src/furo/assets/styles/base/_theme.sass","webpack:///./src/furo/assets/styles/variables/_fonts.scss","webpack:///./src/furo/assets/styles/variables/_spacing.scss","webpack:///./src/furo/assets/styles/variables/_icons.scss","webpack:///./src/furo/assets/styles/variables/_admonitions.scss","webpack:///./src/furo/assets/styles/variables/_colors.scss","webpack:///./src/furo/assets/styles/base/_typography.sass","webpack:///./src/furo/assets/styles/_scaffold.sass","webpack:///./src/furo/assets/styles/variables/_layout.scss","webpack:///./src/furo/assets/styles/content/_admonitions.sass","webpack:///./src/furo/assets/styles/content/_api.sass","webpack:///./src/furo/assets/styles/content/_blocks.sass","webpack:///./src/furo/assets/styles/content/_captions.sass","webpack:///./src/furo/assets/styles/content/_code.sass","webpack:///./src/furo/assets/styles/content/_footnotes.sass","webpack:///./src/furo/assets/styles/content/_images.sass","webpack:///./src/furo/assets/styles/content/_indexes.sass","webpack:///./src/furo/assets/styles/content/_lists.sass","webpack:///./src/furo/assets/styles/content/_math.sass","webpack:///./src/furo/assets/styles/content/_misc.sass","webpack:///./src/furo/assets/styles/content/_rubrics.sass","webpack:///./src/furo/assets/styles/content/_sidebar.sass","webpack:///./src/furo/assets/styles/content/_tables.sass","webpack:///./src/furo/assets/styles/content/_target.sass","webpack:///./src/furo/assets/styles/content/_gui-labels.sass","webpack:///./src/furo/assets/styles/components/_footer.sass","webpack:///./src/furo/assets/styles/components/_sidebar.sass","webpack:///./src/furo/assets/styles/components/_table_of_contents.sass","webpack:///./src/furo/assets/styles/_shame.sass"],"sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","// This file contains styles for managing print media.\n\n////////////////////////////////////////////////////////////////////////////////\n// Hide elements not relevant to print media.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n // Hide icon container.\n .content-icon-container\n display: none !important\n\n // Hide showing header links if hovering over when printing.\n .headerlink\n display: none !important\n\n // Hide mobile header.\n .mobile-header\n display: none !important\n\n // Hide navigation links.\n .related-pages\n display: none !important\n\n////////////////////////////////////////////////////////////////////////////////\n// Tweaks related to decolorization.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n // Apply a border around code which no longer have a color background.\n .highlight\n border: 0.1pt solid var(--color-foreground-border)\n\n////////////////////////////////////////////////////////////////////////////////\n// Avoid page break in some relevant cases.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n ul, ol, dl, a, table, pre, blockquote\n page-break-inside: avoid\n\n h1, h2, h3, h4, h5, h6, img, figure, caption\n page-break-inside: avoid\n page-break-after: avoid\n\n ul, ol, dl\n page-break-before: avoid\n",".visually-hidden\n position: absolute !important\n width: 1px !important\n height: 1px !important\n padding: 0 !important\n margin: -1px !important\n overflow: hidden !important\n clip: rect(0,0,0,0) !important\n white-space: nowrap !important\n border: 0 !important\n color: var(--color-foreground-primary)\n background: var(--color-background-primary)\n\n:-moz-focusring\n outline: auto\n","// This file serves as the \"skeleton\" of the theming logic.\n//\n// This contains the bulk of the logic for handling dark mode, color scheme\n// toggling and the handling of color-scheme-specific hiding of elements.\n\nbody\n @include fonts\n @include spacing\n @include icons\n @include admonitions\n @include default-admonition(#651fff, \"abstract\")\n @include default-topic(#14B8A6, \"pencil\")\n\n @include colors\n\n.only-light\n display: block !important\nhtml body .only-dark\n display: none !important\n\n// Ignore dark-mode hints if print media.\n@media not print\n // Enable dark-mode, if requested.\n body[data-theme=\"dark\"]\n @include colors-dark\n\n html & .only-light\n display: none !important\n .only-dark\n display: block !important\n\n // Enable dark mode, unless explicitly told to avoid.\n @media (prefers-color-scheme: dark)\n body:not([data-theme=\"light\"])\n @include colors-dark\n\n html & .only-light\n display: none !important\n .only-dark\n display: block !important\n\n//\n// Theme toggle presentation\n//\nbody[data-theme=\"auto\"]\n .theme-toggle svg.theme-icon-when-auto-light\n display: block\n\n @media (prefers-color-scheme: dark)\n .theme-toggle svg.theme-icon-when-auto-dark\n display: block\n .theme-toggle svg.theme-icon-when-auto-light\n display: none\n\nbody[data-theme=\"dark\"]\n .theme-toggle svg.theme-icon-when-dark\n display: block\n\nbody[data-theme=\"light\"]\n .theme-toggle svg.theme-icon-when-light\n display: block\n","// Fonts used by this theme.\n//\n// There are basically two things here -- using the system font stack and\n// defining sizes for various elements in %ages. We could have also used `em`\n// but %age is easier to reason about for me.\n\n@mixin fonts {\n // These are adapted from https://systemfontstack.com/\n --font-stack: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial,\n sans-serif, Apple Color Emoji, Segoe UI Emoji;\n --font-stack--monospace: \"SFMono-Regular\", Menlo, Consolas, Monaco,\n Liberation Mono, Lucida Console, monospace;\n --font-stack--headings: var(--font-stack);\n\n --font-size--normal: 100%;\n --font-size--small: 87.5%;\n --font-size--small--2: 81.25%;\n --font-size--small--3: 75%;\n --font-size--small--4: 62.5%;\n\n // Sidebar\n --sidebar-caption-font-size: var(--font-size--small--2);\n --sidebar-item-font-size: var(--font-size--small);\n --sidebar-search-input-font-size: var(--font-size--small);\n\n // Table of Contents\n --toc-font-size: var(--font-size--small--3);\n --toc-font-size--mobile: var(--font-size--normal);\n --toc-title-font-size: var(--font-size--small--4);\n\n // Admonitions\n //\n // These aren't defined in terms of %ages, since nesting these is permitted.\n --admonition-font-size: 0.8125rem;\n --admonition-title-font-size: 0.8125rem;\n\n // Code\n --code-font-size: var(--font-size--small--2);\n\n // API\n --api-font-size: var(--font-size--small);\n}\n","// Spacing for various elements on the page\n//\n// If the user wants to tweak things in a certain way, they are permitted to.\n// They also have to deal with the consequences though!\n\n@mixin spacing {\n // Header!\n --header-height: calc(\n var(--sidebar-item-line-height) + 4 * #{var(--sidebar-item-spacing-vertical)}\n );\n --header-padding: 0.5rem;\n\n // Sidebar\n --sidebar-tree-space-above: 1.5rem;\n --sidebar-caption-space-above: 1rem;\n\n --sidebar-item-line-height: 1rem;\n --sidebar-item-spacing-vertical: 0.5rem;\n --sidebar-item-spacing-horizontal: 1rem;\n --sidebar-item-height: calc(\n var(--sidebar-item-line-height) + 2 *#{var(--sidebar-item-spacing-vertical)}\n );\n\n --sidebar-expander-width: var(--sidebar-item-height); // be square\n\n --sidebar-search-space-above: 0.5rem;\n --sidebar-search-input-spacing-vertical: 0.5rem;\n --sidebar-search-input-spacing-horizontal: 0.5rem;\n --sidebar-search-input-height: 1rem;\n --sidebar-search-icon-size: var(--sidebar-search-input-height);\n\n // Table of Contents\n --toc-title-padding: 0.25rem 0;\n --toc-spacing-vertical: 1.5rem;\n --toc-spacing-horizontal: 1.5rem;\n --toc-item-spacing-vertical: 0.4rem;\n --toc-item-spacing-horizontal: 1rem;\n}\n","// Expose theme icons as CSS variables.\n\n$icons: (\n // Adapted from tabler-icons\n // url: https://tablericons.com/\n \"search\":\n url('data:image/svg+xml;charset=utf-8,'),\n // Factored out from mkdocs-material on 24-Aug-2020.\n // url: https://squidfunk.github.io/mkdocs-material/reference/admonitions/\n \"pencil\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"abstract\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"info\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"flame\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"question\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"warning\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"failure\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"spark\":\n url('data:image/svg+xml;charset=utf-8,')\n);\n\n@mixin icons {\n @each $name, $glyph in $icons {\n --icon-#{$name}: #{$glyph};\n }\n}\n","// Admonitions\n\n// Structure of these is:\n// admonition-class: color \"icon-name\";\n//\n// The colors are translated into CSS variables below. The icons are\n// used directly in the main declarations to set the `mask-image` in\n// the title.\n\n// prettier-ignore\n$admonitions: (\n // Each of these has an reST directives for it.\n \"caution\": #ff9100 \"spark\",\n \"warning\": #ff9100 \"warning\",\n \"danger\": #ff5252 \"spark\",\n \"attention\": #ff5252 \"warning\",\n \"error\": #ff5252 \"failure\",\n \"hint\": #00c852 \"question\",\n \"tip\": #00c852 \"info\",\n \"important\": #00bfa5 \"flame\",\n \"note\": #00b0ff \"pencil\",\n \"seealso\": #448aff \"info\",\n \"admonition-todo\": #808080 \"pencil\"\n);\n\n@mixin default-admonition($color, $icon-name) {\n --color-admonition-title: #{$color};\n --color-admonition-title-background: #{rgba($color, 0.2)};\n\n --icon-admonition-default: var(--icon-#{$icon-name});\n}\n\n@mixin default-topic($color, $icon-name) {\n --color-topic-title: #{$color};\n --color-topic-title-background: #{rgba($color, 0.2)};\n\n --icon-topic-default: var(--icon-#{$icon-name});\n}\n\n@mixin admonitions {\n @each $name, $values in $admonitions {\n --color-admonition-title--#{$name}: #{nth($values, 1)};\n --color-admonition-title-background--#{$name}: #{rgba(\n nth($values, 1),\n 0.2\n )};\n }\n}\n","// Colors used throughout this theme.\n//\n// The aim is to give the user more control. Thus, instead of hard-coding colors\n// in various parts of the stylesheet, the approach taken is to define all\n// colors as CSS variables and reusing them in all the places.\n//\n// `colors-dark` depends on `colors` being included at a lower specificity.\n\n@mixin colors {\n --color-problematic: #b30000;\n\n // Base Colors\n --color-foreground-primary: black; // for main text and headings\n --color-foreground-secondary: #5a5c63; // for secondary text\n --color-foreground-muted: #6b6f76; // for muted text\n --color-foreground-border: #878787; // for content borders\n\n --color-background-primary: white; // for content\n --color-background-secondary: #f8f9fb; // for navigation + ToC\n --color-background-hover: #efeff4ff; // for navigation-item hover\n --color-background-hover--transparent: #efeff400;\n --color-background-border: #eeebee; // for UI borders\n --color-background-item: #ccc; // for \"background\" items (eg: copybutton)\n\n // Announcements\n --color-announcement-background: #000000dd;\n --color-announcement-text: #eeebee;\n\n // Brand colors\n --color-brand-primary: #0a4bff;\n --color-brand-content: #2757dd;\n --color-brand-visited: #872ee0;\n\n // API documentation\n --color-api-background: var(--color-background-hover--transparent);\n --color-api-background-hover: var(--color-background-hover);\n --color-api-overall: var(--color-foreground-secondary);\n --color-api-name: var(--color-problematic);\n --color-api-pre-name: var(--color-problematic);\n --color-api-paren: var(--color-foreground-secondary);\n --color-api-keyword: var(--color-foreground-primary);\n\n --color-api-added: #21632c;\n --color-api-added-border: #38a84d;\n --color-api-changed: #046172;\n --color-api-changed-border: #06a1bc;\n --color-api-deprecated: #605706;\n --color-api-deprecated-border: #f0d90f;\n --color-api-removed: #b30000;\n --color-api-removed-border: #ff5c5c;\n\n --color-highlight-on-target: #ffffcc;\n\n // Inline code background\n --color-inline-code-background: var(--color-background-secondary);\n\n // Highlighted text (search)\n --color-highlighted-background: #ddeeff;\n --color-highlighted-text: var(--color-foreground-primary);\n\n // GUI Labels\n --color-guilabel-background: #ddeeff80;\n --color-guilabel-border: #bedaf580;\n --color-guilabel-text: var(--color-foreground-primary);\n\n // Admonitions!\n --color-admonition-background: transparent;\n\n //////////////////////////////////////////////////////////////////////////////\n // Everything below this should be one of:\n // - var(...)\n // - *-gradient(...)\n // - special literal values (eg: transparent, none)\n //////////////////////////////////////////////////////////////////////////////\n\n // Tables\n --color-table-header-background: var(--color-background-secondary);\n --color-table-border: var(--color-background-border);\n\n // Cards\n --color-card-border: var(--color-background-secondary);\n --color-card-background: transparent;\n --color-card-marginals-background: var(--color-background-secondary);\n\n // Header\n --color-header-background: var(--color-background-primary);\n --color-header-border: var(--color-background-border);\n --color-header-text: var(--color-foreground-primary);\n\n // Sidebar (left)\n --color-sidebar-background: var(--color-background-secondary);\n --color-sidebar-background-border: var(--color-background-border);\n\n --color-sidebar-brand-text: var(--color-foreground-primary);\n --color-sidebar-caption-text: var(--color-foreground-muted);\n --color-sidebar-link-text: var(--color-foreground-secondary);\n --color-sidebar-link-text--top-level: var(--color-brand-primary);\n\n --color-sidebar-item-background: var(--color-sidebar-background);\n --color-sidebar-item-background--current: var(\n --color-sidebar-item-background\n );\n --color-sidebar-item-background--hover: linear-gradient(\n 90deg,\n var(--color-background-hover--transparent) 0%,\n var(--color-background-hover) var(--sidebar-item-spacing-horizontal),\n var(--color-background-hover) 100%\n );\n\n --color-sidebar-item-expander-background: transparent;\n --color-sidebar-item-expander-background--hover: var(\n --color-background-hover\n );\n\n --color-sidebar-search-text: var(--color-foreground-primary);\n --color-sidebar-search-background: var(--color-background-secondary);\n --color-sidebar-search-background--focus: var(--color-background-primary);\n --color-sidebar-search-border: var(--color-background-border);\n --color-sidebar-search-icon: var(--color-foreground-muted);\n\n // Table of Contents (right)\n --color-toc-background: var(--color-background-primary);\n --color-toc-title-text: var(--color-foreground-muted);\n --color-toc-item-text: var(--color-foreground-secondary);\n --color-toc-item-text--hover: var(--color-foreground-primary);\n --color-toc-item-text--active: var(--color-brand-primary);\n\n // Actual page contents\n --color-content-foreground: var(--color-foreground-primary);\n --color-content-background: transparent;\n\n // Links\n --color-link: var(--color-brand-content);\n --color-link-underline: var(--color-background-border);\n --color-link--hover: var(--color-brand-content);\n --color-link-underline--hover: var(--color-foreground-border);\n\n --color-link--visited: var(--color-brand-visited);\n --color-link-underline--visited: var(--color-background-border);\n --color-link--visited--hover: var(--color-brand-visited);\n --color-link-underline--visited--hover: var(--color-foreground-border);\n}\n\n@mixin colors-dark {\n --color-problematic: #ee5151;\n\n // Base Colors\n --color-foreground-primary: #cfd0d0; // for main text and headings\n --color-foreground-secondary: #9ca0a5; // for secondary text\n --color-foreground-muted: #81868d; // for muted text\n --color-foreground-border: #666666; // for content borders\n\n --color-background-primary: #131416; // for content\n --color-background-secondary: #1a1c1e; // for navigation + ToC\n --color-background-hover: #1e2124ff; // for navigation-item hover\n --color-background-hover--transparent: #1e212400;\n --color-background-border: #303335; // for UI borders\n --color-background-item: #444; // for \"background\" items (eg: copybutton)\n\n // Announcements\n --color-announcement-background: #000000dd;\n --color-announcement-text: #eeebee;\n\n // Brand colors\n --color-brand-primary: #3d94ff;\n --color-brand-content: #5ca5ff;\n --color-brand-visited: #b27aeb;\n\n // Highlighted text (search)\n --color-highlighted-background: #083563;\n\n // GUI Labels\n --color-guilabel-background: #08356380;\n --color-guilabel-border: #13395f80;\n\n // API documentation\n --color-api-keyword: var(--color-foreground-secondary);\n --color-highlight-on-target: #333300;\n\n --color-api-added: #3db854;\n --color-api-added-border: #267334;\n --color-api-changed: #09b0ce;\n --color-api-changed-border: #056d80;\n --color-api-deprecated: #b1a10b;\n --color-api-deprecated-border: #6e6407;\n --color-api-removed: #ff7575;\n --color-api-removed-border: #b03b3b;\n\n // Admonitions\n --color-admonition-background: #18181a;\n\n // Cards\n --color-card-border: var(--color-background-secondary);\n --color-card-background: #18181a;\n --color-card-marginals-background: var(--color-background-hover);\n}\n","// This file contains the styling for making the content throughout the page,\n// including fonts, paragraphs, headings and spacing among these elements.\n\nbody\n font-family: var(--font-stack)\npre,\ncode,\nkbd,\nsamp\n font-family: var(--font-stack--monospace)\n\n// Make fonts look slightly nicer.\nbody\n -webkit-font-smoothing: antialiased\n -moz-osx-font-smoothing: grayscale\n\n// Line height from Bootstrap 4.1\narticle\n line-height: 1.5\n\n//\n// Headings\n//\nh1,\nh2,\nh3,\nh4,\nh5,\nh6\n line-height: 1.25\n font-family: var(--font-stack--headings)\n font-weight: bold\n\n border-radius: 0.5rem\n margin-top: 0.5rem\n margin-bottom: 0.5rem\n margin-left: -0.5rem\n margin-right: -0.5rem\n padding-left: 0.5rem\n padding-right: 0.5rem\n\n + p\n margin-top: 0\n\nh1\n font-size: 2.5em\n margin-top: 1.75rem\n margin-bottom: 1rem\nh2\n font-size: 2em\n margin-top: 1.75rem\nh3\n font-size: 1.5em\nh4\n font-size: 1.25em\nh5\n font-size: 1.125em\nh6\n font-size: 1em\n\nsmall\n opacity: 75%\n font-size: 80%\n\n// Paragraph\np\n margin-top: 0.5rem\n margin-bottom: 0.75rem\n\n// Horizontal rules\nhr.docutils\n height: 1px\n padding: 0\n margin: 2rem 0\n background-color: var(--color-background-border)\n border: 0\n\n.centered\n text-align: center\n\n// Links\na\n text-decoration: underline\n\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline)\n\n &:visited\n color: var(--color-link--visited)\n text-decoration-color: var(--color-link-underline--visited)\n &:hover\n color: var(--color-link--visited--hover)\n text-decoration-color: var(--color-link-underline--visited--hover)\n\n &:hover\n color: var(--color-link--hover)\n text-decoration-color: var(--color-link-underline--hover)\n &.muted-link\n color: inherit\n &:hover\n color: var(--color-link--hover)\n text-decoration-color: var(--color-link-underline--hover)\n &:visited\n color: var(--color-link--visited--hover)\n text-decoration-color: var(--color-link-underline--visited--hover)\n","// This file contains the styles for the overall layouting of the documentation\n// skeleton, including the responsive changes as well as sidebar toggles.\n//\n// This is implemented as a mobile-last design, which isn't ideal, but it is\n// reasonably good-enough and I got pretty tired by the time I'd finished this\n// to move the rules around to fix this. Shouldn't take more than 3-4 hours,\n// if you know what you're doing tho.\n\n// HACK: Not all browsers account for the scrollbar width in media queries.\n// This results in horizontal scrollbars in the breakpoint where we go\n// from displaying everything to hiding the ToC. We accomodate for this by\n// adding a bit of padding to the TOC drawer, disabling the horizontal\n// scrollbar and allowing the scrollbars to cover the padding.\n// https://www.456bereastreet.com/archive/201301/media_query_width_and_vertical_scrollbars/\n\n// HACK: Always having the scrollbar visible, prevents certain browsers from\n// causing the content to stutter horizontally between taller-than-viewport and\n// not-taller-than-viewport pages.\n\nhtml\n overflow-x: hidden\n overflow-y: scroll\n scroll-behavior: smooth\n\n.sidebar-scroll, .toc-scroll, article[role=main] *\n // Override Firefox scrollbar style\n scrollbar-width: thin\n scrollbar-color: var(--color-foreground-border) transparent\n\n // Override Chrome scrollbar styles\n &::-webkit-scrollbar\n width: 0.25rem\n height: 0.25rem\n &::-webkit-scrollbar-thumb\n background-color: var(--color-foreground-border)\n border-radius: 0.125rem\n\n//\n// Overalls\n//\nhtml,\nbody\n height: 100%\n color: var(--color-foreground-primary)\n background: var(--color-background-primary)\n\n.skip-to-content\n position: fixed\n padding: 1rem\n border-radius: 1rem\n left: 0.25rem\n top: 0.25rem\n z-index: 40\n background: var(--color-background-primary)\n color: var(--color-foreground-primary)\n\n transform: translateY(-200%)\n transition: transform 300ms ease-in-out\n\n &:focus-within\n transform: translateY(0%)\n\narticle\n color: var(--color-content-foreground)\n background: var(--color-content-background)\n overflow-wrap: break-word\n\n.page\n display: flex\n // fill the viewport for pages with little content.\n min-height: 100%\n\n.mobile-header\n width: 100%\n height: var(--header-height)\n background-color: var(--color-header-background)\n color: var(--color-header-text)\n border-bottom: 1px solid var(--color-header-border)\n\n // Looks like sub-script/super-script have this, and we need this to\n // be \"on top\" of those.\n z-index: 10\n\n // We don't show the header on large screens.\n display: none\n\n // Add shadow when scrolled\n &.scrolled\n border-bottom: none\n box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.1), 0 0.2rem 0.4rem rgba(0, 0, 0, 0.2)\n\n .header-center\n a\n color: var(--color-header-text)\n text-decoration: none\n\n.main\n display: flex\n flex: 1\n\n// Sidebar (left) also covers the entire left portion of screen.\n.sidebar-drawer\n box-sizing: border-box\n\n border-right: 1px solid var(--color-sidebar-background-border)\n background: var(--color-sidebar-background)\n\n display: flex\n justify-content: flex-end\n // These next two lines took me two days to figure out.\n width: calc((100% - #{$full-width}) / 2 + #{$sidebar-width})\n min-width: $sidebar-width\n\n// Scroll-along sidebars\n.sidebar-container,\n.toc-drawer\n box-sizing: border-box\n width: $sidebar-width\n\n.toc-drawer\n background: var(--color-toc-background)\n // See HACK described on top of this document\n padding-right: 1rem\n\n.sidebar-sticky,\n.toc-sticky\n position: sticky\n top: 0\n height: min(100%, 100vh)\n height: 100vh\n\n display: flex\n flex-direction: column\n\n.sidebar-scroll,\n.toc-scroll\n flex-grow: 1\n flex-shrink: 1\n\n overflow: auto\n scroll-behavior: smooth\n\n// Central items.\n.content\n padding: 0 $content-padding\n width: $content-width\n\n display: flex\n flex-direction: column\n justify-content: space-between\n\n.icon\n display: inline-block\n height: 1rem\n width: 1rem\n svg\n width: 100%\n height: 100%\n\n//\n// Accommodate announcement banner\n//\n.announcement\n background-color: var(--color-announcement-background)\n color: var(--color-announcement-text)\n\n height: var(--header-height)\n display: flex\n align-items: center\n overflow-x: auto\n & + .page\n min-height: calc(100% - var(--header-height))\n\n.announcement-content\n box-sizing: border-box\n padding: 0.5rem\n min-width: 100%\n white-space: nowrap\n text-align: center\n\n a\n color: var(--color-announcement-text)\n text-decoration-color: var(--color-announcement-text)\n\n &:hover\n color: var(--color-announcement-text)\n text-decoration-color: var(--color-link--hover)\n\n////////////////////////////////////////////////////////////////////////////////\n// Toggles for theme\n////////////////////////////////////////////////////////////////////////////////\n.no-js .theme-toggle-container // don't show theme toggle if there's no JS\n display: none\n\n.theme-toggle-container\n display: flex\n\n.theme-toggle\n display: flex\n cursor: pointer\n border: none\n padding: 0\n background: transparent\n\n.theme-toggle svg\n height: 1.25rem\n width: 1.25rem\n color: var(--color-foreground-primary)\n display: none\n\n.theme-toggle-header\n display: flex\n align-items: center\n justify-content: center\n\n////////////////////////////////////////////////////////////////////////////////\n// Toggles for elements\n////////////////////////////////////////////////////////////////////////////////\n.toc-overlay-icon, .nav-overlay-icon\n display: none\n cursor: pointer\n\n .icon\n color: var(--color-foreground-secondary)\n height: 1.5rem\n width: 1.5rem\n\n.toc-header-icon, .nav-overlay-icon\n // for when we set display: flex\n justify-content: center\n align-items: center\n\n.toc-content-icon\n height: 1.5rem\n width: 1.5rem\n\n.content-icon-container\n float: right\n display: flex\n margin-top: 1.5rem\n margin-left: 1rem\n margin-bottom: 1rem\n gap: 0.5rem\n\n .edit-this-page, .view-this-page\n svg\n color: inherit\n height: 1.25rem\n width: 1.25rem\n\n.sidebar-toggle\n position: absolute\n display: none\n// \n.sidebar-toggle[name=\"__toc\"]\n left: 20px\n.sidebar-toggle:checked\n left: 40px\n// \n\n.overlay\n position: fixed\n top: 0\n width: 0\n height: 0\n\n transition: width 0ms, height 0ms, opacity 250ms ease-out\n\n opacity: 0\n background-color: rgba(0, 0, 0, 0.54)\n.sidebar-overlay\n z-index: 20\n.toc-overlay\n z-index: 40\n\n// Keep things on top and smooth.\n.sidebar-drawer\n z-index: 30\n transition: left 250ms ease-in-out\n.toc-drawer\n z-index: 50\n transition: right 250ms ease-in-out\n\n// Show the Sidebar\n#__navigation:checked\n & ~ .sidebar-overlay\n width: 100%\n height: 100%\n opacity: 1\n & ~ .page\n .sidebar-drawer\n top: 0\n left: 0\n // Show the toc sidebar\n#__toc:checked\n & ~ .toc-overlay\n width: 100%\n height: 100%\n opacity: 1\n & ~ .page\n .toc-drawer\n top: 0\n right: 0\n\n////////////////////////////////////////////////////////////////////////////////\n// Back to top\n////////////////////////////////////////////////////////////////////////////////\n.back-to-top\n text-decoration: none\n\n display: none\n position: fixed\n left: 0\n top: 1rem\n padding: 0.5rem\n padding-right: 0.75rem\n border-radius: 1rem\n font-size: 0.8125rem\n\n background: var(--color-background-primary)\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), #6b728080 0px 0px 1px 0px\n\n z-index: 10\n\n margin-left: 50%\n transform: translateX(-50%)\n svg\n height: 1rem\n width: 1rem\n fill: currentColor\n display: inline-block\n\n span\n margin-left: 0.25rem\n\n .show-back-to-top &\n display: flex\n align-items: center\n\n////////////////////////////////////////////////////////////////////////////////\n// Responsive layouting\n////////////////////////////////////////////////////////////////////////////////\n// Make things a bit bigger on bigger screens.\n@media (min-width: $full-width + $sidebar-width)\n html\n font-size: 110%\n\n@media (max-width: $full-width)\n // Collapse \"toc\" into the icon.\n .toc-content-icon\n display: flex\n .toc-drawer\n position: fixed\n height: 100vh\n top: 0\n right: -$sidebar-width\n border-left: 1px solid var(--color-background-muted)\n .toc-tree\n border-left: none\n font-size: var(--toc-font-size--mobile)\n\n // Accomodate for a changed content width.\n .sidebar-drawer\n width: calc((100% - #{$full-width - $sidebar-width}) / 2 + #{$sidebar-width})\n\n@media (max-width: $full-width - $sidebar-width)\n // Collapse \"navigation\".\n .nav-overlay-icon\n display: flex\n .sidebar-drawer\n position: fixed\n height: 100vh\n width: $sidebar-width\n\n top: 0\n left: -$sidebar-width\n\n // Swap which icon is visible.\n .toc-header-icon, .theme-toggle-header\n display: flex\n .toc-content-icon, .theme-toggle-content\n display: none\n\n // Show the header.\n .mobile-header\n position: sticky\n top: 0\n display: flex\n justify-content: space-between\n align-items: center\n\n .header-left,\n .header-right\n display: flex\n height: var(--header-height)\n padding: 0 var(--header-padding)\n label\n height: 100%\n width: 100%\n user-select: none\n\n .nav-overlay-icon .icon,\n .theme-toggle svg\n height: 1.5rem\n width: 1.5rem\n\n // Add a scroll margin for the content\n :target\n scroll-margin-top: calc(var(--header-height) + 2.5rem)\n\n // Show back-to-top below the header\n .back-to-top\n top: calc(var(--header-height) + 0.5rem)\n\n // Center the page, and accommodate for the header.\n .page\n flex-direction: column\n justify-content: center\n .content\n margin-left: auto\n margin-right: auto\n\n@media (max-width: $content-width + 2* $content-padding)\n // Content should respect window limits.\n .content\n width: 100%\n overflow-x: auto\n\n@media (max-width: $content-width)\n .content\n padding: 0 $content-padding--small\n // Don't float sidebars to the right.\n article aside.sidebar\n float: none\n width: 100%\n margin: 1rem 0\n","// Overall Layout Variables\n//\n// Because CSS variables can't be used in media queries. The fact that this\n// makes the layout non-user-configurable is a good thing.\n$content-padding: 3em;\n$content-padding--small: 1em;\n$content-width: 46em;\n$sidebar-width: 15em;\n$full-width: $content-width + 2 * ($content-padding + $sidebar-width);\n","//\n// The design here is strongly inspired by mkdocs-material.\n.admonition, .topic\n margin: 1rem auto\n padding: 0 0.5rem 0.5rem 0.5rem\n\n background: var(--color-admonition-background)\n\n border-radius: 0.2rem\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n font-size: var(--admonition-font-size)\n\n overflow: hidden\n page-break-inside: avoid\n\n // First element should have no margin, since the title has it.\n > :nth-child(2)\n margin-top: 0\n\n // Last item should have no margin, since we'll control that w/ padding\n > :last-child\n margin-bottom: 0\n\n.admonition p.admonition-title,\np.topic-title\n position: relative\n margin: 0 -0.5rem 0.5rem\n padding-left: 2rem\n padding-right: .5rem\n padding-top: .4rem\n padding-bottom: .4rem\n\n font-weight: 500\n font-size: var(--admonition-title-font-size)\n line-height: 1.3\n\n // Our fancy icon\n &::before\n content: \"\"\n position: absolute\n left: 0.5rem\n width: 1rem\n height: 1rem\n\n// Default styles\np.admonition-title\n background-color: var(--color-admonition-title-background)\n &::before\n background-color: var(--color-admonition-title)\n mask-image: var(--icon-admonition-default)\n mask-repeat: no-repeat\n\np.topic-title\n background-color: var(--color-topic-title-background)\n &::before\n background-color: var(--color-topic-title)\n mask-image: var(--icon-topic-default)\n mask-repeat: no-repeat\n\n//\n// Variants\n//\n.admonition\n border-left: 0.2rem solid var(--color-admonition-title)\n\n @each $type, $value in $admonitions\n &.#{$type}\n border-left-color: var(--color-admonition-title--#{$type})\n > .admonition-title\n background-color: var(--color-admonition-title-background--#{$type})\n &::before\n background-color: var(--color-admonition-title--#{$type})\n mask-image: var(--icon-#{nth($value, 2)})\n\n.admonition-todo > .admonition-title\n text-transform: uppercase\n","// This file stylizes the API documentation (stuff generated by autodoc). It's\n// deeply nested due to how autodoc structures the HTML without enough classes\n// to select the relevant items.\n\n// API docs!\ndl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)\n // Tweak the spacing of all the things!\n dd\n margin-left: 2rem\n > :first-child\n margin-top: 0.125rem\n > :last-child\n margin-bottom: 0.75rem\n\n // This is used for the arguments\n .field-list\n margin-bottom: 0.75rem\n\n // \"Headings\" (like \"Parameters\" and \"Return\")\n > dt\n text-transform: uppercase\n font-size: var(--font-size--small)\n\n dd:empty\n margin-bottom: 0.5rem\n dd > ul\n margin-left: -1.2rem\n > li\n > p:nth-child(2)\n margin-top: 0\n // When the last-empty-paragraph follows a paragraph, it doesn't need\n // to augument the existing spacing.\n > p + p:last-child:empty\n margin-top: 0\n margin-bottom: 0\n\n // Colorize the elements\n > dt\n color: var(--color-api-overall)\n\n.sig:not(.sig-inline)\n font-weight: bold\n\n font-size: var(--api-font-size)\n font-family: var(--font-stack--monospace)\n\n margin-left: -0.25rem\n margin-right: -0.25rem\n padding-top: 0.25rem\n padding-bottom: 0.25rem\n padding-right: 0.5rem\n\n // These are intentionally em, to properly match the font size.\n padding-left: 3em\n text-indent: -2.5em\n\n border-radius: 0.25rem\n\n background: var(--color-api-background)\n transition: background 100ms ease-out\n\n &:hover\n background: var(--color-api-background-hover)\n\n // adjust the size of the [source] link on the right.\n a.reference\n .viewcode-link\n font-weight: normal\n width: 4.25rem\n\nem.property\n font-style: normal\n &:first-child\n color: var(--color-api-keyword)\n.sig-name\n color: var(--color-api-name)\n.sig-prename\n font-weight: normal\n color: var(--color-api-pre-name)\n.sig-paren\n color: var(--color-api-paren)\n.sig-param\n font-style: normal\n\ndiv.versionadded,\ndiv.versionchanged,\ndiv.deprecated,\ndiv.versionremoved\n border-left: 0.1875rem solid\n border-radius: 0.125rem\n\n padding-left: 0.75rem\n\n p\n margin-top: 0.125rem\n margin-bottom: 0.125rem\n\ndiv.versionadded\n border-color: var(--color-api-added-border)\n .versionmodified\n color: var(--color-api-added)\n\ndiv.versionchanged\n border-color: var(--color-api-changed-border)\n .versionmodified\n color: var(--color-api-changed)\n\ndiv.deprecated\n border-color: var(--color-api-deprecated-border)\n .versionmodified\n color: var(--color-api-deprecated)\n\ndiv.versionremoved\n border-color: var(--color-api-removed-border)\n .versionmodified\n color: var(--color-api-removed)\n\n// Align the [docs] and [source] to the right.\n.viewcode-link, .viewcode-back\n float: right\n text-align: right\n",".line-block\n margin-top: 0.5rem\n margin-bottom: 0.75rem\n .line-block\n margin-top: 0rem\n margin-bottom: 0rem\n padding-left: 1rem\n","// Captions\narticle p.caption,\ntable > caption,\n.code-block-caption\n font-size: var(--font-size--small)\n text-align: center\n\n// Caption above a TOCTree\n.toctree-wrapper.compound\n .caption, :not(.caption) > .caption-text\n font-size: var(--font-size--small)\n text-transform: uppercase\n\n text-align: initial\n margin-bottom: 0\n\n > ul\n margin-top: 0\n margin-bottom: 0\n","// Inline code\ncode.literal, .sig-inline\n background: var(--color-inline-code-background)\n border-radius: 0.2em\n // Make the font smaller, and use padding to recover.\n font-size: var(--font-size--small--2)\n padding: 0.1em 0.2em\n\n pre.literal-block &\n font-size: inherit\n padding: 0\n\n p &\n border: 1px solid var(--color-background-border)\n\n.sig-inline\n font-family: var(--font-stack--monospace)\n\n// Code and Literal Blocks\n$code-spacing-vertical: 0.625rem\n$code-spacing-horizontal: 0.875rem\n\n// Wraps every literal block + line numbers.\ndiv[class*=\" highlight-\"],\ndiv[class^=\"highlight-\"]\n margin: 1em 0\n display: flex\n\n .table-wrapper\n margin: 0\n padding: 0\n\npre\n margin: 0\n padding: 0\n overflow: auto\n\n // Needed to have more specificity than pygments' \"pre\" selector. :(\n article[role=\"main\"] .highlight &\n line-height: 1.5\n\n &.literal-block,\n .highlight &\n font-size: var(--code-font-size)\n padding: $code-spacing-vertical $code-spacing-horizontal\n\n // Make it look like all the other blocks.\n &.literal-block\n margin-top: 1rem\n margin-bottom: 1rem\n\n border-radius: 0.2rem\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n\n// All code is always contained in this.\n.highlight\n width: 100%\n border-radius: 0.2rem\n\n // Make line numbers and prompts un-selectable.\n .gp, span.linenos\n user-select: none\n pointer-events: none\n\n // Expand the line-highlighting.\n .hll\n display: block\n margin-left: -$code-spacing-horizontal\n margin-right: -$code-spacing-horizontal\n padding-left: $code-spacing-horizontal\n padding-right: $code-spacing-horizontal\n\n/* Make code block captions be nicely integrated */\n.code-block-caption\n display: flex\n padding: $code-spacing-vertical $code-spacing-horizontal\n\n border-radius: 0.25rem\n border-bottom-left-radius: 0\n border-bottom-right-radius: 0\n font-weight: 300\n border-bottom: 1px solid\n\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n border-color: var(--color-background-border)\n\n + div[class]\n margin-top: 0\n pre\n border-top-left-radius: 0\n border-top-right-radius: 0\n\n// When `html_codeblock_linenos_style` is table.\n.highlighttable\n width: 100%\n display: block\n tbody\n display: block\n\n tr\n display: flex\n\n // Line numbers\n td.linenos\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n padding: $code-spacing-vertical $code-spacing-horizontal\n padding-right: 0\n border-top-left-radius: 0.2rem\n border-bottom-left-radius: 0.2rem\n\n .linenodiv\n padding-right: $code-spacing-horizontal\n font-size: var(--code-font-size)\n box-shadow: -0.0625rem 0 var(--color-foreground-border) inset\n\n // Actual code\n td.code\n padding: 0\n display: block\n flex: 1\n overflow: hidden\n\n .highlight\n border-top-left-radius: 0\n border-bottom-left-radius: 0\n\n// When `html_codeblock_linenos_style` is inline.\n.highlight\n span.linenos\n display: inline-block\n padding-left: 0\n padding-right: $code-spacing-horizontal\n margin-right: $code-spacing-horizontal\n box-shadow: -0.0625rem 0 var(--color-foreground-border) inset\n","// Inline Footnote Reference\n.footnote-reference\n font-size: var(--font-size--small--4)\n vertical-align: super\n\n// Definition list, listing the content of each note.\n// docutils <= 0.17\ndl.footnote.brackets\n font-size: var(--font-size--small)\n color: var(--color-foreground-secondary)\n\n display: grid\n grid-template-columns: max-content auto\n dt\n margin: 0\n > .fn-backref\n margin-left: 0.25rem\n\n &:after\n content: \":\"\n\n .brackets\n &:before\n content: \"[\"\n &:after\n content: \"]\"\n\n dd\n margin: 0\n padding: 0 1rem\n\n// docutils >= 0.18\naside.footnote\n font-size: var(--font-size--small)\n color: var(--color-foreground-secondary)\n\naside.footnote > span,\ndiv.citation > span\n float: left\n font-weight: 500\n padding-right: 0.25rem\n\naside.footnote > *:not(span),\ndiv.citation > p\n margin-left: 2rem\n","//\n// Figures\n//\nimg\n box-sizing: border-box\n max-width: 100%\n height: auto\n\narticle\n figure, .figure\n border-radius: 0.2rem\n\n margin: 0\n :last-child\n margin-bottom: 0\n\n .align-left\n float: left\n clear: left\n margin: 0 1rem 1rem\n\n .align-right\n float: right\n clear: right\n margin: 0 1rem 1rem\n\n .align-default,\n .align-center\n display: block\n text-align: center\n margin-left: auto\n margin-right: auto\n\n // WELL, table needs to be stylised like a table.\n table.align-default\n display: table\n text-align: initial\n",".genindex-jumpbox, .domainindex-jumpbox\n border-top: 1px solid var(--color-background-border)\n border-bottom: 1px solid var(--color-background-border)\n padding: 0.25rem\n\n.genindex-section, .domainindex-section\n h2\n margin-top: 0.75rem\n margin-bottom: 0.5rem\n ul\n margin-top: 0\n margin-bottom: 0\n","ul,\nol\n padding-left: 1.2rem\n\n // Space lists out like paragraphs\n margin-top: 1rem\n margin-bottom: 1rem\n // reduce margins within li.\n li\n > p:first-child\n margin-top: 0.25rem\n margin-bottom: 0.25rem\n\n > p:last-child\n margin-top: 0.25rem\n\n > ul,\n > ol\n margin-top: 0.5rem\n margin-bottom: 0.5rem\n\nol\n &.arabic\n list-style: decimal\n &.loweralpha\n list-style: lower-alpha\n &.upperalpha\n list-style: upper-alpha\n &.lowerroman\n list-style: lower-roman\n &.upperroman\n list-style: upper-roman\n\n// Don't space lists out when they're \"simple\" or in a `.. toctree::`\n.simple,\n.toctree-wrapper\n li\n > ul,\n > ol\n margin-top: 0\n margin-bottom: 0\n\n// Definition Lists\n.field-list,\n.option-list,\ndl:not([class]),\ndl.simple,\ndl.footnote,\ndl.glossary\n dt\n font-weight: 500\n margin-top: 0.25rem\n + dt\n margin-top: 0\n\n .classifier::before\n content: \":\"\n margin-left: 0.2rem\n margin-right: 0.2rem\n\n dd\n > p:first-child,\n ul\n margin-top: 0.125rem\n\n ul\n margin-bottom: 0.125rem\n",".math-wrapper\n width: 100%\n overflow-x: auto\n\ndiv.math\n position: relative\n text-align: center\n\n .headerlink,\n &:focus .headerlink\n display: none\n\n &:hover .headerlink\n display: inline-block\n\n span.eqno\n position: absolute\n right: 0.5rem\n top: 50%\n transform: translate(0, -50%)\n z-index: 1\n","// Abbreviations\nabbr[title]\n cursor: help\n\n// \"Problematic\" content, as identified by Sphinx\n.problematic\n color: var(--color-problematic)\n\n// Keyboard / Mouse \"instructions\"\nkbd:not(.compound)\n margin: 0 0.2rem\n padding: 0 0.2rem\n border-radius: 0.2rem\n border: 1px solid var(--color-foreground-border)\n color: var(--color-foreground-primary)\n vertical-align: text-bottom\n\n font-size: var(--font-size--small--3)\n display: inline-block\n\n box-shadow: 0 0.0625rem 0 rgba(0, 0, 0, 0.2), inset 0 0 0 0.125rem var(--color-background-primary)\n\n background-color: var(--color-background-secondary)\n\n// Blockquote\nblockquote\n border-left: 4px solid var(--color-background-border)\n background: var(--color-background-secondary)\n\n margin-left: 0\n margin-right: 0\n padding: 0.5rem 1rem\n\n .attribution\n font-weight: 600\n text-align: right\n\n &.pull-quote,\n &.highlights\n font-size: 1.25em\n\n &.epigraph,\n &.pull-quote\n border-left-width: 0\n border-radius: 0.5rem\n\n &.highlights\n border-left-width: 0\n background: transparent\n\n// Center align embedded-in-text images\np .reference img\n vertical-align: middle\n","p.rubric\n line-height: 1.25\n font-weight: bold\n font-size: 1.125em\n\n // For Numpy-style documentation that's got rubrics within it.\n // https://github.com/pradyunsg/furo/discussions/505\n dd &\n line-height: inherit\n font-weight: inherit\n\n font-size: var(--font-size--small)\n text-transform: uppercase\n","article .sidebar\n float: right\n clear: right\n width: 30%\n\n margin-left: 1rem\n margin-right: 0\n\n border-radius: 0.2rem\n background-color: var(--color-background-secondary)\n border: var(--color-background-border) 1px solid\n\n > *\n padding-left: 1rem\n padding-right: 1rem\n\n > ul, > ol // lists need additional padding, because bullets.\n padding-left: 2.2rem\n\n .sidebar-title\n margin: 0\n padding: 0.5rem 1rem\n border-bottom: var(--color-background-border) 1px solid\n\n font-weight: 500\n\n// TODO: subtitle\n// TODO: dedicated variables?\n",".table-wrapper\n width: 100%\n overflow-x: auto\n margin-top: 1rem\n margin-bottom: 0.5rem\n padding: 0.2rem 0.2rem 0.75rem\n\ntable.docutils\n border-radius: 0.2rem\n border-spacing: 0\n border-collapse: collapse\n\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n th\n background: var(--color-table-header-background)\n\n td,\n th\n // Space things out properly\n padding: 0 0.25rem\n\n // Get the borders looking just-right.\n border-left: 1px solid var(--color-table-border)\n border-right: 1px solid var(--color-table-border)\n border-bottom: 1px solid var(--color-table-border)\n\n p\n margin: 0.25rem\n\n &:first-child\n border-left: none\n &:last-child\n border-right: none\n\n // MyST-parser tables set these classes for control of column alignment\n &.text-left\n text-align: left\n &.text-right\n text-align: right\n &.text-center\n text-align: center\n",":target\n scroll-margin-top: 2.5rem\n\n@media (max-width: $full-width - $sidebar-width)\n :target\n scroll-margin-top: calc(2.5rem + var(--header-height))\n\n // When a heading is selected\n section > span:target\n scroll-margin-top: calc(2.8rem + var(--header-height))\n\n// Permalinks\n.headerlink\n font-weight: 100\n user-select: none\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\ndl dt,\np.caption,\nfigcaption p,\ntable > caption,\n.code-block-caption\n > .headerlink\n margin-left: 0.5rem\n visibility: hidden\n &:hover > .headerlink\n visibility: visible\n\n // Don't change to link-like, if someone adds the contents directive.\n > .toc-backref\n color: inherit\n text-decoration-line: none\n\n// Figure and table captions are special.\nfigure:hover > figcaption > p > .headerlink,\ntable:hover > caption > .headerlink\n visibility: visible\n\n:target >, // Regular section[id] style anchors\nspan:target ~ // Non-regular span[id] style \"extra\" anchors\n h1,\n h2,\n h3,\n h4,\n h5,\n h6\n &:nth-of-type(1)\n background-color: var(--color-highlight-on-target)\n // .headerlink\n // visibility: visible\n code.literal\n background-color: transparent\n\ntable:target > caption,\nfigure:target\n background-color: var(--color-highlight-on-target)\n\n// Inline page contents\n.this-will-duplicate-information-and-it-is-still-useful-here li :target\n background-color: var(--color-highlight-on-target)\n\n// Code block permalinks\n.literal-block-wrapper:target .code-block-caption\n background-color: var(--color-highlight-on-target)\n\n// When a definition list item is selected\n//\n// There isn't really an alternative to !important here, due to the\n// high-specificity of API documentation's selector.\ndt:target\n background-color: var(--color-highlight-on-target) !important\n\n// When a footnote reference is selected\n.footnote > dt:target + dd,\n.footnote-reference:target\n background-color: var(--color-highlight-on-target)\n",".guilabel\n background-color: var(--color-guilabel-background)\n border: 1px solid var(--color-guilabel-border)\n color: var(--color-guilabel-text)\n\n padding: 0 0.3em\n border-radius: 0.5em\n font-size: 0.9em\n","// This file contains the styles used for stylizing the footer that's shown\n// below the content.\n\nfooter\n font-size: var(--font-size--small)\n display: flex\n flex-direction: column\n\n margin-top: 2rem\n\n// Bottom of page information\n.bottom-of-page\n display: flex\n align-items: center\n justify-content: space-between\n\n margin-top: 1rem\n padding-top: 1rem\n padding-bottom: 1rem\n\n color: var(--color-foreground-secondary)\n border-top: 1px solid var(--color-background-border)\n\n line-height: 1.5\n\n @media (max-width: $content-width)\n text-align: center\n flex-direction: column-reverse\n gap: 0.25rem\n\n .left-details\n font-size: var(--font-size--small)\n\n .right-details\n display: flex\n flex-direction: column\n gap: 0.25rem\n text-align: right\n\n .icons\n display: flex\n justify-content: flex-end\n gap: 0.25rem\n font-size: 1rem\n\n a\n text-decoration: none\n\n svg,\n img\n font-size: 1.125rem\n height: 1em\n width: 1em\n\n// Next/Prev page information\n.related-pages\n a\n display: flex\n align-items: center\n\n text-decoration: none\n &:hover .page-info .title\n text-decoration: underline\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline)\n\n svg.furo-related-icon,\n svg.furo-related-icon > use\n flex-shrink: 0\n\n color: var(--color-foreground-border)\n\n width: 0.75rem\n height: 0.75rem\n margin: 0 0.5rem\n\n &.next-page\n max-width: 50%\n\n float: right\n clear: right\n text-align: right\n\n &.prev-page\n max-width: 50%\n\n float: left\n clear: left\n\n svg\n transform: rotate(180deg)\n\n.page-info\n display: flex\n flex-direction: column\n overflow-wrap: anywhere\n\n .next-page &\n align-items: flex-end\n\n .context\n display: flex\n align-items: center\n\n padding-bottom: 0.1rem\n\n color: var(--color-foreground-muted)\n font-size: var(--font-size--small)\n text-decoration: none\n","// This file contains the styles for the contents of the left sidebar, which\n// contains the navigation tree, logo, search etc.\n\n////////////////////////////////////////////////////////////////////////////////\n// Brand on top of the scrollable tree.\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-brand\n display: flex\n flex-direction: column\n flex-shrink: 0\n\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n text-decoration: none\n\n.sidebar-brand-text\n color: var(--color-sidebar-brand-text)\n overflow-wrap: break-word\n margin: var(--sidebar-item-spacing-vertical) 0\n font-size: 1.5rem\n\n.sidebar-logo-container\n margin: var(--sidebar-item-spacing-vertical) 0\n\n.sidebar-logo\n margin: 0 auto\n display: block\n max-width: 100%\n\n////////////////////////////////////////////////////////////////////////////////\n// Search\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-search-container\n display: flex\n align-items: center\n margin-top: var(--sidebar-search-space-above)\n\n position: relative\n\n background: var(--color-sidebar-search-background)\n &:hover,\n &:focus-within\n background: var(--color-sidebar-search-background--focus)\n\n &::before\n content: \"\"\n position: absolute\n left: var(--sidebar-item-spacing-horizontal)\n width: var(--sidebar-search-icon-size)\n height: var(--sidebar-search-icon-size)\n\n background-color: var(--color-sidebar-search-icon)\n mask-image: var(--icon-search)\n\n.sidebar-search\n box-sizing: border-box\n\n border: none\n border-top: 1px solid var(--color-sidebar-search-border)\n border-bottom: 1px solid var(--color-sidebar-search-border)\n\n padding-top: var(--sidebar-search-input-spacing-vertical)\n padding-bottom: var(--sidebar-search-input-spacing-vertical)\n padding-right: var(--sidebar-search-input-spacing-horizontal)\n padding-left: calc(var(--sidebar-item-spacing-horizontal) + var(--sidebar-search-input-spacing-horizontal) + var(--sidebar-search-icon-size))\n\n width: 100%\n\n color: var(--color-sidebar-search-foreground)\n background: transparent\n z-index: 10\n\n &:focus\n outline: none\n\n &::placeholder\n font-size: var(--sidebar-search-input-font-size)\n\n//\n// Hide Search Matches link\n//\n#searchbox .highlight-link\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal) 0\n margin: 0\n text-align: center\n\n a\n color: var(--color-sidebar-search-icon)\n font-size: var(--font-size--small--2)\n\n////////////////////////////////////////////////////////////////////////////////\n// Structure/Skeleton of the navigation tree (left)\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-tree\n font-size: var(--sidebar-item-font-size)\n margin-top: var(--sidebar-tree-space-above)\n margin-bottom: var(--sidebar-item-spacing-vertical)\n\n ul\n padding: 0\n margin-top: 0\n margin-bottom: 0\n\n display: flex\n flex-direction: column\n\n list-style: none\n\n li\n position: relative\n margin: 0\n\n > ul\n margin-left: var(--sidebar-item-spacing-horizontal)\n\n .icon\n color: var(--color-sidebar-link-text)\n\n .reference\n box-sizing: border-box\n color: var(--color-sidebar-link-text)\n\n // Fill the parent.\n display: inline-block\n line-height: var(--sidebar-item-line-height)\n text-decoration: none\n\n // Don't allow long words to cause wrapping.\n overflow-wrap: anywhere\n\n height: 100%\n width: 100%\n\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n\n &:hover\n color: var(--color-sidebar-link-text)\n background: var(--color-sidebar-item-background--hover)\n\n // Add a nice little \"external-link\" arrow here.\n &.external::after\n content: url('data:image/svg+xml,')\n margin: 0 0.25rem\n vertical-align: middle\n color: var(--color-sidebar-link-text)\n\n // Make the current page reference bold.\n .current-page > .reference\n font-weight: bold\n\n label\n position: absolute\n top: 0\n right: 0\n height: var(--sidebar-item-height)\n width: var(--sidebar-expander-width)\n\n cursor: pointer\n user-select: none\n\n display: flex\n justify-content: center\n align-items: center\n\n .caption, :not(.caption) > .caption-text\n font-size: var(--sidebar-caption-font-size)\n color: var(--color-sidebar-caption-text)\n\n font-weight: bold\n text-transform: uppercase\n\n margin: var(--sidebar-caption-space-above) 0 0 0\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n\n // If it has children, add a bit more padding to wrap the content to avoid\n // overlapping with the

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 literal 0 HcmV?d00001 diff --git a/_images/fem_diffusion_3d.png b/_images/fem_diffusion_3d.png new file mode 100644 index 0000000000000000000000000000000000000000..76169a8b2d01c3da947a5231e74fc2de1ba882c8 GIT binary patch literal 18518 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 literal 0 HcmV?d00001 diff --git a/_images/fem_navier_stokes.png b/_images/fem_navier_stokes.png new file mode 100644 index 0000000000000000000000000000000000000000..ff8bb60fd90ed159d2f99ba1c2d1bf07afbfaa04 GIT binary patch literal 74114 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 z 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 literal 0 HcmV?d00001 diff --git a/_images/fem_stokes_transfer.png b/_images/fem_stokes_transfer.png new file mode 100644 index 0000000000000000000000000000000000000000..0f9cbb9384cfd3816576c76edc940f98a4844317 GIT binary patch literal 5528 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ߢqSMLw+0*>3F52!=!R-M}o64(kB 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