From d875bb8688e359d4ecec0063394ba0c72c6d397d Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Sat, 3 Aug 2024 13:22:23 +0000 Subject: [PATCH] build based on f6a469f --- previews/PR195/404.html | 22 + previews/PR195/api.html | 422 ++++++++++++++ previews/PR195/assets/api.md.DHJubgq9.js | 398 +++++++++++++ previews/PR195/assets/api.md.DHJubgq9.lean.js | 1 + previews/PR195/assets/app.BGYMnZ_8.js | 1 + previews/PR195/assets/arwwwgh.KQwENoaO.png | Bin 0 -> 228222 bytes previews/PR195/assets/ayffpge.BD0hVfse.png | Bin 0 -> 10899 bytes .../PR195/assets/call_notes.md.7w_VILqE.js | 1 + .../assets/call_notes.md.7w_VILqE.lean.js | 1 + .../chunks/@localSearchIndexroot.CyuJdoA_.js | 1 + .../chunks/VPLocalSearchBox.DO9T_jde.js | 7 + .../PR195/assets/chunks/framework.BjTE4JnT.js | 17 + .../PR195/assets/chunks/theme.Czc396Vw.js | 2 + previews/PR195/assets/ckvmmvu.B94PsR1K.png | Bin 0 -> 34578 bytes previews/PR195/assets/enupwom.Dig-DWOQ.png | Bin 0 -> 11901 bytes previews/PR195/assets/ethucql.Cx40vhB3.png | Bin 0 -> 15689 bytes previews/PR195/assets/eveaplj._0R9BbFk.png | Bin 0 -> 30821 bytes ...ments_accurate_accumulators.md.GjJQmUUF.js | 6 + ..._accurate_accumulators.md.GjJQmUUF.lean.js | 1 + .../experiments_predicates.md.Dg71Bfw3.js | 98 ++++ ...experiments_predicates.md.Dg71Bfw3.lean.js | 1 + .../assets/explanations_crs.md.rB2P2tWO.js | 1 + .../explanations_crs.md.rB2P2tWO.lean.js | 1 + .../explanations_paradigms.md.DI9tAELo.js | 1 + ...explanations_paradigms.md.DI9tAELo.lean.js | 1 + .../explanations_peculiarities.md.FHOVDDB1.js | 1 + ...anations_peculiarities.md.FHOVDDB1.lean.js | 1 + .../explanations_winding_order.md.Bm0h6HnC.js | 1 + ...anations_winding_order.md.Bm0h6HnC.lean.js | 1 + previews/PR195/assets/ghbensl.DHcwB147.png | Bin 0 -> 11197 bytes previews/PR195/assets/gktvnik.B9NpLJr_.png | Bin 0 -> 63969 bytes previews/PR195/assets/gzcmhuv.BfqlazHQ.png | Bin 0 -> 78133 bytes previews/PR195/assets/hafetpp.DnFcy9Dp.png | Bin 0 -> 59582 bytes previews/PR195/assets/hpfmrae.CLtpJ5Wb.png | Bin 0 -> 201563 bytes previews/PR195/assets/icgbnns.lu4jwpi-.png | Bin 0 -> 198223 bytes previews/PR195/assets/index.md.BWJsEQ2o.js | 1 + .../PR195/assets/index.md.BWJsEQ2o.lean.js | 1 + .../inter-italic-cyrillic-ext.r48I6akx.woff2 | Bin 0 -> 43112 bytes .../inter-italic-cyrillic.By2_1cv3.woff2 | Bin 0 -> 31300 bytes .../inter-italic-greek-ext.1u6EdAuj.woff2 | Bin 0 -> 17404 bytes .../assets/inter-italic-greek.DJ8dCoTZ.woff2 | Bin 0 -> 32564 bytes .../inter-italic-latin-ext.CN1xVJS-.woff2 | Bin 0 -> 120840 bytes .../assets/inter-italic-latin.C2AdPX0b.woff2 | Bin 0 -> 74784 bytes .../inter-italic-vietnamese.BSbpV94h.woff2 | Bin 0 -> 14884 bytes .../inter-roman-cyrillic-ext.BBPuwvHQ.woff2 | Bin 0 -> 40488 bytes .../inter-roman-cyrillic.C5lxZ8CY.woff2 | Bin 0 -> 29164 bytes .../inter-roman-greek-ext.CqjqNYQ-.woff2 | Bin 0 -> 16272 bytes .../assets/inter-roman-greek.BBVDIX6e.woff2 | Bin 0 -> 29920 bytes .../inter-roman-latin-ext.4ZJIpNVo.woff2 | Bin 0 -> 110160 bytes .../assets/inter-roman-latin.Di8DUHzh.woff2 | Bin 0 -> 67792 bytes .../inter-roman-vietnamese.BjW4sHH5.woff2 | Bin 0 -> 14072 bytes .../PR195/assets/introduction.md.D8tkvOeC.js | 1 + .../assets/introduction.md.D8tkvOeC.lean.js | 1 + previews/PR195/assets/kfdrove.Dab1-ETk.png | Bin 0 -> 76849 bytes previews/PR195/assets/kivzwfa.Danh069g.png | Bin 0 -> 191571 bytes previews/PR195/assets/ksirytc.D53be7Ix.png | Bin 0 -> 206595 bytes previews/PR195/assets/kvmquaf.CG4dr3Lx.png | Bin 0 -> 66660 bytes previews/PR195/assets/kvptgxo.BOOG5oTW.png | Bin 0 -> 41528 bytes previews/PR195/assets/kwhpuoi.DwqDxlAG.png | Bin 0 -> 200861 bytes previews/PR195/assets/kxmqmyj.mCtKcWOr.png | Bin 0 -> 83901 bytes previews/PR195/assets/mifutmo.CgiryX2p.png | Bin 0 -> 13822 bytes previews/PR195/assets/mqsazcv.oE7dclz5.png | Bin 0 -> 59682 bytes previews/PR195/assets/mwuaamn.DeeQUply.png | Bin 0 -> 41343 bytes previews/PR195/assets/pegfkke.P33ciVMf.png | Bin 0 -> 61958 bytes previews/PR195/assets/raeppvv.C3SxJ3x-.png | Bin 0 -> 23728 bytes previews/PR195/assets/rsbvlst.Bglvb-jp.png | Bin 0 -> 44112 bytes previews/PR195/assets/sduvavi.CZy9YIUA.png | Bin 0 -> 162785 bytes previews/PR195/assets/snugpka.3sfpQl2i.png | Bin 0 -> 65364 bytes .../assets/source_GeometryOps.md.BkD8zBly.js | 74 +++ .../source_GeometryOps.md.BkD8zBly.lean.js | 1 + .../source_methods_angles.md.BIdkE80s.js | 124 ++++ .../source_methods_angles.md.BIdkE80s.lean.js | 1 + .../assets/source_methods_area.md.6LdxlzTA.js | 87 +++ .../source_methods_area.md.6LdxlzTA.lean.js | 1 + .../source_methods_barycentric.md.CyGX2fFb.js | 415 +++++++++++++ ...ce_methods_barycentric.md.CyGX2fFb.lean.js | 1 + .../source_methods_buffer.md.DU5YIRhh.js | 11 + .../source_methods_buffer.md.DU5YIRhh.lean.js | 1 + .../source_methods_centroid.md.1Rbjvw60.js | 93 +++ ...ource_methods_centroid.md.1Rbjvw60.lean.js | 1 + ...clipping_clipping_processor.md.DEdPT5AQ.js | 524 +++++++++++++++++ ...ing_clipping_processor.md.DEdPT5AQ.lean.js | 1 + ...e_methods_clipping_coverage.md.CbA11gxz.js | 223 +++++++ ...hods_clipping_coverage.md.CbA11gxz.lean.js | 1 + ...source_methods_clipping_cut.md.n40IAodq.js | 87 +++ ...e_methods_clipping_cut.md.n40IAodq.lean.js | 1 + ...methods_clipping_difference.md.CrhFy5Cm.js | 166 ++++++ ...ds_clipping_difference.md.CrhFy5Cm.lean.js | 1 + ...thods_clipping_intersection.md.xm82NmdL.js | 383 ++++++++++++ ..._clipping_intersection.md.xm82NmdL.lean.js | 1 + ...methods_clipping_predicates.md.DXSSIe8m.js | 44 ++ ...ds_clipping_predicates.md.DXSSIe8m.lean.js | 1 + ...urce_methods_clipping_union.md.CXn4Lc-2.js | 250 ++++++++ ...methods_clipping_union.md.CXn4Lc-2.lean.js | 1 + .../source_methods_convex_hull.md.BBbSUADr.js | 57 ++ ...ce_methods_convex_hull.md.BBbSUADr.lean.js | 1 + .../source_methods_distance.md.Dw2LmtDw.js | 181 ++++++ ...ource_methods_distance.md.Dw2LmtDw.lean.js | 1 + .../source_methods_equals.md.DSTnK05y.js | 265 +++++++++ .../source_methods_equals.md.DSTnK05y.lean.js | 1 + ...ods_geom_relations_contains.md.C6qh7KbG.js | 33 ++ ...eom_relations_contains.md.C6qh7KbG.lean.js | 1 + ...ds_geom_relations_coveredby.md.DKl5czuP.js | 183 ++++++ ...om_relations_coveredby.md.DKl5czuP.lean.js | 1 + ...thods_geom_relations_covers.md.EwhGx2oH.js | 33 ++ ..._geom_relations_covers.md.EwhGx2oH.lean.js | 1 + ...hods_geom_relations_crosses.md.BHrKZtR2.js | 120 ++++ ...geom_relations_crosses.md.BHrKZtR2.lean.js | 1 + ...ods_geom_relations_disjoint.md.Cx5AfXIW.js | 178 ++++++ ...eom_relations_disjoint.md.Cx5AfXIW.lean.js | 1 + ...ations_geom_geom_processors.md.C9HuuL9H.js | 437 ++++++++++++++ ...s_geom_geom_processors.md.C9HuuL9H.lean.js | 1 + ...s_geom_relations_intersects.md.BR3MeE8s.js | 27 + ...m_relations_intersects.md.BR3MeE8s.lean.js | 1 + ...ods_geom_relations_overlaps.md.GC_xhoO1.js | 212 +++++++ ...eom_relations_overlaps.md.GC_xhoO1.lean.js | 1 + ...hods_geom_relations_touches.md.CI5Nxam0.js | 174 ++++++ ...geom_relations_touches.md.CI5Nxam0.lean.js | 1 + ...thods_geom_relations_within.md.DKPdlPzO.js | 193 ++++++ ..._geom_relations_within.md.DKPdlPzO.lean.js | 1 + .../source_methods_orientation.md.CAyjPYQQ.js | 100 ++++ ...ce_methods_orientation.md.CAyjPYQQ.lean.js | 1 + .../source_methods_polygonize.md.Bajq04Cb.js | 289 +++++++++ ...rce_methods_polygonize.md.Bajq04Cb.lean.js | 1 + .../source_not_implemented_yet.md.Bz3ySMxN.js | 4 + ...ce_not_implemented_yet.md.Bz3ySMxN.lean.js | 1 + .../assets/source_primitives.md.CwLE6hnK.js | 305 ++++++++++ .../source_primitives.md.CwLE6hnK.lean.js | 1 + ...ions_correction_closed_ring.md.BDlXIhE4.js | 30 + ...correction_closed_ring.md.BDlXIhE4.lean.js | 1 + ...rection_geometry_correction.md.VEdgiIPU.js | 31 + ...on_geometry_correction.md.VEdgiIPU.lean.js | 1 + ...ction_intersecting_polygons.md.CVZsm4oL.js | 97 ++++ ..._intersecting_polygons.md.CVZsm4oL.lean.js | 1 + ...urce_transformations_extent.md.BOfr-Fyq.js | 13 + ...transformations_extent.md.BOfr-Fyq.lean.js | 1 + ...source_transformations_flip.md.BXRIoP3a.js | 22 + ...e_transformations_flip.md.BXRIoP3a.lean.js | 1 + ...e_transformations_reproject.md.AFBdSlqT.js | 1 + ...nsformations_reproject.md.AFBdSlqT.lean.js | 1 + ..._transformations_segmentize.md.CgM0snro.js | 154 +++++ ...sformations_segmentize.md.CgM0snro.lean.js | 1 + ...ce_transformations_simplify.md.BSSKKuAL.js | 490 ++++++++++++++++ ...ansformations_simplify.md.BSSKKuAL.lean.js | 1 + ...e_transformations_transform.md.CQbjpjpu.js | 55 ++ ...nsformations_transform.md.CQbjpjpu.lean.js | 1 + ...urce_transformations_tuples.md.De5DcGB5.js | 19 + ...transformations_tuples.md.De5DcGB5.lean.js | 1 + .../PR195/assets/source_types.md.Df5Ol6GF.js | 67 +++ .../assets/source_types.md.Df5Ol6GF.lean.js | 1 + .../PR195/assets/source_utils.md.BvaNAnX0.js | 120 ++++ .../assets/source_utils.md.BvaNAnX0.lean.js | 1 + previews/PR195/assets/style.DvPq--hK.css | 1 + ...tutorials_creating_geometry.md.PsrBxXGz.js | 89 +++ ...ials_creating_geometry.md.PsrBxXGz.lean.js | 1 + .../tutorials_geodesic_paths.md.BeBppPdH.js | 11 + ...torials_geodesic_paths.md.BeBppPdH.lean.js | 1 + .../tutorials_spatial_joins.md.ysriZBMi.js | 42 ++ ...utorials_spatial_joins.md.ysriZBMi.lean.js | 1 + previews/PR195/assets/tvdutpc.Cb0_DiYE.png | Bin 0 -> 14120 bytes previews/PR195/assets/tveteth.0OJvb21A.png | Bin 0 -> 18310 bytes previews/PR195/assets/tysupqa.Dz86q2IX.png | Bin 0 -> 14890 bytes previews/PR195/assets/unjmjvt.DiwGEg2f.png | Bin 0 -> 13659 bytes previews/PR195/assets/uwghhoq.BhGrbaCK.png | Bin 0 -> 64163 bytes previews/PR195/assets/uxbpgyh.DC3TvBOO.png | Bin 0 -> 31376 bytes previews/PR195/assets/vwzrnej.CULn5saZ.png | Bin 0 -> 14528 bytes previews/PR195/assets/wmnledk.DuBHk1fh.png | Bin 0 -> 62883 bytes previews/PR195/assets/wtvkxng.DNlR-NUq.png | Bin 0 -> 15774 bytes previews/PR195/assets/wxjoole.BEFUMtlf.png | Bin 0 -> 12299 bytes previews/PR195/assets/xbxiuuf.DaovVbE6.png | Bin 0 -> 18370 bytes previews/PR195/assets/yvkfndx.pdNjstNw.png | Bin 0 -> 76665 bytes previews/PR195/assets/zcalbmn.3UVIT8DR.png | Bin 0 -> 14090 bytes previews/PR195/call_notes.html | 25 + .../experiments/accurate_accumulators.html | 30 + previews/PR195/experiments/predicates.html | 122 ++++ previews/PR195/explanations/crs.html | 25 + previews/PR195/explanations/paradigms.html | 25 + .../PR195/explanations/peculiarities.html | 25 + .../PR195/explanations/winding_order.html | 25 + previews/PR195/favicon.ico | Bin 0 -> 23866 bytes previews/PR195/hashmap.json | 1 + previews/PR195/index.html | 25 + previews/PR195/introduction.html | 25 + previews/PR195/logo.png | Bin 0 -> 87252 bytes previews/PR195/siteinfo.js | 1 + previews/PR195/source/GeometryOps.html | 98 ++++ previews/PR195/source/methods/angles.html | 148 +++++ previews/PR195/source/methods/area.html | 111 ++++ .../PR195/source/methods/barycentric.html | 439 ++++++++++++++ previews/PR195/source/methods/buffer.html | 35 ++ previews/PR195/source/methods/centroid.html | 117 ++++ .../methods/clipping/clipping_processor.html | 548 ++++++++++++++++++ .../source/methods/clipping/coverage.html | 247 ++++++++ .../PR195/source/methods/clipping/cut.html | 111 ++++ .../source/methods/clipping/difference.html | 190 ++++++ .../source/methods/clipping/intersection.html | 407 +++++++++++++ .../source/methods/clipping/predicates.html | 68 +++ .../PR195/source/methods/clipping/union.html | 274 +++++++++ .../PR195/source/methods/convex_hull.html | 81 +++ previews/PR195/source/methods/distance.html | 205 +++++++ previews/PR195/source/methods/equals.html | 289 +++++++++ .../methods/geom_relations/contains.html | 57 ++ .../methods/geom_relations/coveredby.html | 207 +++++++ .../source/methods/geom_relations/covers.html | 57 ++ .../methods/geom_relations/crosses.html | 144 +++++ .../methods/geom_relations/disjoint.html | 202 +++++++ .../geom_relations/geom_geom_processors.html | 461 +++++++++++++++ .../methods/geom_relations/intersects.html | 51 ++ .../methods/geom_relations/overlaps.html | 236 ++++++++ .../methods/geom_relations/touches.html | 198 +++++++ .../source/methods/geom_relations/within.html | 217 +++++++ .../PR195/source/methods/orientation.html | 124 ++++ previews/PR195/source/methods/polygonize.html | 313 ++++++++++ .../PR195/source/not_implemented_yet.html | 28 + previews/PR195/source/primitives.html | 329 +++++++++++ .../correction/closed_ring.html | 54 ++ .../correction/geometry_correction.html | 55 ++ .../correction/intersecting_polygons.html | 121 ++++ .../PR195/source/transformations/extent.html | 37 ++ .../PR195/source/transformations/flip.html | 46 ++ .../source/transformations/reproject.html | 65 +++ .../source/transformations/segmentize.html | 178 ++++++ .../source/transformations/simplify.html | 514 ++++++++++++++++ .../source/transformations/transform.html | 79 +++ .../PR195/source/transformations/tuples.html | 43 ++ previews/PR195/source/types.html | 91 +++ previews/PR195/source/utils.html | 144 +++++ .../PR195/tutorials/creating_geometry.html | 113 ++++ previews/PR195/tutorials/geodesic_paths.html | 35 ++ previews/PR195/tutorials/spatial_joins.html | 66 +++ 230 files changed, 15512 insertions(+) create mode 100644 previews/PR195/404.html create mode 100644 previews/PR195/api.html create mode 100644 previews/PR195/assets/api.md.DHJubgq9.js create mode 100644 previews/PR195/assets/api.md.DHJubgq9.lean.js create mode 100644 previews/PR195/assets/app.BGYMnZ_8.js create mode 100644 previews/PR195/assets/arwwwgh.KQwENoaO.png create mode 100644 previews/PR195/assets/ayffpge.BD0hVfse.png create mode 100644 previews/PR195/assets/call_notes.md.7w_VILqE.js create mode 100644 previews/PR195/assets/call_notes.md.7w_VILqE.lean.js create mode 100644 previews/PR195/assets/chunks/@localSearchIndexroot.CyuJdoA_.js create mode 100644 previews/PR195/assets/chunks/VPLocalSearchBox.DO9T_jde.js create mode 100644 previews/PR195/assets/chunks/framework.BjTE4JnT.js create mode 100644 previews/PR195/assets/chunks/theme.Czc396Vw.js create mode 100644 previews/PR195/assets/ckvmmvu.B94PsR1K.png create mode 100644 previews/PR195/assets/enupwom.Dig-DWOQ.png create mode 100644 previews/PR195/assets/ethucql.Cx40vhB3.png create mode 100644 previews/PR195/assets/eveaplj._0R9BbFk.png create mode 100644 previews/PR195/assets/experiments_accurate_accumulators.md.GjJQmUUF.js create mode 100644 previews/PR195/assets/experiments_accurate_accumulators.md.GjJQmUUF.lean.js create mode 100644 previews/PR195/assets/experiments_predicates.md.Dg71Bfw3.js create mode 100644 previews/PR195/assets/experiments_predicates.md.Dg71Bfw3.lean.js create mode 100644 previews/PR195/assets/explanations_crs.md.rB2P2tWO.js create mode 100644 previews/PR195/assets/explanations_crs.md.rB2P2tWO.lean.js create mode 100644 previews/PR195/assets/explanations_paradigms.md.DI9tAELo.js create mode 100644 previews/PR195/assets/explanations_paradigms.md.DI9tAELo.lean.js create mode 100644 previews/PR195/assets/explanations_peculiarities.md.FHOVDDB1.js create mode 100644 previews/PR195/assets/explanations_peculiarities.md.FHOVDDB1.lean.js create mode 100644 previews/PR195/assets/explanations_winding_order.md.Bm0h6HnC.js create mode 100644 previews/PR195/assets/explanations_winding_order.md.Bm0h6HnC.lean.js create mode 100644 previews/PR195/assets/ghbensl.DHcwB147.png create mode 100644 previews/PR195/assets/gktvnik.B9NpLJr_.png create mode 100644 previews/PR195/assets/gzcmhuv.BfqlazHQ.png create mode 100644 previews/PR195/assets/hafetpp.DnFcy9Dp.png create mode 100644 previews/PR195/assets/hpfmrae.CLtpJ5Wb.png create mode 100644 previews/PR195/assets/icgbnns.lu4jwpi-.png create mode 100644 previews/PR195/assets/index.md.BWJsEQ2o.js create mode 100644 previews/PR195/assets/index.md.BWJsEQ2o.lean.js create mode 100644 previews/PR195/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 create mode 100644 previews/PR195/assets/inter-italic-cyrillic.By2_1cv3.woff2 create mode 100644 previews/PR195/assets/inter-italic-greek-ext.1u6EdAuj.woff2 create mode 100644 previews/PR195/assets/inter-italic-greek.DJ8dCoTZ.woff2 create mode 100644 previews/PR195/assets/inter-italic-latin-ext.CN1xVJS-.woff2 create mode 100644 previews/PR195/assets/inter-italic-latin.C2AdPX0b.woff2 create mode 100644 previews/PR195/assets/inter-italic-vietnamese.BSbpV94h.woff2 create mode 100644 previews/PR195/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 create mode 100644 previews/PR195/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 create mode 100644 previews/PR195/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 create mode 100644 previews/PR195/assets/inter-roman-greek.BBVDIX6e.woff2 create mode 100644 previews/PR195/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 create mode 100644 previews/PR195/assets/inter-roman-latin.Di8DUHzh.woff2 create mode 100644 previews/PR195/assets/inter-roman-vietnamese.BjW4sHH5.woff2 create mode 100644 previews/PR195/assets/introduction.md.D8tkvOeC.js create mode 100644 previews/PR195/assets/introduction.md.D8tkvOeC.lean.js create mode 100644 previews/PR195/assets/kfdrove.Dab1-ETk.png create mode 100644 previews/PR195/assets/kivzwfa.Danh069g.png create mode 100644 previews/PR195/assets/ksirytc.D53be7Ix.png create mode 100644 previews/PR195/assets/kvmquaf.CG4dr3Lx.png create mode 100644 previews/PR195/assets/kvptgxo.BOOG5oTW.png create mode 100644 previews/PR195/assets/kwhpuoi.DwqDxlAG.png create mode 100644 previews/PR195/assets/kxmqmyj.mCtKcWOr.png create mode 100644 previews/PR195/assets/mifutmo.CgiryX2p.png create mode 100644 previews/PR195/assets/mqsazcv.oE7dclz5.png create mode 100644 previews/PR195/assets/mwuaamn.DeeQUply.png create mode 100644 previews/PR195/assets/pegfkke.P33ciVMf.png create mode 100644 previews/PR195/assets/raeppvv.C3SxJ3x-.png create mode 100644 previews/PR195/assets/rsbvlst.Bglvb-jp.png create mode 100644 previews/PR195/assets/sduvavi.CZy9YIUA.png create mode 100644 previews/PR195/assets/snugpka.3sfpQl2i.png create mode 100644 previews/PR195/assets/source_GeometryOps.md.BkD8zBly.js create mode 100644 previews/PR195/assets/source_GeometryOps.md.BkD8zBly.lean.js create mode 100644 previews/PR195/assets/source_methods_angles.md.BIdkE80s.js create mode 100644 previews/PR195/assets/source_methods_angles.md.BIdkE80s.lean.js create mode 100644 previews/PR195/assets/source_methods_area.md.6LdxlzTA.js create mode 100644 previews/PR195/assets/source_methods_area.md.6LdxlzTA.lean.js create mode 100644 previews/PR195/assets/source_methods_barycentric.md.CyGX2fFb.js create mode 100644 previews/PR195/assets/source_methods_barycentric.md.CyGX2fFb.lean.js create mode 100644 previews/PR195/assets/source_methods_buffer.md.DU5YIRhh.js create mode 100644 previews/PR195/assets/source_methods_buffer.md.DU5YIRhh.lean.js create mode 100644 previews/PR195/assets/source_methods_centroid.md.1Rbjvw60.js create mode 100644 previews/PR195/assets/source_methods_centroid.md.1Rbjvw60.lean.js create mode 100644 previews/PR195/assets/source_methods_clipping_clipping_processor.md.DEdPT5AQ.js create mode 100644 previews/PR195/assets/source_methods_clipping_clipping_processor.md.DEdPT5AQ.lean.js create mode 100644 previews/PR195/assets/source_methods_clipping_coverage.md.CbA11gxz.js create mode 100644 previews/PR195/assets/source_methods_clipping_coverage.md.CbA11gxz.lean.js create mode 100644 previews/PR195/assets/source_methods_clipping_cut.md.n40IAodq.js create mode 100644 previews/PR195/assets/source_methods_clipping_cut.md.n40IAodq.lean.js create mode 100644 previews/PR195/assets/source_methods_clipping_difference.md.CrhFy5Cm.js create mode 100644 previews/PR195/assets/source_methods_clipping_difference.md.CrhFy5Cm.lean.js create mode 100644 previews/PR195/assets/source_methods_clipping_intersection.md.xm82NmdL.js create mode 100644 previews/PR195/assets/source_methods_clipping_intersection.md.xm82NmdL.lean.js create mode 100644 previews/PR195/assets/source_methods_clipping_predicates.md.DXSSIe8m.js create mode 100644 previews/PR195/assets/source_methods_clipping_predicates.md.DXSSIe8m.lean.js create mode 100644 previews/PR195/assets/source_methods_clipping_union.md.CXn4Lc-2.js create mode 100644 previews/PR195/assets/source_methods_clipping_union.md.CXn4Lc-2.lean.js create mode 100644 previews/PR195/assets/source_methods_convex_hull.md.BBbSUADr.js create mode 100644 previews/PR195/assets/source_methods_convex_hull.md.BBbSUADr.lean.js create mode 100644 previews/PR195/assets/source_methods_distance.md.Dw2LmtDw.js create mode 100644 previews/PR195/assets/source_methods_distance.md.Dw2LmtDw.lean.js create mode 100644 previews/PR195/assets/source_methods_equals.md.DSTnK05y.js create mode 100644 previews/PR195/assets/source_methods_equals.md.DSTnK05y.lean.js create mode 100644 previews/PR195/assets/source_methods_geom_relations_contains.md.C6qh7KbG.js create mode 100644 previews/PR195/assets/source_methods_geom_relations_contains.md.C6qh7KbG.lean.js create mode 100644 previews/PR195/assets/source_methods_geom_relations_coveredby.md.DKl5czuP.js create mode 100644 previews/PR195/assets/source_methods_geom_relations_coveredby.md.DKl5czuP.lean.js create mode 100644 previews/PR195/assets/source_methods_geom_relations_covers.md.EwhGx2oH.js create mode 100644 previews/PR195/assets/source_methods_geom_relations_covers.md.EwhGx2oH.lean.js create mode 100644 previews/PR195/assets/source_methods_geom_relations_crosses.md.BHrKZtR2.js create mode 100644 previews/PR195/assets/source_methods_geom_relations_crosses.md.BHrKZtR2.lean.js create mode 100644 previews/PR195/assets/source_methods_geom_relations_disjoint.md.Cx5AfXIW.js create mode 100644 previews/PR195/assets/source_methods_geom_relations_disjoint.md.Cx5AfXIW.lean.js create mode 100644 previews/PR195/assets/source_methods_geom_relations_geom_geom_processors.md.C9HuuL9H.js create mode 100644 previews/PR195/assets/source_methods_geom_relations_geom_geom_processors.md.C9HuuL9H.lean.js create mode 100644 previews/PR195/assets/source_methods_geom_relations_intersects.md.BR3MeE8s.js create mode 100644 previews/PR195/assets/source_methods_geom_relations_intersects.md.BR3MeE8s.lean.js create mode 100644 previews/PR195/assets/source_methods_geom_relations_overlaps.md.GC_xhoO1.js create mode 100644 previews/PR195/assets/source_methods_geom_relations_overlaps.md.GC_xhoO1.lean.js create mode 100644 previews/PR195/assets/source_methods_geom_relations_touches.md.CI5Nxam0.js create mode 100644 previews/PR195/assets/source_methods_geom_relations_touches.md.CI5Nxam0.lean.js create mode 100644 previews/PR195/assets/source_methods_geom_relations_within.md.DKPdlPzO.js create mode 100644 previews/PR195/assets/source_methods_geom_relations_within.md.DKPdlPzO.lean.js create mode 100644 previews/PR195/assets/source_methods_orientation.md.CAyjPYQQ.js create mode 100644 previews/PR195/assets/source_methods_orientation.md.CAyjPYQQ.lean.js create mode 100644 previews/PR195/assets/source_methods_polygonize.md.Bajq04Cb.js create mode 100644 previews/PR195/assets/source_methods_polygonize.md.Bajq04Cb.lean.js create mode 100644 previews/PR195/assets/source_not_implemented_yet.md.Bz3ySMxN.js create mode 100644 previews/PR195/assets/source_not_implemented_yet.md.Bz3ySMxN.lean.js create mode 100644 previews/PR195/assets/source_primitives.md.CwLE6hnK.js create mode 100644 previews/PR195/assets/source_primitives.md.CwLE6hnK.lean.js create mode 100644 previews/PR195/assets/source_transformations_correction_closed_ring.md.BDlXIhE4.js create mode 100644 previews/PR195/assets/source_transformations_correction_closed_ring.md.BDlXIhE4.lean.js create mode 100644 previews/PR195/assets/source_transformations_correction_geometry_correction.md.VEdgiIPU.js create mode 100644 previews/PR195/assets/source_transformations_correction_geometry_correction.md.VEdgiIPU.lean.js create mode 100644 previews/PR195/assets/source_transformations_correction_intersecting_polygons.md.CVZsm4oL.js create mode 100644 previews/PR195/assets/source_transformations_correction_intersecting_polygons.md.CVZsm4oL.lean.js create mode 100644 previews/PR195/assets/source_transformations_extent.md.BOfr-Fyq.js create mode 100644 previews/PR195/assets/source_transformations_extent.md.BOfr-Fyq.lean.js create mode 100644 previews/PR195/assets/source_transformations_flip.md.BXRIoP3a.js create mode 100644 previews/PR195/assets/source_transformations_flip.md.BXRIoP3a.lean.js create mode 100644 previews/PR195/assets/source_transformations_reproject.md.AFBdSlqT.js create mode 100644 previews/PR195/assets/source_transformations_reproject.md.AFBdSlqT.lean.js create mode 100644 previews/PR195/assets/source_transformations_segmentize.md.CgM0snro.js create mode 100644 previews/PR195/assets/source_transformations_segmentize.md.CgM0snro.lean.js create mode 100644 previews/PR195/assets/source_transformations_simplify.md.BSSKKuAL.js create mode 100644 previews/PR195/assets/source_transformations_simplify.md.BSSKKuAL.lean.js create mode 100644 previews/PR195/assets/source_transformations_transform.md.CQbjpjpu.js create mode 100644 previews/PR195/assets/source_transformations_transform.md.CQbjpjpu.lean.js create mode 100644 previews/PR195/assets/source_transformations_tuples.md.De5DcGB5.js create mode 100644 previews/PR195/assets/source_transformations_tuples.md.De5DcGB5.lean.js create mode 100644 previews/PR195/assets/source_types.md.Df5Ol6GF.js create mode 100644 previews/PR195/assets/source_types.md.Df5Ol6GF.lean.js create mode 100644 previews/PR195/assets/source_utils.md.BvaNAnX0.js create mode 100644 previews/PR195/assets/source_utils.md.BvaNAnX0.lean.js create mode 100644 previews/PR195/assets/style.DvPq--hK.css create mode 100644 previews/PR195/assets/tutorials_creating_geometry.md.PsrBxXGz.js create mode 100644 previews/PR195/assets/tutorials_creating_geometry.md.PsrBxXGz.lean.js create mode 100644 previews/PR195/assets/tutorials_geodesic_paths.md.BeBppPdH.js create mode 100644 previews/PR195/assets/tutorials_geodesic_paths.md.BeBppPdH.lean.js create mode 100644 previews/PR195/assets/tutorials_spatial_joins.md.ysriZBMi.js create mode 100644 previews/PR195/assets/tutorials_spatial_joins.md.ysriZBMi.lean.js create mode 100644 previews/PR195/assets/tvdutpc.Cb0_DiYE.png create mode 100644 previews/PR195/assets/tveteth.0OJvb21A.png create mode 100644 previews/PR195/assets/tysupqa.Dz86q2IX.png create mode 100644 previews/PR195/assets/unjmjvt.DiwGEg2f.png create mode 100644 previews/PR195/assets/uwghhoq.BhGrbaCK.png create mode 100644 previews/PR195/assets/uxbpgyh.DC3TvBOO.png create mode 100644 previews/PR195/assets/vwzrnej.CULn5saZ.png create mode 100644 previews/PR195/assets/wmnledk.DuBHk1fh.png create mode 100644 previews/PR195/assets/wtvkxng.DNlR-NUq.png create mode 100644 previews/PR195/assets/wxjoole.BEFUMtlf.png create mode 100644 previews/PR195/assets/xbxiuuf.DaovVbE6.png create mode 100644 previews/PR195/assets/yvkfndx.pdNjstNw.png create mode 100644 previews/PR195/assets/zcalbmn.3UVIT8DR.png create mode 100644 previews/PR195/call_notes.html create mode 100644 previews/PR195/experiments/accurate_accumulators.html create mode 100644 previews/PR195/experiments/predicates.html create mode 100644 previews/PR195/explanations/crs.html create mode 100644 previews/PR195/explanations/paradigms.html create mode 100644 previews/PR195/explanations/peculiarities.html create mode 100644 previews/PR195/explanations/winding_order.html create mode 100644 previews/PR195/favicon.ico create mode 100644 previews/PR195/hashmap.json create mode 100644 previews/PR195/index.html create mode 100644 previews/PR195/introduction.html create mode 100644 previews/PR195/logo.png create mode 100644 previews/PR195/siteinfo.js create mode 100644 previews/PR195/source/GeometryOps.html create mode 100644 previews/PR195/source/methods/angles.html create mode 100644 previews/PR195/source/methods/area.html create mode 100644 previews/PR195/source/methods/barycentric.html create mode 100644 previews/PR195/source/methods/buffer.html create mode 100644 previews/PR195/source/methods/centroid.html create mode 100644 previews/PR195/source/methods/clipping/clipping_processor.html create mode 100644 previews/PR195/source/methods/clipping/coverage.html create mode 100644 previews/PR195/source/methods/clipping/cut.html create mode 100644 previews/PR195/source/methods/clipping/difference.html create mode 100644 previews/PR195/source/methods/clipping/intersection.html create mode 100644 previews/PR195/source/methods/clipping/predicates.html create mode 100644 previews/PR195/source/methods/clipping/union.html create mode 100644 previews/PR195/source/methods/convex_hull.html create mode 100644 previews/PR195/source/methods/distance.html create mode 100644 previews/PR195/source/methods/equals.html create mode 100644 previews/PR195/source/methods/geom_relations/contains.html create mode 100644 previews/PR195/source/methods/geom_relations/coveredby.html create mode 100644 previews/PR195/source/methods/geom_relations/covers.html create mode 100644 previews/PR195/source/methods/geom_relations/crosses.html create mode 100644 previews/PR195/source/methods/geom_relations/disjoint.html create mode 100644 previews/PR195/source/methods/geom_relations/geom_geom_processors.html create mode 100644 previews/PR195/source/methods/geom_relations/intersects.html create mode 100644 previews/PR195/source/methods/geom_relations/overlaps.html create mode 100644 previews/PR195/source/methods/geom_relations/touches.html create mode 100644 previews/PR195/source/methods/geom_relations/within.html create mode 100644 previews/PR195/source/methods/orientation.html create mode 100644 previews/PR195/source/methods/polygonize.html create mode 100644 previews/PR195/source/not_implemented_yet.html create mode 100644 previews/PR195/source/primitives.html create mode 100644 previews/PR195/source/transformations/correction/closed_ring.html create mode 100644 previews/PR195/source/transformations/correction/geometry_correction.html create mode 100644 previews/PR195/source/transformations/correction/intersecting_polygons.html create mode 100644 previews/PR195/source/transformations/extent.html create mode 100644 previews/PR195/source/transformations/flip.html create mode 100644 previews/PR195/source/transformations/reproject.html create mode 100644 previews/PR195/source/transformations/segmentize.html create mode 100644 previews/PR195/source/transformations/simplify.html create mode 100644 previews/PR195/source/transformations/transform.html create mode 100644 previews/PR195/source/transformations/tuples.html create mode 100644 previews/PR195/source/types.html create mode 100644 previews/PR195/source/utils.html create mode 100644 previews/PR195/tutorials/creating_geometry.html create mode 100644 previews/PR195/tutorials/geodesic_paths.html create mode 100644 previews/PR195/tutorials/spatial_joins.html diff --git a/previews/PR195/404.html b/previews/PR195/404.html new file mode 100644 index 000000000..d383d2e12 --- /dev/null +++ b/previews/PR195/404.html @@ -0,0 +1,22 @@ + + + + + + 404 | GeometryOps.jl + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/previews/PR195/api.html b/previews/PR195/api.html new file mode 100644 index 000000000..4c216c8a9 --- /dev/null +++ b/previews/PR195/api.html @@ -0,0 +1,422 @@ + + + + + + Full GeometryOps API documentation | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Full GeometryOps API documentation

Warning

This page is still very much WIP!

Documentation for GeometryOps's full API (only for reference!).

apply and associated functions

# GeometryOps.applyFunction.
julia
apply(f, target::Union{TraitTarget, GI.AbstractTrait}, obj; kw...)

Reconstruct a geometry, feature, feature collection, or nested vectors of either using the function f on the target trait.

f(target_geom) => x where x also has the target trait, or a trait that can be substituted. For example, swapping PolgonTrait to MultiPointTrait will fail if the outer object has MultiPolygonTrait, but should work if it has FeatureTrait.

Objects "shallower" than the target trait are always completely rebuilt, like a Vector of FeatureCollectionTrait of FeatureTrait when the target has PolygonTrait and is held in the features. These will always be GeoInterface geometries/feature/feature collections. But "deeper" objects may remain unchanged or be whatever GeoInterface compatible objects f returns.

The result is a functionally similar geometry with values depending on f.

  • threaded: true or false. Whether to use multithreading. Defaults to false.

  • crs: The CRS to attach to geometries. Defaults to nothing.

  • calc_extent: true or false. Whether to calculate the extent. Defaults to false.

Example

Flipped point the order in any feature or geometry, or iterables of either:

julia
import GeoInterface as GI
+import GeometryOps as GO
+geom = GI.Polygon([GI.LinearRing([(1, 2), (3, 4), (5, 6), (1, 2)]),
+                   GI.LinearRing([(3, 4), (5, 6), (6, 7), (3, 4)])])
+
+flipped_geom = GO.apply(GI.PointTrait, geom) do p
+    (GI.y(p), GI.x(p))
+end

source


# GeometryOps.applyreduceFunction.
julia
applyreduce(f, op, target::Union{TraitTarget, GI.AbstractTrait}, obj; threaded)

Apply function f to all objects with the target trait, and reduce the result with an op like +.

The order and grouping of application of op is not guaranteed.

If threaded==true threads will be used over arrays and iterables, feature collections and nested geometries.

source


# GeometryOps.reprojectFunction.
julia
reproject(geometry; source_crs, target_crs, transform, always_xy, time)
+reproject(geometry, source_crs, target_crs; always_xy, time)
+reproject(geometry, transform; always_xy, time)

Reproject any GeoInterface.jl compatible geometry from source_crs to target_crs.

The returned object will be constructed from GeoInterface.WrapperGeometry geometries, wrapping views of a Vector{Proj.Point{D}}, where D is the dimension.

Tip

The Proj.jl package must be loaded for this method to work, since it is implemented in a package extension.

Arguments

  • geometry: Any GeoInterface.jl compatible geometries.

  • source_crs: the source coordinate reference system, as a GeoFormatTypes.jl object or a string.

  • target_crs: the target coordinate reference system, as a GeoFormatTypes.jl object or a string.

If these a passed as keywords, transform will take priority. Without it target_crs is always needed, and source_crs is needed if it is not retrievable from the geometry with GeoInterface.crs(geometry).

Keywords

  • always_xy: force x, y coordinate order, true by default. false will expect and return points in the crs coordinate order.

  • time: the time for the coordinates. Inf by default.

  • threaded: true or false. Whether to use multithreading. Defaults to false.

  • crs: The CRS to attach to geometries. Defaults to nothing.

  • calc_extent: true or false. Whether to calculate the extent. Defaults to false.

source


# GeometryOps.transformFunction.
julia
transform(f, obj)

Apply a function f to all the points in obj.

Points will be passed to f as an SVector to allow using CoordinateTransformations.jl and Rotations.jl without hassle.

SVector is also a valid GeoInterface.jl point, so will work in all GeoInterface.jl methods.

Example

julia
julia> import GeoInterface as GI
+
+julia> import GeometryOps as GO
+
+julia> geom = GI.Polygon([GI.LinearRing([(1, 2), (3, 4), (5, 6), (1, 2)]), GI.LinearRing([(3, 4), (5, 6), (6, 7), (3, 4)])]);
+
+julia> f = CoordinateTransformations.Translation(3.5, 1.5)
+Translation(3.5, 1.5)
+
+julia> GO.transform(f, geom)
+GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.Linea
+rRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}(StaticArraysCo
+re.SVector{2, Float64}[[4.5, 3.5], [6.5, 5.5], [8.5, 7.5], [4.5, 3.5]], nothing, nothing), GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}(StaticA
+rraysCore.SVector{2, Float64}[[6.5, 5.5], [8.5, 7.5], [9.5, 8.5], [6.5, 5.5]], nothing, nothing)], nothing, nothing)

With Rotations.jl you need to actually multiply the Rotation by the SVector point, which is easy using an anonymous function.

julia
julia> using Rotations
+
+julia> GO.transform(p -> one(RotMatrix{2}) * p, geom)
+GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearR
+ing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}(StaticArraysCore.SVe
+ctor{2, Int64}[[2, 1], [4, 3], [6, 5], [2, 1]], nothing, nothing), GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}(StaticArraysCore.SVector{2, Int64
+}[[4, 3], [6, 5], [7, 6], [4, 3]], nothing, nothing)], nothing, nothing)

source


General geometry methods

OGC methods

# GeometryOps.containsFunction.
julia
contains(g1::AbstractGeometry, g2::AbstractGeometry)::Bool

Return true if the second geometry is completely contained by the first geometry. The interiors of both geometries must intersect and the interior and boundary of the secondary (g2) must not intersect the exterior of the first (g1).

contains returns the exact opposite result of within.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+line = GI.LineString([(1, 1), (1, 2), (1, 3), (1, 4)])
+point = GI.Point((1, 2))
+
+GO.contains(line, point)
+# output
+true

source


# GeometryOps.coveredbyFunction.
julia
coveredby(g1, g2)::Bool

Return true if the first geometry is completely covered by the second geometry. The interior and boundary of the primary geometry (g1) must not intersect the exterior of the secondary geometry (g2).

Furthermore, coveredby returns the exact opposite result of covers. They are equivalent with the order of the arguments swapped.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+p1 = GI.Point(0.0, 0.0)
+p2 = GI.Point(1.0, 1.0)
+l1 = GI.Line([p1, p2])
+
+GO.coveredby(p1, l1)
+# output
+true

source


# GeometryOps.coversFunction.
julia
covers(g1::AbstractGeometry, g2::AbstractGeometry)::Bool

Return true if the first geometry is completely covers the second geometry, The exterior and boundary of the second geometry must not be outside of the interior and boundary of the first geometry. However, the interiors need not intersect.

covers returns the exact opposite result of coveredby.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+l1 = GI.LineString([(1.0, 1.0), (1.0, 2.0), (1.0, 3.0), (1.0, 4.0)])
+l2 = GI.LineString([(1.0, 1.0), (1.0, 2.0)])
+
+GO.covers(l1, l2)
+# output
+true

source


# GeometryOps.crossesFunction.
julia
 crosses(geom1, geom2)::Bool

Return true if the intersection results in a geometry whose dimension is one less than the maximum dimension of the two source geometries and the intersection set is interior to both source geometries.

TODO: broken

Examples

julia
import GeoInterface as GI, GeometryOps as GO
+# TODO: Add working example

source


# GeometryOps.disjointFunction.
julia
disjoint(geom1, geom2)::Bool

Return true if the first geometry is disjoint from the second geometry.

Return true if the first geometry is disjoint from the second geometry. The interiors and boundaries of both geometries must not intersect.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+
+line = GI.LineString([(1, 1), (1, 2), (1, 3), (1, 4)])
+point = (2, 2)
+GO.disjoint(point, line)
+
+# output
+true

source


# GeometryOps.intersectsFunction.
julia
intersects(geom1, geom2)::Bool

Return true if the interiors or boundaries of the two geometries interact.

intersects returns the exact opposite result of disjoint.

Example

julia
import GeoInterface as GI, GeometryOps as GO
+
+line1 = GI.Line([(124.584961,-12.768946), (126.738281,-17.224758)])
+line2 = GI.Line([(123.354492,-15.961329), (127.22168,-14.008696)])
+GO.intersects(line1, line2)
+
+# output
+true

source


# GeometryOps.overlapsFunction.
julia
overlaps(geom1, geom2)::Bool

Compare two Geometries of the same dimension and return true if their intersection set results in a geometry different from both but of the same dimension. This means one geometry cannot be within or contain the other and they cannot be equal

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+poly1 = GI.Polygon([[(0,0), (0,5), (5,5), (5,0), (0,0)]])
+poly2 = GI.Polygon([[(1,1), (1,6), (6,6), (6,1), (1,1)]])
+
+GO.overlaps(poly1, poly2)
+# output
+true

source

julia
overlaps(::GI.AbstractTrait, geom1, ::GI.AbstractTrait, geom2)::Bool

For any non-specified pair, all have non-matching dimensions, return false.

source

julia
overlaps(
+    ::GI.MultiPointTrait, points1,
+    ::GI.MultiPointTrait, points2,
+)::Bool

If the multipoints overlap, meaning some, but not all, of the points within the multipoints are shared, return true.

source

julia
overlaps(::GI.LineTrait, line1, ::GI.LineTrait, line)::Bool

If the lines overlap, meaning that they are collinear but each have one endpoint outside of the other line, return true. Else false.

source

julia
overlaps(
+    ::Union{GI.LineStringTrait, GI.LinearRing}, line1,
+    ::Union{GI.LineStringTrait, GI.LinearRing}, line2,
+)::Bool

If the curves overlap, meaning that at least one edge of each curve overlaps, return true. Else false.

source

julia
overlaps(
+    trait_a::GI.PolygonTrait, poly_a,
+    trait_b::GI.PolygonTrait, poly_b,
+)::Bool

If the two polygons intersect with one another, but are not equal, return true. Else false.

source

julia
overlaps(
+    ::GI.PolygonTrait, poly1,
+    ::GI.MultiPolygonTrait, polys2,
+)::Bool

Return true if polygon overlaps with at least one of the polygons within the multipolygon. Else false.

source

julia
overlaps(
+    ::GI.MultiPolygonTrait, polys1,
+    ::GI.PolygonTrait, poly2,
+)::Bool

Return true if polygon overlaps with at least one of the polygons within the multipolygon. Else false.

source

julia
overlaps(
+    ::GI.MultiPolygonTrait, polys1,
+    ::GI.MultiPolygonTrait, polys2,
+)::Bool

Return true if at least one pair of polygons from multipolygons overlap. Else false.

source


# GeometryOps.touchesFunction.
julia
touches(geom1, geom2)::Bool

Return true if the first geometry touches the second geometry. In other words, the two interiors cannot interact, but one of the geometries must have a boundary point that interacts with either the other geometry's interior or boundary.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+
+l1 = GI.Line([(0.0, 0.0), (1.0, 0.0)])
+l2 = GI.Line([(1.0, 1.0), (1.0, -1.0)])
+
+GO.touches(l1, l2)
+# output
+true

source


# GeometryOps.withinFunction.
julia
within(geom1, geom2)::Bool

Return true if the first geometry is completely within the second geometry. The interiors of both geometries must intersect and the interior and boundary of the primary geometry (geom1) must not intersect the exterior of the secondary geometry (geom2).

Furthermore, within returns the exact opposite result of contains.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+
+line = GI.LineString([(1, 1), (1, 2), (1, 3), (1, 4)])
+point = (1, 2)
+GO.within(point, line)
+
+# output
+true

source


Other general methods

# GeometryOps.equalsFunction.
julia
equals(geom1, geom2)::Bool

Compare two Geometries return true if they are the same geometry.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+poly1 = GI.Polygon([[(0,0), (0,5), (5,5), (5,0), (0,0)]])
+poly2 = GI.Polygon([[(0,0), (0,5), (5,5), (5,0), (0,0)]])
+
+GO.equals(poly1, poly2)
+# output
+true

source

julia
equals(::T, geom_a, ::T, geom_b)::Bool

Two geometries of the same type, which don't have a equals function to dispatch off of should throw an error.

source

julia
equals(trait_a, geom_a, trait_b, geom_b)

Two geometries which are not of the same type cannot be equal so they always return false.

source

julia
equals(::GI.PointTrait, p1, ::GI.PointTrait, p2)::Bool

Two points are the same if they have the same x and y (and z if 3D) coordinates.

source

julia
equals(::GI.PointTrait, p1, ::GI.MultiPointTrait, mp2)::Bool

A point and a multipoint are equal if the multipoint is composed of a single point that is equivalent to the given point.

source

julia
equals(::GI.MultiPointTrait, mp1, ::GI.PointTrait, p2)::Bool

A point and a multipoint are equal if the multipoint is composed of a single point that is equivalent to the given point.

source

julia
equals(::GI.MultiPointTrait, mp1, ::GI.MultiPointTrait, mp2)::Bool

Two multipoints are equal if they share the same set of points.

source

julia
equals(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l2,
+)::Bool

Two lines/linestrings are equal if they share the same set of points going along the curve. Note that lines/linestrings aren't closed by definition.

source

julia
equals(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l1,
+    ::GI.LinearRingTrait, l2,
+)::Bool

A line/linestring and a linear ring are equal if they share the same set of points going along the curve. Note that lines aren't closed by definition, but rings are, so the line must have a repeated last point to be equal

source

julia
equals(
+    ::GI.LinearRingTrait, l1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l2,
+)::Bool

A linear ring and a line/linestring are equal if they share the same set of points going along the curve. Note that lines aren't closed by definition, but rings are, so the line must have a repeated last point to be equal

source

julia
equals(
+    ::GI.LinearRingTrait, l1,
+    ::GI.LinearRingTrait, l2,
+)::Bool

Two linear rings are equal if they share the same set of points going along the curve. Note that rings are closed by definition, so they can have, but don't need, a repeated last point to be equal.

source

julia
equals(::GI.PolygonTrait, geom_a, ::GI.PolygonTrait, geom_b)::Bool

Two polygons are equal if they share the same exterior edge and holes.

source

julia
equals(::GI.PolygonTrait, geom_a, ::GI.MultiPolygonTrait, geom_b)::Bool

A polygon and a multipolygon are equal if the multipolygon is composed of a single polygon that is equivalent to the given polygon.

source

julia
equals(::GI.MultiPolygonTrait, geom_a, ::GI.PolygonTrait, geom_b)::Bool

A polygon and a multipolygon are equal if the multipolygon is composed of a single polygon that is equivalent to the given polygon.

source

julia
equals(::GI.PolygonTrait, geom_a, ::GI.PolygonTrait, geom_b)::Bool

Two multipolygons are equal if they share the same set of polygons.

source


# GeometryOps.centroidFunction.
julia
centroid(geom, [T=Float64])::Tuple{T, T}

Returns the centroid of a given line segment, linear ring, polygon, or mutlipolygon.

source


# GeometryOps.distanceFunction.
julia
distance(point, geom, ::Type{T} = Float64)::T

Calculates the ditance from the geometry g1 to the point. The distance will always be positive or zero.

The method will differ based on the type of the geometry provided: - The distance from a point to a point is just the Euclidean distance between the points. - The distance from a point to a line is the minimum distance from the point to the closest point on the given line. - The distance from a point to a linestring is the minimum distance from the point to the closest segment of the linestring. - The distance from a point to a linear ring is the minimum distance from the point to the closest segment of the linear ring. - The distance from a point to a polygon is zero if the point is within the polygon and otherwise is the minimum distance from the point to an edge of the polygon. This includes edges created by holes. - The distance from a point to a multigeometry or a geometry collection is the minimum distance between the point and any of the sub-geometries.

Result will be of type T, where T is an optional argument with a default value of Float64.

source


# GeometryOps.signed_distanceFunction.
julia
signed_distance(point, geom, ::Type{T} = Float64)::T

Calculates the signed distance from the geometry geom to the given point. Points within geom have a negative signed distance, and points outside of geom have a positive signed distance. - The signed distance from a point to a point, line, linestring, or linear ring is equal to the distance between the two. - The signed distance from a point to a polygon is negative if the point is within the polygon and is positive otherwise. The value of the distance is the minimum distance from the point to an edge of the polygon. This includes edges created by holes. - The signed distance from a point to a multigeometry or a geometry collection is the minimum signed distance between the point and any of the sub-geometries.

Result will be of type T, where T is an optional argument with a default value of Float64.

source


# GeometryOps.areaFunction.
julia
area(geom, [T = Float64])::T

Returns the area of a geometry or collection of geometries. This is computed slightly differently for different geometries:

- The area of a point/multipoint is always zero.
+- The area of a curve/multicurve is always zero.
+- The area of a polygon is the absolute value of the signed area.
+- The area multi-polygon is the sum of the areas of all of the sub-polygons.
+- The area of a geometry collection, feature collection of array/iterable 
+    is the sum of the areas of all of the sub-geometries.

Result will be of type T, where T is an optional argument with a default value of Float64.

source


# GeometryOps.signed_areaFunction.
julia
signed_area(geom, [T = Float64])::T

Returns the signed area of a single geometry, based on winding order. This is computed slightly differently for different geometries:

- The signed area of a point is always zero.
+- The signed area of a curve is always zero.
+- The signed area of a polygon is computed with the shoelace formula and is
+positive if the polygon coordinates wind clockwise and negative if
+counterclockwise.
+- You cannot compute the signed area of a multipolygon as it doesn't have a
+meaning as each sub-polygon could have a different winding order.

Result will be of type T, where T is an optional argument with a default value of Float64.

source


# GeometryOps.anglesFunction.
julia
angles(geom, ::Type{T} = Float64)

Returns the angles of a geometry or collection of geometries. This is computed differently for different geometries:

- The angles of a point is an empty vector.
+- The angles of a single line segment is an empty vector.
+- The angles of a linestring or linearring is a vector of angles formed by the curve.
+- The angles of a polygon is a vector of vectors of angles formed by each ring.
+- The angles of a multi-geometry collection is a vector of the angles of each of the
+    sub-geometries as defined above.

Result will be a Vector, or nested set of vectors, of type T where an optional argument with a default value of Float64.

source


# GeometryOps.embed_extentFunction.
julia
embed_extent(obj)

Recursively wrap the object with a GeoInterface.jl geometry, calculating and adding an Extents.Extent to all objects.

This can improve performance when extents need to be checked multiple times, such when needing to check if many points are in geometries, and using their extents as a quick filter for obviously exterior points.

Keywords

  • threaded: true or false. Whether to use multithreading. Defaults to false.

  • crs: The CRS to attach to geometries. Defaults to nothing.

source


Barycentric coordinates

# GeometryOps.barycentric_coordinatesFunction.
julia
barycentric_coordinates(method = MeanValue(), polygon, point)

Returns the barycentric coordinates of point in polygon using the barycentric coordinate method method.

source


# GeometryOps.barycentric_coordinates!Function.
julia
barycentric_coordinates!(λs::Vector{<: Real}, method::AbstractBarycentricCoordinateMethod, polygon, point)

Loads the barycentric coordinates of point in polygon into λs using the barycentric coordinate method method.

λs must be of the length of the polygon plus its holes.

Tip

Use this method to avoid excess allocations when you need to calculate barycentric coordinates for many points.

source


# GeometryOps.barycentric_interpolateFunction.
julia
barycentric_interpolate(method = MeanValue(), polygon, values::AbstractVector{V}, point)

Returns the interpolated value at point within polygon using the barycentric coordinate method method. values are the per-point values for the polygon which are to be interpolated.

Returns an object of type V.

Warning

Barycentric interpolation is currently defined only for 2-dimensional polygons. If you pass a 3-D polygon in, the Z coordinate will be used as per-vertex value to be interpolated (the M coordinate in GIS parlance).

source


Other methods

# GeometryOps.AbstractBarycentricCoordinateMethodType.
julia
abstract type AbstractBarycentricCoordinateMethod

Abstract supertype for barycentric coordinate methods. The subtypes may serve as dispatch types, or may cache some information about the target polygon.

API

The following methods must be implemented for all subtypes:

  • barycentric_coordinates!(λs::Vector{<: Real}, method::AbstractBarycentricCoordinateMethod, exterior::Vector{<: Point{2, T1}}, point::Point{2, T2})

  • barycentric_interpolate(method::AbstractBarycentricCoordinateMethod, exterior::Vector{<: Point{2, T1}}, values::Vector{V}, point::Point{2, T2})::V

  • barycentric_interpolate(method::AbstractBarycentricCoordinateMethod, exterior::Vector{<: Point{2, T1}}, interiors::Vector{<: Vector{<: Point{2, T1}}} values::Vector{V}, point::Point{2, T2})::V

The rest of the methods will be implemented in terms of these, and have efficient dispatches for broadcasting.

source


# GeometryOps.ClosedRingType.
julia
ClosedRing() <: GeometryCorrection

This correction ensures that a polygon's exterior and interior rings are closed.

It can be called on any geometry correction as usual.

See also GeometryCorrection.

source


# GeometryOps.DiffIntersectingPolygonsType.
julia
DiffIntersectingPolygons() <: GeometryCorrection

This correction ensures that the polygons included in a multipolygon aren't intersecting. If any polygon's are intersecting, they will be made nonintersecting through the difference operation to create a unique set of disjoint (other than potentially connections by a single point) polygons covering the same area. See also GeometryCorrection, UnionIntersectingPolygons.

source


# GeometryOps.DouglasPeuckerType.
julia
DouglasPeucker <: SimplifyAlg
+
+DouglasPeucker(; number, ratio, tol)

Simplifies geometries by removing points below tol distance from the line between its neighboring points.

Keywords

  • ratio: the fraction of points that should remain after simplify. Useful as it will generalise for large collections of objects.

  • number: the number of points that should remain after simplify. Less useful for large collections of mixed size objects.

  • tol: the minimum distance a point will be from the line joining its neighboring points.

Note: user input tol is squared to avoid unnecessary computation in algorithm.

source


# GeometryOps.GEOSType.
julia
GEOS(; params...)

A struct which instructs the method it's passed to as an algorithm to use the appropriate GEOS function via LibGEOS.jl for the operation.

Dispatch is generally carried out using the names of the keyword arguments. For example, segmentize will only accept a GEOS struct with only a max_distance keyword, and no other.

It's generally a lot slower than the native Julia implementations, since it must convert to the LibGEOS implementation and back - so be warned!

source


# GeometryOps.GeodesicSegmentsType.
julia
GeodesicSegments(; max_distance::Real, equatorial_radius::Real=6378137, flattening::Real=1/298.257223563)

A method for segmentizing geometries by adding extra vertices to the geometry so that no segment is longer than a given distance. This method calculates the distance between points on the geodesic, and assumes input in lat/long coordinates.

Warning

Any input geometries must be in lon/lat coordinates! If not, the method may fail or error.

Arguments

  • max_distance::Real: The maximum distance, in meters, between vertices in the geometry.

  • equatorial_radius::Real=6378137: The equatorial radius of the Earth, in meters. Passed to Proj.geod_geodesic.

  • flattening::Real=1/298.257223563: The flattening of the Earth, which is the ratio of the difference between the equatorial and polar radii to the equatorial radius. Passed to Proj.geod_geodesic.

One can also omit the equatorial_radius and flattening keyword arguments, and pass a geodesic object directly to the eponymous keyword.

This method uses the Proj/GeographicLib API for geodesic calculations.

source


# GeometryOps.GeometryCorrectionType.
julia
abstract type GeometryCorrection

This abstract type represents a geometry correction.

Interface

Any GeometryCorrection must implement two functions: * application_level(::GeometryCorrection)::AbstractGeometryTrait: This function should return the GeoInterface trait that the correction is intended to be applied to, like PointTrait or LineStringTrait or PolygonTrait. * (::GeometryCorrection)(::AbstractGeometryTrait, geometry)::(some_geometry): This function should apply the correction to the given geometry, and return a new geometry.

source


# GeometryOps.LineOrientationType.
julia
Enum LineOrientation

Enum for the orientation of a line with respect to a curve. A line can be line_cross (crossing over the curve), line_hinge (crossing the endpoint of the curve), line_over (collinear with the curve), or line_out (not interacting with the curve).

source


# GeometryOps.LinearSegmentsType.
julia
LinearSegments(; max_distance::Real)

A method for segmentizing geometries by adding extra vertices to the geometry so that no segment is longer than a given distance.

Here, max_distance is a purely nondimensional quantity and will apply in the input space. This is to say, that if the polygon is provided in lat/lon coordinates then the max_distance will be in degrees of arc. If the polygon is provided in meters, then the max_distance will be in meters.

source


# GeometryOps.MeanValueType.
julia
MeanValue() <: AbstractBarycentricCoordinateMethod

This method calculates barycentric coordinates using the mean value method.

References

source


# GeometryOps.MonotoneChainMethodType.
julia
MonotoneChainMethod()

This is an algorithm for the convex_hull function.

Uses DelaunayTriangulation.jl to compute the convex hull. This is a pure Julia algorithm which provides an optimal Delaunay triangulation.

See also convex_hull

source


# GeometryOps.PointOrientationType.
julia
Enum PointOrientation

Enum for the orientation of a point with respect to a curve. A point can be point_in the curve, point_on the curve, or point_out of the curve.

source


# GeometryOps.RadialDistanceType.
julia
RadialDistance <: SimplifyAlg

Simplifies geometries by removing points less than tol distance from the line between its neighboring points.

Keywords

  • ratio: the fraction of points that should remain after simplify. Useful as it will generalise for large collections of objects.

  • number: the number of points that should remain after simplify. Less useful for large collections of mixed size objects.

  • tol: the minimum distance between points.

Note: user input tol is squared to avoid unnecessary computation in algorithm.

source


# GeometryOps.SimplifyAlgType.
julia
abstract type SimplifyAlg

Abstract type for simplification algorithms.

API

For now, the algorithm must hold the number, ratio and tol properties.

Simplification algorithm types can hook into the interface by implementing the _simplify(trait, alg, geom) methods for whichever traits are necessary.

source


# GeometryOps.TraitTargetType.
julia
TraitTarget{T}

This struct holds a trait parameter or a union of trait parameters.

It is primarily used for dispatch into methods which select trait levels, like apply, or as a parameter to target.

Constructors

julia
TraitTarget(GI.PointTrait())
+TraitTarget(GI.LineStringTrait(), GI.LinearRingTrait()) # and other traits as you may like
+TraitTarget(TraitTarget(...))
+# There are also type based constructors available, but that's not advised.
+TraitTarget(GI.PointTrait)
+TraitTarget(Union{GI.LineStringTrait, GI.LinearRingTrait})
+# etc.

source


# GeometryOps.UnionIntersectingPolygonsType.
julia
UnionIntersectingPolygons() <: GeometryCorrection

This correction ensures that the polygon's included in a multipolygon aren't intersecting. If any polygon's are intersecting, they will be combined through the union operation to create a unique set of disjoint (other than potentially connections by a single point) polygons covering the same area.

See also GeometryCorrection.

source


# GeometryOps.VisvalingamWhyattType.
julia
VisvalingamWhyatt <: SimplifyAlg
+
+VisvalingamWhyatt(; kw...)

Simplifies geometries by removing points below tol distance from the line between its neighboring points.

Keywords

  • ratio: the fraction of points that should remain after simplify. Useful as it will generalise for large collections of objects.

  • number: the number of points that should remain after simplify. Less useful for large collections of mixed size objects.

  • tol: the minimum area of a triangle made with a point and its neighboring points.

Note: user input tol is doubled to avoid unnecessary computation in algorithm.

source


# GeometryOps._detMethod.
julia
_det(s1::Point2{T1}, s2::Point2{T2}) where {T1 <: Real, T2 <: Real}

Returns the determinant of the matrix formed by hcat'ing two points s1 and s2.

Specifically, this is:

julia
s1[1] * s2[2] - s1[2] * s2[1]

source


# GeometryOps._equals_curvesMethod.
julia
_equals_curves(c1, c2, closed_type1, closed_type2)::Bool

Two curves are equal if they share the same set of point, representing the same geometry. Both curves must must be composed of the same set of points, however, they do not have to wind in the same direction, or start on the same point to be equivalent. Inputs: c1 first geometry c2 second geometry closed_type1::Bool true if c1 is closed by definition (polygon, linear ring) closed_type2::Bool true if c2 is closed by definition (polygon, linear ring)

source


# GeometryOps.anglesMethod.
julia
angles(geom, ::Type{T} = Float64)

Returns the angles of a geometry or collection of geometries. This is computed differently for different geometries:

- The angles of a point is an empty vector.
+- The angles of a single line segment is an empty vector.
+- The angles of a linestring or linearring is a vector of angles formed by the curve.
+- The angles of a polygon is a vector of vectors of angles formed by each ring.
+- The angles of a multi-geometry collection is a vector of the angles of each of the
+    sub-geometries as defined above.

Result will be a Vector, or nested set of vectors, of type T where an optional argument with a default value of Float64.

source


# GeometryOps.applyMethod.
julia
apply(f, target::Union{TraitTarget, GI.AbstractTrait}, obj; kw...)

Reconstruct a geometry, feature, feature collection, or nested vectors of either using the function f on the target trait.

f(target_geom) => x where x also has the target trait, or a trait that can be substituted. For example, swapping PolgonTrait to MultiPointTrait will fail if the outer object has MultiPolygonTrait, but should work if it has FeatureTrait.

Objects "shallower" than the target trait are always completely rebuilt, like a Vector of FeatureCollectionTrait of FeatureTrait when the target has PolygonTrait and is held in the features. These will always be GeoInterface geometries/feature/feature collections. But "deeper" objects may remain unchanged or be whatever GeoInterface compatible objects f returns.

The result is a functionally similar geometry with values depending on f.

  • threaded: true or false. Whether to use multithreading. Defaults to false.

  • crs: The CRS to attach to geometries. Defaults to nothing.

  • calc_extent: true or false. Whether to calculate the extent. Defaults to false.

Example

Flipped point the order in any feature or geometry, or iterables of either:

julia
import GeoInterface as GI
+import GeometryOps as GO
+geom = GI.Polygon([GI.LinearRing([(1, 2), (3, 4), (5, 6), (1, 2)]),
+                   GI.LinearRing([(3, 4), (5, 6), (6, 7), (3, 4)])])
+
+flipped_geom = GO.apply(GI.PointTrait, geom) do p
+    (GI.y(p), GI.x(p))
+end

source


# GeometryOps.applyreduceMethod.
julia
applyreduce(f, op, target::Union{TraitTarget, GI.AbstractTrait}, obj; threaded)

Apply function f to all objects with the target trait, and reduce the result with an op like +.

The order and grouping of application of op is not guaranteed.

If threaded==true threads will be used over arrays and iterables, feature collections and nested geometries.

source


# GeometryOps.areaMethod.
julia
area(geom, [T = Float64])::T

Returns the area of a geometry or collection of geometries. This is computed slightly differently for different geometries:

- The area of a point/multipoint is always zero.
+- The area of a curve/multicurve is always zero.
+- The area of a polygon is the absolute value of the signed area.
+- The area multi-polygon is the sum of the areas of all of the sub-polygons.
+- The area of a geometry collection, feature collection of array/iterable 
+    is the sum of the areas of all of the sub-geometries.

Result will be of type T, where T is an optional argument with a default value of Float64.

source


# GeometryOps.barycentric_coordinates!Method.
julia
barycentric_coordinates!(λs::Vector{<: Real}, method::AbstractBarycentricCoordinateMethod, polygon, point)

Loads the barycentric coordinates of point in polygon into λs using the barycentric coordinate method method.

λs must be of the length of the polygon plus its holes.

Tip

Use this method to avoid excess allocations when you need to calculate barycentric coordinates for many points.

source


# GeometryOps.barycentric_coordinatesMethod.
julia
barycentric_coordinates(method = MeanValue(), polygon, point)

Returns the barycentric coordinates of point in polygon using the barycentric coordinate method method.

source


# GeometryOps.barycentric_interpolateMethod.
julia
barycentric_interpolate(method = MeanValue(), polygon, values::AbstractVector{V}, point)

Returns the interpolated value at point within polygon using the barycentric coordinate method method. values are the per-point values for the polygon which are to be interpolated.

Returns an object of type V.

Warning

Barycentric interpolation is currently defined only for 2-dimensional polygons. If you pass a 3-D polygon in, the Z coordinate will be used as per-vertex value to be interpolated (the M coordinate in GIS parlance).

source


# GeometryOps.centroidMethod.
julia
centroid(geom, [T=Float64])::Tuple{T, T}

Returns the centroid of a given line segment, linear ring, polygon, or mutlipolygon.

source


# GeometryOps.centroid_and_areaMethod.
julia
centroid_and_area(geom, [T=Float64])::(::Tuple{T, T}, ::Real)

Returns the centroid and area of a given geometry.

source


# GeometryOps.centroid_and_lengthMethod.
julia
centroid_and_length(geom, [T=Float64])::(::Tuple{T, T}, ::Real)

Returns the centroid and length of a given line/ring. Note this is only valid for line strings and linear rings.

source


# GeometryOps.containsMethod.
julia
contains(g1::AbstractGeometry, g2::AbstractGeometry)::Bool

Return true if the second geometry is completely contained by the first geometry. The interiors of both geometries must intersect and the interior and boundary of the secondary (g2) must not intersect the exterior of the first (g1).

contains returns the exact opposite result of within.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+line = GI.LineString([(1, 1), (1, 2), (1, 3), (1, 4)])
+point = GI.Point((1, 2))
+
+GO.contains(line, point)
+# output
+true

source


# GeometryOps.convex_hullFunction.
julia
convex_hull([method], geometries)

Compute the convex hull of the points in geometries. Returns a GI.Polygon representing the convex hull.

Note that the polygon returned is wound counterclockwise as in the Simple Features standard by default. If you choose GEOS, the winding order will be inverted.

Warning

This interface only computes the 2-dimensional convex hull!

For higher dimensional hulls, use the relevant package (Qhull.jl, Quickhull.jl, or similar).

source


# GeometryOps.coverageMethod.
julia
coverage(geom, xmin, xmax, ymin, ymax, [T = Float64])::T

Returns the area of intersection between given geometry and grid cell defined by its minimum and maximum x and y-values. This is computed differently for different geometries:

  • The signed area of a point is always zero.

  • The signed area of a curve is always zero.

  • The signed area of a polygon is calculated by tracing along its edges and switching to the cell edges if needed.

  • The coverage of a geometry collection, multi-geometry, feature collection of array/iterable is the sum of the coverages of all of the sub-geometries.

Result will be of type T, where T is an optional argument with a default value of Float64.

source


# GeometryOps.coveredbyMethod.
julia
coveredby(g1, g2)::Bool

Return true if the first geometry is completely covered by the second geometry. The interior and boundary of the primary geometry (g1) must not intersect the exterior of the secondary geometry (g2).

Furthermore, coveredby returns the exact opposite result of covers. They are equivalent with the order of the arguments swapped.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+p1 = GI.Point(0.0, 0.0)
+p2 = GI.Point(1.0, 1.0)
+l1 = GI.Line([p1, p2])
+
+GO.coveredby(p1, l1)
+# output
+true

source


# GeometryOps.coversMethod.
julia
covers(g1::AbstractGeometry, g2::AbstractGeometry)::Bool

Return true if the first geometry is completely covers the second geometry, The exterior and boundary of the second geometry must not be outside of the interior and boundary of the first geometry. However, the interiors need not intersect.

covers returns the exact opposite result of coveredby.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+l1 = GI.LineString([(1.0, 1.0), (1.0, 2.0), (1.0, 3.0), (1.0, 4.0)])
+l2 = GI.LineString([(1.0, 1.0), (1.0, 2.0)])
+
+GO.covers(l1, l2)
+# output
+true

source


# GeometryOps.crossesMethod.
julia
 crosses(geom1, geom2)::Bool

Return true if the intersection results in a geometry whose dimension is one less than the maximum dimension of the two source geometries and the intersection set is interior to both source geometries.

TODO: broken

Examples

julia
import GeoInterface as GI, GeometryOps as GO
+# TODO: Add working example

source


# GeometryOps.cutMethod.
julia
cut(geom, line, [T::Type])

Return given geom cut by given line as a list of geometries of the same type as the input geom. Return the original geometry as only list element if none are found. Line must cut fully through given geometry or the original geometry will be returned.

Note: This currently doesn't work for degenerate cases there line crosses through vertices.

Example

julia
import GeoInterface as GI, GeometryOps as GO
+
+poly = GI.Polygon([[(0.0, 0.0), (10.0, 0.0), (10.0, 10.0), (0.0, 10.0), (0.0, 0.0)]])
+line = GI.Line([(5.0, -5.0), (5.0, 15.0)])
+cut_polys = GO.cut(poly, line)
+GI.coordinates.(cut_polys)
+
+# output
+2-element Vector{Vector{Vector{Vector{Float64}}}}:
+ [[[0.0, 0.0], [5.0, 0.0], [5.0, 10.0], [0.0, 10.0], [0.0, 0.0]]]
+ [[[5.0, 0.0], [10.0, 0.0], [10.0, 10.0], [5.0, 10.0], [5.0, 0.0]]]

source


# GeometryOps.differenceMethod.
julia
difference(geom_a, geom_b, [T::Type]; target::Type, fix_multipoly = UnionIntersectingPolygons())

Return the difference between two geometries as a list of geometries. Return an empty list if none are found. The type of the list will be constrained as much as possible given the input geometries. Furthermore, the user can provide a taget type as a keyword argument and a list of target geometries found in the difference will be returned. The user can also provide a float type that they would like the points of returned geometries to be. If the user is taking a intersection involving one or more multipolygons, and the multipolygon might be comprised of polygons that intersect, if fix_multipoly is set to an IntersectingPolygons correction (the default is UnionIntersectingPolygons()), then the needed multipolygons will be fixed to be valid before performing the intersection to ensure a correct answer. Only set fix_multipoly to false if you know that the multipolygons are valid, as it will avoid unneeded computation.

Example

julia
import GeoInterface as GI, GeometryOps as GO
+
+poly1 = GI.Polygon([[[0.0, 0.0], [5.0, 5.0], [10.0, 0.0], [5.0, -5.0], [0.0, 0.0]]])
+poly2 = GI.Polygon([[[3.0, 0.0], [8.0, 5.0], [13.0, 0.0], [8.0, -5.0], [3.0, 0.0]]])
+diff_poly = GO.difference(poly1, poly2; target = GI.PolygonTrait())
+GI.coordinates.(diff_poly)
+
+# output
+1-element Vector{Vector{Vector{Vector{Float64}}}}:
+ [[[6.5, 3.5], [5.0, 5.0], [0.0, 0.0], [5.0, -5.0], [6.5, -3.5], [3.0, 0.0], [6.5, 3.5]]]

source


# GeometryOps.disjointMethod.
julia
disjoint(geom1, geom2)::Bool

Return true if the first geometry is disjoint from the second geometry.

Return true if the first geometry is disjoint from the second geometry. The interiors and boundaries of both geometries must not intersect.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+
+line = GI.LineString([(1, 1), (1, 2), (1, 3), (1, 4)])
+point = (2, 2)
+GO.disjoint(point, line)
+
+# output
+true

source


# GeometryOps.distanceMethod.
julia
distance(point, geom, ::Type{T} = Float64)::T

Calculates the ditance from the geometry g1 to the point. The distance will always be positive or zero.

The method will differ based on the type of the geometry provided: - The distance from a point to a point is just the Euclidean distance between the points. - The distance from a point to a line is the minimum distance from the point to the closest point on the given line. - The distance from a point to a linestring is the minimum distance from the point to the closest segment of the linestring. - The distance from a point to a linear ring is the minimum distance from the point to the closest segment of the linear ring. - The distance from a point to a polygon is zero if the point is within the polygon and otherwise is the minimum distance from the point to an edge of the polygon. This includes edges created by holes. - The distance from a point to a multigeometry or a geometry collection is the minimum distance between the point and any of the sub-geometries.

Result will be of type T, where T is an optional argument with a default value of Float64.

source


# GeometryOps.embed_extentMethod.
julia
embed_extent(obj)

Recursively wrap the object with a GeoInterface.jl geometry, calculating and adding an Extents.Extent to all objects.

This can improve performance when extents need to be checked multiple times, such when needing to check if many points are in geometries, and using their extents as a quick filter for obviously exterior points.

Keywords

  • threaded: true or false. Whether to use multithreading. Defaults to false.

  • crs: The CRS to attach to geometries. Defaults to nothing.

source


# GeometryOps.enforceMethod.
julia
enforce(alg::GO.GEOS, kw::Symbol, f)

Enforce the presence of a keyword argument in a GEOS algorithm, and return alg.params[kw].

Throws an error if the key is not present, and mentions f in the error message (since there isn't a good way to get the name of the function that called this method).

source


# GeometryOps.equalsMethod.
julia
equals(trait_a, geom_a, trait_b, geom_b)

Two geometries which are not of the same type cannot be equal so they always return false.

source


# GeometryOps.equalsMethod.
julia
equals(geom1, geom2)::Bool

Compare two Geometries return true if they are the same geometry.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+poly1 = GI.Polygon([[(0,0), (0,5), (5,5), (5,0), (0,0)]])
+poly2 = GI.Polygon([[(0,0), (0,5), (5,5), (5,0), (0,0)]])
+
+GO.equals(poly1, poly2)
+# output
+true

source


# GeometryOps.equalsMethod.
julia
equals(
+    ::GI.LinearRingTrait, l1,
+    ::GI.LinearRingTrait, l2,
+)::Bool

Two linear rings are equal if they share the same set of points going along the curve. Note that rings are closed by definition, so they can have, but don't need, a repeated last point to be equal.

source


# GeometryOps.equalsMethod.
julia
equals(
+    ::GI.LinearRingTrait, l1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l2,
+)::Bool

A linear ring and a line/linestring are equal if they share the same set of points going along the curve. Note that lines aren't closed by definition, but rings are, so the line must have a repeated last point to be equal

source


# GeometryOps.equalsMethod.
julia
equals(::GI.MultiPointTrait, mp1, ::GI.MultiPointTrait, mp2)::Bool

Two multipoints are equal if they share the same set of points.

source


# GeometryOps.equalsMethod.
julia
equals(::GI.MultiPointTrait, mp1, ::GI.PointTrait, p2)::Bool

A point and a multipoint are equal if the multipoint is composed of a single point that is equivalent to the given point.

source


# GeometryOps.equalsMethod.
julia
equals(::GI.PolygonTrait, geom_a, ::GI.PolygonTrait, geom_b)::Bool

Two multipolygons are equal if they share the same set of polygons.

source


# GeometryOps.equalsMethod.
julia
equals(::GI.MultiPolygonTrait, geom_a, ::GI.PolygonTrait, geom_b)::Bool

A polygon and a multipolygon are equal if the multipolygon is composed of a single polygon that is equivalent to the given polygon.

source


# GeometryOps.equalsMethod.
julia
equals(::GI.PointTrait, p1, ::GI.MultiPointTrait, mp2)::Bool

A point and a multipoint are equal if the multipoint is composed of a single point that is equivalent to the given point.

source


# GeometryOps.equalsMethod.
julia
equals(::GI.PointTrait, p1, ::GI.PointTrait, p2)::Bool

Two points are the same if they have the same x and y (and z if 3D) coordinates.

source


# GeometryOps.equalsMethod.
julia
equals(::GI.PolygonTrait, geom_a, ::GI.MultiPolygonTrait, geom_b)::Bool

A polygon and a multipolygon are equal if the multipolygon is composed of a single polygon that is equivalent to the given polygon.

source


# GeometryOps.equalsMethod.
julia
equals(::GI.PolygonTrait, geom_a, ::GI.PolygonTrait, geom_b)::Bool

Two polygons are equal if they share the same exterior edge and holes.

source


# GeometryOps.equalsMethod.
julia
equals(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l1,
+    ::GI.LinearRingTrait, l2,
+)::Bool

A line/linestring and a linear ring are equal if they share the same set of points going along the curve. Note that lines aren't closed by definition, but rings are, so the line must have a repeated last point to be equal

source


# GeometryOps.equalsMethod.
julia
equals(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l2,
+)::Bool

Two lines/linestrings are equal if they share the same set of points going along the curve. Note that lines/linestrings aren't closed by definition.

source


# GeometryOps.equalsMethod.
julia
equals(::T, geom_a, ::T, geom_b)::Bool

Two geometries of the same type, which don't have a equals function to dispatch off of should throw an error.

source


# GeometryOps.flattenMethod.
julia
flatten(target::Type{<:GI.AbstractTrait}, obj)
+flatten(f, target::Type{<:GI.AbstractTrait}, obj)

Lazily flatten any AbstractArray, iterator, FeatureCollectionTrait, FeatureTrait or AbstractGeometryTrait object obj, so that objects with the target trait are returned by the iterator.

If f is passed in it will be applied to the target geometries.

source


# GeometryOps.flipMethod.
julia
flip(obj)

Swap all of the x and y coordinates in obj, otherwise keeping the original structure (but not necessarily the original type).

Keywords

  • threaded: true or false. Whether to use multithreading. Defaults to false.

  • crs: The CRS to attach to geometries. Defaults to nothing.

  • calc_extent: true or false. Whether to calculate the extent. Defaults to false.

source


# GeometryOps.intersectionMethod.
julia
intersection(geom_a, geom_b, [T::Type]; target::Type, fix_multipoly = UnionIntersectingPolygons())

Return the intersection between two geometries as a list of geometries. Return an empty list if none are found. The type of the list will be constrained as much as possible given the input geometries. Furthermore, the user can provide a target type as a keyword argument and a list of target geometries found in the intersection will be returned. The user can also provide a float type that they would like the points of returned geometries to be. If the user is taking a intersection involving one or more multipolygons, and the multipolygon might be comprised of polygons that intersect, if fix_multipoly is set to an IntersectingPolygons correction (the default is UnionIntersectingPolygons()), then the needed multipolygons will be fixed to be valid before performing the intersection to ensure a correct answer. Only set fix_multipoly to nothing if you know that the multipolygons are valid, as it will avoid unneeded computation.

Example

julia
import GeoInterface as GI, GeometryOps as GO
+
+line1 = GI.Line([(124.584961,-12.768946), (126.738281,-17.224758)])
+line2 = GI.Line([(123.354492,-15.961329), (127.22168,-14.008696)])
+inter_points = GO.intersection(line1, line2; target = GI.PointTrait())
+GI.coordinates.(inter_points)
+
+# output
+1-element Vector{Vector{Float64}}:
+ [125.58375366067548, -14.83572303404496]

source


# GeometryOps.intersection_pointsMethod.
julia
intersection_points(geom_a, geom_b, [T::Type])

Return a list of intersection tuple points between two geometries. If no intersection points exist, returns an empty list.

Example

jldoctest

+line1 = GI.Line([(124.584961,-12.768946), (126.738281,-17.224758)]) line2 = GI.Line([(123.354492,-15.961329), (127.22168,-14.008696)]) inter_points = GO.intersection_points(line1, line2)
+
+**output**
+
+1-element Vector{Tuple{Float64, Float64}}:  (125.58375366067548, -14.83572303404496)
+
+
+[source](https://github.com/JuliaGeo/GeometryOps.jl/blob/v0.1.10/src/methods/clipping/intersection.jl#L177-L195)
+
+</div>
+<br>
+<div style='border-width:1px; border-style:solid; border-color:black; padding: 1em; border-radius: 25px;'>
+<a id='GeometryOps.intersects-Tuple{Any, Any}' href='#GeometryOps.intersects-Tuple{Any, Any}'>#</a>&nbsp;<b><u>GeometryOps.intersects</u></b> &mdash; <i>Method</i>.
+
+
+
+
+```julia
+intersects(geom1, geom2)::Bool

Return true if the interiors or boundaries of the two geometries interact.

intersects returns the exact opposite result of disjoint.

Example

julia
import GeoInterface as GI, GeometryOps as GO
+
+line1 = GI.Line([(124.584961,-12.768946), (126.738281,-17.224758)])
+line2 = GI.Line([(123.354492,-15.961329), (127.22168,-14.008696)])
+GO.intersects(line1, line2)
+
+# output
+true

source


# GeometryOps.isclockwiseMethod.
julia
isclockwise(line::Union{LineString, Vector{Position}})::Bool

Take a ring and return true if the line goes clockwise, or false if the line goes counter-clockwise. "Going clockwise" means, mathematically,

(i=2n(xixi1)(yi+yi1))>0

Example

julia
julia> import GeoInterface as GI, GeometryOps as GO
+julia> ring = GI.LinearRing([(0, 0), (1, 1), (1, 0), (0, 0)]);
+julia> GO.isclockwise(ring)
+# output
+true

source


# GeometryOps.isconcaveMethod.
julia
isconcave(poly::Polygon)::Bool

Take a polygon and return true or false as to whether it is concave or not.

Examples

julia
import GeoInterface as GI, GeometryOps as GO
+
+poly = GI.Polygon([[(0, 0), (0, 1), (1, 1), (1, 0), (0, 0)]])
+GO.isconcave(poly)
+
+# output
+false

source


# GeometryOps.overlapsMethod.
julia
overlaps(geom1, geom2)::Bool

Compare two Geometries of the same dimension and return true if their intersection set results in a geometry different from both but of the same dimension. This means one geometry cannot be within or contain the other and they cannot be equal

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+poly1 = GI.Polygon([[(0,0), (0,5), (5,5), (5,0), (0,0)]])
+poly2 = GI.Polygon([[(1,1), (1,6), (6,6), (6,1), (1,1)]])
+
+GO.overlaps(poly1, poly2)
+# output
+true

source


# GeometryOps.overlapsMethod.
julia
overlaps(::GI.AbstractTrait, geom1, ::GI.AbstractTrait, geom2)::Bool

For any non-specified pair, all have non-matching dimensions, return false.

source


# GeometryOps.overlapsMethod.
julia
overlaps(::GI.LineTrait, line1, ::GI.LineTrait, line)::Bool

If the lines overlap, meaning that they are collinear but each have one endpoint outside of the other line, return true. Else false.

source


# GeometryOps.overlapsMethod.
julia
overlaps(
+    ::GI.MultiPointTrait, points1,
+    ::GI.MultiPointTrait, points2,
+)::Bool

If the multipoints overlap, meaning some, but not all, of the points within the multipoints are shared, return true.

source


# GeometryOps.overlapsMethod.
julia
overlaps(
+    ::GI.MultiPolygonTrait, polys1,
+    ::GI.MultiPolygonTrait, polys2,
+)::Bool

Return true if at least one pair of polygons from multipolygons overlap. Else false.

source


# GeometryOps.overlapsMethod.
julia
overlaps(
+    ::GI.MultiPolygonTrait, polys1,
+    ::GI.PolygonTrait, poly2,
+)::Bool

Return true if polygon overlaps with at least one of the polygons within the multipolygon. Else false.

source


# GeometryOps.overlapsMethod.
julia
overlaps(
+    ::GI.PolygonTrait, poly1,
+    ::GI.MultiPolygonTrait, polys2,
+)::Bool

Return true if polygon overlaps with at least one of the polygons within the multipolygon. Else false.

source


# GeometryOps.overlapsMethod.
julia
overlaps(
+    trait_a::GI.PolygonTrait, poly_a,
+    trait_b::GI.PolygonTrait, poly_b,
+)::Bool

If the two polygons intersect with one another, but are not equal, return true. Else false.

source


# GeometryOps.overlapsMethod.
julia
overlaps(
+    ::Union{GI.LineStringTrait, GI.LinearRing}, line1,
+    ::Union{GI.LineStringTrait, GI.LinearRing}, line2,
+)::Bool

If the curves overlap, meaning that at least one edge of each curve overlaps, return true. Else false.

source


# GeometryOps.polygon_to_lineMethod.
julia
polygon_to_line(poly::Polygon)

Converts a Polygon to LineString or MultiLineString

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+
+poly = GI.Polygon([[(-2.275543, 53.464547), (-2.275543, 53.489271), (-2.215118, 53.489271), (-2.215118, 53.464547), (-2.275543, 53.464547)]])
+GO.polygon_to_line(poly)
+# output
+GeoInterface.Wrappers.LineString{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}([(-2.275543, 53.464547), (-2.275543, 53.489271), (-2.215118, 53.489271), (-2.215118, 53.464547), (-2.275543, 53.464547)], nothing, nothing)

source


# GeometryOps.polygonizeMethod.
julia
polygonize(A::AbstractMatrix{Bool}; kw...)
+polygonize(f, A::AbstractMatrix; kw...)
+polygonize(xs, ys, A::AbstractMatrix{Bool}; kw...)
+polygonize(f, xs, ys, A::AbstractMatrix; kw...)

Polygonize an AbstractMatrix of values, currently to a single class of polygons.

Returns a MultiPolygon for Bool values and f return values, and a FeatureCollection of Features holding MultiPolygon for all other values.

Function f should return either true or false or a transformation of values into simpler groups, especially useful for floating point arrays.

If xs and ys are ranges, they are used as the pixel/cell center points. If they are Vector of Tuple they are used as the lower and upper bounds of each pixel/cell.

Keywords

  • minpoints: ignore polygons with less than minpoints points.

  • values: the values to turn into polygons. By default these are union(A), If function f is passed these refer to the return values of f, by default union(map(f, A). If values Bool, false is ignored and a single MultiPolygon is returned rather than a FeatureCollection.

Example

julia
using GeometryOps
+A = rand(100, 100)
+multipolygon = polygonize(>(0.5), A);

source


# GeometryOps.rebuildMethod.
julia
rebuild(geom, child_geoms)

Rebuild a geometry from child geometries.

By default geometries will be rebuilt as a GeoInterface.Wrappers geometry, but rebuild can have methods added to it to dispatch on geometries from other packages and specify how to rebuild them.

(Maybe it should go into GeoInterface.jl)

source


# GeometryOps.reconstructMethod.
julia
reconstruct(geom, components)

Reconstruct geom from an iterable of component objects that match its structure.

All objects in components must have the same GeoInterface.trait.

Usually used in combination with flatten.

source


# GeometryOps.segmentizeMethod.
julia
segmentize([method = LinearSegments()], geom; max_distance::Real, threaded)

Segmentize a geometry by adding extra vertices to the geometry so that no segment is longer than a given distance. This is useful for plotting geometries with a limited number of vertices, or for ensuring that a geometry is not too "coarse" for a given application.

Arguments

  • method::SegmentizeMethod = LinearSegments(): The method to use for segmentizing the geometry. At the moment, only LinearSegments and GeodesicSegments are available.

  • geom: The geometry to segmentize. Must be a LineString, LinearRing, or greater in complexity.

  • max_distance::Real: The maximum distance, in the input space, between vertices in the geometry. Only used if you don't explicitly pass a method.

Returns a geometry of similar type to the input geometry, but resampled.

source


# GeometryOps.signed_areaMethod.
julia
signed_area(geom, [T = Float64])::T

Returns the signed area of a single geometry, based on winding order. This is computed slightly differently for different geometries:

- The signed area of a point is always zero.
+- The signed area of a curve is always zero.
+- The signed area of a polygon is computed with the shoelace formula and is
+positive if the polygon coordinates wind clockwise and negative if
+counterclockwise.
+- You cannot compute the signed area of a multipolygon as it doesn't have a
+meaning as each sub-polygon could have a different winding order.

Result will be of type T, where T is an optional argument with a default value of Float64.

source


# GeometryOps.signed_distanceMethod.
julia
signed_distance(point, geom, ::Type{T} = Float64)::T

Calculates the signed distance from the geometry geom to the given point. Points within geom have a negative signed distance, and points outside of geom have a positive signed distance. - The signed distance from a point to a point, line, linestring, or linear ring is equal to the distance between the two. - The signed distance from a point to a polygon is negative if the point is within the polygon and is positive otherwise. The value of the distance is the minimum distance from the point to an edge of the polygon. This includes edges created by holes. - The signed distance from a point to a multigeometry or a geometry collection is the minimum signed distance between the point and any of the sub-geometries.

Result will be of type T, where T is an optional argument with a default value of Float64.

source


# GeometryOps.simplifyMethod.
julia
simplify(obj; kw...)
+simplify(::SimplifyAlg, obj; kw...)

Simplify a geometry, feature, feature collection, or nested vectors or a table of these.

RadialDistance, DouglasPeucker, or VisvalingamWhyatt algorithms are available, listed in order of increasing quality but decreasing performance.

PoinTrait and MultiPointTrait are returned unchanged.

The default behaviour is simplify(DouglasPeucker(; kw...), obj). Pass in other SimplifyAlg to use other algorithms.

Keywords

  • prefilter_alg: SimplifyAlg algorithm used to pre-filter object before using primary filtering algorithm.

  • threaded: true or false. Whether to use multithreading. Defaults to false.

  • crs: The CRS to attach to geometries. Defaults to nothing.

  • calc_extent: true or false. Whether to calculate the extent. Defaults to false.

Keywords for DouglasPeucker are allowed when no algorithm is specified:

Keywords

  • ratio: the fraction of points that should remain after simplify. Useful as it will generalise for large collections of objects.

  • number: the number of points that should remain after simplify. Less useful for large collections of mixed size objects.

  • tol: the minimum distance a point will be from the line joining its neighboring points.

Example

Simplify a polygon to have six points:

julia
import GeoInterface as GI
+import GeometryOps as GO
+
+poly = GI.Polygon([[
+    [-70.603637, -33.399918],
+    [-70.614624, -33.395332],
+    [-70.639343, -33.392466],
+    [-70.659942, -33.394759],
+    [-70.683975, -33.404504],
+    [-70.697021, -33.419406],
+    [-70.701141, -33.434306],
+    [-70.700454, -33.446339],
+    [-70.694274, -33.458369],
+    [-70.682601, -33.465816],
+    [-70.668869, -33.472117],
+    [-70.646209, -33.473835],
+    [-70.624923, -33.472117],
+    [-70.609817, -33.468107],
+    [-70.595397, -33.458369],
+    [-70.587158, -33.442901],
+    [-70.587158, -33.426283],
+    [-70.590591, -33.414248],
+    [-70.594711, -33.406224],
+    [-70.603637, -33.399918]]])
+
+simple = GO.simplify(poly; number=6)
+GI.npoint(simple)
+
+# output
+6

source


# GeometryOps.t_valueMethod.
julia
t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)

Returns the "T-value" as described in Hormann's presentation [1] on how to calculate the mean-value coordinate.

Here, sᵢ is the vector from vertex vᵢ to the point, and rᵢ is the norm (length) of sᵢ. s must be Point and r must be real numbers.

t=det(s,s)rr+ss

+
+[source](https://github.com/JuliaGeo/GeometryOps.jl/blob/v0.1.10/src/methods/barycentric.jl#L289-L305)
+
+</div>
+<br>
+<div style='border-width:1px; border-style:solid; border-color:black; padding: 1em; border-radius: 25px;'>
+<a id='GeometryOps.to_edges-Union{Tuple{Any}, Tuple{T}, Tuple{Any, Type{T}}} where T' href='#GeometryOps.to_edges-Union{Tuple{Any}, Tuple{T}, Tuple{Any, Type{T}}} where T'>#</a>&nbsp;<b><u>GeometryOps.to_edges</u></b> &mdash; <i>Method</i>.
+
+
+
+
+```julia
+to_edges()

Convert any geometry or collection of geometries into a flat vector of Tuple{Tuple{Float64,Float64},Tuple{Float64,Float64}} edges.

source


# GeometryOps.touchesMethod.
julia
touches(geom1, geom2)::Bool

Return true if the first geometry touches the second geometry. In other words, the two interiors cannot interact, but one of the geometries must have a boundary point that interacts with either the other geometry's interior or boundary.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+
+l1 = GI.Line([(0.0, 0.0), (1.0, 0.0)])
+l2 = GI.Line([(1.0, 1.0), (1.0, -1.0)])
+
+GO.touches(l1, l2)
+# output
+true

source


# GeometryOps.transformMethod.
julia
transform(f, obj)

Apply a function f to all the points in obj.

Points will be passed to f as an SVector to allow using CoordinateTransformations.jl and Rotations.jl without hassle.

SVector is also a valid GeoInterface.jl point, so will work in all GeoInterface.jl methods.

Example

julia
julia> import GeoInterface as GI
+
+julia> import GeometryOps as GO
+
+julia> geom = GI.Polygon([GI.LinearRing([(1, 2), (3, 4), (5, 6), (1, 2)]), GI.LinearRing([(3, 4), (5, 6), (6, 7), (3, 4)])]);
+
+julia> f = CoordinateTransformations.Translation(3.5, 1.5)
+Translation(3.5, 1.5)
+
+julia> GO.transform(f, geom)
+GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.Linea
+rRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}(StaticArraysCo
+re.SVector{2, Float64}[[4.5, 3.5], [6.5, 5.5], [8.5, 7.5], [4.5, 3.5]], nothing, nothing), GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}(StaticA
+rraysCore.SVector{2, Float64}[[6.5, 5.5], [8.5, 7.5], [9.5, 8.5], [6.5, 5.5]], nothing, nothing)], nothing, nothing)

With Rotations.jl you need to actually multiply the Rotation by the SVector point, which is easy using an anonymous function.

julia
julia> using Rotations
+
+julia> GO.transform(p -> one(RotMatrix{2}) * p, geom)
+GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearR
+ing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}(StaticArraysCore.SVe
+ctor{2, Int64}[[2, 1], [4, 3], [6, 5], [2, 1]], nothing, nothing), GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}(StaticArraysCore.SVector{2, Int64
+}[[4, 3], [6, 5], [7, 6], [4, 3]], nothing, nothing)], nothing, nothing)

source


# GeometryOps.tuplesMethod.
julia
tuples(obj)

Convert all points in obj to Tuples, wherever the are nested.

Returns a similar object or collection of objects using GeoInterface.jl geometries wrapping Tuple points.

Keywords

  • threaded: true or false. Whether to use multithreading. Defaults to false.

  • crs: The CRS to attach to geometries. Defaults to nothing.

  • calc_extent: true or false. Whether to calculate the extent. Defaults to false.

source


# GeometryOps.unionMethod.
julia
union(geom_a, geom_b, [::Type{T}]; target::Type, fix_multipoly = UnionIntersectingPolygons())

Return the union between two geometries as a list of geometries. Return an empty list if none are found. The type of the list will be constrained as much as possible given the input geometries. Furthermore, the user can provide a taget type as a keyword argument and a list of target geometries found in the difference will be returned. The user can also provide a float type 'T' that they would like the points of returned geometries to be. If the user is taking a intersection involving one or more multipolygons, and the multipolygon might be comprised of polygons that intersect, if fix_multipoly is set to an IntersectingPolygons correction (the default is UnionIntersectingPolygons()), then the needed multipolygons will be fixed to be valid before performing the intersection to ensure a correct answer. Only set fix_multipoly to false if you know that the multipolygons are valid, as it will avoid unneeded computation.

Calculates the union between two polygons.

Example

julia
import GeoInterface as GI, GeometryOps as GO
+
+p1 = GI.Polygon([[(0.0, 0.0), (5.0, 5.0), (10.0, 0.0), (5.0, -5.0), (0.0, 0.0)]])
+p2 = GI.Polygon([[(3.0, 0.0), (8.0, 5.0), (13.0, 0.0), (8.0, -5.0), (3.0, 0.0)]])
+union_poly = GO.union(p1, p2; target = GI.PolygonTrait())
+GI.coordinates.(union_poly)
+
+# output
+1-element Vector{Vector{Vector{Vector{Float64}}}}:
+ [[[6.5, 3.5], [5.0, 5.0], [0.0, 0.0], [5.0, -5.0], [6.5, -3.5], [8.0, -5.0], [13.0, 0.0], [8.0, 5.0], [6.5, 3.5]]]

source


# GeometryOps.unwrapFunction.
julia
unwrap(target::Type{<:AbstractTrait}, obj)
+unwrap(f, target::Type{<:AbstractTrait}, obj)

Unwrap the object to vectors, down to the target trait.

If f is passed in it will be applied to the target geometries as they are found.

source


# GeometryOps.weighted_meanMethod.
julia
weighted_mean(weight::Real, x1, x2)

Returns the weighted mean of x1 and x2, where weight is the weight of x1.

Specifically, calculates x1 * weight + x2 * (1 - weight).

Note

The idea for this method is that you can override this for custom types, like Color types, in extension modules.

source


# GeometryOps.withinMethod.
julia
within(geom1, geom2)::Bool

Return true if the first geometry is completely within the second geometry. The interiors of both geometries must intersect and the interior and boundary of the primary geometry (geom1) must not intersect the exterior of the secondary geometry (geom2).

Furthermore, within returns the exact opposite result of contains.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+
+line = GI.LineString([(1, 1), (1, 2), (1, 3), (1, 4)])
+point = (1, 2)
+GO.within(point, line)
+
+# output
+true

source



  1. K. Hormann and N. Sukumar. Generalized Barycentric Coordinates in Computer Graphics and Computational Mechanics. Taylor & Fancis, CRC Press, 2017. ↩︎

+ + + + \ No newline at end of file diff --git a/previews/PR195/assets/api.md.DHJubgq9.js b/previews/PR195/assets/api.md.DHJubgq9.js new file mode 100644 index 000000000..9ddd47ba7 --- /dev/null +++ b/previews/PR195/assets/api.md.DHJubgq9.js @@ -0,0 +1,398 @@ +import{_ as n,c as e,j as s,a,a7 as i,o as t}from"./chunks/framework.BjTE4JnT.js";const q=JSON.parse('{"title":"Full GeometryOps API documentation","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md","lastUpdated":null}'),l={name:"api.md"},h=i(`

Full GeometryOps API documentation

Warning

This page is still very much WIP!

Documentation for GeometryOps's full API (only for reference!).

apply and associated functions

# GeometryOps.applyFunction.
julia
apply(f, target::Union{TraitTarget, GI.AbstractTrait}, obj; kw...)

Reconstruct a geometry, feature, feature collection, or nested vectors of either using the function f on the target trait.

f(target_geom) => x where x also has the target trait, or a trait that can be substituted. For example, swapping PolgonTrait to MultiPointTrait will fail if the outer object has MultiPolygonTrait, but should work if it has FeatureTrait.

Objects "shallower" than the target trait are always completely rebuilt, like a Vector of FeatureCollectionTrait of FeatureTrait when the target has PolygonTrait and is held in the features. These will always be GeoInterface geometries/feature/feature collections. But "deeper" objects may remain unchanged or be whatever GeoInterface compatible objects f returns.

The result is a functionally similar geometry with values depending on f.

Example

Flipped point the order in any feature or geometry, or iterables of either:

julia
import GeoInterface as GI
+import GeometryOps as GO
+geom = GI.Polygon([GI.LinearRing([(1, 2), (3, 4), (5, 6), (1, 2)]),
+                   GI.LinearRing([(3, 4), (5, 6), (6, 7), (3, 4)])])
+
+flipped_geom = GO.apply(GI.PointTrait, geom) do p
+    (GI.y(p), GI.x(p))
+end

source


# GeometryOps.applyreduceFunction.
julia
applyreduce(f, op, target::Union{TraitTarget, GI.AbstractTrait}, obj; threaded)

Apply function f to all objects with the target trait, and reduce the result with an op like +.

The order and grouping of application of op is not guaranteed.

If threaded==true threads will be used over arrays and iterables, feature collections and nested geometries.

source


# GeometryOps.reprojectFunction.
julia
reproject(geometry; source_crs, target_crs, transform, always_xy, time)
+reproject(geometry, source_crs, target_crs; always_xy, time)
+reproject(geometry, transform; always_xy, time)

Reproject any GeoInterface.jl compatible geometry from source_crs to target_crs.

The returned object will be constructed from GeoInterface.WrapperGeometry geometries, wrapping views of a Vector{Proj.Point{D}}, where D is the dimension.

Tip

The Proj.jl package must be loaded for this method to work, since it is implemented in a package extension.

Arguments

If these a passed as keywords, transform will take priority. Without it target_crs is always needed, and source_crs is needed if it is not retrievable from the geometry with GeoInterface.crs(geometry).

Keywords

source


# GeometryOps.transformFunction.
julia
transform(f, obj)

Apply a function f to all the points in obj.

Points will be passed to f as an SVector to allow using CoordinateTransformations.jl and Rotations.jl without hassle.

SVector is also a valid GeoInterface.jl point, so will work in all GeoInterface.jl methods.

Example

julia
julia> import GeoInterface as GI
+
+julia> import GeometryOps as GO
+
+julia> geom = GI.Polygon([GI.LinearRing([(1, 2), (3, 4), (5, 6), (1, 2)]), GI.LinearRing([(3, 4), (5, 6), (6, 7), (3, 4)])]);
+
+julia> f = CoordinateTransformations.Translation(3.5, 1.5)
+Translation(3.5, 1.5)
+
+julia> GO.transform(f, geom)
+GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.Linea
+rRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}(StaticArraysCo
+re.SVector{2, Float64}[[4.5, 3.5], [6.5, 5.5], [8.5, 7.5], [4.5, 3.5]], nothing, nothing), GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}(StaticA
+rraysCore.SVector{2, Float64}[[6.5, 5.5], [8.5, 7.5], [9.5, 8.5], [6.5, 5.5]], nothing, nothing)], nothing, nothing)

With Rotations.jl you need to actually multiply the Rotation by the SVector point, which is easy using an anonymous function.

julia
julia> using Rotations
+
+julia> GO.transform(p -> one(RotMatrix{2}) * p, geom)
+GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearR
+ing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}(StaticArraysCore.SVe
+ctor{2, Int64}[[2, 1], [4, 3], [6, 5], [2, 1]], nothing, nothing), GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}(StaticArraysCore.SVector{2, Int64
+}[[4, 3], [6, 5], [7, 6], [4, 3]], nothing, nothing)], nothing, nothing)

source


General geometry methods

OGC methods

# GeometryOps.containsFunction.
julia
contains(g1::AbstractGeometry, g2::AbstractGeometry)::Bool

Return true if the second geometry is completely contained by the first geometry. The interiors of both geometries must intersect and the interior and boundary of the secondary (g2) must not intersect the exterior of the first (g1).

contains returns the exact opposite result of within.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+line = GI.LineString([(1, 1), (1, 2), (1, 3), (1, 4)])
+point = GI.Point((1, 2))
+
+GO.contains(line, point)
+# output
+true

source


# GeometryOps.coveredbyFunction.
julia
coveredby(g1, g2)::Bool

Return true if the first geometry is completely covered by the second geometry. The interior and boundary of the primary geometry (g1) must not intersect the exterior of the secondary geometry (g2).

Furthermore, coveredby returns the exact opposite result of covers. They are equivalent with the order of the arguments swapped.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+p1 = GI.Point(0.0, 0.0)
+p2 = GI.Point(1.0, 1.0)
+l1 = GI.Line([p1, p2])
+
+GO.coveredby(p1, l1)
+# output
+true

source


# GeometryOps.coversFunction.
julia
covers(g1::AbstractGeometry, g2::AbstractGeometry)::Bool

Return true if the first geometry is completely covers the second geometry, The exterior and boundary of the second geometry must not be outside of the interior and boundary of the first geometry. However, the interiors need not intersect.

covers returns the exact opposite result of coveredby.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+l1 = GI.LineString([(1.0, 1.0), (1.0, 2.0), (1.0, 3.0), (1.0, 4.0)])
+l2 = GI.LineString([(1.0, 1.0), (1.0, 2.0)])
+
+GO.covers(l1, l2)
+# output
+true

source


# GeometryOps.crossesFunction.
julia
 crosses(geom1, geom2)::Bool

Return true if the intersection results in a geometry whose dimension is one less than the maximum dimension of the two source geometries and the intersection set is interior to both source geometries.

TODO: broken

Examples

julia
import GeoInterface as GI, GeometryOps as GO
+# TODO: Add working example

source


# GeometryOps.disjointFunction.
julia
disjoint(geom1, geom2)::Bool

Return true if the first geometry is disjoint from the second geometry.

Return true if the first geometry is disjoint from the second geometry. The interiors and boundaries of both geometries must not intersect.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+
+line = GI.LineString([(1, 1), (1, 2), (1, 3), (1, 4)])
+point = (2, 2)
+GO.disjoint(point, line)
+
+# output
+true

source


# GeometryOps.intersectsFunction.
julia
intersects(geom1, geom2)::Bool

Return true if the interiors or boundaries of the two geometries interact.

intersects returns the exact opposite result of disjoint.

Example

julia
import GeoInterface as GI, GeometryOps as GO
+
+line1 = GI.Line([(124.584961,-12.768946), (126.738281,-17.224758)])
+line2 = GI.Line([(123.354492,-15.961329), (127.22168,-14.008696)])
+GO.intersects(line1, line2)
+
+# output
+true

source


# GeometryOps.overlapsFunction.
julia
overlaps(geom1, geom2)::Bool

Compare two Geometries of the same dimension and return true if their intersection set results in a geometry different from both but of the same dimension. This means one geometry cannot be within or contain the other and they cannot be equal

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+poly1 = GI.Polygon([[(0,0), (0,5), (5,5), (5,0), (0,0)]])
+poly2 = GI.Polygon([[(1,1), (1,6), (6,6), (6,1), (1,1)]])
+
+GO.overlaps(poly1, poly2)
+# output
+true

source

julia
overlaps(::GI.AbstractTrait, geom1, ::GI.AbstractTrait, geom2)::Bool

For any non-specified pair, all have non-matching dimensions, return false.

source

julia
overlaps(
+    ::GI.MultiPointTrait, points1,
+    ::GI.MultiPointTrait, points2,
+)::Bool

If the multipoints overlap, meaning some, but not all, of the points within the multipoints are shared, return true.

source

julia
overlaps(::GI.LineTrait, line1, ::GI.LineTrait, line)::Bool

If the lines overlap, meaning that they are collinear but each have one endpoint outside of the other line, return true. Else false.

source

julia
overlaps(
+    ::Union{GI.LineStringTrait, GI.LinearRing}, line1,
+    ::Union{GI.LineStringTrait, GI.LinearRing}, line2,
+)::Bool

If the curves overlap, meaning that at least one edge of each curve overlaps, return true. Else false.

source

julia
overlaps(
+    trait_a::GI.PolygonTrait, poly_a,
+    trait_b::GI.PolygonTrait, poly_b,
+)::Bool

If the two polygons intersect with one another, but are not equal, return true. Else false.

source

julia
overlaps(
+    ::GI.PolygonTrait, poly1,
+    ::GI.MultiPolygonTrait, polys2,
+)::Bool

Return true if polygon overlaps with at least one of the polygons within the multipolygon. Else false.

source

julia
overlaps(
+    ::GI.MultiPolygonTrait, polys1,
+    ::GI.PolygonTrait, poly2,
+)::Bool

Return true if polygon overlaps with at least one of the polygons within the multipolygon. Else false.

source

julia
overlaps(
+    ::GI.MultiPolygonTrait, polys1,
+    ::GI.MultiPolygonTrait, polys2,
+)::Bool

Return true if at least one pair of polygons from multipolygons overlap. Else false.

source


# GeometryOps.touchesFunction.
julia
touches(geom1, geom2)::Bool

Return true if the first geometry touches the second geometry. In other words, the two interiors cannot interact, but one of the geometries must have a boundary point that interacts with either the other geometry's interior or boundary.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+
+l1 = GI.Line([(0.0, 0.0), (1.0, 0.0)])
+l2 = GI.Line([(1.0, 1.0), (1.0, -1.0)])
+
+GO.touches(l1, l2)
+# output
+true

source


# GeometryOps.withinFunction.
julia
within(geom1, geom2)::Bool

Return true if the first geometry is completely within the second geometry. The interiors of both geometries must intersect and the interior and boundary of the primary geometry (geom1) must not intersect the exterior of the secondary geometry (geom2).

Furthermore, within returns the exact opposite result of contains.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+
+line = GI.LineString([(1, 1), (1, 2), (1, 3), (1, 4)])
+point = (1, 2)
+GO.within(point, line)
+
+# output
+true

source


Other general methods

# GeometryOps.equalsFunction.
julia
equals(geom1, geom2)::Bool

Compare two Geometries return true if they are the same geometry.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+poly1 = GI.Polygon([[(0,0), (0,5), (5,5), (5,0), (0,0)]])
+poly2 = GI.Polygon([[(0,0), (0,5), (5,5), (5,0), (0,0)]])
+
+GO.equals(poly1, poly2)
+# output
+true

source

julia
equals(::T, geom_a, ::T, geom_b)::Bool

Two geometries of the same type, which don't have a equals function to dispatch off of should throw an error.

source

julia
equals(trait_a, geom_a, trait_b, geom_b)

Two geometries which are not of the same type cannot be equal so they always return false.

source

julia
equals(::GI.PointTrait, p1, ::GI.PointTrait, p2)::Bool

Two points are the same if they have the same x and y (and z if 3D) coordinates.

source

julia
equals(::GI.PointTrait, p1, ::GI.MultiPointTrait, mp2)::Bool

A point and a multipoint are equal if the multipoint is composed of a single point that is equivalent to the given point.

source

julia
equals(::GI.MultiPointTrait, mp1, ::GI.PointTrait, p2)::Bool

A point and a multipoint are equal if the multipoint is composed of a single point that is equivalent to the given point.

source

julia
equals(::GI.MultiPointTrait, mp1, ::GI.MultiPointTrait, mp2)::Bool

Two multipoints are equal if they share the same set of points.

source

julia
equals(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l2,
+)::Bool

Two lines/linestrings are equal if they share the same set of points going along the curve. Note that lines/linestrings aren't closed by definition.

source

julia
equals(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l1,
+    ::GI.LinearRingTrait, l2,
+)::Bool

A line/linestring and a linear ring are equal if they share the same set of points going along the curve. Note that lines aren't closed by definition, but rings are, so the line must have a repeated last point to be equal

source

julia
equals(
+    ::GI.LinearRingTrait, l1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l2,
+)::Bool

A linear ring and a line/linestring are equal if they share the same set of points going along the curve. Note that lines aren't closed by definition, but rings are, so the line must have a repeated last point to be equal

source

julia
equals(
+    ::GI.LinearRingTrait, l1,
+    ::GI.LinearRingTrait, l2,
+)::Bool

Two linear rings are equal if they share the same set of points going along the curve. Note that rings are closed by definition, so they can have, but don't need, a repeated last point to be equal.

source

julia
equals(::GI.PolygonTrait, geom_a, ::GI.PolygonTrait, geom_b)::Bool

Two polygons are equal if they share the same exterior edge and holes.

source

julia
equals(::GI.PolygonTrait, geom_a, ::GI.MultiPolygonTrait, geom_b)::Bool

A polygon and a multipolygon are equal if the multipolygon is composed of a single polygon that is equivalent to the given polygon.

source

julia
equals(::GI.MultiPolygonTrait, geom_a, ::GI.PolygonTrait, geom_b)::Bool

A polygon and a multipolygon are equal if the multipolygon is composed of a single polygon that is equivalent to the given polygon.

source

julia
equals(::GI.PolygonTrait, geom_a, ::GI.PolygonTrait, geom_b)::Bool

Two multipolygons are equal if they share the same set of polygons.

source


# GeometryOps.centroidFunction.
julia
centroid(geom, [T=Float64])::Tuple{T, T}

Returns the centroid of a given line segment, linear ring, polygon, or mutlipolygon.

source


# GeometryOps.distanceFunction.
julia
distance(point, geom, ::Type{T} = Float64)::T

Calculates the ditance from the geometry g1 to the point. The distance will always be positive or zero.

The method will differ based on the type of the geometry provided: - The distance from a point to a point is just the Euclidean distance between the points. - The distance from a point to a line is the minimum distance from the point to the closest point on the given line. - The distance from a point to a linestring is the minimum distance from the point to the closest segment of the linestring. - The distance from a point to a linear ring is the minimum distance from the point to the closest segment of the linear ring. - The distance from a point to a polygon is zero if the point is within the polygon and otherwise is the minimum distance from the point to an edge of the polygon. This includes edges created by holes. - The distance from a point to a multigeometry or a geometry collection is the minimum distance between the point and any of the sub-geometries.

Result will be of type T, where T is an optional argument with a default value of Float64.

source


# GeometryOps.signed_distanceFunction.
julia
signed_distance(point, geom, ::Type{T} = Float64)::T

Calculates the signed distance from the geometry geom to the given point. Points within geom have a negative signed distance, and points outside of geom have a positive signed distance. - The signed distance from a point to a point, line, linestring, or linear ring is equal to the distance between the two. - The signed distance from a point to a polygon is negative if the point is within the polygon and is positive otherwise. The value of the distance is the minimum distance from the point to an edge of the polygon. This includes edges created by holes. - The signed distance from a point to a multigeometry or a geometry collection is the minimum signed distance between the point and any of the sub-geometries.

Result will be of type T, where T is an optional argument with a default value of Float64.

source


# GeometryOps.areaFunction.
julia
area(geom, [T = Float64])::T

Returns the area of a geometry or collection of geometries. This is computed slightly differently for different geometries:

- The area of a point/multipoint is always zero.
+- The area of a curve/multicurve is always zero.
+- The area of a polygon is the absolute value of the signed area.
+- The area multi-polygon is the sum of the areas of all of the sub-polygons.
+- The area of a geometry collection, feature collection of array/iterable 
+    is the sum of the areas of all of the sub-geometries.

Result will be of type T, where T is an optional argument with a default value of Float64.

source


# GeometryOps.signed_areaFunction.
julia
signed_area(geom, [T = Float64])::T

Returns the signed area of a single geometry, based on winding order. This is computed slightly differently for different geometries:

- The signed area of a point is always zero.
+- The signed area of a curve is always zero.
+- The signed area of a polygon is computed with the shoelace formula and is
+positive if the polygon coordinates wind clockwise and negative if
+counterclockwise.
+- You cannot compute the signed area of a multipolygon as it doesn't have a
+meaning as each sub-polygon could have a different winding order.

Result will be of type T, where T is an optional argument with a default value of Float64.

source


# GeometryOps.anglesFunction.
julia
angles(geom, ::Type{T} = Float64)

Returns the angles of a geometry or collection of geometries. This is computed differently for different geometries:

- The angles of a point is an empty vector.
+- The angles of a single line segment is an empty vector.
+- The angles of a linestring or linearring is a vector of angles formed by the curve.
+- The angles of a polygon is a vector of vectors of angles formed by each ring.
+- The angles of a multi-geometry collection is a vector of the angles of each of the
+    sub-geometries as defined above.

Result will be a Vector, or nested set of vectors, of type T where an optional argument with a default value of Float64.

source


# GeometryOps.embed_extentFunction.
julia
embed_extent(obj)

Recursively wrap the object with a GeoInterface.jl geometry, calculating and adding an Extents.Extent to all objects.

This can improve performance when extents need to be checked multiple times, such when needing to check if many points are in geometries, and using their extents as a quick filter for obviously exterior points.

Keywords

source


Barycentric coordinates

# GeometryOps.barycentric_coordinatesFunction.
julia
barycentric_coordinates(method = MeanValue(), polygon, point)

Returns the barycentric coordinates of point in polygon using the barycentric coordinate method method.

source


# GeometryOps.barycentric_coordinates!Function.
julia
barycentric_coordinates!(λs::Vector{<: Real}, method::AbstractBarycentricCoordinateMethod, polygon, point)

Loads the barycentric coordinates of point in polygon into λs using the barycentric coordinate method method.

λs must be of the length of the polygon plus its holes.

Tip

Use this method to avoid excess allocations when you need to calculate barycentric coordinates for many points.

source


# GeometryOps.barycentric_interpolateFunction.
julia
barycentric_interpolate(method = MeanValue(), polygon, values::AbstractVector{V}, point)

Returns the interpolated value at point within polygon using the barycentric coordinate method method. values are the per-point values for the polygon which are to be interpolated.

Returns an object of type V.

Warning

Barycentric interpolation is currently defined only for 2-dimensional polygons. If you pass a 3-D polygon in, the Z coordinate will be used as per-vertex value to be interpolated (the M coordinate in GIS parlance).

source


Other methods

# GeometryOps.AbstractBarycentricCoordinateMethodType.
julia
abstract type AbstractBarycentricCoordinateMethod

Abstract supertype for barycentric coordinate methods. The subtypes may serve as dispatch types, or may cache some information about the target polygon.

API

The following methods must be implemented for all subtypes:

The rest of the methods will be implemented in terms of these, and have efficient dispatches for broadcasting.

source


# GeometryOps.ClosedRingType.
julia
ClosedRing() <: GeometryCorrection

This correction ensures that a polygon's exterior and interior rings are closed.

It can be called on any geometry correction as usual.

See also GeometryCorrection.

source


# GeometryOps.DiffIntersectingPolygonsType.
julia
DiffIntersectingPolygons() <: GeometryCorrection

This correction ensures that the polygons included in a multipolygon aren't intersecting. If any polygon's are intersecting, they will be made nonintersecting through the difference operation to create a unique set of disjoint (other than potentially connections by a single point) polygons covering the same area. See also GeometryCorrection, UnionIntersectingPolygons.

source


# GeometryOps.DouglasPeuckerType.
julia
DouglasPeucker <: SimplifyAlg
+
+DouglasPeucker(; number, ratio, tol)

Simplifies geometries by removing points below tol distance from the line between its neighboring points.

Keywords

Note: user input tol is squared to avoid unnecessary computation in algorithm.

source


# GeometryOps.GEOSType.
julia
GEOS(; params...)

A struct which instructs the method it's passed to as an algorithm to use the appropriate GEOS function via LibGEOS.jl for the operation.

Dispatch is generally carried out using the names of the keyword arguments. For example, segmentize will only accept a GEOS struct with only a max_distance keyword, and no other.

It's generally a lot slower than the native Julia implementations, since it must convert to the LibGEOS implementation and back - so be warned!

source


# GeometryOps.GeodesicSegmentsType.
julia
GeodesicSegments(; max_distance::Real, equatorial_radius::Real=6378137, flattening::Real=1/298.257223563)

A method for segmentizing geometries by adding extra vertices to the geometry so that no segment is longer than a given distance. This method calculates the distance between points on the geodesic, and assumes input in lat/long coordinates.

Warning

Any input geometries must be in lon/lat coordinates! If not, the method may fail or error.

Arguments

One can also omit the equatorial_radius and flattening keyword arguments, and pass a geodesic object directly to the eponymous keyword.

This method uses the Proj/GeographicLib API for geodesic calculations.

source


# GeometryOps.GeometryCorrectionType.
julia
abstract type GeometryCorrection

This abstract type represents a geometry correction.

Interface

Any GeometryCorrection must implement two functions: * application_level(::GeometryCorrection)::AbstractGeometryTrait: This function should return the GeoInterface trait that the correction is intended to be applied to, like PointTrait or LineStringTrait or PolygonTrait. * (::GeometryCorrection)(::AbstractGeometryTrait, geometry)::(some_geometry): This function should apply the correction to the given geometry, and return a new geometry.

source


# GeometryOps.LineOrientationType.
julia
Enum LineOrientation

Enum for the orientation of a line with respect to a curve. A line can be line_cross (crossing over the curve), line_hinge (crossing the endpoint of the curve), line_over (collinear with the curve), or line_out (not interacting with the curve).

source


# GeometryOps.LinearSegmentsType.
julia
LinearSegments(; max_distance::Real)

A method for segmentizing geometries by adding extra vertices to the geometry so that no segment is longer than a given distance.

Here, max_distance is a purely nondimensional quantity and will apply in the input space. This is to say, that if the polygon is provided in lat/lon coordinates then the max_distance will be in degrees of arc. If the polygon is provided in meters, then the max_distance will be in meters.

source


# GeometryOps.MeanValueType.
julia
MeanValue() <: AbstractBarycentricCoordinateMethod

This method calculates barycentric coordinates using the mean value method.

References

source


# GeometryOps.MonotoneChainMethodType.
julia
MonotoneChainMethod()

This is an algorithm for the convex_hull function.

Uses DelaunayTriangulation.jl to compute the convex hull. This is a pure Julia algorithm which provides an optimal Delaunay triangulation.

See also convex_hull

source


# GeometryOps.PointOrientationType.
julia
Enum PointOrientation

Enum for the orientation of a point with respect to a curve. A point can be point_in the curve, point_on the curve, or point_out of the curve.

source


# GeometryOps.RadialDistanceType.
julia
RadialDistance <: SimplifyAlg

Simplifies geometries by removing points less than tol distance from the line between its neighboring points.

Keywords

Note: user input tol is squared to avoid unnecessary computation in algorithm.

source


# GeometryOps.SimplifyAlgType.
julia
abstract type SimplifyAlg

Abstract type for simplification algorithms.

API

For now, the algorithm must hold the number, ratio and tol properties.

Simplification algorithm types can hook into the interface by implementing the _simplify(trait, alg, geom) methods for whichever traits are necessary.

source


# GeometryOps.TraitTargetType.
julia
TraitTarget{T}

This struct holds a trait parameter or a union of trait parameters.

It is primarily used for dispatch into methods which select trait levels, like apply, or as a parameter to target.

Constructors

julia
TraitTarget(GI.PointTrait())
+TraitTarget(GI.LineStringTrait(), GI.LinearRingTrait()) # and other traits as you may like
+TraitTarget(TraitTarget(...))
+# There are also type based constructors available, but that's not advised.
+TraitTarget(GI.PointTrait)
+TraitTarget(Union{GI.LineStringTrait, GI.LinearRingTrait})
+# etc.

source


# GeometryOps.UnionIntersectingPolygonsType.
julia
UnionIntersectingPolygons() <: GeometryCorrection

This correction ensures that the polygon's included in a multipolygon aren't intersecting. If any polygon's are intersecting, they will be combined through the union operation to create a unique set of disjoint (other than potentially connections by a single point) polygons covering the same area.

See also GeometryCorrection.

source


# GeometryOps.VisvalingamWhyattType.
julia
VisvalingamWhyatt <: SimplifyAlg
+
+VisvalingamWhyatt(; kw...)

Simplifies geometries by removing points below tol distance from the line between its neighboring points.

Keywords

Note: user input tol is doubled to avoid unnecessary computation in algorithm.

source


# GeometryOps._detMethod.
julia
_det(s1::Point2{T1}, s2::Point2{T2}) where {T1 <: Real, T2 <: Real}

Returns the determinant of the matrix formed by hcat'ing two points s1 and s2.

Specifically, this is:

julia
s1[1] * s2[2] - s1[2] * s2[1]

source


# GeometryOps._equals_curvesMethod.
julia
_equals_curves(c1, c2, closed_type1, closed_type2)::Bool

Two curves are equal if they share the same set of point, representing the same geometry. Both curves must must be composed of the same set of points, however, they do not have to wind in the same direction, or start on the same point to be equivalent. Inputs: c1 first geometry c2 second geometry closed_type1::Bool true if c1 is closed by definition (polygon, linear ring) closed_type2::Bool true if c2 is closed by definition (polygon, linear ring)

source


# GeometryOps.anglesMethod.
julia
angles(geom, ::Type{T} = Float64)

Returns the angles of a geometry or collection of geometries. This is computed differently for different geometries:

- The angles of a point is an empty vector.
+- The angles of a single line segment is an empty vector.
+- The angles of a linestring or linearring is a vector of angles formed by the curve.
+- The angles of a polygon is a vector of vectors of angles formed by each ring.
+- The angles of a multi-geometry collection is a vector of the angles of each of the
+    sub-geometries as defined above.

Result will be a Vector, or nested set of vectors, of type T where an optional argument with a default value of Float64.

source


# GeometryOps.applyMethod.
julia
apply(f, target::Union{TraitTarget, GI.AbstractTrait}, obj; kw...)

Reconstruct a geometry, feature, feature collection, or nested vectors of either using the function f on the target trait.

f(target_geom) => x where x also has the target trait, or a trait that can be substituted. For example, swapping PolgonTrait to MultiPointTrait will fail if the outer object has MultiPolygonTrait, but should work if it has FeatureTrait.

Objects "shallower" than the target trait are always completely rebuilt, like a Vector of FeatureCollectionTrait of FeatureTrait when the target has PolygonTrait and is held in the features. These will always be GeoInterface geometries/feature/feature collections. But "deeper" objects may remain unchanged or be whatever GeoInterface compatible objects f returns.

The result is a functionally similar geometry with values depending on f.

Example

Flipped point the order in any feature or geometry, or iterables of either:

julia
import GeoInterface as GI
+import GeometryOps as GO
+geom = GI.Polygon([GI.LinearRing([(1, 2), (3, 4), (5, 6), (1, 2)]),
+                   GI.LinearRing([(3, 4), (5, 6), (6, 7), (3, 4)])])
+
+flipped_geom = GO.apply(GI.PointTrait, geom) do p
+    (GI.y(p), GI.x(p))
+end

source


# GeometryOps.applyreduceMethod.
julia
applyreduce(f, op, target::Union{TraitTarget, GI.AbstractTrait}, obj; threaded)

Apply function f to all objects with the target trait, and reduce the result with an op like +.

The order and grouping of application of op is not guaranteed.

If threaded==true threads will be used over arrays and iterables, feature collections and nested geometries.

source


# GeometryOps.areaMethod.
julia
area(geom, [T = Float64])::T

Returns the area of a geometry or collection of geometries. This is computed slightly differently for different geometries:

- The area of a point/multipoint is always zero.
+- The area of a curve/multicurve is always zero.
+- The area of a polygon is the absolute value of the signed area.
+- The area multi-polygon is the sum of the areas of all of the sub-polygons.
+- The area of a geometry collection, feature collection of array/iterable 
+    is the sum of the areas of all of the sub-geometries.

Result will be of type T, where T is an optional argument with a default value of Float64.

source


# GeometryOps.barycentric_coordinates!Method.
julia
barycentric_coordinates!(λs::Vector{<: Real}, method::AbstractBarycentricCoordinateMethod, polygon, point)

Loads the barycentric coordinates of point in polygon into λs using the barycentric coordinate method method.

λs must be of the length of the polygon plus its holes.

Tip

Use this method to avoid excess allocations when you need to calculate barycentric coordinates for many points.

source


# GeometryOps.barycentric_coordinatesMethod.
julia
barycentric_coordinates(method = MeanValue(), polygon, point)

Returns the barycentric coordinates of point in polygon using the barycentric coordinate method method.

source


# GeometryOps.barycentric_interpolateMethod.
julia
barycentric_interpolate(method = MeanValue(), polygon, values::AbstractVector{V}, point)

Returns the interpolated value at point within polygon using the barycentric coordinate method method. values are the per-point values for the polygon which are to be interpolated.

Returns an object of type V.

Warning

Barycentric interpolation is currently defined only for 2-dimensional polygons. If you pass a 3-D polygon in, the Z coordinate will be used as per-vertex value to be interpolated (the M coordinate in GIS parlance).

source


# GeometryOps.centroidMethod.
julia
centroid(geom, [T=Float64])::Tuple{T, T}

Returns the centroid of a given line segment, linear ring, polygon, or mutlipolygon.

source


# GeometryOps.centroid_and_areaMethod.
julia
centroid_and_area(geom, [T=Float64])::(::Tuple{T, T}, ::Real)

Returns the centroid and area of a given geometry.

source


# GeometryOps.centroid_and_lengthMethod.
julia
centroid_and_length(geom, [T=Float64])::(::Tuple{T, T}, ::Real)

Returns the centroid and length of a given line/ring. Note this is only valid for line strings and linear rings.

source


# GeometryOps.containsMethod.
julia
contains(g1::AbstractGeometry, g2::AbstractGeometry)::Bool

Return true if the second geometry is completely contained by the first geometry. The interiors of both geometries must intersect and the interior and boundary of the secondary (g2) must not intersect the exterior of the first (g1).

contains returns the exact opposite result of within.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+line = GI.LineString([(1, 1), (1, 2), (1, 3), (1, 4)])
+point = GI.Point((1, 2))
+
+GO.contains(line, point)
+# output
+true

source


# GeometryOps.convex_hullFunction.
julia
convex_hull([method], geometries)

Compute the convex hull of the points in geometries. Returns a GI.Polygon representing the convex hull.

Note that the polygon returned is wound counterclockwise as in the Simple Features standard by default. If you choose GEOS, the winding order will be inverted.

Warning

This interface only computes the 2-dimensional convex hull!

For higher dimensional hulls, use the relevant package (Qhull.jl, Quickhull.jl, or similar).

source


# GeometryOps.coverageMethod.
julia
coverage(geom, xmin, xmax, ymin, ymax, [T = Float64])::T

Returns the area of intersection between given geometry and grid cell defined by its minimum and maximum x and y-values. This is computed differently for different geometries:

Result will be of type T, where T is an optional argument with a default value of Float64.

source


# GeometryOps.coveredbyMethod.
julia
coveredby(g1, g2)::Bool

Return true if the first geometry is completely covered by the second geometry. The interior and boundary of the primary geometry (g1) must not intersect the exterior of the secondary geometry (g2).

Furthermore, coveredby returns the exact opposite result of covers. They are equivalent with the order of the arguments swapped.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+p1 = GI.Point(0.0, 0.0)
+p2 = GI.Point(1.0, 1.0)
+l1 = GI.Line([p1, p2])
+
+GO.coveredby(p1, l1)
+# output
+true

source


# GeometryOps.coversMethod.
julia
covers(g1::AbstractGeometry, g2::AbstractGeometry)::Bool

Return true if the first geometry is completely covers the second geometry, The exterior and boundary of the second geometry must not be outside of the interior and boundary of the first geometry. However, the interiors need not intersect.

covers returns the exact opposite result of coveredby.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+l1 = GI.LineString([(1.0, 1.0), (1.0, 2.0), (1.0, 3.0), (1.0, 4.0)])
+l2 = GI.LineString([(1.0, 1.0), (1.0, 2.0)])
+
+GO.covers(l1, l2)
+# output
+true

source


# GeometryOps.crossesMethod.
julia
 crosses(geom1, geom2)::Bool

Return true if the intersection results in a geometry whose dimension is one less than the maximum dimension of the two source geometries and the intersection set is interior to both source geometries.

TODO: broken

Examples

julia
import GeoInterface as GI, GeometryOps as GO
+# TODO: Add working example

source


# GeometryOps.cutMethod.
julia
cut(geom, line, [T::Type])

Return given geom cut by given line as a list of geometries of the same type as the input geom. Return the original geometry as only list element if none are found. Line must cut fully through given geometry or the original geometry will be returned.

Note: This currently doesn't work for degenerate cases there line crosses through vertices.

Example

julia
import GeoInterface as GI, GeometryOps as GO
+
+poly = GI.Polygon([[(0.0, 0.0), (10.0, 0.0), (10.0, 10.0), (0.0, 10.0), (0.0, 0.0)]])
+line = GI.Line([(5.0, -5.0), (5.0, 15.0)])
+cut_polys = GO.cut(poly, line)
+GI.coordinates.(cut_polys)
+
+# output
+2-element Vector{Vector{Vector{Vector{Float64}}}}:
+ [[[0.0, 0.0], [5.0, 0.0], [5.0, 10.0], [0.0, 10.0], [0.0, 0.0]]]
+ [[[5.0, 0.0], [10.0, 0.0], [10.0, 10.0], [5.0, 10.0], [5.0, 0.0]]]

source


# GeometryOps.differenceMethod.
julia
difference(geom_a, geom_b, [T::Type]; target::Type, fix_multipoly = UnionIntersectingPolygons())

Return the difference between two geometries as a list of geometries. Return an empty list if none are found. The type of the list will be constrained as much as possible given the input geometries. Furthermore, the user can provide a taget type as a keyword argument and a list of target geometries found in the difference will be returned. The user can also provide a float type that they would like the points of returned geometries to be. If the user is taking a intersection involving one or more multipolygons, and the multipolygon might be comprised of polygons that intersect, if fix_multipoly is set to an IntersectingPolygons correction (the default is UnionIntersectingPolygons()), then the needed multipolygons will be fixed to be valid before performing the intersection to ensure a correct answer. Only set fix_multipoly to false if you know that the multipolygons are valid, as it will avoid unneeded computation.

Example

julia
import GeoInterface as GI, GeometryOps as GO
+
+poly1 = GI.Polygon([[[0.0, 0.0], [5.0, 5.0], [10.0, 0.0], [5.0, -5.0], [0.0, 0.0]]])
+poly2 = GI.Polygon([[[3.0, 0.0], [8.0, 5.0], [13.0, 0.0], [8.0, -5.0], [3.0, 0.0]]])
+diff_poly = GO.difference(poly1, poly2; target = GI.PolygonTrait())
+GI.coordinates.(diff_poly)
+
+# output
+1-element Vector{Vector{Vector{Vector{Float64}}}}:
+ [[[6.5, 3.5], [5.0, 5.0], [0.0, 0.0], [5.0, -5.0], [6.5, -3.5], [3.0, 0.0], [6.5, 3.5]]]

source


# GeometryOps.disjointMethod.
julia
disjoint(geom1, geom2)::Bool

Return true if the first geometry is disjoint from the second geometry.

Return true if the first geometry is disjoint from the second geometry. The interiors and boundaries of both geometries must not intersect.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+
+line = GI.LineString([(1, 1), (1, 2), (1, 3), (1, 4)])
+point = (2, 2)
+GO.disjoint(point, line)
+
+# output
+true

source


# GeometryOps.distanceMethod.
julia
distance(point, geom, ::Type{T} = Float64)::T

Calculates the ditance from the geometry g1 to the point. The distance will always be positive or zero.

The method will differ based on the type of the geometry provided: - The distance from a point to a point is just the Euclidean distance between the points. - The distance from a point to a line is the minimum distance from the point to the closest point on the given line. - The distance from a point to a linestring is the minimum distance from the point to the closest segment of the linestring. - The distance from a point to a linear ring is the minimum distance from the point to the closest segment of the linear ring. - The distance from a point to a polygon is zero if the point is within the polygon and otherwise is the minimum distance from the point to an edge of the polygon. This includes edges created by holes. - The distance from a point to a multigeometry or a geometry collection is the minimum distance between the point and any of the sub-geometries.

Result will be of type T, where T is an optional argument with a default value of Float64.

source


# GeometryOps.embed_extentMethod.
julia
embed_extent(obj)

Recursively wrap the object with a GeoInterface.jl geometry, calculating and adding an Extents.Extent to all objects.

This can improve performance when extents need to be checked multiple times, such when needing to check if many points are in geometries, and using their extents as a quick filter for obviously exterior points.

Keywords

source


# GeometryOps.enforceMethod.
julia
enforce(alg::GO.GEOS, kw::Symbol, f)

Enforce the presence of a keyword argument in a GEOS algorithm, and return alg.params[kw].

Throws an error if the key is not present, and mentions f in the error message (since there isn't a good way to get the name of the function that called this method).

source


# GeometryOps.equalsMethod.
julia
equals(trait_a, geom_a, trait_b, geom_b)

Two geometries which are not of the same type cannot be equal so they always return false.

source


# GeometryOps.equalsMethod.
julia
equals(geom1, geom2)::Bool

Compare two Geometries return true if they are the same geometry.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+poly1 = GI.Polygon([[(0,0), (0,5), (5,5), (5,0), (0,0)]])
+poly2 = GI.Polygon([[(0,0), (0,5), (5,5), (5,0), (0,0)]])
+
+GO.equals(poly1, poly2)
+# output
+true

source


# GeometryOps.equalsMethod.
julia
equals(
+    ::GI.LinearRingTrait, l1,
+    ::GI.LinearRingTrait, l2,
+)::Bool

Two linear rings are equal if they share the same set of points going along the curve. Note that rings are closed by definition, so they can have, but don't need, a repeated last point to be equal.

source


# GeometryOps.equalsMethod.
julia
equals(
+    ::GI.LinearRingTrait, l1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l2,
+)::Bool

A linear ring and a line/linestring are equal if they share the same set of points going along the curve. Note that lines aren't closed by definition, but rings are, so the line must have a repeated last point to be equal

source


# GeometryOps.equalsMethod.
julia
equals(::GI.MultiPointTrait, mp1, ::GI.MultiPointTrait, mp2)::Bool

Two multipoints are equal if they share the same set of points.

source


# GeometryOps.equalsMethod.
julia
equals(::GI.MultiPointTrait, mp1, ::GI.PointTrait, p2)::Bool

A point and a multipoint are equal if the multipoint is composed of a single point that is equivalent to the given point.

source


# GeometryOps.equalsMethod.
julia
equals(::GI.PolygonTrait, geom_a, ::GI.PolygonTrait, geom_b)::Bool

Two multipolygons are equal if they share the same set of polygons.

source


# GeometryOps.equalsMethod.
julia
equals(::GI.MultiPolygonTrait, geom_a, ::GI.PolygonTrait, geom_b)::Bool

A polygon and a multipolygon are equal if the multipolygon is composed of a single polygon that is equivalent to the given polygon.

source


# GeometryOps.equalsMethod.
julia
equals(::GI.PointTrait, p1, ::GI.MultiPointTrait, mp2)::Bool

A point and a multipoint are equal if the multipoint is composed of a single point that is equivalent to the given point.

source


# GeometryOps.equalsMethod.
julia
equals(::GI.PointTrait, p1, ::GI.PointTrait, p2)::Bool

Two points are the same if they have the same x and y (and z if 3D) coordinates.

source


# GeometryOps.equalsMethod.
julia
equals(::GI.PolygonTrait, geom_a, ::GI.MultiPolygonTrait, geom_b)::Bool

A polygon and a multipolygon are equal if the multipolygon is composed of a single polygon that is equivalent to the given polygon.

source


# GeometryOps.equalsMethod.
julia
equals(::GI.PolygonTrait, geom_a, ::GI.PolygonTrait, geom_b)::Bool

Two polygons are equal if they share the same exterior edge and holes.

source


# GeometryOps.equalsMethod.
julia
equals(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l1,
+    ::GI.LinearRingTrait, l2,
+)::Bool

A line/linestring and a linear ring are equal if they share the same set of points going along the curve. Note that lines aren't closed by definition, but rings are, so the line must have a repeated last point to be equal

source


# GeometryOps.equalsMethod.
julia
equals(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l2,
+)::Bool

Two lines/linestrings are equal if they share the same set of points going along the curve. Note that lines/linestrings aren't closed by definition.

source


# GeometryOps.equalsMethod.
julia
equals(::T, geom_a, ::T, geom_b)::Bool

Two geometries of the same type, which don't have a equals function to dispatch off of should throw an error.

source


# GeometryOps.flattenMethod.
julia
flatten(target::Type{<:GI.AbstractTrait}, obj)
+flatten(f, target::Type{<:GI.AbstractTrait}, obj)

Lazily flatten any AbstractArray, iterator, FeatureCollectionTrait, FeatureTrait or AbstractGeometryTrait object obj, so that objects with the target trait are returned by the iterator.

If f is passed in it will be applied to the target geometries.

source


# GeometryOps.flipMethod.
julia
flip(obj)

Swap all of the x and y coordinates in obj, otherwise keeping the original structure (but not necessarily the original type).

Keywords

source


# GeometryOps.intersectionMethod.
julia
intersection(geom_a, geom_b, [T::Type]; target::Type, fix_multipoly = UnionIntersectingPolygons())

Return the intersection between two geometries as a list of geometries. Return an empty list if none are found. The type of the list will be constrained as much as possible given the input geometries. Furthermore, the user can provide a target type as a keyword argument and a list of target geometries found in the intersection will be returned. The user can also provide a float type that they would like the points of returned geometries to be. If the user is taking a intersection involving one or more multipolygons, and the multipolygon might be comprised of polygons that intersect, if fix_multipoly is set to an IntersectingPolygons correction (the default is UnionIntersectingPolygons()), then the needed multipolygons will be fixed to be valid before performing the intersection to ensure a correct answer. Only set fix_multipoly to nothing if you know that the multipolygons are valid, as it will avoid unneeded computation.

Example

julia
import GeoInterface as GI, GeometryOps as GO
+
+line1 = GI.Line([(124.584961,-12.768946), (126.738281,-17.224758)])
+line2 = GI.Line([(123.354492,-15.961329), (127.22168,-14.008696)])
+inter_points = GO.intersection(line1, line2; target = GI.PointTrait())
+GI.coordinates.(inter_points)
+
+# output
+1-element Vector{Vector{Float64}}:
+ [125.58375366067548, -14.83572303404496]

source


# GeometryOps.intersection_pointsMethod.
julia
intersection_points(geom_a, geom_b, [T::Type])

Return a list of intersection tuple points between two geometries. If no intersection points exist, returns an empty list.

Example

jldoctest

+line1 = GI.Line([(124.584961,-12.768946), (126.738281,-17.224758)]) line2 = GI.Line([(123.354492,-15.961329), (127.22168,-14.008696)]) inter_points = GO.intersection_points(line1, line2)
+
+**output**
+
+1-element Vector{Tuple{Float64, Float64}}:  (125.58375366067548, -14.83572303404496)
+
+
+[source](https://github.com/JuliaGeo/GeometryOps.jl/blob/v0.1.10/src/methods/clipping/intersection.jl#L177-L195)
+
+</div>
+<br>
+<div style='border-width:1px; border-style:solid; border-color:black; padding: 1em; border-radius: 25px;'>
+<a id='GeometryOps.intersects-Tuple{Any, Any}' href='#GeometryOps.intersects-Tuple{Any, Any}'>#</a>&nbsp;<b><u>GeometryOps.intersects</u></b> &mdash; <i>Method</i>.
+
+
+
+
+\`\`\`julia
+intersects(geom1, geom2)::Bool

Return true if the interiors or boundaries of the two geometries interact.

intersects returns the exact opposite result of disjoint.

Example

julia
import GeoInterface as GI, GeometryOps as GO
+
+line1 = GI.Line([(124.584961,-12.768946), (126.738281,-17.224758)])
+line2 = GI.Line([(123.354492,-15.961329), (127.22168,-14.008696)])
+GO.intersects(line1, line2)
+
+# output
+true

source


`,178),p={style:{"border-width":"1px","border-style":"solid","border-color":"black",padding:"1em","border-radius":"25px"}},r=s("a",{id:"GeometryOps.isclockwise-Tuple{Any}",href:"#GeometryOps.isclockwise-Tuple{Any}"},"#",-1),k=s("b",null,[s("u",null,"GeometryOps.isclockwise")],-1),o=s("i",null,"Method",-1),d=i('
julia
isclockwise(line::Union{LineString, Vector{Position}})::Bool

Take a ring and return true if the line goes clockwise, or false if the line goes counter-clockwise. "Going clockwise" means, mathematically,

',2),g={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.827ex"},xmlns:"http://www.w3.org/2000/svg",width:"33.539ex",height:"6.785ex",role:"img",focusable:"false",viewBox:"0 -1749.5 14824.1 2999","aria-hidden":"true"},E=i('',1),c=[E],u=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("munderover",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,"="),s("mn",null,"2")]),s("mi",null,"n")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"x"),s("mi",null,"i")]),s("mo",null,"−"),s("msub",null,[s("mi",null,"x"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,"−"),s("mn",null,"1")])]),s("mo",{stretchy:"false"},")"),s("mo",null,"⋅"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"y"),s("mi",null,"i")]),s("mo",null,"+"),s("msub",null,[s("mi",null,"y"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,"−"),s("mn",null,"1")])]),s("mo",{stretchy:"false"},")"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,">"),s("mn",null,"0")])],-1),m=i(`

Example

julia
julia> import GeoInterface as GI, GeometryOps as GO
+julia> ring = GI.LinearRing([(0, 0), (1, 1), (1, 0), (0, 0)]);
+julia> GO.isclockwise(ring)
+# output
+true

source

`,3),F=i(`
# GeometryOps.isconcaveMethod.
julia
isconcave(poly::Polygon)::Bool

Take a polygon and return true or false as to whether it is concave or not.

Examples

julia
import GeoInterface as GI, GeometryOps as GO
+
+poly = GI.Polygon([[(0, 0), (0, 1), (1, 1), (1, 0), (0, 0)]])
+GO.isconcave(poly)
+
+# output
+false

source


# GeometryOps.overlapsMethod.
julia
overlaps(geom1, geom2)::Bool

Compare two Geometries of the same dimension and return true if their intersection set results in a geometry different from both but of the same dimension. This means one geometry cannot be within or contain the other and they cannot be equal

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+poly1 = GI.Polygon([[(0,0), (0,5), (5,5), (5,0), (0,0)]])
+poly2 = GI.Polygon([[(1,1), (1,6), (6,6), (6,1), (1,1)]])
+
+GO.overlaps(poly1, poly2)
+# output
+true

source


# GeometryOps.overlapsMethod.
julia
overlaps(::GI.AbstractTrait, geom1, ::GI.AbstractTrait, geom2)::Bool

For any non-specified pair, all have non-matching dimensions, return false.

source


# GeometryOps.overlapsMethod.
julia
overlaps(::GI.LineTrait, line1, ::GI.LineTrait, line)::Bool

If the lines overlap, meaning that they are collinear but each have one endpoint outside of the other line, return true. Else false.

source


# GeometryOps.overlapsMethod.
julia
overlaps(
+    ::GI.MultiPointTrait, points1,
+    ::GI.MultiPointTrait, points2,
+)::Bool

If the multipoints overlap, meaning some, but not all, of the points within the multipoints are shared, return true.

source


# GeometryOps.overlapsMethod.
julia
overlaps(
+    ::GI.MultiPolygonTrait, polys1,
+    ::GI.MultiPolygonTrait, polys2,
+)::Bool

Return true if at least one pair of polygons from multipolygons overlap. Else false.

source


# GeometryOps.overlapsMethod.
julia
overlaps(
+    ::GI.MultiPolygonTrait, polys1,
+    ::GI.PolygonTrait, poly2,
+)::Bool

Return true if polygon overlaps with at least one of the polygons within the multipolygon. Else false.

source


# GeometryOps.overlapsMethod.
julia
overlaps(
+    ::GI.PolygonTrait, poly1,
+    ::GI.MultiPolygonTrait, polys2,
+)::Bool

Return true if polygon overlaps with at least one of the polygons within the multipolygon. Else false.

source


# GeometryOps.overlapsMethod.
julia
overlaps(
+    trait_a::GI.PolygonTrait, poly_a,
+    trait_b::GI.PolygonTrait, poly_b,
+)::Bool

If the two polygons intersect with one another, but are not equal, return true. Else false.

source


# GeometryOps.overlapsMethod.
julia
overlaps(
+    ::Union{GI.LineStringTrait, GI.LinearRing}, line1,
+    ::Union{GI.LineStringTrait, GI.LinearRing}, line2,
+)::Bool

If the curves overlap, meaning that at least one edge of each curve overlaps, return true. Else false.

source


# GeometryOps.polygon_to_lineMethod.
julia
polygon_to_line(poly::Polygon)

Converts a Polygon to LineString or MultiLineString

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+
+poly = GI.Polygon([[(-2.275543, 53.464547), (-2.275543, 53.489271), (-2.215118, 53.489271), (-2.215118, 53.464547), (-2.275543, 53.464547)]])
+GO.polygon_to_line(poly)
+# output
+GeoInterface.Wrappers.LineString{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}([(-2.275543, 53.464547), (-2.275543, 53.489271), (-2.215118, 53.489271), (-2.215118, 53.464547), (-2.275543, 53.464547)], nothing, nothing)

source


# GeometryOps.polygonizeMethod.
julia
polygonize(A::AbstractMatrix{Bool}; kw...)
+polygonize(f, A::AbstractMatrix; kw...)
+polygonize(xs, ys, A::AbstractMatrix{Bool}; kw...)
+polygonize(f, xs, ys, A::AbstractMatrix; kw...)

Polygonize an AbstractMatrix of values, currently to a single class of polygons.

Returns a MultiPolygon for Bool values and f return values, and a FeatureCollection of Features holding MultiPolygon for all other values.

Function f should return either true or false or a transformation of values into simpler groups, especially useful for floating point arrays.

If xs and ys are ranges, they are used as the pixel/cell center points. If they are Vector of Tuple they are used as the lower and upper bounds of each pixel/cell.

Keywords

Example

julia
using GeometryOps
+A = rand(100, 100)
+multipolygon = polygonize(>(0.5), A);

source


# GeometryOps.rebuildMethod.
julia
rebuild(geom, child_geoms)

Rebuild a geometry from child geometries.

By default geometries will be rebuilt as a GeoInterface.Wrappers geometry, but rebuild can have methods added to it to dispatch on geometries from other packages and specify how to rebuild them.

(Maybe it should go into GeoInterface.jl)

source


# GeometryOps.reconstructMethod.
julia
reconstruct(geom, components)

Reconstruct geom from an iterable of component objects that match its structure.

All objects in components must have the same GeoInterface.trait.

Usually used in combination with flatten.

source


# GeometryOps.segmentizeMethod.
julia
segmentize([method = LinearSegments()], geom; max_distance::Real, threaded)

Segmentize a geometry by adding extra vertices to the geometry so that no segment is longer than a given distance. This is useful for plotting geometries with a limited number of vertices, or for ensuring that a geometry is not too "coarse" for a given application.

Arguments

Returns a geometry of similar type to the input geometry, but resampled.

source


# GeometryOps.signed_areaMethod.
julia
signed_area(geom, [T = Float64])::T

Returns the signed area of a single geometry, based on winding order. This is computed slightly differently for different geometries:

- The signed area of a point is always zero.
+- The signed area of a curve is always zero.
+- The signed area of a polygon is computed with the shoelace formula and is
+positive if the polygon coordinates wind clockwise and negative if
+counterclockwise.
+- You cannot compute the signed area of a multipolygon as it doesn't have a
+meaning as each sub-polygon could have a different winding order.

Result will be of type T, where T is an optional argument with a default value of Float64.

source


# GeometryOps.signed_distanceMethod.
julia
signed_distance(point, geom, ::Type{T} = Float64)::T

Calculates the signed distance from the geometry geom to the given point. Points within geom have a negative signed distance, and points outside of geom have a positive signed distance. - The signed distance from a point to a point, line, linestring, or linear ring is equal to the distance between the two. - The signed distance from a point to a polygon is negative if the point is within the polygon and is positive otherwise. The value of the distance is the minimum distance from the point to an edge of the polygon. This includes edges created by holes. - The signed distance from a point to a multigeometry or a geometry collection is the minimum signed distance between the point and any of the sub-geometries.

Result will be of type T, where T is an optional argument with a default value of Float64.

source


# GeometryOps.simplifyMethod.
julia
simplify(obj; kw...)
+simplify(::SimplifyAlg, obj; kw...)

Simplify a geometry, feature, feature collection, or nested vectors or a table of these.

RadialDistance, DouglasPeucker, or VisvalingamWhyatt algorithms are available, listed in order of increasing quality but decreasing performance.

PoinTrait and MultiPointTrait are returned unchanged.

The default behaviour is simplify(DouglasPeucker(; kw...), obj). Pass in other SimplifyAlg to use other algorithms.

Keywords

Keywords for DouglasPeucker are allowed when no algorithm is specified:

Keywords

Example

Simplify a polygon to have six points:

julia
import GeoInterface as GI
+import GeometryOps as GO
+
+poly = GI.Polygon([[
+    [-70.603637, -33.399918],
+    [-70.614624, -33.395332],
+    [-70.639343, -33.392466],
+    [-70.659942, -33.394759],
+    [-70.683975, -33.404504],
+    [-70.697021, -33.419406],
+    [-70.701141, -33.434306],
+    [-70.700454, -33.446339],
+    [-70.694274, -33.458369],
+    [-70.682601, -33.465816],
+    [-70.668869, -33.472117],
+    [-70.646209, -33.473835],
+    [-70.624923, -33.472117],
+    [-70.609817, -33.468107],
+    [-70.595397, -33.458369],
+    [-70.587158, -33.442901],
+    [-70.587158, -33.426283],
+    [-70.590591, -33.414248],
+    [-70.594711, -33.406224],
+    [-70.603637, -33.399918]]])
+
+simple = GO.simplify(poly; number=6)
+GI.npoint(simple)
+
+# output
+6

source


`,37),b={style:{"border-width":"1px","border-style":"solid","border-color":"black",padding:"1em","border-radius":"25px"}},C=s("a",{id:"GeometryOps.t_value-Union{Tuple{T2}, Tuple{T1}, Tuple{N}, Tuple{Union{Tuple{Vararg{T1, N}}, StaticArraysCore.StaticArray{Tuple{N}, T1, 1}}, Union{Tuple{Vararg{T1, N}}, StaticArraysCore.StaticArray{Tuple{N}, T1, 1}}, T2, T2}} where {N, T1<:Real, T2<:Real}",href:"#GeometryOps.t_value-Union{Tuple{T2}, Tuple{T1}, Tuple{N}, Tuple{Union{Tuple{Vararg{T1, N}}, StaticArraysCore.StaticArray{Tuple{N}, T1, 1}}, Union{Tuple{Vararg{T1, N}}, StaticArraysCore.StaticArray{Tuple{N}, T1, 1}}, T2, T2}} where {N, T1<:Real, T2<:Real}"},"#",-1),f=s("b",null,[s("u",null,"GeometryOps.t_value")],-1),T=s("i",null,"Method",-1),v=i('
julia
t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)

Returns the "T-value" as described in Hormann's presentation [1] on how to calculate the mean-value coordinate.

Here, sᵢ is the vector from vertex vᵢ to the point, and rᵢ is the norm (length) of sᵢ. s must be Point and r must be real numbers.

',3),G={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.059ex"},xmlns:"http://www.w3.org/2000/svg",width:"27.746ex",height:"5.362ex",role:"img",focusable:"false",viewBox:"0 -1460 12263.9 2370","aria-hidden":"true"},B=i('',1),O=[B],D=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mi",null,"t"),s("mi",null,"ᵢ"),s("mo",null,"="),s("mfrac",null,[s("mrow",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-auto-op":"false"},"det")]),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"s"),s("mi",null,"ᵢ"),s("mo",null,","),s("mi",null,"s"),s("mi",null,"ᵢ"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",{"data-mjx-pseudoscript":"true"},"₊")]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",{"data-mjx-pseudoscript":"true"},"₁")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")])]),s("mrow",null,[s("mi",null,"r"),s("mi",null,"ᵢ"),s("mo",null,"∗"),s("mi",null,"r"),s("mi",null,"ᵢ"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",{"data-mjx-pseudoscript":"true"},"₊")]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",{"data-mjx-pseudoscript":"true"},"₁")]),s("mo",null,"+"),s("mi",null,"s"),s("mi",null,"ᵢ"),s("mo",null,"⋅"),s("mi",null,"s"),s("mi",null,"ᵢ"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",{"data-mjx-pseudoscript":"true"},"₊")]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",{"data-mjx-pseudoscript":"true"},"₁")])])])])],-1),j=i(`

+
+[source](https://github.com/JuliaGeo/GeometryOps.jl/blob/v0.1.10/src/methods/barycentric.jl#L289-L305)
+
+</div>
+<br>
+<div style='border-width:1px; border-style:solid; border-color:black; padding: 1em; border-radius: 25px;'>
+<a id='GeometryOps.to_edges-Union{Tuple{Any}, Tuple{T}, Tuple{Any, Type{T}}} where T' href='#GeometryOps.to_edges-Union{Tuple{Any}, Tuple{T}, Tuple{Any, Type{T}}} where T'>#</a>&nbsp;<b><u>GeometryOps.to_edges</u></b> &mdash; <i>Method</i>.
+
+
+
+
+\`\`\`julia
+to_edges()

Convert any geometry or collection of geometries into a flat vector of Tuple{Tuple{Float64,Float64},Tuple{Float64,Float64}} edges.

source

`,3),x=i(`
# GeometryOps.touchesMethod.
julia
touches(geom1, geom2)::Bool

Return true if the first geometry touches the second geometry. In other words, the two interiors cannot interact, but one of the geometries must have a boundary point that interacts with either the other geometry's interior or boundary.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+
+l1 = GI.Line([(0.0, 0.0), (1.0, 0.0)])
+l2 = GI.Line([(1.0, 1.0), (1.0, -1.0)])
+
+GO.touches(l1, l2)
+# output
+true

source


# GeometryOps.transformMethod.
julia
transform(f, obj)

Apply a function f to all the points in obj.

Points will be passed to f as an SVector to allow using CoordinateTransformations.jl and Rotations.jl without hassle.

SVector is also a valid GeoInterface.jl point, so will work in all GeoInterface.jl methods.

Example

julia
julia> import GeoInterface as GI
+
+julia> import GeometryOps as GO
+
+julia> geom = GI.Polygon([GI.LinearRing([(1, 2), (3, 4), (5, 6), (1, 2)]), GI.LinearRing([(3, 4), (5, 6), (6, 7), (3, 4)])]);
+
+julia> f = CoordinateTransformations.Translation(3.5, 1.5)
+Translation(3.5, 1.5)
+
+julia> GO.transform(f, geom)
+GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.Linea
+rRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}(StaticArraysCo
+re.SVector{2, Float64}[[4.5, 3.5], [6.5, 5.5], [8.5, 7.5], [4.5, 3.5]], nothing, nothing), GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}(StaticA
+rraysCore.SVector{2, Float64}[[6.5, 5.5], [8.5, 7.5], [9.5, 8.5], [6.5, 5.5]], nothing, nothing)], nothing, nothing)

With Rotations.jl you need to actually multiply the Rotation by the SVector point, which is easy using an anonymous function.

julia
julia> using Rotations
+
+julia> GO.transform(p -> one(RotMatrix{2}) * p, geom)
+GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearR
+ing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}(StaticArraysCore.SVe
+ctor{2, Int64}[[2, 1], [4, 3], [6, 5], [2, 1]], nothing, nothing), GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}(StaticArraysCore.SVector{2, Int64
+}[[4, 3], [6, 5], [7, 6], [4, 3]], nothing, nothing)], nothing, nothing)

source


# GeometryOps.tuplesMethod.
julia
tuples(obj)

Convert all points in obj to Tuples, wherever the are nested.

Returns a similar object or collection of objects using GeoInterface.jl geometries wrapping Tuple points.

Keywords

source


# GeometryOps.unionMethod.
julia
union(geom_a, geom_b, [::Type{T}]; target::Type, fix_multipoly = UnionIntersectingPolygons())

Return the union between two geometries as a list of geometries. Return an empty list if none are found. The type of the list will be constrained as much as possible given the input geometries. Furthermore, the user can provide a taget type as a keyword argument and a list of target geometries found in the difference will be returned. The user can also provide a float type 'T' that they would like the points of returned geometries to be. If the user is taking a intersection involving one or more multipolygons, and the multipolygon might be comprised of polygons that intersect, if fix_multipoly is set to an IntersectingPolygons correction (the default is UnionIntersectingPolygons()), then the needed multipolygons will be fixed to be valid before performing the intersection to ensure a correct answer. Only set fix_multipoly to false if you know that the multipolygons are valid, as it will avoid unneeded computation.

Calculates the union between two polygons.

Example

julia
import GeoInterface as GI, GeometryOps as GO
+
+p1 = GI.Polygon([[(0.0, 0.0), (5.0, 5.0), (10.0, 0.0), (5.0, -5.0), (0.0, 0.0)]])
+p2 = GI.Polygon([[(3.0, 0.0), (8.0, 5.0), (13.0, 0.0), (8.0, -5.0), (3.0, 0.0)]])
+union_poly = GO.union(p1, p2; target = GI.PolygonTrait())
+GI.coordinates.(union_poly)
+
+# output
+1-element Vector{Vector{Vector{Vector{Float64}}}}:
+ [[[6.5, 3.5], [5.0, 5.0], [0.0, 0.0], [5.0, -5.0], [6.5, -3.5], [8.0, -5.0], [13.0, 0.0], [8.0, 5.0], [6.5, 3.5]]]

source


# GeometryOps.unwrapFunction.
julia
unwrap(target::Type{<:AbstractTrait}, obj)
+unwrap(f, target::Type{<:AbstractTrait}, obj)

Unwrap the object to vectors, down to the target trait.

If f is passed in it will be applied to the target geometries as they are found.

source


# GeometryOps.weighted_meanMethod.
julia
weighted_mean(weight::Real, x1, x2)

Returns the weighted mean of x1 and x2, where weight is the weight of x1.

Specifically, calculates x1 * weight + x2 * (1 - weight).

Note

The idea for this method is that you can override this for custom types, like Color types, in extension modules.

source


# GeometryOps.withinMethod.
julia
within(geom1, geom2)::Bool

Return true if the first geometry is completely within the second geometry. The interiors of both geometries must intersect and the interior and boundary of the primary geometry (geom1) must not intersect the exterior of the secondary geometry (geom2).

Furthermore, within returns the exact opposite result of contains.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+
+line = GI.LineString([(1, 1), (1, 2), (1, 3), (1, 4)])
+point = (1, 2)
+GO.within(point, line)
+
+# output
+true

source



  1. K. Hormann and N. Sukumar. Generalized Barycentric Coordinates in Computer Graphics and Computational Mechanics. Taylor & Fancis, CRC Press, 2017. ↩︎

`,17);function w(Q,_,I,L,P,M){return t(),e("div",null,[h,s("div",p,[r,a(" "),k,a(" — "),o,a(". "),d,s("mjx-container",g,[(t(),e("svg",y,c)),u]),m]),F,s("div",b,[C,a(" "),f,a(" — "),T,a(". "),v,s("mjx-container",G,[(t(),e("svg",A,O)),D]),j]),x])}const S=n(l,[["render",w]]);export{q as __pageData,S as default}; diff --git a/previews/PR195/assets/api.md.DHJubgq9.lean.js b/previews/PR195/assets/api.md.DHJubgq9.lean.js new file mode 100644 index 000000000..65facaac8 --- /dev/null +++ b/previews/PR195/assets/api.md.DHJubgq9.lean.js @@ -0,0 +1 @@ +import{_ as n,c as e,j as s,a,a7 as i,o as t}from"./chunks/framework.BjTE4JnT.js";const q=JSON.parse('{"title":"Full GeometryOps API documentation","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md","lastUpdated":null}'),l={name:"api.md"},h=i("",178),p={style:{"border-width":"1px","border-style":"solid","border-color":"black",padding:"1em","border-radius":"25px"}},r=s("a",{id:"GeometryOps.isclockwise-Tuple{Any}",href:"#GeometryOps.isclockwise-Tuple{Any}"},"#",-1),k=s("b",null,[s("u",null,"GeometryOps.isclockwise")],-1),o=s("i",null,"Method",-1),d=i("",2),g={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.827ex"},xmlns:"http://www.w3.org/2000/svg",width:"33.539ex",height:"6.785ex",role:"img",focusable:"false",viewBox:"0 -1749.5 14824.1 2999","aria-hidden":"true"},E=i("",1),c=[E],u=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("munderover",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,"="),s("mn",null,"2")]),s("mi",null,"n")]),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"x"),s("mi",null,"i")]),s("mo",null,"−"),s("msub",null,[s("mi",null,"x"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,"−"),s("mn",null,"1")])]),s("mo",{stretchy:"false"},")"),s("mo",null,"⋅"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"y"),s("mi",null,"i")]),s("mo",null,"+"),s("msub",null,[s("mi",null,"y"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,"−"),s("mn",null,"1")])]),s("mo",{stretchy:"false"},")"),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",null,">"),s("mn",null,"0")])],-1),m=i("",3),F=i("",37),b={style:{"border-width":"1px","border-style":"solid","border-color":"black",padding:"1em","border-radius":"25px"}},C=s("a",{id:"GeometryOps.t_value-Union{Tuple{T2}, Tuple{T1}, Tuple{N}, Tuple{Union{Tuple{Vararg{T1, N}}, StaticArraysCore.StaticArray{Tuple{N}, T1, 1}}, Union{Tuple{Vararg{T1, N}}, StaticArraysCore.StaticArray{Tuple{N}, T1, 1}}, T2, T2}} where {N, T1<:Real, T2<:Real}",href:"#GeometryOps.t_value-Union{Tuple{T2}, Tuple{T1}, Tuple{N}, Tuple{Union{Tuple{Vararg{T1, N}}, StaticArraysCore.StaticArray{Tuple{N}, T1, 1}}, Union{Tuple{Vararg{T1, N}}, StaticArraysCore.StaticArray{Tuple{N}, T1, 1}}, T2, T2}} where {N, T1<:Real, T2<:Real}"},"#",-1),f=s("b",null,[s("u",null,"GeometryOps.t_value")],-1),T=s("i",null,"Method",-1),v=i("",3),G={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.059ex"},xmlns:"http://www.w3.org/2000/svg",width:"27.746ex",height:"5.362ex",role:"img",focusable:"false",viewBox:"0 -1460 12263.9 2370","aria-hidden":"true"},B=i("",1),O=[B],D=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mi",null,"t"),s("mi",null,"ᵢ"),s("mo",null,"="),s("mfrac",null,[s("mrow",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{"data-mjx-auto-op":"false"},"det")]),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"s"),s("mi",null,"ᵢ"),s("mo",null,","),s("mi",null,"s"),s("mi",null,"ᵢ"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",{"data-mjx-pseudoscript":"true"},"₊")]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",{"data-mjx-pseudoscript":"true"},"₁")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")])]),s("mrow",null,[s("mi",null,"r"),s("mi",null,"ᵢ"),s("mo",null,"∗"),s("mi",null,"r"),s("mi",null,"ᵢ"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",{"data-mjx-pseudoscript":"true"},"₊")]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",{"data-mjx-pseudoscript":"true"},"₁")]),s("mo",null,"+"),s("mi",null,"s"),s("mi",null,"ᵢ"),s("mo",null,"⋅"),s("mi",null,"s"),s("mi",null,"ᵢ"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",{"data-mjx-pseudoscript":"true"},"₊")]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",{"data-mjx-pseudoscript":"true"},"₁")])])])])],-1),j=i("",3),x=i("",17);function w(Q,_,I,L,P,M){return t(),e("div",null,[h,s("div",p,[r,a(" "),k,a(" — "),o,a(". "),d,s("mjx-container",g,[(t(),e("svg",y,c)),u]),m]),F,s("div",b,[C,a(" "),f,a(" — "),T,a(". "),v,s("mjx-container",G,[(t(),e("svg",A,O)),D]),j]),x])}const S=n(l,[["render",w]]);export{q as __pageData,S as default}; diff --git a/previews/PR195/assets/app.BGYMnZ_8.js b/previews/PR195/assets/app.BGYMnZ_8.js new file mode 100644 index 000000000..c49fadd09 --- /dev/null +++ b/previews/PR195/assets/app.BGYMnZ_8.js @@ -0,0 +1 @@ +import{U as o,a8 as p,a9 as u,aa as l,ab as c,ac as f,ad as d,ae as m,af as h,ag as g,ah as A,d as P,u as v,y,x as w,ai as C,aj as R,ak as b,a6 as E}from"./chunks/framework.BjTE4JnT.js";import{R as S}from"./chunks/theme.Czc396Vw.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(S),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{w(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),R(),b(),s.setup&&s.setup(),()=>E(s.Layout)}});async function _(){globalThis.__VITEPRESS__=!0;const e=x(),a=j();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function j(){return h(T)}function x(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&_().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{_ as createApp}; diff --git a/previews/PR195/assets/arwwwgh.KQwENoaO.png b/previews/PR195/assets/arwwwgh.KQwENoaO.png new file mode 100644 index 0000000000000000000000000000000000000000..a161d7a95a65ff8b5e7330a01dbc6e7686312636 GIT binary patch literal 228222 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

JpK45-eiDbs41)F%Q~ij3_bmj6qWOFy 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 D50Nw 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 ZExSr;UYOeGL?e?p^^?hunY!n1{SSygYoq`G literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/call_notes.md.7w_VILqE.js b/previews/PR195/assets/call_notes.md.7w_VILqE.js new file mode 100644 index 000000000..30d6fe261 --- /dev/null +++ b/previews/PR195/assets/call_notes.md.7w_VILqE.js @@ -0,0 +1 @@ +import{_ as e,c as i,o as l,a7 as t}from"./chunks/framework.BjTE4JnT.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"call_notes.md","filePath":"call_notes.md","lastUpdated":null}'),o={name:"call_notes.md"},a=t('

See GeometryOps#114.

  • [ ] Exact predicates can be defined for lower-level, more atomic predicates within GeometryOps.

  • [ ] Add Shewchuck's adaptive math as a stage for exact predicates.

  • [x] @skygering to write docstrings for the predicates

29th Feb, 2024

To do

  • [ ] Finish clipping degeneracies

  • [ ] Fix cross & overlap functions

  • [x] Benchmarks to show why things you couldn't concieve of in R are doable in Julia

  • [x] profile functions for exponential improvements

  • [ ] A list of projects people can work on...the beauty here is that each function is kind of self-contained so it's an undergrad level project

  • [ ] Doc improvements

    • more

    • benchmarks page

  • Methods to validate and fix geometry

    • [ ] Polygons and LinearRings:

      • [ ] self-intersection

      • [ ] holes are actually within the polygon

      • [ ] Polygon exteriors must be counterclockwise, holes clockwise.

      • [ ] length of all rings > 4

      • [ ] repeated last point

    • [ ] LineStrings: NaN/Inf points

    • [x] Fix linear rings at some point to make sure the ring is closed, i.e., points[end] == points[begin]

  • Tests

    • [x] Simplify functions

    • [x] Polygonize

    • Barycentric tests for n_vertices > 4

Done

  • Rename bools.jl to something more relevant to the actual code -> orientation.jl

  • Doc improvements:

    • organise sections
',8),n=[a];function r(s,p,c,d,h,u){return l(),i("div",null,n)}const g=e(o,[["render",r]]);export{m as __pageData,g as default}; diff --git a/previews/PR195/assets/call_notes.md.7w_VILqE.lean.js b/previews/PR195/assets/call_notes.md.7w_VILqE.lean.js new file mode 100644 index 000000000..453030b92 --- /dev/null +++ b/previews/PR195/assets/call_notes.md.7w_VILqE.lean.js @@ -0,0 +1 @@ +import{_ as e,c as i,o as l,a7 as t}from"./chunks/framework.BjTE4JnT.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"call_notes.md","filePath":"call_notes.md","lastUpdated":null}'),o={name:"call_notes.md"},a=t("",8),n=[a];function r(s,p,c,d,h,u){return l(),i("div",null,n)}const g=e(o,[["render",r]]);export{m as __pageData,g as default}; diff --git a/previews/PR195/assets/chunks/@localSearchIndexroot.CyuJdoA_.js b/previews/PR195/assets/chunks/@localSearchIndexroot.CyuJdoA_.js new file mode 100644 index 000000000..1214c72ef --- /dev/null +++ b/previews/PR195/assets/chunks/@localSearchIndexroot.CyuJdoA_.js @@ -0,0 +1 @@ +const e='{"documentCount":179,"nextId":179,"documentIds":{"0":"/GeometryOps.jl/previews/PR195/api#Full-GeometryOps-API-documentation","1":"/GeometryOps.jl/previews/PR195/api#apply-and-associated-functions","2":"/GeometryOps.jl/previews/PR195/api#General-geometry-methods","3":"/GeometryOps.jl/previews/PR195/api#OGC-methods","4":"/GeometryOps.jl/previews/PR195/api#Other-general-methods","5":"/GeometryOps.jl/previews/PR195/api#Barycentric-coordinates","6":"/GeometryOps.jl/previews/PR195/api#Other-methods","7":"/GeometryOps.jl/previews/PR195/call_notes#20th-April,-2024","8":"/GeometryOps.jl/previews/PR195/call_notes#29th-Feb,-2024","9":"/GeometryOps.jl/previews/PR195/call_notes#To-do","10":"/GeometryOps.jl/previews/PR195/call_notes#done","11":"/GeometryOps.jl/previews/PR195/experiments/accurate_accumulators#Accurate-accumulation","12":"/GeometryOps.jl/previews/PR195/experiments/predicates#predicates","13":"/GeometryOps.jl/previews/PR195/experiments/predicates#orient","14":"/GeometryOps.jl/previews/PR195/experiments/predicates#dashboard","15":"/GeometryOps.jl/previews/PR195/experiments/predicates#Testing-robust-vs-regular-predicates","16":"/GeometryOps.jl/previews/PR195/experiments/predicates#incircle","17":"/GeometryOps.jl/previews/PR195/explanations/paradigms#paradigms","18":"/GeometryOps.jl/previews/PR195/explanations/paradigms#apply","19":"/GeometryOps.jl/previews/PR195/explanations/paradigms#applyreduce","20":"/GeometryOps.jl/previews/PR195/explanations/paradigms#fix-and-prepare","21":"/GeometryOps.jl/previews/PR195/explanations/peculiarities#peculiarities","22":"/GeometryOps.jl/previews/PR195/explanations/peculiarities#What-does-apply-return-and-why?","23":"/GeometryOps.jl/previews/PR195/explanations/peculiarities#Why-do-you-want-me-to-provide-a-target-in-set-operations?","24":"/GeometryOps.jl/previews/PR195/explanations/peculiarities#_True-and-_False-(or-BoolsAsTypes)","25":"/GeometryOps.jl/previews/PR195/#what-is-geometryops-jl","26":"/GeometryOps.jl/previews/PR195/#how-to-navigate-the-docs","27":"/GeometryOps.jl/previews/PR195/introduction#introduction","28":"/GeometryOps.jl/previews/PR195/introduction#Main-concepts","29":"/GeometryOps.jl/previews/PR195/introduction#The-apply-paradigm","30":"/GeometryOps.jl/previews/PR195/introduction#What\'s-this-GeoInterface.Wrapper-thing?","31":"/GeometryOps.jl/previews/PR195/source/GeometryOps#geometryops-jl","32":"/GeometryOps.jl/previews/PR195/source/methods/angles#angles","33":"/GeometryOps.jl/previews/PR195/source/methods/angles#What-is-angles?","34":"/GeometryOps.jl/previews/PR195/source/methods/angles#implementation","35":"/GeometryOps.jl/previews/PR195/source/methods/area#Area-and-signed-area","36":"/GeometryOps.jl/previews/PR195/source/methods/area#What-is-area?-What-is-signed-area?","37":"/GeometryOps.jl/previews/PR195/source/methods/area#implementation","38":"/GeometryOps.jl/previews/PR195/source/methods/barycentric#Barycentric-coordinates","39":"/GeometryOps.jl/previews/PR195/source/methods/barycentric#example","40":"/GeometryOps.jl/previews/PR195/source/methods/barycentric#Barycentric-coordinate-API","41":"/GeometryOps.jl/previews/PR195/source/methods/buffer#buffer","42":"/GeometryOps.jl/previews/PR195/source/methods/centroid#centroid","43":"/GeometryOps.jl/previews/PR195/source/methods/centroid#What-is-the-centroid?","44":"/GeometryOps.jl/previews/PR195/source/methods/centroid#implementation","45":"/GeometryOps.jl/previews/PR195/source/methods/clipping/clipping_processor#Polygon-clipping-helpers","46":"/GeometryOps.jl/previews/PR195/source/methods/clipping/coverage#What-is-coverage?","47":"/GeometryOps.jl/previews/PR195/source/methods/clipping/coverage#implementation","48":"/GeometryOps.jl/previews/PR195/source/methods/clipping/cut#Polygon-cutting","49":"/GeometryOps.jl/previews/PR195/source/methods/clipping/cut#What-is-cut?","50":"/GeometryOps.jl/previews/PR195/source/methods/clipping/cut#implementation","51":"/GeometryOps.jl/previews/PR195/source/methods/clipping/difference#Difference-Polygon-Clipping","52":"/GeometryOps.jl/previews/PR195/source/methods/clipping/difference#Helper-functions-for-Differences-with-Greiner-and-Hormann-Polygon-Clipping","53":"/GeometryOps.jl/previews/PR195/source/methods/clipping/intersection#Geometry-Intersection","54":"/GeometryOps.jl/previews/PR195/source/methods/clipping/intersection#Helper-functions-for-Intersections-with-Greiner-and-Hormann-Polygon-Clipping","55":"/GeometryOps.jl/previews/PR195/source/methods/clipping/predicates#If-we-want-to-inject-adaptivity,-we-would-do-something-like:","56":"/GeometryOps.jl/previews/PR195/source/methods/convex_hull#Convex-hull","57":"/GeometryOps.jl/previews/PR195/source/methods/convex_hull#example","58":"/GeometryOps.jl/previews/PR195/source/methods/convex_hull#Simple-hull","59":"/GeometryOps.jl/previews/PR195/source/methods/convex_hull#Convex-hull-of-the-USA","60":"/GeometryOps.jl/previews/PR195/source/methods/convex_hull#Investigating-the-winding-order","61":"/GeometryOps.jl/previews/PR195/source/methods/convex_hull#implementation","62":"/GeometryOps.jl/previews/PR195/source/methods/clipping/union#Union-Polygon-Clipping","63":"/GeometryOps.jl/previews/PR195/source/methods/clipping/union#Helper-functions-for-Unions-with-Greiner-and-Hormann-Polygon-Clipping","64":"/GeometryOps.jl/previews/PR195/source/methods/distance#Distance-and-signed-distance","65":"/GeometryOps.jl/previews/PR195/source/methods/distance#What-is-distance?-What-is-signed-distance?","66":"/GeometryOps.jl/previews/PR195/source/methods/distance#implementation","67":"/GeometryOps.jl/previews/PR195/source/methods/equals#equals","68":"/GeometryOps.jl/previews/PR195/source/methods/equals#What-is-equals?","69":"/GeometryOps.jl/previews/PR195/source/methods/equals#implementation","70":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/contains#contains","71":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/contains#What-is-contains?","72":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/contains#implementation","73":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/coveredby#coveredby","74":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/coveredby#What-is-coveredby?","75":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/coveredby#implementation","76":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/coveredby#Convert-features-to-geometries","77":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/coveredby#Points-coveredby-geometries","78":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/coveredby#Lines-coveredby-geometries","79":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/coveredby#Rings-covered-by-geometries","80":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/coveredby#Polygons-covered-by-geometries","81":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/coveredby#Geometries-coveredby-multi-geometry/geometry-collections","82":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/coveredby#Multi-geometry/geometry-collections-coveredby-geometries","83":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/covers#covers","84":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/covers#What-is-covers?","85":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/covers#implementation","86":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/crosses#Crossing-checks","87":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/disjoint#disjoint","88":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/disjoint#What-is-disjoint?","89":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/disjoint#implementation","90":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/disjoint#Convert-features-to-geometries","91":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/disjoint#Point-disjoint-geometries","92":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/disjoint#Lines-disjoint-geometries","93":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/disjoint#Rings-disjoint-geometries","94":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/disjoint#Polygon-disjoint-geometries","95":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/disjoint#Geometries-disjoint-multi-geometry/geometry-collections","96":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/disjoint#Multi-geometry/geometry-collections-coveredby-geometries","97":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/geom_geom_processors#Line-curve-interaction","98":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/intersects#Intersection-checks","99":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/intersects#What-is-intersects?","100":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/intersects#implementation","101":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/overlaps#overlaps","102":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/overlaps#What-is-overlaps?","103":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/overlaps#implementation","104":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/touches#touches","105":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/touches#What-is-touches?","106":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/touches#implementation","107":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/touches#Convert-features-to-geometries","108":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/touches#Point-touches-geometries","109":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/touches#Lines-touching-geometries","110":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/touches#Rings-touch-geometries","111":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/touches#Polygons-touch-geometries","112":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/touches#Geometries-touch-multi-geometry/geometry-collections","113":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/touches#Multi-geometry/geometry-collections-cross-geometries","114":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/within#within","115":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/within#What-is-within?","116":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/within#implementation","117":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/within#Convert-features-to-geometries","118":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/within#Points-within-geometries","119":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/within#Lines-within-geometries","120":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/within#Rings-covered-by-geometries","121":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/within#Polygons-within-geometries","122":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/within#Geometries-within-multi-geometry/geometry-collections","123":"/GeometryOps.jl/previews/PR195/source/methods/geom_relations/within#Multi-geometry/geometry-collections-within-geometries","124":"/GeometryOps.jl/previews/PR195/source/methods/orientation#orientation","125":"/GeometryOps.jl/previews/PR195/source/methods/orientation#isclockwise","126":"/GeometryOps.jl/previews/PR195/source/methods/orientation#isconcave","127":"/GeometryOps.jl/previews/PR195/source/methods/polygonize#Polygonizing-raster-data","128":"/GeometryOps.jl/previews/PR195/source/not_implemented_yet#Not-implemented-yet","129":"/GeometryOps.jl/previews/PR195/source/primitives#Primitive-functions","130":"/GeometryOps.jl/previews/PR195/source/primitives#docstrings","131":"/GeometryOps.jl/previews/PR195/source/primitives#functions","132":"/GeometryOps.jl/previews/PR195/source/primitives#types","133":"/GeometryOps.jl/previews/PR195/source/primitives#implementation","134":"/GeometryOps.jl/previews/PR195/source/primitives#What-is-apply?","135":"/GeometryOps.jl/previews/PR195/source/primitives#embedding","136":"/GeometryOps.jl/previews/PR195/source/primitives#threading","137":"/GeometryOps.jl/previews/PR195/source/transformations/correction/closed_ring#Closed-Rings","138":"/GeometryOps.jl/previews/PR195/source/transformations/correction/closed_ring#example","139":"/GeometryOps.jl/previews/PR195/source/transformations/correction/closed_ring#implementation","140":"/GeometryOps.jl/previews/PR195/source/transformations/correction/geometry_correction#Geometry-Corrections","141":"/GeometryOps.jl/previews/PR195/source/transformations/correction/geometry_correction#interface","142":"/GeometryOps.jl/previews/PR195/source/transformations/correction/geometry_correction#Available-corrections","143":"/GeometryOps.jl/previews/PR195/source/transformations/correction/intersecting_polygons#Intersecting-Polygons","144":"/GeometryOps.jl/previews/PR195/source/transformations/correction/intersecting_polygons#example","145":"/GeometryOps.jl/previews/PR195/source/transformations/correction/intersecting_polygons#implementation","146":"/GeometryOps.jl/previews/PR195/source/transformations/extent#Extent-embedding","147":"/GeometryOps.jl/previews/PR195/source/transformations/flip#Coordinate-flipping","148":"/GeometryOps.jl/previews/PR195/source/transformations/reproject#Geometry-reprojection","149":"/GeometryOps.jl/previews/PR195/source/transformations/reproject#Method-error-handling","150":"/GeometryOps.jl/previews/PR195/source/transformations/segmentize#segmentize","151":"/GeometryOps.jl/previews/PR195/source/transformations/segmentize#examples","152":"/GeometryOps.jl/previews/PR195/source/transformations/segmentize#benchmark","153":"/GeometryOps.jl/previews/PR195/source/transformations/segmentize#implementation","154":"/GeometryOps.jl/previews/PR195/source/transformations/simplify#Geometry-simplification","155":"/GeometryOps.jl/previews/PR195/source/transformations/simplify#examples","156":"/GeometryOps.jl/previews/PR195/source/transformations/simplify#benchmark","157":"/GeometryOps.jl/previews/PR195/source/transformations/simplify#Simplify-with-RadialDistance-Algorithm","158":"/GeometryOps.jl/previews/PR195/source/transformations/simplify#Simplify-with-DouglasPeucker-Algorithm","159":"/GeometryOps.jl/previews/PR195/source/transformations/simplify#Simplify-with-VisvalingamWhyatt-Algorithm","160":"/GeometryOps.jl/previews/PR195/source/transformations/simplify#Shared-utils","161":"/GeometryOps.jl/previews/PR195/source/transformations/transform#Pointwise-transformation","162":"/GeometryOps.jl/previews/PR195/source/transformations/tuples#Tuple-conversion","163":"/GeometryOps.jl/previews/PR195/source/types#types","164":"/GeometryOps.jl/previews/PR195/source/types#TraitTarget","165":"/GeometryOps.jl/previews/PR195/source/types#BoolsAsTypes","166":"/GeometryOps.jl/previews/PR195/source/types#GEOS","167":"/GeometryOps.jl/previews/PR195/source/utils#Utility-functions","168":"/GeometryOps.jl/previews/PR195/tutorials/creating_geometry#Creating-Geometry","169":"/GeometryOps.jl/previews/PR195/tutorials/creating_geometry#creating-geometry","170":"/GeometryOps.jl/previews/PR195/tutorials/creating_geometry#plot-geometry","171":"/GeometryOps.jl/previews/PR195/tutorials/creating_geometry#geom-crs","172":"/GeometryOps.jl/previews/PR195/tutorials/creating_geometry#attributes","173":"/GeometryOps.jl/previews/PR195/tutorials/creating_geometry#save-geometry","174":"/GeometryOps.jl/previews/PR195/tutorials/geodesic_paths#Geodesic-paths","175":"/GeometryOps.jl/previews/PR195/tutorials/spatial_joins#Spatial-joins","176":"/GeometryOps.jl/previews/PR195/tutorials/spatial_joins#Simple-example","177":"/GeometryOps.jl/previews/PR195/tutorials/spatial_joins#Real-world-example","178":"/GeometryOps.jl/previews/PR195/tutorials/spatial_joins#Enabling-custom-predicates"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[4,1,91],"1":[4,4,248],"2":[3,4,1],"3":[2,7,208],"4":[3,7,258],"5":[2,4,84],"6":[2,4,1086],"7":[3,1,55],"8":[3,1,1],"9":[2,3,107],"10":[1,3,17],"11":[2,1,74],"12":[1,1,5],"13":[1,1,128],"14":[1,2,116],"15":[5,2,72],"16":[1,1,1],"17":[1,1,53],"18":[1,1,109],"19":[1,2,35],"20":[3,1,79],"21":[1,1,1],"22":[7,1,71],"23":[13,1,101],"24":[6,1,66],"25":[5,1,72],"26":[5,1,61],"27":[1,1,72],"28":[2,1,1],"29":[3,3,50],"30":[8,3,18],"31":[2,1,120],"32":[1,1,3],"33":[4,1,57],"34":[1,1,268],"35":[4,1,4],"36":[5,4,100],"37":[1,4,246],"38":[2,1,65],"39":[1,2,211],"40":[3,2,414],"41":[1,1,110],"42":[1,1,6],"43":[5,1,91],"44":[1,1,199],"45":[3,1,632],"46":[4,1,70],"47":[1,1,327],"48":[2,1,3],"49":[4,2,57],"50":[1,2,200],"51":[3,1,214],"52":[10,1,190],"53":[2,1,250],"54":[10,1,480],"55":[11,1,25],"56":[2,1,56],"57":[1,2,1],"58":[2,3,32],"59":[5,2,40],"60":[4,2,100],"61":[1,2,166],"62":[3,1,235],"63":[10,1,283],"64":[4,1,4],"65":[5,4,128],"66":[1,4,260],"67":[1,1,3],"68":[4,1,68],"69":[1,1,265],"70":[1,1,3],"71":[4,1,79],"72":[1,1,79],"73":[1,1,3],"74":[4,1,81],"75":[1,1,128],"76":[4,1,11],"77":[3,1,56],"78":[3,1,46],"79":[4,1,48],"80":[4,1,40],"81":[5,1,40],"82":[5,1,44],"83":[1,1,3],"84":[4,1,67],"85":[1,1,78],"86":[2,1,149],"87":[1,1,3],"88":[4,1,68],"89":[1,1,110],"90":[4,1,10],"91":[3,1,57],"92":[3,1,58],"93":[3,1,47],"94":[3,1,33],"95":[5,1,39],"96":[5,1,44],"97":[3,1,432],"98":[2,1,3],"99":[4,2,80],"100":[1,2,76],"101":[1,1,3],"102":[4,1,82],"103":[1,1,244],"104":[1,1,3],"105":[4,1,70],"106":[1,1,125],"107":[4,1,11],"108":[3,1,69],"109":[3,1,52],"110":[3,1,61],"111":[3,1,40],"112":[5,1,39],"113":[5,1,42],"114":[1,1,3],"115":[4,1,72],"116":[1,1,129],"117":[4,1,11],"118":[3,1,63],"119":[3,1,53],"120":[4,1,53],"121":[3,1,38],"122":[5,1,39],"123":[5,1,42],"124":[1,1,4],"125":[1,1,21],"126":[1,1,206],"127":[3,1,511],"128":[3,1,47],"129":[2,1,113],"130":[1,2,1],"131":[1,3,106],"132":[1,2,12],"133":[1,2,33],"134":[4,2,114],"135":[2,2,36],"136":[1,2,536],"137":[2,1,54],"138":[1,2,87],"139":[1,2,83],"140":[2,1,41],"141":[1,2,112],"142":[2,2,109],"143":[2,1,77],"144":[1,2,70],"145":[1,2,135],"146":[2,1,71],"147":[2,1,56],"148":[2,1,132],"149":[3,2,77],"150":[1,1,76],"151":[1,1,147],"152":[1,1,268],"153":[1,1,188],"154":[2,1,44],"155":[1,2,67],"156":[1,2,391],"157":[4,1,75],"158":[4,1,186],"159":[4,1,85],"160":[2,1,149],"161":[2,1,111],"162":[2,1,58],"163":[1,1,38],"164":[1,1,74],"165":[1,1,82],"166":[1,1,147],"167":[2,1,136],"168":[2,1,60],"169":[4,2,287],"170":[13,2,280],"171":[9,2,199],"172":[7,2,63],"173":[4,2,140],"174":[2,1,52],"175":[2,1,138],"176":[2,2,137],"177":[3,2,117],"178":[3,2,68]},"averageFieldLength":[2.860335195530726,1.4692737430167604,108.32402234636872],"storedFields":{"0":{"title":"Full GeometryOps API documentation","titles":[]},"1":{"title":"apply and associated functions","titles":["Full GeometryOps API documentation"]},"2":{"title":"General geometry methods","titles":["Full GeometryOps API documentation"]},"3":{"title":"OGC methods","titles":["Full GeometryOps API documentation","General geometry methods"]},"4":{"title":"Other general methods","titles":["Full GeometryOps API documentation","General geometry methods"]},"5":{"title":"Barycentric coordinates","titles":["Full GeometryOps API documentation"]},"6":{"title":"Other methods","titles":["Full GeometryOps API documentation"]},"7":{"title":"20th April, 2024","titles":[]},"8":{"title":"29th Feb, 2024","titles":[]},"9":{"title":"To do","titles":["29th Feb, 2024"]},"10":{"title":"Done","titles":["29th Feb, 2024"]},"11":{"title":"Accurate accumulation","titles":[]},"12":{"title":"Predicates","titles":[]},"13":{"title":"Orient","titles":["Predicates"]},"14":{"title":"Dashboard","titles":["Predicates","Orient"]},"15":{"title":"Testing robust vs regular predicates","titles":["Predicates","Orient"]},"16":{"title":"Incircle","titles":["Predicates"]},"17":{"title":"Paradigms","titles":[]},"18":{"title":"apply","titles":["Paradigms"]},"19":{"title":"applyreduce","titles":["Paradigms","apply"]},"20":{"title":"fix and prepare","titles":["Paradigms"]},"21":{"title":"Peculiarities","titles":[]},"22":{"title":"What does apply return and why?","titles":["Peculiarities"]},"23":{"title":"Why do you want me to provide a target in set operations?","titles":["Peculiarities"]},"24":{"title":"_True and _False (or BoolsAsTypes)","titles":["Peculiarities"]},"25":{"title":"What is GeometryOps.jl?","titles":[]},"26":{"title":"How to navigate the docs","titles":[]},"27":{"title":"Introduction","titles":[]},"28":{"title":"Main concepts","titles":["Introduction"]},"29":{"title":"The apply paradigm","titles":["Introduction","Main concepts"]},"30":{"title":"What's this GeoInterface.Wrapper thing?","titles":["Introduction","Main concepts"]},"31":{"title":"GeometryOps.jl","titles":[]},"32":{"title":"Angles","titles":[]},"33":{"title":"What is angles?","titles":["Angles"]},"34":{"title":"Implementation","titles":["Angles"]},"35":{"title":"Area and signed area","titles":[]},"36":{"title":"What is area? What is signed area?","titles":["Area and signed area"]},"37":{"title":"Implementation","titles":["Area and signed area"]},"38":{"title":"Barycentric coordinates","titles":[]},"39":{"title":"Example","titles":["Barycentric coordinates"]},"40":{"title":"Barycentric-coordinate API","titles":["Barycentric coordinates"]},"41":{"title":"Buffer","titles":[]},"42":{"title":"Centroid","titles":[]},"43":{"title":"What is the centroid?","titles":["Centroid"]},"44":{"title":"Implementation","titles":["Centroid"]},"45":{"title":"Polygon clipping helpers","titles":[]},"46":{"title":"What is coverage?","titles":[]},"47":{"title":"Implementation","titles":[]},"48":{"title":"Polygon cutting","titles":[]},"49":{"title":"What is cut?","titles":["Polygon cutting"]},"50":{"title":"Implementation","titles":["Polygon cutting"]},"51":{"title":"Difference Polygon Clipping","titles":[]},"52":{"title":"Helper functions for Differences with Greiner and Hormann Polygon Clipping","titles":[]},"53":{"title":"Geometry Intersection","titles":[]},"54":{"title":"Helper functions for Intersections with Greiner and Hormann Polygon Clipping","titles":[]},"55":{"title":"If we want to inject adaptivity, we would do something like:","titles":[]},"56":{"title":"Convex hull","titles":[]},"57":{"title":"Example","titles":["Convex hull"]},"58":{"title":"Simple hull","titles":["Convex hull","Example"]},"59":{"title":"Convex hull of the USA","titles":["Convex hull"]},"60":{"title":"Investigating the winding order","titles":["Convex hull"]},"61":{"title":"Implementation","titles":["Convex hull"]},"62":{"title":"Union Polygon Clipping","titles":[]},"63":{"title":"Helper functions for Unions with Greiner and Hormann Polygon Clipping","titles":[]},"64":{"title":"Distance and signed distance","titles":[]},"65":{"title":"What is distance? What is signed distance?","titles":["Distance and signed distance"]},"66":{"title":"Implementation","titles":["Distance and signed distance"]},"67":{"title":"Equals","titles":[]},"68":{"title":"What is equals?","titles":["Equals"]},"69":{"title":"Implementation","titles":["Equals"]},"70":{"title":"Contains","titles":[]},"71":{"title":"What is contains?","titles":["Contains"]},"72":{"title":"Implementation","titles":["Contains"]},"73":{"title":"CoveredBy","titles":[]},"74":{"title":"What is coveredby?","titles":["CoveredBy"]},"75":{"title":"Implementation","titles":["CoveredBy"]},"76":{"title":"Convert features to geometries","titles":[]},"77":{"title":"Points coveredby geometries","titles":[]},"78":{"title":"Lines coveredby geometries","titles":[]},"79":{"title":"Rings covered by geometries","titles":[]},"80":{"title":"Polygons covered by geometries","titles":[]},"81":{"title":"Geometries coveredby multi-geometry/geometry collections","titles":[]},"82":{"title":"Multi-geometry/geometry collections coveredby geometries","titles":[]},"83":{"title":"Covers","titles":[]},"84":{"title":"What is covers?","titles":["Covers"]},"85":{"title":"Implementation","titles":["Covers"]},"86":{"title":"Crossing checks","titles":[]},"87":{"title":"Disjoint","titles":[]},"88":{"title":"What is disjoint?","titles":["Disjoint"]},"89":{"title":"Implementation","titles":["Disjoint"]},"90":{"title":"Convert features to geometries","titles":[]},"91":{"title":"Point disjoint geometries","titles":[]},"92":{"title":"Lines disjoint geometries","titles":[]},"93":{"title":"Rings disjoint geometries","titles":[]},"94":{"title":"Polygon disjoint geometries","titles":[]},"95":{"title":"Geometries disjoint multi-geometry/geometry collections","titles":[]},"96":{"title":"Multi-geometry/geometry collections coveredby geometries","titles":[]},"97":{"title":"Line-curve interaction","titles":[]},"98":{"title":"Intersection checks","titles":[]},"99":{"title":"What is intersects?","titles":["Intersection checks"]},"100":{"title":"Implementation","titles":["Intersection checks"]},"101":{"title":"Overlaps","titles":[]},"102":{"title":"What is overlaps?","titles":["Overlaps"]},"103":{"title":"Implementation","titles":["Overlaps"]},"104":{"title":"Touches","titles":[]},"105":{"title":"What is touches?","titles":["Touches"]},"106":{"title":"Implementation","titles":["Touches"]},"107":{"title":"Convert features to geometries","titles":[]},"108":{"title":"Point touches geometries","titles":[]},"109":{"title":"Lines touching geometries","titles":[]},"110":{"title":"Rings touch geometries","titles":[]},"111":{"title":"Polygons touch geometries","titles":[]},"112":{"title":"Geometries touch multi-geometry/geometry collections","titles":[]},"113":{"title":"Multi-geometry/geometry collections cross geometries","titles":[]},"114":{"title":"Within","titles":[]},"115":{"title":"What is within?","titles":["Within"]},"116":{"title":"Implementation","titles":["Within"]},"117":{"title":"Convert features to geometries","titles":[]},"118":{"title":"Points within geometries","titles":[]},"119":{"title":"Lines within geometries","titles":[]},"120":{"title":"Rings covered by geometries","titles":[]},"121":{"title":"Polygons within geometries","titles":[]},"122":{"title":"Geometries within multi-geometry/geometry collections","titles":[]},"123":{"title":"Multi-geometry/geometry collections within geometries","titles":[]},"124":{"title":"Orientation","titles":[]},"125":{"title":"isclockwise","titles":["Orientation"]},"126":{"title":"isconcave","titles":["Orientation"]},"127":{"title":"Polygonizing raster data","titles":[]},"128":{"title":"Not implemented yet","titles":[]},"129":{"title":"Primitive functions","titles":[]},"130":{"title":"Docstrings","titles":["Primitive functions"]},"131":{"title":"Functions","titles":["Primitive functions","Docstrings"]},"132":{"title":"Types","titles":["Primitive functions"]},"133":{"title":"Implementation","titles":["Primitive functions"]},"134":{"title":"What is apply?","titles":["Primitive functions"]},"135":{"title":"Embedding:","titles":["Primitive functions"]},"136":{"title":"Threading","titles":["Primitive functions"]},"137":{"title":"Closed Rings","titles":[]},"138":{"title":"Example","titles":["Closed Rings"]},"139":{"title":"Implementation","titles":["Closed Rings"]},"140":{"title":"Geometry Corrections","titles":[]},"141":{"title":"Interface","titles":["Geometry Corrections"]},"142":{"title":"Available corrections","titles":["Geometry Corrections"]},"143":{"title":"Intersecting Polygons","titles":[]},"144":{"title":"Example","titles":["Intersecting Polygons"]},"145":{"title":"Implementation","titles":["Intersecting Polygons"]},"146":{"title":"Extent embedding","titles":[]},"147":{"title":"Coordinate flipping","titles":[]},"148":{"title":"Geometry reprojection","titles":[]},"149":{"title":"Method error handling","titles":["Geometry reprojection"]},"150":{"title":"Segmentize","titles":[]},"151":{"title":"Examples","titles":["Segmentize"]},"152":{"title":"Benchmark","titles":["Segmentize"]},"153":{"title":"Implementation","titles":["Segmentize"]},"154":{"title":"Geometry simplification","titles":[]},"155":{"title":"Examples","titles":["Geometry simplification"]},"156":{"title":"Benchmark","titles":["Geometry simplification"]},"157":{"title":"Simplify with RadialDistance Algorithm","titles":[]},"158":{"title":"Simplify with DouglasPeucker Algorithm","titles":[]},"159":{"title":"Simplify with VisvalingamWhyatt Algorithm","titles":[]},"160":{"title":"Shared utils","titles":[]},"161":{"title":"Pointwise transformation","titles":[]},"162":{"title":"Tuple conversion","titles":[]},"163":{"title":"Types","titles":[]},"164":{"title":"TraitTarget","titles":["Types"]},"165":{"title":"BoolsAsTypes","titles":["Types"]},"166":{"title":"GEOS","titles":["Types"]},"167":{"title":"Utility functions","titles":[]},"168":{"title":"Creating Geometry","titles":[]},"169":{"title":"Creating and plotting geometries","titles":["Creating Geometry"]},"170":{"title":"Plot geometries on a map using GeoMakie and coordinate reference system (CRS)","titles":["Creating Geometry"]},"171":{"title":"Create geospatial geometries with embedded coordinate reference system information","titles":["Creating Geometry"]},"172":{"title":"Creating a table with attributes and geometry","titles":["Creating Geometry"]},"173":{"title":"Saving your geospatial data","titles":["Creating Geometry"]},"174":{"title":"Geodesic paths","titles":[]},"175":{"title":"Spatial joins","titles":[]},"176":{"title":"Simple example","titles":["Spatial joins"]},"177":{"title":"Real-world example","titles":["Spatial joins"]},"178":{"title":"Enabling custom predicates","titles":["Spatial joins"]}},"dirtCount":0,"index":[["⋮",{"2":{"170":1}}],["θ",{"2":{"169":7,"170":3,"171":5}}],["☁",{"2":{"169":1}}],["✈",{"2":{"169":1}}],["÷",{"2":{"136":2}}],["ϵ",{"2":{"54":5}}],["∘",{"2":{"54":1,"103":2,"127":2,"141":1,"156":2,"178":2}}],["⊻",{"2":{"45":1,"52":2}}],["≥",{"2":{"45":1,"97":2,"145":1,"158":1}}],["α≈1",{"2":{"54":1}}],["α≈0",{"2":{"54":1}}],["α2",{"2":{"45":4,"54":2}}],["α",{"2":{"45":3,"54":28,"97":7}}],["α1",{"2":{"45":4,"54":2}}],["β2",{"2":{"45":4,"54":2}}],["β",{"2":{"45":4,"54":28,"97":7}}],["β1",{"2":{"45":4,"54":2}}],["≤",{"2":{"45":5,"47":14,"97":6,"158":1,"160":1,"167":4}}],["^",{"2":{"170":1}}],["^3",{"2":{"170":1}}],["^n",{"2":{"126":1}}],["^2",{"2":{"44":2,"66":2}}],["^hormannpresentation",{"2":{"40":2}}],["∑λ",{"2":{"40":2}}],["∑i=2n",{"2":{"6":1}}],["`$",{"2":{"166":1}}],["`libgeos",{"2":{"166":1}}],["`linearring`",{"2":{"153":1}}],["`linearsegments`",{"2":{"153":1}}],["`linestring`",{"2":{"153":1}}],["`linestringtrait`",{"2":{"141":1}}],["`line2`",{"2":{"126":1}}],["`line1`",{"2":{"126":1}}],["`line",{"2":{"53":4}}],["`inf`",{"2":{"148":1}}],["`intersects`",{"2":{"100":1}}],["`intersectingpolygons`",{"2":{"51":1,"53":1,"62":1}}],["`prefilter",{"2":{"156":1}}],["`proj",{"2":{"148":1,"152":2}}],["`polgontrait`",{"2":{"136":1}}],["`polygontrait`",{"2":{"136":1,"141":1}}],["`polygonize`",{"2":{"127":2}}],["`polygon`",{"2":{"40":3}}],["`polys`",{"2":{"52":1}}],["`poly",{"2":{"45":3,"52":3,"54":1,"63":1}}],["`pointrait`",{"2":{"156":1}}],["`pointtrait`",{"2":{"136":3,"141":1}}],["`point",{"2":{"97":3}}],["`point`",{"2":{"40":4,"66":1}}],["`point2f`",{"2":{"39":1}}],["`equatorial",{"2":{"152":2}}],["`extents",{"2":{"146":1}}],["`enumerate",{"2":{"45":3}}],["`obj`",{"2":{"136":1,"161":1,"162":1}}],["`op`",{"2":{"136":2}}],["`+`",{"2":{"136":1}}],["`alg",{"2":{"166":1}}],["`alg`",{"2":{"160":1}}],["`always",{"2":{"148":1}}],["`application",{"2":{"141":1}}],["`apply`",{"2":{"136":1,"164":1}}],["`abstractgeometrytrait`",{"2":{"136":1}}],["`abstractarray`",{"2":{"136":1}}],["`abstractmatrix`",{"2":{"127":1}}],["`calc",{"2":{"133":1}}],["`crs`",{"2":{"133":1}}],["`components`",{"2":{"136":1}}],["`collect`",{"2":{"136":1}}],["`covers`",{"2":{"75":1,"85":1}}],["`coveredby`",{"2":{"75":1,"85":1}}],["`contains`",{"2":{"72":1,"116":1}}],["`convex",{"2":{"61":2}}],["`union",{"2":{"127":2}}],["`unionintersectingpolygons`",{"2":{"145":1}}],["`unionintersectingpolygons",{"2":{"51":1,"52":2,"53":1,"54":2,"62":1,"63":2}}],["`ys`",{"2":{"127":1}}],["`flattening`",{"2":{"152":1}}],["`flattening",{"2":{"152":1}}],["`flatten`",{"2":{"136":1}}],["`f",{"2":{"136":1}}],["`featurecollectiontrait`",{"2":{"136":2}}],["`featurecollection`",{"2":{"127":2}}],["`featuretrait`",{"2":{"136":3}}],["`feature`s",{"2":{"127":1}}],["`f`",{"2":{"127":5,"136":6,"161":2,"166":1}}],["`false`",{"2":{"126":1,"127":1,"133":4,"148":1}}],["`fix",{"2":{"51":2,"52":2,"53":2,"54":2,"62":2,"63":2}}],["`douglaspeucker`",{"2":{"156":1}}],["`d`",{"2":{"148":1}}],["`difference`",{"2":{"145":1}}],["`disjoint`",{"2":{"100":1}}],["`delaunaytriangulation",{"2":{"61":1}}],["`within`",{"2":{"72":1,"116":1}}],["`weight`",{"2":{"40":1}}],["`geos`",{"2":{"166":3}}],["`geodesic`",{"2":{"152":1}}],["`geodesicsegments`",{"2":{"151":1,"152":1,"153":1}}],["`geointerface`",{"2":{"141":1}}],["`geointerface",{"2":{"136":2,"148":2}}],["`geom`",{"2":{"66":3,"136":1,"153":1}}],["`geometrycorrection`",{"2":{"139":1,"141":1,"145":2}}],["`geometry`",{"2":{"136":1,"148":2}}],["`geometrybasics",{"2":{"40":3}}],["`geometries`",{"2":{"61":1}}],["`g1`",{"2":{"66":1}}],["`gi",{"2":{"61":1,"127":1}}],["`tuple",{"2":{"167":1}}],["`tuple`s",{"2":{"162":1}}],["`tuple`",{"2":{"127":1,"162":1}}],["`time`",{"2":{"148":1}}],["`transform`",{"2":{"148":1}}],["`true`",{"2":{"75":1,"86":1,"89":2,"106":1,"116":1,"126":2,"127":1,"133":2,"148":1}}],["`threaded==true`",{"2":{"136":1}}],["`threaded`",{"2":{"133":1}}],["`tol`",{"2":{"156":2,"157":3,"158":2,"159":3,"160":4}}],["`to",{"2":{"54":1}}],["`target",{"2":{"148":3}}],["`target`",{"2":{"53":1,"136":4,"164":1}}],["`tables",{"2":{"136":1}}],["`taget`",{"2":{"51":1,"62":1}}],["`method",{"2":{"153":1}}],["`method`",{"2":{"40":3,"153":1}}],["`max",{"2":{"152":4,"153":2,"166":1}}],["`makie",{"2":{"127":1}}],["`multipointtrait`",{"2":{"136":1,"156":1}}],["`multipolygontrait`",{"2":{"136":1}}],["`multipolygon`",{"2":{"127":3}}],["`multipolygon",{"2":{"52":3,"54":3,"63":2}}],["`multipoly",{"2":{"52":7,"54":3,"63":3}}],["`minpoints`",{"2":{"127":2}}],["`number`",{"2":{"156":2,"160":3}}],["`namedtuple`",{"2":{"136":1}}],["`nothing`",{"2":{"45":1,"133":1}}],["`next",{"2":{"45":1}}],["`bool`",{"2":{"127":2}}],["`buffer`",{"2":{"41":1}}],["`barycentric",{"2":{"40":3}}],["`radialdistance`",{"2":{"156":1}}],["`ratio`",{"2":{"156":2,"160":3}}],["`reproject`",{"2":{"149":1}}],["`rebuild`",{"2":{"136":1}}],["`ring`",{"2":{"45":1}}],["`r`",{"2":{"40":1}}],["`rᵢ`",{"2":{"40":1}}],["`segmentize`",{"2":{"166":1}}],["`svector`",{"2":{"161":3}}],["`simplifyalg`",{"2":{"156":2}}],["`simplify",{"2":{"156":1}}],["`simplify`",{"2":{"156":2}}],["`source",{"2":{"148":3}}],["`s`",{"2":{"40":1}}],["`sᵢ`",{"2":{"40":2}}],["`s2`",{"2":{"40":1}}],["`s1`",{"2":{"40":1}}],["`hcat`",{"2":{"40":1}}],["`x`",{"2":{"136":1}}],["`xs`",{"2":{"127":1}}],["`x1",{"2":{"40":1}}],["`x1`",{"2":{"40":2}}],["`x2`",{"2":{"40":1}}],["`visvalingamwhyatt`",{"2":{"156":1}}],["`vector",{"2":{"148":1}}],["`vector`",{"2":{"127":1,"136":1}}],["`vᵢ`",{"2":{"40":1}}],["`v`",{"2":{"40":1}}],["`values`",{"2":{"40":1,"127":1}}],["`λs`",{"2":{"40":2}}],["`",{"2":{"40":2,"45":3,"51":1,"52":2,"53":1,"54":3,"62":1,"63":2,"127":3,"136":1,"141":2,"148":2,"153":1,"156":3,"166":2,"167":1}}],["```jldoctest",{"2":{"50":1,"51":1,"53":1,"54":1,"62":1,"69":1,"72":1,"75":1,"85":1,"89":1,"100":1,"103":1,"106":1,"116":1,"126":1,"156":1}}],["```julia",{"2":{"6":2,"40":1,"86":1,"126":1,"136":1,"161":2,"164":1}}],["```math",{"2":{"40":1,"126":1}}],["```",{"2":{"11":1,"40":3,"50":1,"51":1,"53":1,"62":1,"69":1,"72":1,"75":1,"85":1,"89":1,"100":1,"103":1,"106":1,"116":1,"126":3,"127":11,"136":1,"156":1,"161":2,"167":1}}],["λ₁",{"2":{"40":2}}],["λn",{"2":{"38":1}}],["λ3",{"2":{"38":1}}],["λ2",{"2":{"38":2}}],["λ1",{"2":{"38":2}}],["λs",{"2":{"5":3,"6":4,"40":27}}],["π",{"2":{"34":1,"156":1}}],["δbay",{"2":{"54":3}}],["δbax",{"2":{"54":3}}],["δby",{"2":{"54":5}}],["δbx",{"2":{"54":5}}],["δb",{"2":{"54":2}}],["δay",{"2":{"54":5}}],["δax",{"2":{"54":5}}],["δa",{"2":{"54":2}}],["δintrs",{"2":{"45":2}}],["δy2",{"2":{"126":2}}],["δy1",{"2":{"126":2}}],["δyl",{"2":{"103":4}}],["δy",{"2":{"34":8,"47":3,"97":7}}],["δys",{"2":{"34":1}}],["δx2",{"2":{"126":2}}],["δx1",{"2":{"126":2}}],["δxl",{"2":{"103":4}}],["δx",{"2":{"34":9,"47":3,"97":7}}],["∈",{"2":{"14":1}}],["~",{"2":{"14":3}}],["$ratio",{"2":{"160":1}}],["$rectangle",{"2":{"152":2}}],["$number",{"2":{"160":1}}],["$name",{"2":{"31":2}}],["$min",{"2":{"160":1}}],["$douglas",{"2":{"156":1,"158":1}}],["$simplify",{"2":{"156":1,"157":1,"159":1}}],["$lg",{"2":{"152":1}}],["$lin",{"2":{"152":2}}],["$geom",{"2":{"156":8}}],["$geo",{"2":{"152":1}}],["$apply",{"2":{"136":1,"147":1,"148":1,"156":1}}],["$calc",{"2":{"133":1}}],["$crs",{"2":{"133":1,"146":1}}],["$tol",{"2":{"160":1}}],["$threaded",{"2":{"133":1}}],["$t",{"2":{"69":1,"136":4}}],["$target",{"2":{"52":1,"54":1,"63":1,"136":3}}],["$trait",{"2":{"50":1,"52":2,"54":2,"63":2}}],["$",{"2":{"13":4,"14":1,"40":4,"45":3,"127":3,"141":4,"153":1,"156":12,"166":1}}],["|=",{"2":{"97":4,"103":1}}],["||",{"2":{"34":2,"45":13,"47":8,"50":1,"53":1,"54":5,"62":1,"69":18,"86":2,"97":8,"103":1,"108":1,"127":7,"158":1,"160":3}}],["|",{"2":{"11":4,"97":1}}],["|>",{"2":{"11":8,"13":2,"136":1,"151":1,"152":1,"156":3,"177":2}}],["↩︎",{"2":{"6":1}}],["ᵢᵢᵢ₊₁ᵢᵢ₊₁ᵢᵢ₊₁tᵢ=det",{"2":{"6":1}}],["⋅",{"2":{"6":1,"40":1}}],["qy",{"2":{"13":2,"14":2}}],["qx",{"2":{"13":2,"14":2}}],["q",{"2":{"13":13,"14":12,"45":4}}],["qhull",{"2":{"6":1,"61":1}}],["queue",{"2":{"158":41}}],["questions",{"2":{"54":1}}],["quite",{"2":{"138":1,"177":1}}],["quickhull",{"2":{"6":1,"56":1,"61":2}}],["quick",{"2":{"4":1,"6":1,"40":1,"146":1,"155":1}}],["quality",{"2":{"6":1,"156":1}}],["quantity",{"2":{"6":1,"152":1}}],["quot",{"2":{"1":4,"6":10,"20":2,"45":8,"65":2,"66":2,"69":2,"84":4,"97":10,"134":2,"136":8,"150":6,"169":2,"176":2}}],["zone",{"2":{"170":1}}],["zoom",{"2":{"14":1}}],["zs",{"2":{"127":5}}],["zip",{"2":{"13":1,"14":1,"169":4,"170":1,"171":1}}],["zeros",{"2":{"40":1,"47":1}}],["zero",{"2":{"4":6,"6":8,"37":11,"44":3,"45":4,"47":11,"54":22,"65":1,"66":3,"126":1,"136":1,"158":4}}],["z",{"2":{"4":1,"5":1,"6":2,"40":3,"69":3,"127":3,"147":1,"161":1,"162":1}}],["0e6",{"2":{"170":6}}],["0example",{"2":{"6":1}}],["097075198097933",{"2":{"171":1}}],["09707519809793252",{"2":{"171":2}}],["091887951911644",{"2":{"171":3}}],["0999933334666654",{"2":{"169":1}}],["09801605542096",{"2":{"169":1}}],["098016055420953",{"2":{"169":3}}],["09297443860091348",{"2":{"169":4}}],["09",{"2":{"39":1}}],["08506974233813636",{"2":{"171":2}}],["08",{"2":{"39":1}}],["062749678615475",{"2":{"171":1}}],["06274967861547665",{"2":{"171":2}}],["06592462566760626",{"2":{"169":1}}],["0650624499034016",{"2":{"169":4}}],["06",{"2":{"39":1}}],["02017324484778",{"2":{"171":1}}],["020173244847778715",{"2":{"171":2}}],["027886421973952302",{"2":{"169":4}}],["02",{"2":{"39":3}}],["04500741774392",{"2":{"171":1}}],["045007417743918",{"2":{"171":2}}],["049999166670833324",{"2":{"169":1}}],["0438052480035",{"2":{"169":1}}],["043805248003498",{"2":{"169":3}}],["04",{"2":{"39":6}}],["07518688541961",{"2":{"171":1}}],["075186885419612",{"2":{"171":2}}],["071",{"2":{"151":2,"152":2}}],["07",{"2":{"39":6,"151":6,"152":6}}],["009176636029576",{"2":{"171":1}}],["0091766360295773",{"2":{"171":2}}],["003135308800957",{"2":{"171":1}}],["0031353088009582475",{"2":{"171":2}}],["0035114210915891397",{"2":{"169":4}}],["006784125578492062",{"2":{"171":2}}],["0020133807972559925",{"2":{"171":2}}],["00839489109211",{"2":{"171":3}}],["008696",{"2":{"3":1,"6":3,"53":1,"54":1,"99":1,"100":1}}],["005465967083412071",{"2":{"169":4}}],["00111595449914",{"2":{"169":1}}],["001115954499138",{"2":{"169":3}}],["0010075412835199304",{"2":{"169":4}}],["001",{"2":{"156":1}}],["00085222666982",{"2":{"171":3}}],["000577332369005",{"2":{"171":1}}],["0005773323690041465",{"2":{"171":2}}],["000510363870095e6",{"2":{"170":2}}],["00025191811248184703",{"2":{"171":2}}],["000215611503127e6",{"2":{"170":2}}],["0007260527263e6",{"2":{"170":2}}],["000342160541625e6",{"2":{"170":2}}],["000124843834609e6",{"2":{"170":2}}],["000063948817746e6",{"2":{"170":2}}],["000026987852369e6",{"2":{"170":2}}],["000008144045314",{"2":{"171":1}}],["000007998400139e6",{"2":{"170":2}}],["000000999950001e6",{"2":{"170":2}}],["00001e6",{"2":{"170":1}}],["0004397316773170068",{"2":{"169":4}}],["000",{"2":{"156":1,"174":1}}],["00",{"2":{"39":2}}],["053798628882221644",{"2":{"171":2}}],["05877989361332",{"2":{"169":1}}],["058779893613323",{"2":{"169":3}}],["05416726609360478",{"2":{"169":4}}],["05",{"2":{"39":1}}],["052704767595",{"2":{"15":1}}],["037564867762832",{"2":{"171":1}}],["03756486776283019",{"2":{"171":2}}],["031245035570328428",{"2":{"171":2}}],["033518309870985",{"2":{"171":3}}],["03503632062070827",{"2":{"169":4}}],["03",{"2":{"39":4}}],["01458815628695",{"2":{"171":3}}],["016044338630866517",{"2":{"171":2}}],["01592650896568995",{"2":{"169":1}}],["01597247419241532",{"2":{"169":4}}],["01908693278165",{"2":{"169":1}}],["019086932781654",{"2":{"169":3}}],["01098781325325",{"2":{"169":1}}],["010987813253244",{"2":{"169":3}}],["011814947665167774",{"2":{"169":4}}],["01362848005",{"2":{"15":1}}],["01",{"2":{"14":1,"39":1,"151":1,"152":1,"169":1,"170":1,"171":1}}],["0^",{"2":{"13":2,"14":2}}],["0+2",{"2":{"13":2,"14":2}}],["0",{"2":{"3":35,"4":12,"6":190,"11":1,"13":5,"14":8,"15":32,"33":20,"34":3,"36":9,"37":4,"39":155,"40":2,"43":6,"44":6,"45":49,"46":13,"47":5,"49":22,"50":49,"51":42,"53":2,"54":21,"59":1,"62":46,"63":2,"65":20,"66":2,"68":13,"69":18,"71":16,"74":6,"75":6,"84":6,"85":12,"86":9,"88":15,"97":37,"102":13,"103":9,"105":12,"106":11,"115":16,"126":21,"127":7,"138":24,"144":64,"145":4,"151":16,"152":13,"153":1,"156":11,"158":7,"160":4,"167":2,"169":129,"170":2,"171":46,"176":13}}],[">=",{"2":{"40":6,"86":4,"103":1,"160":1}}],[">",{"2":{"1":1,"6":6,"11":2,"13":1,"15":2,"34":1,"40":1,"45":18,"47":3,"50":5,"51":1,"52":1,"54":2,"62":1,"63":3,"65":1,"69":1,"86":8,"97":10,"103":2,"126":4,"127":12,"136":5,"141":1,"145":3,"153":2,"156":1,"158":12,"160":3,"161":1,"167":1,"177":1}}],["914930257661865",{"2":{"171":1}}],["96875496442967",{"2":{"171":1}}],["961329",{"2":{"3":1,"6":3,"53":1,"54":1,"99":1,"100":1}}],["983955661369134",{"2":{"171":1}}],["9833",{"2":{"15":1}}],["9877550012664",{"2":{"169":1}}],["9840085315131",{"2":{"169":1}}],["98271048511609",{"2":{"169":1}}],["98661575256801",{"2":{"169":1}}],["99321587442151",{"2":{"171":1}}],["99375130197483",{"2":{"169":1}}],["997986619202745",{"2":{"171":1}}],["997750168744936",{"2":{"169":1}}],["997247091122496",{"2":{"169":1}}],["99600053330489",{"2":{"169":1}}],["991002699676024",{"2":{"169":1}}],["990022362600165",{"2":{"169":1}}],["99292997455441",{"2":{"169":1}}],["99533829767195",{"2":{"169":1}}],["99865616402829",{"2":{"169":1}}],["999999967681458e6",{"2":{"170":2}}],["999997707902938e6",{"2":{"170":2}}],["999987539891298e6",{"2":{"170":2}}],["999963474314044e6",{"2":{"170":2}}],["999919535736425e6",{"2":{"170":2}}],["999974634566875",{"2":{"169":1}}],["999849768598615e6",{"2":{"170":2}}],["999748081887518",{"2":{"171":1}}],["999748243174828e6",{"2":{"170":2}}],["999750002083324",{"2":{"169":1}}],["999609061508909e6",{"2":{"170":2}}],["999426363321033e6",{"2":{"170":2}}],["999194331880103e6",{"2":{"170":2}}],["99900003333289",{"2":{"169":1}}],["999565375483215",{"2":{"169":1}}],["9im",{"2":{"97":2,"175":1}}],["97976366505997",{"2":{"169":1}}],["9783069507679",{"2":{"169":1}}],["97",{"2":{"39":1}}],["946201371117777",{"2":{"171":1}}],["94",{"2":{"39":1}}],["92",{"2":{"39":1}}],["95770326033",{"2":{"15":1}}],["95",{"2":{"13":1,"14":1,"174":1}}],["900",{"2":{"152":1}}],["90063612163",{"2":{"11":2}}],["90",{"2":{"33":9,"39":1}}],["909318372607",{"2":{"11":3}}],["9",{"2":{"1":1,"6":1,"97":2,"126":12,"151":1,"161":1}}],["897070",{"2":{"174":1}}],["873633668827033",{"2":{"171":1}}],["8135804051007",{"2":{"169":1}}],["813580405100698",{"2":{"169":3}}],["88",{"2":{"39":1}}],["86641841658641",{"2":{"169":1}}],["866418416586406",{"2":{"169":3}}],["86",{"2":{"39":1}}],["868447876892",{"2":{"15":2}}],["84",{"2":{"39":1}}],["821068835162155",{"2":{"171":1}}],["82",{"2":{"39":1}}],["800",{"2":{"39":1}}],["80000",{"2":{"15":5}}],["80",{"2":{"39":1}}],["80869813739",{"2":{"15":2}}],["856614689791036e",{"2":{"15":2}}],["83572303404496",{"2":{"6":2,"53":1,"54":1}}],["8",{"2":{"1":3,"6":9,"13":1,"14":1,"51":2,"62":4,"97":1,"127":3,"151":1,"161":3,"171":2}}],["karnataka",{"2":{"177":1}}],["kbn",{"2":{"11":2}}],["kinds",{"2":{"23":1}}],["kind",{"2":{"9":1,"127":1}}],["k",{"2":{"6":1,"14":6,"40":1,"45":5,"97":5,"169":5,"171":5}}],["kernel",{"2":{"153":4}}],["keepat",{"2":{"62":1,"145":2}}],["keep",{"2":{"45":3,"127":1,"145":14,"151":1,"176":1}}],["keeping",{"2":{"6":1,"136":1,"147":1}}],["keys",{"2":{"127":4}}],["key",{"2":{"6":1,"127":4,"166":5}}],["keyword",{"2":{"6":8,"23":1,"51":1,"53":1,"62":1,"133":6,"136":1,"146":2,"152":2,"166":4,"170":1,"171":1}}],["keywords",{"2":{"1":2,"4":1,"6":10,"97":2,"127":1,"133":1,"136":1,"146":1,"147":2,"148":3,"156":8,"157":1,"158":1,"159":1,"160":1,"162":2}}],["known",{"2":{"47":2}}],["know",{"2":{"6":3,"34":2,"45":1,"47":1,"51":1,"53":1,"54":2,"62":1,"63":1,"136":1,"176":1}}],["kwargs",{"2":{"41":3,"47":1,"50":1,"51":3,"52":3,"53":4,"54":5,"62":3,"63":5,"141":2,"149":1,"152":1}}],["kwdef",{"2":{"31":1,"45":1,"152":1,"157":1,"158":1,"159":1}}],["kw",{"2":{"1":1,"6":11,"97":10,"127":20,"136":21,"147":3,"156":15,"159":1,"161":3,"162":3,"166":6}}],["json",{"2":{"173":3}}],["jstep",{"2":{"69":3}}],["jstart",{"2":{"69":7}}],["joined",{"2":{"176":4}}],["joins",{"0":{"175":1},"1":{"176":1,"177":1,"178":1},"2":{"175":3}}],["joinpath",{"2":{"156":2}}],["join",{"2":{"136":2,"175":4,"176":5,"178":1}}],["joining",{"2":{"6":2,"156":1,"175":1}}],["jpn",{"2":{"177":2}}],["jp",{"2":{"69":2}}],["jhole",{"2":{"69":2}}],["jh",{"2":{"63":5}}],["j+1",{"2":{"45":1,"127":1,"160":1}}],["j",{"2":{"45":24,"69":8,"86":9,"97":12,"126":2,"127":8,"160":2}}],["jet",{"2":{"39":1}}],["just",{"2":{"4":1,"6":1,"44":1,"45":2,"54":4,"60":1,"63":1,"66":2,"127":1,"134":1,"136":3,"152":1,"175":1}}],["julialand",{"2":{"170":2}}],["julialines",{"2":{"36":1}}],["julialinearsegments",{"2":{"6":1}}],["juliahole",{"2":{"169":1}}],["juliaplot",{"2":{"170":2}}],["juliap1",{"2":{"169":1}}],["juliapoly",{"2":{"170":1}}],["juliapolygon3",{"2":{"170":1}}],["juliapolygon1",{"2":{"169":1}}],["juliapolygonize",{"2":{"6":1}}],["juliapolygon",{"2":{"6":1}}],["juliapoints",{"2":{"176":1}}],["juliapoint",{"2":{"169":1}}],["juliaxoffset",{"2":{"169":3,"171":1}}],["juliax",{"2":{"169":2}}],["juliaxrange",{"2":{"65":1}}],["julia$apply",{"2":{"162":1}}],["julia$threaded",{"2":{"146":1}}],["julia6",{"2":{"156":1}}],["julia```jldoctest",{"2":{"167":1}}],["julia```julia",{"2":{"127":1}}],["julia```",{"2":{"86":1,"164":1}}],["julia1",{"2":{"51":1,"53":1,"54":1,"62":1}}],["julia2",{"2":{"50":1}}],["juliabase",{"2":{"40":1,"66":4,"136":1,"166":1}}],["juliabarycentric",{"2":{"5":3,"6":3}}],["juliafig",{"2":{"169":1,"170":1}}],["juliafalse",{"2":{"126":1}}],["juliafunction",{"2":{"34":2,"40":3,"41":2,"44":1,"45":11,"47":2,"50":1,"52":1,"54":2,"61":1,"63":1,"66":8,"97":6,"103":2,"108":1,"128":1,"136":5,"149":1,"152":1,"160":2}}],["juliafor",{"2":{"31":1,"136":2}}],["juliaflexijoins",{"2":{"178":1}}],["juliaflipped",{"2":{"129":1}}],["juliaflip",{"2":{"6":1}}],["juliaflatten",{"2":{"6":1,"131":1}}],["juliagi",{"2":{"11":2}}],["juliago",{"2":{"11":1,"33":1,"36":1,"46":1,"68":1,"71":1,"74":1,"84":1,"88":1,"99":1,"102":1,"105":1,"115":1,"175":1}}],["juliageopoly1",{"2":{"171":1}}],["juliageointerface",{"2":{"167":1}}],["juliageometry",{"2":{"61":1}}],["juliageo",{"2":{"6":2}}],["juliageodesicsegments",{"2":{"6":1}}],["juliageos",{"2":{"6":1}}],["juliaweighted",{"2":{"6":1}}],["juliawithin",{"2":{"3":1,"6":1}}],["juliaunwrap",{"2":{"6":1,"136":6}}],["juliaunion",{"2":{"6":1}}],["juliaunionintersectingpolygons",{"2":{"6":1,"142":1}}],["juliausing",{"2":{"6":1,"13":1,"14":1,"39":1,"151":2,"152":1,"155":1,"156":1,"172":1}}],["juliascatter",{"2":{"176":1}}],["juliasource",{"2":{"170":2}}],["juliasimplify",{"2":{"6":1,"156":3}}],["juliasigned",{"2":{"4":2,"6":2}}],["juliasegmentize",{"2":{"6":1}}],["julias1",{"2":{"6":1}}],["juliavisvalingamwhyatt",{"2":{"6":1}}],["juliaring3",{"2":{"170":1}}],["juliaring1",{"2":{"169":1}}],["juliar",{"2":{"169":2,"170":1,"171":1}}],["juliareconstruct",{"2":{"6":1,"131":1}}],["juliarebuild",{"2":{"6":1,"131":1}}],["juliareproject",{"2":{"1":1}}],["juliaradialdistance",{"2":{"6":1}}],["juliamy",{"2":{"178":1}}],["juliamultipoly",{"2":{"156":1}}],["juliamodule",{"2":{"31":1}}],["juliamonotonechainmethod",{"2":{"6":1}}],["juliameanvalue",{"2":{"6":1}}],["juliadf",{"2":{"172":1}}],["juliadestination",{"2":{"170":1}}],["juliadouglaspeucker",{"2":{"6":1}}],["juliadifference",{"2":{"6":1}}],["juliadiffintersectingpolygons",{"2":{"6":1,"142":1}}],["juliadistance",{"2":{"4":1,"6":1}}],["juliadisjoint",{"2":{"3":1,"6":1}}],["juliaexport",{"2":{"32":1,"35":1,"38":1,"42":1,"48":1,"51":1,"53":1,"62":1,"64":1,"67":1,"70":1,"73":1,"83":1,"87":1,"98":1,"101":1,"104":1,"114":1,"124":1,"127":1,"129":1,"137":1,"140":1,"143":1,"148":1,"150":1,"156":1,"163":1}}],["juliaend",{"2":{"66":1}}],["juliaenforce",{"2":{"6":1}}],["juliaenum",{"2":{"6":2}}],["juliaembed",{"2":{"4":1,"6":1}}],["juliaequals",{"2":{"4":15,"6":15,"45":1}}],["juliaaccuratearithmetic",{"2":{"11":2}}],["juliaabstract",{"2":{"6":3,"141":1,"142":1,"152":1,"165":1}}],["juliaangles",{"2":{"4":1,"6":1}}],["juliaarea",{"2":{"4":1,"6":1}}],["juliaapplyreduce",{"2":{"1":1,"6":1}}],["juliaapply",{"2":{"1":1,"6":1,"18":1}}],["juliacent",{"2":{"43":1}}],["juliacentroid",{"2":{"4":1,"6":3}}],["juliacut",{"2":{"6":1}}],["juliaclosedring",{"2":{"6":1,"142":1}}],["juliaconst",{"2":{"34":1,"37":1,"40":1,"45":1,"47":2,"66":1,"75":1,"89":1,"106":1,"116":1,"133":1}}],["juliaconvex",{"2":{"6":1,"61":1}}],["juliacontains",{"2":{"3":1,"6":1}}],["juliacoverage",{"2":{"6":1}}],["juliacovers",{"2":{"3":1,"6":1}}],["juliacoveredby",{"2":{"3":1,"6":1}}],["juliatrue",{"2":{"69":1,"72":1,"75":1,"85":1,"89":1,"100":1,"103":1,"106":1,"116":1,"126":1}}],["juliatraittarget",{"2":{"6":2,"164":1}}],["juliatransform",{"2":{"1":1,"6":1}}],["juliatuples",{"2":{"6":1}}],["juliat",{"2":{"6":1}}],["juliatouches",{"2":{"3":1,"6":1}}],["juliaoverlaps",{"2":{"3":9,"6":9}}],["juliainnerjoin",{"2":{"177":1}}],["juliaintersection",{"2":{"6":2}}],["juliaintersects",{"2":{"3":1}}],["juliaisconcave",{"2":{"6":1}}],["juliaisclockwise",{"2":{"6":1}}],["juliaimport",{"2":{"1":1,"3":9,"4":1,"6":18,"11":1,"33":1,"36":1,"43":1,"46":1,"49":1,"58":1,"59":1,"60":1,"65":1,"68":1,"71":1,"74":1,"84":1,"88":1,"99":1,"102":1,"105":1,"115":1,"138":2,"144":2,"151":1,"173":4,"174":1,"176":1,"177":1}}],["julia",{"2":{"3":1,"6":5,"9":1,"15":1,"25":1,"27":1,"31":1,"34":4,"37":10,"40":8,"44":19,"45":63,"47":18,"50":10,"51":6,"52":1,"53":5,"54":29,"56":1,"61":5,"62":6,"63":4,"65":1,"66":4,"69":15,"72":1,"76":1,"77":5,"78":1,"79":1,"80":2,"81":1,"82":1,"85":1,"86":3,"90":1,"91":3,"92":1,"93":1,"94":1,"95":1,"96":1,"97":50,"100":1,"103":7,"107":1,"108":3,"109":1,"110":1,"111":1,"112":1,"113":1,"117":1,"118":3,"119":1,"120":1,"121":2,"122":1,"123":1,"126":9,"127":40,"128":2,"136":63,"139":5,"141":1,"145":3,"146":1,"147":1,"148":1,"152":1,"153":2,"156":1,"157":2,"158":15,"159":3,"161":1,"162":1,"163":1,"164":1,"166":4,"167":1,"168":2,"170":2,"173":2,"175":1,"176":1}}],["julia>",{"2":{"1":5,"6":7,"126":3,"161":7}}],["juliajulia>",{"2":{"1":2,"6":3}}],["jl`",{"2":{"61":1,"148":1,"166":1}}],["jldoctest",{"2":{"6":1}}],["jl",{"0":{"25":1,"31":1},"2":{"1":10,"4":1,"6":16,"10":2,"11":1,"22":2,"25":2,"27":2,"31":42,"34":1,"37":1,"40":1,"41":3,"44":1,"45":1,"47":1,"50":1,"52":1,"54":1,"55":1,"56":3,"61":6,"63":1,"66":1,"69":1,"72":1,"82":1,"85":1,"86":1,"96":1,"97":1,"100":1,"103":1,"113":1,"123":1,"126":2,"127":1,"128":1,"131":1,"136":3,"139":1,"142":1,"145":1,"146":2,"147":1,"148":4,"149":3,"150":1,"152":3,"153":2,"156":2,"160":1,"161":6,"162":2,"165":1,"166":2,"167":1,"170":1,"175":1}}],["+5000000",{"2":{"170":1}}],["+proj=natearth2",{"2":{"170":2}}],["+=",{"2":{"37":2,"40":11,"44":6,"45":17,"47":10,"50":1,"69":1,"86":1,"97":5,"126":1,"145":2,"158":4,"167":3}}],["+",{"2":{"1":1,"6":2,"13":1,"14":1,"34":4,"37":1,"40":20,"44":10,"45":15,"47":7,"50":1,"54":10,"66":3,"69":2,"86":2,"97":6,"126":6,"127":2,"145":3,"153":2,"158":3,"159":2,"160":2,"169":6,"170":1,"171":4}}],["yticklabelsvisible",{"2":{"170":1}}],["york",{"2":{"177":1}}],["yoffset",{"2":{"169":7,"171":2}}],["your",{"0":{"173":1},"2":{"18":1,"41":1,"127":1,"129":1,"149":1,"152":1,"172":1,"173":1,"178":2}}],["you",{"0":{"23":1},"2":{"1":1,"4":1,"5":2,"6":11,"9":1,"11":1,"17":1,"18":5,"23":1,"29":2,"34":1,"37":1,"40":8,"41":1,"44":1,"51":1,"53":1,"60":1,"61":1,"62":1,"129":1,"138":1,"144":1,"149":1,"151":1,"152":1,"153":1,"161":1,"164":1,"170":1,"172":2,"173":3,"176":2,"177":3,"178":4}}],["y=y",{"2":{"167":1}}],["yvec",{"2":{"127":4}}],["ybounds",{"2":{"127":4}}],["yhalf",{"2":{"127":3}}],["ylast",{"2":{"66":3}}],["yfirst",{"2":{"66":5}}],["y0",{"2":{"66":5}}],["yw",{"2":{"47":4}}],["ye",{"2":{"47":4}}],["yes",{"2":{"45":1}}],["yet",{"0":{"128":1},"2":{"31":1,"40":1,"50":1,"52":1,"54":1,"63":1,"69":1,"127":1,"128":1,"141":2,"177":1}}],["y2",{"2":{"44":2,"47":18,"66":7,"86":10,"97":5,"103":4,"127":5,"153":6,"167":2}}],["y1",{"2":{"44":2,"47":22,"66":7,"86":11,"97":6,"103":5,"127":5,"153":7,"167":2}}],["yind+1",{"2":{"127":1}}],["yind",{"2":{"127":2}}],["yinterior",{"2":{"44":2}}],["yield",{"2":{"54":1,"152":1}}],["yi+yi−1",{"2":{"6":1}}],["ycentroid",{"2":{"44":13}}],["yrange",{"2":{"39":3,"65":3}}],["yautolimits",{"2":{"39":2}}],["yp2",{"2":{"34":4}}],["ys",{"2":{"6":3,"127":30}}],["ymax",{"2":{"6":1,"46":2,"47":48}}],["ymin",{"2":{"6":1,"46":2,"47":49}}],["y",{"2":{"1":2,"4":1,"6":4,"13":9,"14":10,"34":8,"37":2,"39":8,"43":1,"44":10,"45":6,"46":1,"47":8,"52":6,"54":8,"65":2,"66":7,"69":3,"86":21,"97":16,"103":7,"126":10,"129":2,"136":1,"147":4,"148":1,"153":2,"160":1,"161":2,"162":2,"167":7,"169":8,"170":2,"171":2,"175":1}}],["75",{"2":{"65":2,"71":1,"88":1,"115":1}}],["78",{"2":{"39":1}}],["749907",{"2":{"174":1}}],["74",{"2":{"39":1}}],["72",{"2":{"39":1}}],["726711609794",{"2":{"15":1}}],["76",{"2":{"39":1}}],["76085",{"2":{"15":1}}],["768946",{"2":{"3":1,"6":3,"53":1,"54":1,"99":1,"100":1}}],["70440582002419",{"2":{"169":1}}],["704405820024185",{"2":{"169":3}}],["704377648755",{"2":{"15":2}}],["700",{"2":{"14":1}}],["700454",{"2":{"6":1,"155":1,"156":1}}],["701141",{"2":{"6":1,"155":1,"156":1}}],["70",{"2":{"6":20,"39":1,"155":20,"156":20,"169":20}}],["738281",{"2":{"3":1,"6":3,"53":1,"54":1,"99":1,"100":1}}],["7",{"2":{"1":5,"6":5,"97":1,"136":1,"151":4,"152":4,"161":4,"171":1}}],["65533525026046",{"2":{"169":1}}],["655335250260467",{"2":{"169":3}}],["659942",{"2":{"6":1,"155":1,"156":1}}],["6area",{"2":{"44":2}}],["66",{"2":{"39":1}}],["668869",{"2":{"6":1,"155":1,"156":1}}],["64744840486518",{"2":{"171":3}}],["64",{"2":{"39":1,"151":2,"152":2}}],["646209",{"2":{"6":1,"155":1,"156":1}}],["629",{"2":{"170":1}}],["62",{"2":{"39":1}}],["624923",{"2":{"6":1,"155":1,"156":1}}],["61366192682",{"2":{"15":1}}],["614624",{"2":{"6":1,"155":1,"156":1}}],["605000000000004",{"2":{"151":2}}],["60",{"2":{"39":1,"151":2}}],["60000",{"2":{"15":3}}],["609817",{"2":{"6":1,"155":1,"156":1}}],["603637",{"2":{"6":2,"155":2,"156":2}}],["68",{"2":{"39":1}}],["682601",{"2":{"6":1,"155":1,"156":1}}],["683975",{"2":{"6":1,"155":1,"156":1}}],["69159119078359",{"2":{"171":3}}],["694274",{"2":{"6":1,"155":1,"156":1}}],["697021",{"2":{"6":1,"155":1,"156":1}}],["639343",{"2":{"6":1,"155":1,"156":1}}],["6",{"2":{"1":12,"3":4,"6":23,"51":3,"62":3,"97":1,"103":4,"136":3,"156":1,"161":9,"171":2}}],["51695367760999",{"2":{"171":1}}],["516953677609987",{"2":{"171":2}}],["51030066635026",{"2":{"169":4}}],["5e6",{"2":{"170":2}}],["55715336218991",{"2":{"171":1}}],["557153362189904",{"2":{"171":2}}],["55",{"2":{"169":3}}],["55494217175954",{"2":{"169":4}}],["57",{"2":{"151":4,"152":4}}],["57725",{"2":{"15":2}}],["5x",{"2":{"136":1}}],["563198",{"2":{"54":1}}],["56",{"2":{"39":1}}],["54",{"2":{"39":1,"169":19}}],["50",{"2":{"39":1,"151":4,"152":4,"169":3}}],["500000",{"2":{"170":1}}],["50000",{"2":{"15":1}}],["500",{"2":{"14":1,"170":1}}],["5d",{"2":{"25":1,"27":1}}],["52",{"2":{"39":1,"174":1}}],["52521",{"2":{"15":1}}],["52709",{"2":{"15":2}}],["594711",{"2":{"6":1,"155":1,"156":1}}],["590591",{"2":{"6":1,"155":1,"156":1}}],["595397",{"2":{"6":1,"155":1,"156":1}}],["535",{"2":{"151":4}}],["5355",{"2":{"151":2}}],["53333",{"2":{"15":4}}],["53",{"2":{"6":10,"151":2,"167":10}}],["58",{"2":{"39":1}}],["58059",{"2":{"15":2}}],["587158",{"2":{"6":2,"155":2,"156":2}}],["58375366067548",{"2":{"6":2,"53":1,"54":1}}],["584961",{"2":{"3":1,"6":3,"53":1,"54":1,"99":1,"100":1}}],["5",{"2":{"1":29,"3":4,"4":8,"6":84,"13":1,"39":1,"49":5,"50":8,"51":16,"62":18,"65":8,"69":8,"97":1,"103":4,"127":1,"136":2,"151":1,"152":1,"161":27,"169":32,"170":25,"178":1}}],["4983491639274692e6",{"2":{"170":2}}],["4986507085647392e6",{"2":{"170":2}}],["497205585568957e6",{"2":{"170":2}}],["4976022389592e6",{"2":{"170":2}}],["4957639801366436e6",{"2":{"170":2}}],["4940253560034204e6",{"2":{"170":2}}],["4946113281484335e6",{"2":{"170":2}}],["491990928929295e6",{"2":{"170":2}}],["4904357734399722e6",{"2":{"170":2}}],["4926709788709967e6",{"2":{"170":2}}],["4962554647802354e6",{"2":{"170":2}}],["499984780817334e6",{"2":{"170":2}}],["4997392479570867e6",{"2":{"170":2}}],["4991939151049731e6",{"2":{"170":2}}],["4994001399837343e6",{"2":{"170":2}}],["4998500087497458e6",{"2":{"170":2}}],["49",{"2":{"127":1}}],["43541888381864",{"2":{"171":3}}],["4326",{"2":{"170":2,"171":3}}],["43787",{"2":{"15":1}}],["439295815226",{"2":{"15":1}}],["434306",{"2":{"6":1,"155":1,"156":1}}],["4896621210021754e6",{"2":{"170":2}}],["489271",{"2":{"6":4,"167":4}}],["4870405593989636e6",{"2":{"170":2}}],["4879072738504685e6",{"2":{"170":2}}],["484003",{"2":{"126":4}}],["482551",{"2":{"126":4}}],["48268",{"2":{"15":1}}],["48",{"2":{"39":1}}],["48001",{"2":{"15":1}}],["45",{"2":{"39":2,"126":12,"169":2}}],["450",{"2":{"13":1}}],["458369",{"2":{"6":2,"155":2,"156":2}}],["42004014766201",{"2":{"169":1}}],["420040147662014",{"2":{"169":3}}],["4219350464667047e",{"2":{"169":4}}],["42",{"2":{"13":1,"14":1,"39":3}}],["426283",{"2":{"6":1,"155":1,"156":1}}],["400",{"2":{"39":3}}],["40000",{"2":{"15":1}}],["40",{"2":{"14":1,"39":3}}],["406224",{"2":{"6":1,"155":1,"156":1}}],["404504",{"2":{"6":1,"155":1,"156":1}}],["41544701408748197",{"2":{"169":1}}],["41",{"2":{"39":1,"171":20}}],["41878",{"2":{"15":1}}],["414248",{"2":{"6":1,"155":1,"156":1}}],["419406",{"2":{"6":1,"155":1,"156":1}}],["4493927459900552",{"2":{"169":1}}],["44121252392",{"2":{"15":1}}],["44",{"2":{"14":1,"39":2}}],["442901",{"2":{"6":1,"155":1,"156":1}}],["446339",{"2":{"6":1,"155":1,"156":1}}],["477985",{"2":{"126":4}}],["47",{"2":{"39":3}}],["473835",{"2":{"6":1,"155":1,"156":1}}],["472117",{"2":{"6":2,"155":2,"156":2}}],["46525251631344455",{"2":{"169":1}}],["465816",{"2":{"6":1,"155":1,"156":1}}],["46",{"2":{"39":3}}],["468107",{"2":{"6":1,"155":1,"156":1}}],["464547",{"2":{"6":6,"167":6}}],["4",{"2":{"1":11,"3":4,"6":15,"9":2,"13":2,"14":1,"33":1,"47":1,"72":1,"85":1,"89":1,"97":2,"116":1,"126":1,"136":3,"151":1,"158":1,"161":8,"170":20,"173":2,"174":1}}],["358421",{"2":{"174":1}}],["3585",{"2":{"151":1}}],["35",{"2":{"39":3}}],["354492",{"2":{"3":1,"6":3,"53":1,"54":1,"99":1,"100":1}}],["38042741557976",{"2":{"169":1}}],["380427415579764",{"2":{"169":3}}],["38",{"2":{"39":3}}],["3655999675063154",{"2":{"169":1}}],["36",{"2":{"39":2}}],["360",{"2":{"34":1}}],["36022",{"2":{"15":1}}],["327284472232776",{"2":{"171":3}}],["32610",{"2":{"170":3}}],["32",{"2":{"39":3}}],["377956",{"2":{"174":1}}],["37",{"2":{"39":5}}],["3497142366876638",{"2":{"169":1}}],["34",{"2":{"39":3}}],["31571636123306385",{"2":{"169":1}}],["31",{"2":{"39":2}}],["30151010318639",{"2":{"169":4}}],["30527612515520186",{"2":{"169":4}}],["300",{"2":{"65":1}}],["30",{"2":{"14":2,"39":3,"169":2}}],["3376428491230612",{"2":{"169":4}}],["3390",{"2":{"97":1}}],["33333333333",{"2":{"15":1}}],["333333333336",{"2":{"15":3}}],["33",{"2":{"6":20,"155":20,"156":20}}],["3d",{"2":{"4":1,"6":1,"40":2,"69":1,"136":1,"150":1}}],["3",{"2":{"1":13,"3":4,"5":1,"6":29,"14":2,"40":13,"43":6,"45":1,"51":6,"62":5,"68":1,"72":1,"85":1,"89":1,"97":2,"102":1,"116":1,"127":7,"136":3,"144":16,"151":4,"156":3,"158":2,"160":1,"161":11,"170":1,"171":1,"176":1}}],["39945867303846",{"2":{"171":3}}],["3995734698458635",{"2":{"169":1}}],["399918",{"2":{"6":2,"155":2,"156":2}}],["394759",{"2":{"6":1,"155":1,"156":1}}],["392466",{"2":{"6":1,"155":1,"156":1}}],["395332",{"2":{"6":1,"155":1,"156":1}}],["39",{"0":{"30":1},"2":{"0":1,"3":1,"4":5,"6":21,"7":1,"9":2,"17":2,"18":1,"19":1,"23":1,"29":1,"34":1,"36":1,"37":1,"38":1,"39":3,"40":2,"43":6,"44":3,"45":28,"47":1,"49":1,"50":1,"52":1,"53":4,"54":1,"60":2,"63":2,"66":4,"69":7,"74":1,"84":2,"91":2,"97":19,"103":1,"105":2,"108":2,"127":3,"129":2,"131":3,"132":1,"136":5,"142":6,"143":1,"151":6,"152":1,"154":1,"156":2,"164":2,"165":3,"166":6,"168":1,"169":6,"170":6,"171":4,"172":4,"173":5,"175":1,"177":1,"178":2}}],["2upvc",{"2":{"170":1}}],["2pi",{"2":{"169":1,"170":1,"171":1}}],["2nd",{"2":{"54":6}}],["2335447787454",{"2":{"171":1}}],["233544778745394",{"2":{"171":2}}],["23",{"2":{"39":3,"97":1}}],["23699059147",{"2":{"15":1}}],["28",{"2":{"39":2}}],["28083",{"2":{"15":2}}],["2658011835867806",{"2":{"169":1}}],["26745668457025",{"2":{"169":1}}],["267456684570245",{"2":{"169":3}}],["26",{"2":{"39":5,"97":2}}],["24989584635339165",{"2":{"169":1}}],["24279488312757858",{"2":{"169":4}}],["24",{"2":{"39":7,"97":1,"171":9}}],["274364",{"2":{"51":1,"53":1,"62":1}}],["274363",{"2":{"51":1,"53":1,"62":1}}],["27",{"2":{"39":2}}],["275543",{"2":{"6":6,"167":6}}],["2d",{"2":{"25":1,"27":1,"150":1}}],["2^",{"2":{"14":1}}],["2158594260436434",{"2":{"169":1}}],["215118",{"2":{"6":4,"167":4}}],["21664550952386064",{"2":{"169":4}}],["21",{"2":{"39":4,"97":2,"171":40}}],["21427",{"2":{"11":5}}],["295828190107045",{"2":{"171":1}}],["29582819010705",{"2":{"171":2}}],["299820032397223",{"2":{"169":1}}],["29",{"2":{"39":3,"174":1}}],["29th",{"0":{"8":1},"1":{"9":1,"10":1}}],["298",{"2":{"6":2,"152":2}}],["20340",{"2":{"173":1}}],["20682326747054",{"2":{"171":1}}],["206823267470536",{"2":{"171":2}}],["20093817218219",{"2":{"169":1}}],["200938172182195",{"2":{"169":3}}],["2018",{"2":{"97":1}}],["2017",{"2":{"6":1,"40":1}}],["20",{"2":{"39":3,"97":2,"169":60,"171":1}}],["2024",{"0":{"7":1,"8":1},"1":{"9":1,"10":1}}],["20th",{"0":{"7":1}}],["25",{"2":{"39":3,"71":1,"97":1,"115":1,"171":12}}],["258",{"2":{"11":1}}],["25px",{"2":{"6":2}}],["257223563`",{"2":{"152":1}}],["257223563",{"2":{"6":2,"152":1}}],["22",{"2":{"39":3,"97":1}}],["22168",{"2":{"3":1,"6":3,"53":1,"54":1,"99":1,"100":1}}],["224758",{"2":{"3":1,"6":3,"53":1,"54":1,"99":1,"100":1}}],["2",{"2":{"1":19,"3":9,"5":1,"6":50,"13":1,"14":1,"15":3,"25":2,"27":2,"34":3,"37":1,"39":6,"40":32,"43":2,"44":4,"45":10,"46":6,"47":7,"49":1,"50":2,"54":2,"58":1,"59":1,"60":3,"61":1,"62":1,"65":1,"66":3,"69":4,"72":2,"85":2,"86":2,"88":2,"89":3,"97":11,"116":2,"126":2,"127":23,"136":5,"145":1,"153":1,"156":5,"158":7,"159":7,"160":5,"161":18,"167":11,"169":7,"170":6,"171":10,"172":1,"174":1}}],["1st",{"2":{"54":6}}],["198232937815632",{"2":{"171":1}}],["19823293781563178",{"2":{"171":2}}],["1999466709331708",{"2":{"169":1}}],["1998",{"2":{"51":1,"53":1,"62":1}}],["19",{"2":{"39":2,"97":2}}],["11591614996189725",{"2":{"169":1}}],["11966707868197",{"2":{"169":1}}],["119667078681967",{"2":{"169":3}}],["110m",{"2":{"170":2}}],["110",{"2":{"59":1,"170":1}}],["11",{"2":{"15":2,"39":2,"97":1}}],["1145",{"2":{"51":1,"53":1,"62":1}}],["114",{"2":{"7":1}}],["16589608273778408",{"2":{"169":1}}],["165644",{"2":{"126":2}}],["16692537029320365",{"2":{"169":4}}],["166644",{"2":{"126":2}}],["163434",{"2":{"126":2}}],["169356",{"2":{"126":2}}],["164434",{"2":{"126":2}}],["16111",{"2":{"15":1}}],["16",{"2":{"13":1,"14":1,"39":2,"97":2}}],["180",{"2":{"34":1,"126":1}}],["18593721105",{"2":{"15":1}}],["18",{"2":{"13":1,"14":1,"39":3,"97":2}}],["1em",{"2":{"6":2}}],["1px",{"2":{"6":2}}],["13309630561615",{"2":{"171":3}}],["13401805979",{"2":{"15":2}}],["13",{"2":{"6":3,"39":1,"51":1,"62":2,"97":1}}],["10n",{"2":{"170":1}}],["10832215707812454",{"2":{"169":4}}],["10^9",{"2":{"13":1}}],["1000000",{"2":{"170":1}}],["1000",{"2":{"13":2,"151":2,"170":1,"176":2}}],["100",{"2":{"6":2,"14":3,"58":1,"60":1,"127":2,"174":1}}],["10",{"2":{"6":14,"11":1,"36":1,"39":5,"49":4,"50":10,"51":2,"53":1,"62":2,"68":2,"97":3,"102":2,"152":1,"156":4,"169":1}}],["14182952335953",{"2":{"171":1}}],["14182952335952814",{"2":{"171":2}}],["14404531208901e",{"2":{"171":2}}],["1499775010124783",{"2":{"169":1}}],["1464721641710074",{"2":{"169":4}}],["14",{"2":{"3":1,"6":5,"39":2,"53":2,"54":2,"97":1,"99":1,"100":1,"151":2,"152":2}}],["15488729606723",{"2":{"171":3}}],["15",{"2":{"3":1,"6":4,"39":1,"49":1,"50":1,"53":1,"54":1,"97":1,"99":1,"100":1}}],["17893116483784577",{"2":{"171":2}}],["17289902010158",{"2":{"169":1}}],["172899020101585",{"2":{"169":3}}],["170356",{"2":{"126":2}}],["17",{"2":{"3":1,"6":3,"39":3,"53":1,"54":1,"97":2,"99":1,"100":1}}],["125",{"2":{"6":2,"53":1,"54":1}}],["127",{"2":{"3":1,"6":3,"53":1,"54":1,"99":1,"100":1,"170":1}}],["123",{"2":{"3":1,"6":3,"53":1,"54":1,"99":1,"100":1}}],["12636633117296836",{"2":{"171":2}}],["126",{"2":{"3":1,"6":3,"53":1,"54":1,"99":1,"100":1}}],["12",{"2":{"3":1,"6":3,"39":2,"53":1,"54":1,"97":1,"99":1,"100":1,"177":1}}],["124",{"2":{"3":1,"6":3,"53":1,"54":1,"99":1,"100":1}}],["1",{"2":{"1":8,"3":38,"6":63,"13":1,"14":4,"15":1,"33":4,"34":15,"36":7,"38":2,"39":11,"40":16,"43":4,"44":7,"45":75,"46":9,"47":15,"49":1,"50":10,"52":3,"54":9,"60":6,"62":4,"63":11,"65":7,"66":6,"69":16,"71":2,"72":6,"74":2,"75":2,"84":2,"85":8,"86":12,"88":2,"89":5,"97":38,"103":6,"105":4,"106":5,"108":1,"115":2,"116":6,"126":16,"127":25,"136":9,"138":12,"139":2,"145":9,"152":1,"153":4,"156":8,"158":15,"159":3,"160":15,"161":6,"167":9,"169":8,"170":44,"171":12,"172":1,"176":8,"177":3}}],["bx",{"2":{"126":2}}],["b2y",{"2":{"54":4}}],["b2x",{"2":{"54":4}}],["b2",{"2":{"54":47,"66":3,"103":6}}],["bigger",{"2":{"45":1}}],["bit",{"2":{"25":1,"27":1,"160":8,"169":2}}],["b1y",{"2":{"54":7}}],["b1x",{"2":{"54":7}}],["b1",{"2":{"45":8,"54":63,"103":6}}],["b``",{"2":{"52":1}}],["b`",{"2":{"45":2,"52":3,"54":4,"63":4}}],["building",{"2":{"169":1}}],["build",{"2":{"45":13,"50":1,"51":1,"53":1,"62":1,"131":3,"132":1,"151":2,"159":1,"160":1}}],["built",{"2":{"17":1,"20":1}}],["buffers",{"2":{"127":1}}],["buffered",{"2":{"41":2}}],["buffering",{"2":{"40":1,"41":1}}],["buffer",{"0":{"41":1},"2":{"31":2,"41":5,"44":2,"45":1,"128":1}}],["but",{"2":{"1":2,"3":5,"4":3,"6":15,"18":1,"22":1,"25":1,"27":1,"34":1,"36":1,"37":1,"45":3,"47":1,"54":2,"60":2,"61":2,"63":2,"69":4,"74":2,"97":1,"102":1,"103":5,"105":1,"106":1,"109":2,"110":1,"115":1,"126":1,"127":1,"128":1,"131":1,"134":1,"136":16,"147":1,"148":1,"153":1,"156":1,"164":1,"166":2,"170":2,"171":2,"173":1,"175":1,"176":1,"177":2}}],["b>",{"2":{"6":4}}],["bloat",{"2":{"171":1}}],["block",{"2":{"169":1}}],["blob",{"2":{"6":2,"156":1}}],["blue",{"2":{"14":1,"49":1,"68":2,"71":2,"88":2,"102":2,"115":2,"176":2}}],["black",{"2":{"6":2,"49":1,"170":1}}],["breaks",{"2":{"145":1}}],["break",{"2":{"45":3,"47":1,"52":2,"69":4,"97":11,"103":1,"127":6,"145":2}}],["brevity",{"2":{"40":1}}],["br>",{"2":{"6":2}}],["broadcasting",{"2":{"6":1,"40":1}}],["broken",{"2":{"3":1,"6":1,"86":1}}],["balancing",{"2":{"136":2}}],["barrier",{"2":{"136":1}}],["barycentric",{"0":{"5":1,"38":1,"40":1},"1":{"39":1,"40":1},"2":{"0":6,"5":10,"6":17,"9":1,"31":1,"38":9,"39":4,"40":52}}],["basicsgeoms",{"2":{"136":1}}],["basic",{"2":{"127":1}}],["basically",{"2":{"45":3}}],["base",{"2":{"31":4,"40":15,"41":1,"45":2,"127":6,"136":5,"149":1,"152":2,"153":1,"164":1,"166":3}}],["based",{"2":{"4":2,"6":3,"19":1,"34":2,"37":2,"39":2,"44":1,"47":1,"66":2,"69":1,"75":1,"89":1,"97":2,"103":1,"106":1,"116":1,"164":1,"173":1,"175":1,"176":1}}],["backs",{"2":{"50":4}}],["backwards",{"2":{"45":1,"52":1,"54":1,"63":1}}],["backing",{"2":{"45":1}}],["backend",{"2":{"41":2,"166":1}}],["back",{"2":{"6":1,"18":1,"22":1,"23":1,"50":4,"166":1}}],["b",{"2":{"3":2,"4":7,"6":13,"45":208,"47":9,"51":26,"52":18,"53":26,"54":77,"55":3,"62":27,"63":39,"69":29,"97":2,"103":22,"172":1}}],["box",{"2":{"46":2,"47":3,"176":1}}],["bounce",{"2":{"45":8,"51":1,"52":1,"53":1,"54":1,"62":1,"63":1}}],["bouncings",{"2":{"45":1}}],["bouncing",{"2":{"45":13,"52":3,"54":4,"63":4}}],["bound",{"2":{"55":1}}],["bounding",{"2":{"45":1,"46":2,"47":3}}],["boundscheck",{"2":{"40":14}}],["bounds",{"2":{"6":1,"127":4}}],["boundaries",{"2":{"3":2,"6":2,"84":2,"88":1,"89":1,"97":2,"99":1,"100":1,"127":1}}],["boundary",{"2":{"3":7,"6":7,"65":1,"71":1,"72":1,"74":1,"75":3,"78":4,"85":2,"86":9,"89":2,"91":1,"92":6,"93":3,"97":18,"105":2,"106":4,"108":3,"109":5,"110":3,"111":3,"115":1,"116":3}}],["bold",{"2":{"41":1,"149":1,"152":1}}],["border",{"2":{"6":8}}],["both",{"2":{"3":5,"6":6,"45":2,"54":4,"60":2,"62":1,"63":1,"65":1,"69":3,"72":1,"86":4,"89":1,"97":2,"103":1,"110":1,"116":1,"151":1,"153":1}}],["booltype",{"2":{"136":3,"153":1,"165":3}}],["booleans",{"2":{"45":1,"97":2}}],["boolean",{"2":{"24":2,"45":1,"52":1,"54":1,"63":1,"136":1,"165":1,"175":1}}],["boolsastypes",{"0":{"24":1,"165":1},"2":{"153":2,"165":6}}],["bools",{"2":{"10":1}}],["bool",{"2":{"3":17,"4":14,"6":40,"45":3,"69":17,"72":1,"75":1,"85":2,"86":13,"89":1,"97":2,"100":1,"103":10,"106":2,"116":1,"126":7,"127":6,"153":2,"165":2,"167":5}}],["bypred",{"2":{"178":1}}],["by",{"0":{"79":1,"80":1,"120":1},"2":{"1":3,"3":2,"4":8,"6":31,"7":1,"17":1,"18":2,"19":1,"22":1,"24":1,"25":1,"26":1,"27":1,"33":1,"34":6,"36":1,"37":1,"40":4,"41":1,"43":5,"44":4,"45":14,"46":1,"47":6,"49":1,"50":6,"51":1,"53":1,"54":5,"61":2,"62":4,"63":3,"66":5,"69":8,"72":1,"74":1,"75":1,"79":2,"80":2,"81":1,"82":2,"84":1,"96":2,"97":10,"126":2,"127":4,"131":2,"136":7,"142":2,"143":1,"145":3,"147":1,"148":2,"149":1,"150":1,"152":3,"153":1,"154":1,"156":1,"157":1,"158":3,"159":1,"161":1,"169":1,"170":1,"171":1,"173":1,"175":2,"176":1,"177":2,"178":1}}],["berlin",{"2":{"177":1}}],["bearing",{"2":{"126":4}}],["beauty",{"2":{"9":1}}],["better",{"2":{"86":1,"136":2,"156":1}}],["between",{"2":{"4":4,"6":18,"23":1,"34":2,"40":13,"45":1,"47":18,"51":1,"52":4,"53":1,"54":11,"62":2,"63":4,"66":8,"69":1,"97":4,"103":4,"127":1,"152":3,"153":1,"157":2,"158":2,"159":1,"170":1,"175":2,"176":1}}],["been",{"2":{"52":1,"127":1,"129":2,"165":1}}],["because",{"2":{"45":1,"61":1,"129":1,"163":1}}],["become",{"2":{"22":1}}],["being",{"2":{"34":1,"54":1,"97":1,"103":1,"143":1}}],["behind",{"2":{"25":1,"26":1,"27":1,"39":1,"129":1}}],["behaviour",{"2":{"6":1,"18":1,"23":1,"156":1}}],["best",{"2":{"19":1,"136":2,"156":1}}],["beware",{"2":{"18":1}}],["benchmarking",{"2":{"152":1,"156":1}}],["benchmarkgroup",{"2":{"152":2,"156":3}}],["benchmark",{"0":{"152":1,"156":1},"2":{"152":1,"156":1}}],["benchmarktools",{"2":{"13":1,"152":1,"156":1}}],["benchmarks",{"2":{"9":2}}],["beginning",{"2":{"47":1,"169":1}}],["begin+1",{"2":{"40":5}}],["begin",{"2":{"9":1,"40":7,"136":2,"157":1,"173":1}}],["before",{"2":{"6":4,"40":1,"51":1,"53":1,"54":1,"62":1,"156":1,"170":1}}],["below",{"2":{"6":2,"17":1,"41":1,"141":1,"158":1,"159":1,"160":1,"173":1}}],["be",{"2":{"1":7,"3":3,"4":11,"5":4,"6":66,"7":1,"9":1,"13":2,"20":3,"23":2,"24":1,"25":3,"26":1,"27":3,"34":8,"37":7,"38":2,"39":1,"40":10,"41":2,"43":1,"44":3,"45":15,"46":1,"47":2,"50":1,"51":7,"52":4,"53":7,"54":12,"61":6,"62":6,"63":5,"65":2,"66":4,"69":15,"75":6,"84":2,"85":1,"89":6,"97":21,"103":2,"106":6,"116":6,"118":1,"119":1,"120":1,"121":1,"126":2,"127":1,"131":2,"134":2,"135":2,"136":12,"138":1,"139":1,"140":1,"141":3,"142":4,"143":2,"145":2,"146":1,"148":3,"149":1,"150":1,"152":8,"153":2,"156":10,"158":1,"160":3,"161":1,"165":1,"166":2,"169":2,"171":1,"175":4}}],["human",{"2":{"173":1}}],["hull`",{"2":{"61":2}}],["hulls",{"2":{"6":1,"56":1,"61":1}}],["hull",{"0":{"56":1,"58":1,"59":1},"1":{"57":1,"58":1,"59":1,"60":1,"61":1},"2":{"0":1,"6":8,"31":2,"56":2,"58":4,"59":1,"60":10,"61":15}}],["hypot",{"2":{"153":1}}],["h2",{"2":{"97":6}}],["h1",{"2":{"97":11}}],["hm",{"2":{"39":2}}],["h",{"2":{"34":2,"45":2,"63":8}}],["href=",{"2":{"6":2}}],["https",{"2":{"6":2,"51":1,"53":1,"54":1,"61":1,"62":1,"97":2,"158":1}}],["high",{"2":{"173":1}}],["highest",{"2":{"171":1}}],["higher",{"2":{"6":1,"61":1}}],["hit",{"2":{"45":1,"136":5}}],["hits",{"2":{"18":1}}],["hidedecorations",{"2":{"39":2}}],["hinter",{"2":{"31":3,"41":1,"149":1,"152":1}}],["hint",{"2":{"31":3,"41":1,"152":1}}],["hinge=2",{"2":{"53":1}}],["hinge`",{"2":{"53":1}}],["hinge",{"2":{"6":1,"45":1,"54":13,"97":15}}],["hist",{"2":{"13":1}}],["histogram",{"2":{"13":1}}],["hcat",{"2":{"6":1}}],["heavily",{"2":{"136":1}}],["heatmap",{"2":{"13":5,"14":6,"39":2,"65":2,"127":1}}],["help",{"2":{"165":1}}],["helpers",{"0":{"45":1},"2":{"86":1,"103":1}}],["helper",{"0":{"52":1,"54":1,"63":1},"2":{"44":1,"45":1,"50":1}}],["helps",{"2":{"30":1}}],["held",{"2":{"1":1,"6":1,"136":1}}],["here",{"2":{"6":2,"9":1,"13":1,"14":1,"20":1,"40":1,"54":1,"61":2,"86":1,"127":2,"136":5,"138":1,"152":1,"170":2,"175":2,"176":3}}],["hours",{"2":{"177":1}}],["hood",{"2":{"173":1}}],["hook",{"2":{"6":1,"156":1}}],["home",{"2":{"170":1}}],["horizontal",{"2":{"47":1,"54":1,"127":1,"156":1}}],["hormann",{"0":{"52":1,"54":1,"63":1},"2":{"6":2,"40":2,"45":3,"50":2,"51":1,"53":1,"62":1}}],["how",{"0":{"26":1},"2":{"6":2,"26":2,"36":1,"40":1,"45":1,"54":1,"69":1,"127":2,"131":1,"136":1,"147":1,"156":1,"170":1,"173":1,"175":2,"176":2,"177":1,"178":1}}],["however",{"2":{"3":1,"6":2,"34":1,"40":1,"44":1,"45":1,"54":1,"60":1,"65":1,"69":1,"71":1,"85":1,"143":1}}],["hole",{"2":{"34":1,"37":3,"39":2,"40":9,"44":4,"45":58,"47":3,"51":6,"53":2,"63":15,"66":3,"78":1,"79":1,"80":1,"97":33,"127":5,"139":2,"169":1}}],["holes=",{"2":{"45":1}}],["holes",{"2":{"4":3,"5":1,"6":4,"9":2,"34":2,"36":1,"40":2,"44":1,"45":19,"50":4,"51":2,"53":2,"62":6,"63":29,"66":3,"69":3,"94":1,"97":11,"118":1,"127":17,"139":2,"169":4}}],["holding",{"2":{"6":1,"127":1,"136":2}}],["holds",{"2":{"6":1,"45":1,"154":1,"164":2}}],["hold",{"2":{"6":1,"127":1,"156":1,"165":1,"173":1}}],["halign",{"2":{"156":1}}],["half",{"2":{"46":2}}],["hail",{"2":{"139":1}}],["handling",{"0":{"149":1},"2":{"129":1}}],["handler",{"2":{"41":1,"149":1}}],["handle",{"2":{"31":1,"126":1,"134":2,"136":1,"170":1}}],["handled",{"2":{"18":1}}],["hao",{"2":{"97":1}}],["had",{"2":{"51":1,"53":1,"69":1,"151":1,"165":1}}],["happens",{"2":{"45":1}}],["happen",{"2":{"24":1}}],["have",{"2":{"3":3,"4":9,"6":17,"19":1,"23":1,"34":2,"37":3,"40":6,"41":1,"45":4,"54":1,"61":2,"65":1,"66":2,"69":10,"97":5,"102":1,"103":3,"105":1,"106":1,"127":1,"128":1,"129":2,"131":2,"135":1,"136":4,"156":1,"158":1,"165":1,"166":1,"169":1,"170":1,"175":1,"176":1,"177":3}}],["haskey",{"2":{"166":1}}],["hash",{"2":{"127":1}}],["hasn",{"2":{"127":1}}],["hassle",{"2":{"1":1,"6":1,"161":1}}],["has",{"2":{"1":4,"6":4,"33":1,"36":2,"40":2,"45":2,"52":2,"54":1,"63":1,"65":1,"66":1,"69":11,"108":1,"126":1,"136":4,"137":1,"151":2,"160":1,"170":1}}],["xticklabelsvisible",{"2":{"170":1}}],["xticklabelrotation",{"2":{"13":2}}],["xoffset",{"2":{"169":4,"171":1}}],["x=x",{"2":{"167":1}}],["x`",{"2":{"136":1}}],["xvec",{"2":{"127":4}}],["xbounds",{"2":{"127":4}}],["xhalf",{"2":{"127":3}}],["xlast",{"2":{"66":3}}],["xfirst",{"2":{"66":5}}],["x0",{"2":{"66":5}}],["xn",{"2":{"47":4}}],["xind+1",{"2":{"127":1}}],["xind",{"2":{"127":2}}],["xinterior",{"2":{"44":2}}],["xi−xi−1",{"2":{"6":1}}],["xcentroid",{"2":{"44":13}}],["xrange",{"2":{"39":3,"65":2}}],["xautolimits",{"2":{"39":2}}],["xp2",{"2":{"34":5}}],["x2",{"2":{"6":3,"40":4,"44":2,"47":18,"66":8,"86":10,"97":5,"103":4,"127":5,"153":6,"167":2}}],["x26",{"2":{"6":4,"34":2,"37":6,"40":1,"41":4,"45":58,"47":36,"51":4,"52":4,"54":24,"63":2,"66":3,"69":14,"81":2,"82":2,"86":48,"95":2,"96":2,"97":170,"103":22,"108":2,"112":2,"113":2,"122":2,"123":2,"126":4,"127":12,"141":2,"145":6,"149":2,"152":2,"158":10,"159":2,"167":4,"175":1}}],["x1",{"2":{"6":4,"40":3,"44":2,"47":22,"66":8,"86":11,"97":6,"103":5,"127":5,"153":7,"167":2}}],["xs",{"2":{"6":3,"47":4,"127":30,"167":4}}],["xmax",{"2":{"6":1,"46":2,"47":48}}],["xmin",{"2":{"6":1,"46":2,"47":49}}],["x3c",{"2":{"5":1,"6":36,"31":1,"34":4,"37":2,"40":66,"45":17,"47":11,"50":3,"51":1,"53":1,"54":6,"62":1,"65":1,"66":13,"69":2,"86":33,"97":13,"103":10,"126":1,"127":4,"131":2,"136":19,"139":2,"142":3,"145":5,"152":2,"157":2,"158":6,"159":3,"160":9,"164":4,"165":2,"178":1}}],["xy`",{"2":{"148":1}}],["xy",{"2":{"1":4,"40":1,"148":3}}],["x",{"2":{"1":4,"4":1,"6":6,"7":1,"9":5,"11":6,"13":11,"14":10,"15":4,"34":9,"37":2,"39":8,"43":1,"44":10,"45":21,"46":1,"47":8,"50":6,"52":9,"54":18,"63":9,"65":2,"66":7,"69":3,"86":21,"97":16,"103":7,"126":11,"127":2,"129":2,"136":17,"141":2,"146":2,"147":4,"148":1,"153":2,"156":2,"158":2,"160":1,"161":2,"162":2,"165":4,"167":33,"169":6,"170":2,"171":2,"175":1,"177":2}}],["=>",{"2":{"136":2}}],["=float64",{"2":{"44":3,"53":1,"62":1}}],["=false",{"2":{"34":1}}],["===",{"2":{"86":8,"126":4}}],["==",{"2":{"9":1,"19":1,"34":4,"37":2,"40":9,"41":2,"44":1,"45":34,"47":30,"52":1,"54":20,"59":1,"62":2,"63":1,"65":1,"69":16,"97":44,"103":2,"126":3,"127":18,"136":1,"139":1,"141":1,"145":1,"149":1,"152":2,"156":1,"160":3}}],["=",{"2":{"1":5,"3":17,"4":7,"5":2,"6":62,"11":1,"13":19,"14":33,"15":18,"31":4,"33":4,"34":56,"36":6,"37":25,"39":35,"40":110,"41":3,"43":6,"44":36,"45":325,"46":6,"47":96,"49":7,"50":29,"51":21,"52":30,"53":18,"54":143,"58":6,"59":4,"60":14,"61":4,"62":21,"63":77,"65":15,"66":52,"68":7,"69":40,"71":7,"72":3,"74":4,"75":23,"76":3,"77":7,"78":14,"79":14,"80":4,"81":2,"82":2,"84":5,"85":3,"86":57,"88":7,"89":18,"90":3,"91":11,"92":17,"93":9,"94":3,"95":2,"96":2,"97":189,"99":3,"100":3,"102":7,"103":40,"105":3,"106":22,"107":3,"108":9,"109":14,"110":10,"111":6,"112":2,"113":2,"115":7,"116":22,"117":3,"118":11,"119":14,"120":14,"121":4,"122":2,"123":2,"126":32,"127":106,"129":1,"133":4,"136":90,"138":2,"139":4,"141":9,"144":3,"145":30,"146":1,"149":2,"151":16,"152":21,"153":18,"154":2,"155":5,"156":60,"157":11,"158":49,"159":7,"160":43,"161":2,"162":1,"164":6,"165":2,"166":3,"167":42,"169":45,"170":19,"171":13,"172":3,"173":4,"174":7,"176":12,"177":6,"178":2}}],["utm",{"2":{"170":1}}],["utility",{"0":{"167":1},"2":{"40":1,"136":2}}],["utils",{"0":{"160":1},"2":{"31":1}}],["u2",{"2":{"97":4}}],["u1",{"2":{"97":4}}],["update",{"2":{"45":6,"127":10}}],["updated",{"2":{"45":6,"136":3}}],["updates",{"2":{"40":1}}],["up",{"2":{"45":2,"54":1,"97":1,"110":1,"134":1,"144":1,"158":2,"169":2}}],["upper",{"2":{"6":1,"127":1,"176":1}}],["uv",{"2":{"40":1}}],["u>",{"2":{"6":2}}],["u>geometryops",{"2":{"6":2}}],["usage",{"2":{"177":1}}],["usa",{"0":{"59":1},"2":{"59":4,"156":15,"177":3}}],["us",{"2":{"37":1,"61":1,"170":1,"177":1}}],["usually",{"2":{"6":1,"26":2,"56":1,"131":1,"136":1,"173":1}}],["usual",{"2":{"6":1,"139":1,"142":1}}],["usecases",{"2":{"25":1,"27":1}}],["uses",{"2":{"6":2,"56":1,"61":1,"97":1,"148":1,"152":1,"156":1,"173":1}}],["users",{"2":{"31":1,"129":1,"143":1}}],["user",{"2":{"6":12,"23":1,"44":1,"51":3,"53":3,"62":3,"157":1,"158":1,"159":1,"175":1}}],["useful",{"2":{"6":10,"40":1,"127":1,"150":1,"153":1,"156":2,"166":1}}],["used",{"2":{"1":1,"5":1,"6":8,"34":1,"37":1,"38":1,"40":1,"44":2,"45":7,"47":1,"50":1,"54":1,"65":1,"66":1,"69":1,"103":1,"127":2,"131":1,"136":3,"137":1,"153":1,"156":1,"158":2,"163":2,"164":1,"170":1,"173":1,"175":2,"176":1}}],["use",{"2":{"1":2,"4":1,"5":1,"6":10,"11":1,"20":1,"23":1,"26":1,"40":1,"45":1,"61":2,"63":1,"86":2,"103":1,"127":1,"128":1,"133":1,"136":7,"139":1,"147":1,"151":1,"153":1,"156":1,"158":2,"166":3,"169":1,"173":1,"175":2,"178":2}}],["using",{"0":{"170":1},"2":{"1":4,"4":1,"5":3,"6":12,"11":4,"13":4,"14":1,"15":1,"31":6,"33":1,"34":1,"36":2,"37":2,"39":4,"40":7,"41":3,"43":2,"44":1,"45":5,"46":2,"47":1,"49":2,"50":1,"52":3,"54":4,"55":1,"58":1,"59":2,"60":1,"61":2,"63":3,"65":2,"66":2,"68":2,"69":1,"71":2,"72":1,"74":2,"75":1,"82":1,"84":2,"85":1,"86":1,"88":2,"89":1,"96":1,"97":1,"99":2,"100":1,"102":2,"103":1,"105":2,"106":1,"113":1,"115":2,"116":1,"123":1,"126":1,"127":5,"128":1,"129":2,"134":1,"136":4,"139":1,"142":1,"145":1,"146":2,"147":1,"148":1,"149":3,"151":1,"152":5,"153":1,"156":3,"158":1,"160":1,"161":4,"162":2,"166":2,"167":1,"168":4,"169":1,"171":1,"172":2,"174":1,"175":1,"176":4,"177":2}}],["until",{"2":{"127":3,"134":1,"158":1,"166":1}}],["unprocessed",{"2":{"45":1}}],["unknown",{"2":{"45":4,"47":15}}],["unknown=3",{"2":{"45":1}}],["unmatched",{"2":{"45":9,"47":26}}],["understand",{"2":{"163":1}}],["under",{"2":{"37":2,"173":1}}],["undergrad",{"2":{"9":1}}],["undef",{"2":{"34":2,"45":1,"157":1,"158":1,"160":2,"167":2}}],["unless",{"2":{"22":1,"45":1,"52":2,"54":2,"63":2}}],["unlike",{"2":{"18":1,"163":1}}],["unstable",{"2":{"13":1,"136":1,"165":1}}],["unneeded",{"2":{"6":3,"45":1,"51":2,"53":2,"62":2}}],["unnecessary",{"2":{"6":3,"127":1,"157":1,"158":1,"159":1}}],["universal",{"2":{"170":1}}],["united",{"2":{"156":1}}],["unify",{"2":{"25":1,"27":1}}],["unique",{"2":{"6":2,"54":3,"142":2,"145":2}}],["unioning",{"2":{"63":1}}],["unionintersectingpolygons",{"2":{"0":1,"6":8,"51":1,"52":2,"53":1,"54":2,"62":1,"63":2,"142":2,"143":2,"144":1,"145":4}}],["unions",{"0":{"63":1},"2":{"18":1,"164":1}}],["union",{"0":{"62":1},"2":{"0":1,"1":2,"3":2,"4":4,"6":22,"11":3,"23":2,"31":1,"34":2,"37":1,"40":1,"44":4,"45":7,"47":1,"53":2,"62":18,"63":30,"66":1,"69":8,"77":2,"78":4,"79":1,"81":2,"82":1,"91":2,"92":6,"95":2,"96":1,"103":4,"108":2,"109":4,"110":1,"112":2,"113":1,"118":2,"119":4,"120":1,"122":2,"123":1,"126":1,"127":5,"129":1,"134":3,"136":6,"142":1,"143":1,"145":9,"153":4,"156":2,"157":3,"158":3,"159":3,"164":4,"167":1}}],["unchanged",{"2":{"1":1,"6":2,"136":1,"156":1}}],["unwrap",{"2":{"0":1,"6":3,"131":1,"136":16}}],["nselected",{"2":{"160":3}}],["nmax",{"2":{"160":2}}],["nice",{"2":{"158":1}}],["null",{"2":{"152":1}}],["numeric",{"2":{"11":1}}],["numbers",{"2":{"6":1,"7":1,"38":2,"40":1,"152":1}}],["number=6",{"2":{"6":1,"155":1,"156":1}}],["number",{"2":{"6":11,"40":1,"45":2,"50":1,"56":1,"60":1,"65":1,"69":2,"97":2,"150":1,"151":1,"153":1,"156":2,"157":4,"158":7,"159":4,"160":12}}],["n+1",{"2":{"138":1}}],["nfeature",{"2":{"136":2}}],["nkeys",{"2":{"127":8}}],["nc",{"2":{"97":13}}],["ncoord",{"2":{"69":2}}],["nl",{"2":{"97":11}}],["nhole",{"2":{"45":2,"51":2,"53":2,"62":2,"63":1,"69":2}}],["nbpts",{"2":{"45":2}}],["nbsp",{"2":{"1":4,"3":9,"4":8,"5":3,"6":89,"131":3,"141":1,"142":4}}],["ngeom",{"2":{"44":1,"136":2,"167":1}}],["nt",{"2":{"166":2}}],["ntasks",{"2":{"136":6}}],["nthreads",{"2":{"136":3}}],["nthe",{"2":{"41":1,"149":1,"152":1}}],["ntuple",{"2":{"40":3,"153":1}}],["n2",{"2":{"40":8,"69":10}}],["n1",{"2":{"40":8,"69":9}}],["np2",{"2":{"86":4}}],["npolygon",{"2":{"52":1,"69":3,"145":2}}],["npoints",{"2":{"34":6,"45":5,"97":3,"152":6,"158":7}}],["npoint",{"2":{"6":1,"34":2,"36":1,"37":1,"45":1,"47":2,"60":2,"66":1,"69":6,"86":6,"97":6,"108":1,"126":2,"139":1,"152":3,"153":1,"156":14,"160":1,"167":13}}],["npts",{"2":{"45":6,"158":3}}],["np",{"2":{"37":2,"66":5}}],["n",{"2":{"6":1,"9":1,"38":2,"40":36,"41":2,"45":51,"50":10,"62":4,"63":4,"97":11,"108":2,"126":6,"127":5,"138":1,"145":25,"149":2,"152":2,"153":3,"156":2,"160":7,"167":32}}],["naive",{"2":{"55":1}}],["napts",{"2":{"45":3}}],["navigate",{"0":{"26":1}}],["natearth2",{"2":{"170":1}}],["natural",{"2":{"156":1,"170":2,"175":1}}],["naturalearth",{"2":{"11":2,"59":2,"156":3,"170":1}}],["nature",{"2":{"127":1}}],["native",{"2":{"6":1,"128":1,"166":4,"173":1}}],["nan",{"2":{"9":1}}],["named",{"2":{"136":1}}],["namedtuple",{"2":{"22":2,"136":2,"166":2}}],["name",{"2":{"6":1,"31":2,"156":1,"166":1,"172":1,"173":2,"177":1}}],["names",{"2":{"6":1,"31":3,"136":6,"166":1}}],["nodestatus",{"2":{"127":6}}],["nodes",{"2":{"45":1,"127":4}}],["node",{"2":{"45":26,"127":17}}],["north",{"2":{"47":12}}],["nor",{"2":{"41":1,"149":1,"152":1}}],["normalized",{"2":{"40":1}}],["normalize",{"2":{"40":1}}],["norm",{"2":{"6":1,"40":22}}],["now",{"2":{"6":1,"13":1,"25":1,"27":1,"36":1,"39":2,"40":4,"41":1,"45":1,"50":1,"56":1,"63":1,"66":1,"126":1,"127":2,"144":1,"150":1,"151":3,"152":1,"156":1,"169":5,"170":6,"171":2,"172":1,"173":3,"176":2}}],["no",{"2":{"6":6,"34":1,"40":2,"45":5,"51":1,"52":1,"53":1,"54":14,"62":1,"69":2,"75":3,"89":3,"97":2,"106":2,"108":1,"110":1,"111":2,"116":2,"118":1,"119":3,"120":3,"121":1,"127":2,"128":1,"129":1,"136":3,"150":1,"152":2,"153":1,"156":1,"166":1,"173":1}}],["nonzero",{"2":{"153":1}}],["none",{"2":{"6":4,"45":1,"50":1,"51":1,"53":1,"62":1,"63":1,"86":4,"88":1}}],["nondimensional",{"2":{"6":1,"152":1}}],["nonintersecting",{"2":{"6":1,"23":1,"142":1,"145":1}}],["non",{"2":{"3":2,"6":2,"22":1,"38":2,"45":15,"51":2,"52":1,"53":1,"54":4,"62":1,"63":2,"65":1,"103":2,"110":1,"134":1,"165":1}}],["note",{"2":{"4":4,"6":11,"19":1,"29":1,"34":1,"37":2,"40":1,"43":2,"44":2,"45":4,"47":1,"50":2,"52":3,"54":5,"61":1,"63":3,"66":1,"69":5,"97":1,"102":1,"103":1,"148":1,"153":1,"157":1,"158":2,"159":1,"165":1,"170":2,"171":1}}],["not",{"0":{"128":1},"2":{"1":2,"3":8,"4":1,"6":18,"18":1,"19":1,"22":1,"24":1,"31":1,"34":4,"37":1,"40":4,"41":1,"43":1,"45":19,"50":1,"53":1,"54":7,"60":1,"63":3,"68":2,"69":4,"71":2,"72":1,"74":2,"75":2,"84":1,"85":2,"89":3,"91":5,"92":3,"93":2,"94":2,"97":5,"102":1,"103":2,"106":1,"115":2,"116":2,"118":1,"126":4,"127":2,"128":1,"134":1,"135":1,"136":10,"138":2,"141":2,"144":3,"147":1,"148":1,"149":1,"150":1,"152":2,"153":1,"163":1,"164":1,"165":1,"166":2,"170":1,"171":1,"175":1}}],["nothing`",{"2":{"52":2,"54":2,"63":2}}],["nothing",{"2":{"1":34,"4":1,"6":42,"15":3,"45":4,"50":1,"52":2,"53":1,"54":2,"63":2,"69":1,"97":1,"126":9,"127":3,"136":8,"138":24,"141":1,"144":60,"149":1,"153":1,"156":2,"157":6,"158":6,"159":6,"160":1,"161":32,"167":7,"169":252,"170":16,"171":20}}],["ne",{"2":{"170":2}}],["net",{"2":{"141":2}}],["ness",{"2":{"136":1}}],["nesting",{"2":{"134":2}}],["nestedloopfast",{"2":{"178":1}}],["nested",{"2":{"1":2,"4":1,"6":5,"18":1,"34":1,"134":2,"136":4,"156":1,"162":1}}],["never",{"2":{"134":1,"157":1}}],["neumann",{"2":{"127":1}}],["neither",{"2":{"63":1}}],["neighborhood",{"2":{"127":2}}],["neighbor",{"2":{"45":27}}],["neighboring",{"2":{"6":6,"45":1,"156":1,"157":1,"158":1,"159":2}}],["nearly",{"2":{"173":1}}],["nearest",{"2":{"45":1,"54":2}}],["neatly",{"2":{"17":1}}],["nedge",{"2":{"45":2,"167":13}}],["nextnode",{"2":{"127":27}}],["nextnodes",{"2":{"127":6}}],["next",{"2":{"44":1,"45":81,"47":3,"50":4,"97":14,"127":3,"145":13,"158":5}}],["necessarily",{"2":{"6":1,"126":1,"147":1}}],["necessary",{"2":{"6":1,"134":1,"156":1}}],["newfeature",{"2":{"136":2}}],["newnodes",{"2":{"127":2}}],["new",{"2":{"6":1,"41":1,"45":58,"47":9,"51":3,"52":1,"63":16,"97":2,"127":4,"135":1,"136":19,"141":2,"142":1,"143":1,"145":19,"153":8,"157":1,"158":2,"159":1,"171":1,"172":1,"177":1}}],["negative",{"2":{"4":3,"6":3,"36":2,"37":1,"38":2,"65":2,"66":3}}],["needs",{"2":{"44":1}}],["needing",{"2":{"4":1,"6":1,"17":1,"146":1}}],["need",{"2":{"1":1,"3":1,"4":2,"5":1,"6":5,"40":2,"43":1,"45":2,"52":1,"60":1,"69":4,"84":1,"85":1,"97":1,"127":2,"129":1,"146":1,"160":1,"161":1,"170":1,"171":2,"178":2}}],["needed",{"2":{"1":2,"6":4,"34":1,"40":1,"45":4,"47":1,"51":1,"53":1,"62":1,"66":2,"97":5,"127":1,"136":2,"141":1,"148":3,"171":1}}],["gdal",{"2":{"173":1}}],["gml",{"2":{"173":1}}],["gpkg",{"2":{"173":3}}],["gadm",{"2":{"177":4}}],["ga",{"2":{"170":3,"174":2}}],["gaps",{"2":{"127":1}}],["global",{"2":{"170":1}}],["gft",{"2":{"168":1,"170":2}}],["gc",{"2":{"141":6}}],["g",{"2":{"34":3,"37":3,"41":1,"44":3,"47":3,"66":6,"134":1,"136":6,"156":2,"167":2,"173":1}}],["gb",{"2":{"31":1,"136":10}}],["guarantee",{"2":{"19":1,"30":1}}],["guaranteed",{"2":{"1":1,"6":1,"34":1,"136":1}}],["grand",{"2":{"177":1}}],["grained",{"2":{"151":1}}],["grahamscanmethod",{"2":{"61":1}}],["graphics",{"2":{"6":1,"40":1}}],["great",{"2":{"169":1,"171":1,"173":1}}],["greater",{"2":{"6":1,"126":1,"153":1}}],["greiner",{"0":{"52":1,"54":1,"63":1},"2":{"45":3,"50":2,"51":1,"53":1,"62":1}}],["green",{"2":{"14":1,"170":1}}],["grouped",{"2":{"169":1}}],["groups",{"2":{"6":1,"127":1}}],["grouping",{"2":{"1":1,"6":1,"136":2}}],["grid",{"2":{"6":1,"39":1,"47":4}}],["g2",{"2":{"3":5,"6":5,"72":4,"75":12,"76":6,"77":9,"78":6,"79":6,"80":3,"81":4,"82":2,"85":3,"86":21,"89":10,"90":6,"91":10,"92":8,"93":4,"94":2,"95":4,"96":2,"106":10,"107":6,"108":10,"109":6,"110":5,"111":4,"112":4,"113":2,"116":10,"117":6,"118":9,"119":6,"120":6,"121":3,"122":4,"123":2}}],["g1",{"2":{"3":5,"4":1,"6":6,"72":4,"75":12,"76":6,"77":9,"78":6,"79":6,"80":3,"81":2,"82":4,"85":3,"86":21,"89":9,"90":6,"91":10,"92":8,"93":4,"94":2,"95":2,"96":4,"106":10,"107":6,"108":9,"109":6,"110":5,"111":4,"112":2,"113":4,"116":10,"117":6,"118":9,"119":6,"120":6,"121":3,"122":2,"123":4}}],["generic",{"2":{"22":1}}],["generation",{"2":{"156":2}}],["generated",{"2":{"31":1,"34":1,"37":1,"40":1,"41":1,"44":1,"45":1,"47":1,"50":1,"52":1,"54":1,"55":1,"61":1,"63":1,"66":1,"69":1,"72":1,"82":1,"85":1,"86":1,"96":1,"97":1,"100":1,"103":1,"113":1,"123":1,"126":1,"127":1,"128":1,"136":1,"139":1,"142":1,"145":1,"146":1,"147":1,"149":1,"153":1,"156":1,"160":1,"161":1,"162":1,"166":1,"167":1,"176":1}}],["generate",{"2":{"7":1,"13":2,"156":1,"176":2}}],["generalization",{"2":{"38":1}}],["generalized",{"2":{"6":1,"38":3,"40":1}}],["generalise",{"2":{"6":4,"156":1}}],["generally",{"2":{"6":2,"166":3}}],["general",{"0":{"2":1,"4":1},"1":{"3":1,"4":1},"2":{"18":1,"20":1,"25":1,"27":1,"129":1,"149":1}}],["getfeature",{"2":{"136":5,"167":5}}],["getcolumn",{"2":{"136":4}}],["getgeom",{"2":{"81":1,"82":1,"95":1,"96":1,"103":2,"112":1,"113":1,"122":1,"123":1,"136":6,"156":3,"167":6}}],["getring",{"2":{"45":1}}],["getindex",{"2":{"40":2}}],["gethole",{"2":{"34":1,"37":1,"44":1,"45":4,"47":1,"50":1,"51":2,"53":2,"63":6,"66":1,"69":2,"97":5,"139":1,"169":1}}],["getexterior",{"2":{"34":1,"37":1,"40":1,"44":1,"45":3,"47":1,"50":1,"51":2,"53":2,"62":3,"63":6,"66":1,"69":2,"97":5,"126":1,"127":1,"139":1,"169":1}}],["getpolygon",{"2":{"52":3,"54":2,"63":2,"69":3}}],["getpoint",{"2":{"33":1,"34":5,"36":2,"37":1,"40":1,"43":1,"44":6,"45":8,"46":2,"47":3,"49":3,"65":1,"66":6,"68":4,"69":13,"71":4,"74":1,"84":1,"86":7,"88":4,"97":28,"99":2,"102":4,"103":2,"105":2,"108":2,"115":4,"126":5,"139":3,"151":4,"153":2,"160":1,"167":3,"169":2}}],["getproperty",{"2":{"13":2,"14":1}}],["get",{"2":{"6":1,"13":1,"36":1,"41":1,"45":9,"51":1,"52":1,"53":1,"54":2,"61":2,"62":2,"127":4,"136":4,"149":1,"152":3,"156":1,"157":1,"159":1,"160":2,"166":5,"167":1,"169":2,"177":2}}],["geoparquet",{"2":{"173":4}}],["geopoly1",{"2":{"171":1,"172":1}}],["geopoly2",{"2":{"171":1,"172":1}}],["geoaxis",{"2":{"170":4,"174":1}}],["geographic",{"2":{"170":1,"173":1}}],["geographiclib",{"2":{"6":1,"152":1}}],["geointeface",{"2":{"134":1}}],["geointerace",{"2":{"22":1}}],["geointerfacemakie",{"2":{"155":1,"176":1,"177":1}}],["geointerface",{"0":{"30":1},"2":{"1":20,"3":9,"4":2,"6":41,"11":1,"13":1,"14":1,"15":1,"22":3,"25":1,"27":1,"30":1,"31":7,"33":1,"34":1,"36":1,"37":1,"40":23,"43":1,"44":1,"45":2,"46":1,"47":1,"49":1,"50":1,"51":1,"53":1,"54":1,"58":1,"59":1,"60":1,"62":1,"65":1,"66":11,"68":1,"69":2,"71":1,"72":2,"74":1,"75":2,"84":1,"85":2,"86":1,"88":1,"89":3,"99":1,"100":2,"102":1,"103":2,"105":1,"106":2,"115":1,"116":2,"126":5,"127":1,"131":3,"134":3,"136":6,"138":9,"141":1,"142":1,"144":23,"146":1,"148":2,"151":1,"152":1,"155":1,"156":2,"161":13,"162":1,"167":1,"168":1,"169":122,"170":5,"171":9,"174":1,"176":1,"177":1}}],["geo",{"2":{"127":1,"152":4,"170":2}}],["geotable",{"2":{"29":1}}],["geojson",{"2":{"11":1,"156":2,"168":1,"170":4,"173":3}}],["geodataframes",{"2":{"173":3}}],["geod",{"2":{"6":2,"152":3}}],["geodesic`",{"2":{"152":2}}],["geodesic",{"0":{"174":1},"2":{"6":5,"31":1,"151":6,"152":8,"153":1,"174":1}}],["geodesicsegments",{"2":{"0":1,"6":2,"150":1,"151":3,"152":6,"153":2,"174":1}}],["geoformattypes",{"2":{"1":2,"148":2,"168":1,"170":2,"171":8}}],["geomakie",{"0":{"170":1},"2":{"168":2,"170":5,"174":2}}],["geomfromgeos",{"2":{"152":1}}],["geomtype",{"2":{"136":2}}],["geomtrait",{"2":{"45":1}}],["geoms",{"2":{"6":1,"61":1,"97":1,"131":1,"136":18}}],["geom2",{"2":{"3":8,"4":1,"6":9,"66":6,"69":1,"86":6,"89":1,"100":3,"103":6,"106":1,"116":2}}],["geom1",{"2":{"3":8,"4":1,"6":9,"66":6,"69":1,"86":4,"89":1,"100":3,"103":6,"106":1,"116":2}}],["geometrical",{"2":{"175":1}}],["geometric",{"2":{"25":2,"27":2,"43":1}}],["geometries",{"0":{"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"169":1,"170":1,"171":1},"2":{"1":6,"3":8,"4":14,"6":63,"18":3,"20":1,"22":3,"25":2,"27":2,"29":4,"33":1,"34":3,"37":4,"44":1,"47":2,"50":1,"51":5,"53":5,"54":4,"61":6,"62":5,"65":1,"66":4,"68":1,"69":7,"72":1,"74":1,"75":1,"86":2,"89":2,"97":1,"99":1,"100":1,"102":2,"103":3,"105":2,"106":2,"116":2,"118":1,"129":1,"131":4,"133":1,"135":2,"136":13,"146":1,"148":2,"150":3,"151":1,"152":4,"153":1,"154":1,"157":1,"158":1,"159":1,"162":1,"167":1,"168":5,"170":1,"171":2,"172":2,"173":1,"175":5,"176":1,"178":1}}],["geometry=",{"2":{"172":1}}],["geometrybasics",{"2":{"31":3,"39":2,"40":10,"61":1,"65":1,"75":1,"106":1,"116":1}}],["geometrycolumns",{"2":{"136":3}}],["geometrycollections",{"2":{"175":1}}],["geometrycollection",{"2":{"23":1,"177":1}}],["geometrycollectiontrait",{"2":{"23":1,"81":1,"82":1,"95":1,"96":1,"112":1,"113":1,"122":1,"123":1}}],["geometrycorrections",{"2":{"141":1}}],["geometrycorrection",{"2":{"0":1,"6":11,"139":2,"140":2,"141":13,"142":11,"145":4}}],["geometry",{"0":{"2":1,"53":1,"81":2,"82":2,"95":2,"96":2,"112":2,"113":2,"122":2,"123":2,"140":1,"148":1,"154":1,"168":1,"172":1},"1":{"3":1,"4":1,"141":1,"142":1,"149":1,"155":1,"156":1,"169":1,"170":1,"171":1,"172":1,"173":1},"2":{"1":10,"3":24,"4":12,"6":70,"9":1,"11":2,"18":4,"20":1,"23":3,"29":1,"31":1,"34":7,"37":4,"41":4,"44":3,"46":1,"47":4,"50":4,"59":1,"65":4,"66":6,"69":8,"71":5,"72":2,"74":4,"75":5,"76":4,"77":1,"81":3,"82":4,"84":4,"85":4,"86":3,"88":2,"89":5,"90":4,"91":2,"92":2,"95":3,"96":4,"97":2,"99":2,"103":3,"105":3,"106":4,"107":4,"108":2,"112":3,"113":4,"115":4,"116":5,"117":4,"122":3,"123":4,"125":1,"129":3,"131":2,"134":2,"136":43,"138":1,"139":1,"140":2,"141":23,"142":6,"146":1,"147":1,"148":6,"150":3,"151":1,"152":5,"153":8,"156":6,"167":6,"169":1,"170":1,"171":4,"172":2,"173":2,"175":1,"176":7,"177":4,"178":2}}],["geometryopsprojext",{"2":{"148":1,"149":1,"152":1,"153":1}}],["geometryopslibgeosext",{"2":{"41":1}}],["geometryops",{"0":{"0":1,"25":1,"31":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"2":{"0":117,"1":6,"3":18,"4":9,"5":3,"6":114,"7":2,"11":1,"13":1,"14":1,"15":1,"17":2,"25":1,"26":4,"27":1,"31":1,"33":1,"36":1,"39":5,"41":1,"43":1,"46":1,"49":1,"50":1,"51":1,"53":1,"54":1,"56":1,"58":1,"59":1,"60":3,"62":1,"65":1,"68":1,"69":1,"71":1,"72":2,"74":1,"75":2,"84":1,"85":2,"86":2,"88":1,"89":2,"99":1,"100":1,"102":1,"103":1,"105":1,"106":2,"115":1,"116":2,"126":3,"127":2,"131":4,"136":1,"138":1,"141":1,"142":4,"144":1,"149":1,"151":1,"152":2,"155":1,"156":2,"161":1,"163":1,"166":2,"167":1,"168":1,"169":3,"174":1,"175":1,"176":2,"177":2}}],["geom",{"2":{"1":7,"4":21,"6":48,"18":3,"31":12,"34":25,"37":17,"44":28,"45":16,"47":6,"50":15,"51":8,"52":2,"53":12,"54":10,"62":9,"63":9,"66":28,"69":45,"75":4,"86":1,"89":4,"97":3,"103":1,"106":4,"116":4,"126":3,"127":1,"129":2,"131":3,"136":91,"145":11,"147":4,"153":13,"156":36,"160":3,"161":7,"162":4,"167":13,"177":6}}],["geospatial",{"0":{"171":1,"173":1},"2":{"168":5,"170":1,"171":3,"173":5}}],["geoscontext",{"2":{"152":1}}],["geosdensify",{"2":{"152":3}}],["geos",{"0":{"166":1},"2":{"0":1,"6":6,"41":4,"56":1,"60":4,"61":1,"154":5,"156":2,"163":1,"166":12}}],["got",{"2":{"45":1,"160":3}}],["goes",{"2":{"6":2,"126":2}}],["good",{"2":{"6":1,"40":1,"166":2,"171":1}}],["going",{"2":{"4":4,"6":5,"47":2,"60":1,"69":5,"126":1,"127":1,"168":1}}],["go",{"2":{"1":5,"3":17,"4":2,"6":43,"11":9,"13":1,"14":1,"15":6,"18":1,"31":2,"33":1,"36":1,"40":1,"43":2,"46":1,"49":2,"50":2,"51":2,"53":2,"54":2,"58":3,"59":2,"60":8,"61":2,"62":2,"65":6,"68":1,"69":2,"71":2,"72":2,"74":1,"75":2,"84":2,"85":2,"86":1,"88":1,"89":2,"99":1,"100":2,"102":1,"103":2,"105":1,"106":2,"115":2,"116":2,"126":6,"127":2,"129":1,"131":1,"136":3,"138":3,"144":3,"151":7,"152":8,"155":2,"156":49,"161":3,"166":1,"167":2,"168":1,"169":3,"171":1,"173":1,"174":3,"175":9,"176":2,"177":5,"178":1}}],["gtrait",{"2":{"66":2}}],["gt",{"2":{"1":1,"6":2,"9":2,"10":1,"11":5,"45":3,"126":3}}],["gif",{"2":{"158":1}}],["gives",{"2":{"177":1}}],["give",{"2":{"97":1,"173":1}}],["given",{"2":{"4":7,"6":21,"18":2,"29":1,"33":1,"34":1,"37":2,"44":3,"45":8,"47":3,"50":5,"51":1,"52":2,"53":1,"54":2,"62":1,"63":2,"66":8,"69":4,"71":1,"72":1,"75":1,"84":1,"85":1,"89":1,"97":7,"99":1,"100":1,"106":1,"108":1,"116":1,"129":1,"141":4,"142":1,"144":1,"150":2,"152":2,"153":2,"159":1}}],["github",{"2":{"6":2,"61":1}}],["gis",{"2":{"5":1,"6":1,"25":1,"27":1,"40":1}}],["gi",{"2":{"1":13,"3":42,"4":31,"6":125,"11":8,"13":15,"14":15,"15":8,"18":2,"31":1,"33":3,"34":30,"36":5,"37":21,"39":1,"43":5,"44":38,"45":43,"46":5,"47":17,"49":6,"50":13,"51":19,"52":16,"53":25,"54":24,"58":1,"59":1,"60":3,"61":4,"62":17,"63":36,"65":8,"66":42,"68":7,"69":99,"71":7,"72":3,"74":3,"75":4,"76":6,"77":12,"78":10,"79":7,"80":4,"81":8,"82":6,"84":3,"85":3,"86":21,"88":7,"89":2,"90":3,"91":12,"92":14,"93":4,"94":2,"95":8,"96":6,"97":59,"99":5,"100":3,"102":7,"103":51,"105":5,"106":3,"107":6,"108":15,"109":10,"110":7,"111":4,"112":8,"113":6,"115":7,"116":2,"117":6,"118":12,"119":10,"120":7,"121":4,"122":8,"123":6,"126":32,"127":15,"129":4,"131":2,"136":111,"138":2,"139":10,"141":9,"144":3,"145":8,"146":1,"147":5,"151":6,"152":6,"153":12,"155":2,"156":34,"160":4,"161":9,"162":5,"164":9,"167":55,"168":1,"169":21,"170":2,"171":2,"174":2,"176":5,"177":2}}],["o",{"2":{"136":24}}],["odd",{"2":{"97":1}}],["own",{"2":{"63":1,"129":2}}],["occur",{"2":{"54":1}}],["occurs",{"2":{"54":1}}],["occupied",{"2":{"36":1}}],["old",{"2":{"45":8,"136":3}}],["ourselves",{"2":{"152":1}}],["our",{"2":{"24":1,"152":1,"169":4,"170":3,"176":1}}],["out=3",{"2":{"97":1}}],["out=4",{"2":{"53":1}}],["out`",{"2":{"53":1,"97":1}}],["out",{"2":{"6":3,"45":12,"47":23,"54":6,"61":1,"63":4,"65":5,"75":4,"86":1,"89":3,"97":102,"103":2,"106":4,"116":4,"126":1,"136":1,"153":1,"166":2}}],["outside",{"2":{"3":2,"4":1,"6":3,"45":3,"47":1,"52":2,"54":4,"63":3,"65":2,"66":1,"74":1,"85":1,"88":1,"97":12,"103":3,"121":1}}],["outputs",{"2":{"45":1}}],["output",{"2":{"3":8,"4":1,"6":18,"18":1,"23":1,"50":2,"51":1,"53":1,"54":1,"62":1,"63":2,"69":1,"72":1,"75":1,"85":1,"89":1,"100":1,"103":1,"106":1,"116":1,"126":2,"156":1,"160":1,"167":1}}],["outermost",{"2":{"136":1}}],["outer",{"2":{"1":1,"6":1,"134":1,"136":2,"175":1,"176":1}}],["omit",{"2":{"6":1,"152":1}}],["obtain",{"2":{"136":1}}],["obtained",{"2":{"23":1}}],["observable",{"2":{"14":2}}],["obs",{"2":{"14":10}}],["obviously",{"2":{"4":1,"6":1,"146":1}}],["objects",{"2":{"1":4,"4":1,"6":17,"131":3,"134":5,"136":8,"146":1,"150":1,"156":2,"162":1}}],["object",{"2":{"1":4,"4":1,"5":1,"6":8,"20":1,"40":1,"65":1,"97":4,"131":1,"134":5,"136":3,"146":1,"148":3,"152":1,"156":1,"162":1}}],["obj",{"2":{"1":4,"4":1,"6":17,"131":3,"136":10,"146":1,"147":2,"152":3,"156":3,"161":1,"162":1}}],["others",{"2":{"41":1,"145":1}}],["otherwise",{"2":{"4":2,"6":3,"41":1,"45":1,"52":1,"54":1,"66":2,"127":1,"147":1,"149":1,"152":1,"167":1}}],["other",{"0":{"4":1,"6":1},"2":{"3":4,"6":12,"34":1,"45":5,"51":1,"53":1,"54":1,"56":2,"62":2,"63":3,"66":2,"69":2,"71":1,"77":1,"97":8,"99":1,"102":1,"103":4,"105":2,"106":2,"109":1,"118":1,"127":1,"131":1,"134":1,"136":1,"142":2,"143":1,"145":2,"156":2,"158":2,"163":1,"164":1,"166":1,"170":1,"175":1,"178":1}}],["ogc",{"0":{"3":1}}],["over=3",{"2":{"53":1}}],["over`",{"2":{"53":1}}],["overflow",{"2":{"50":1}}],["overhead",{"2":{"22":1,"136":2}}],["override",{"2":{"6":1,"40":1}}],["overlapping",{"2":{"45":11,"54":4,"63":6}}],["overlap",{"2":{"3":4,"6":4,"9":1,"45":2,"54":8,"63":2,"75":1,"84":1,"97":2,"102":5,"103":6,"116":1,"143":1}}],["overlaps",{"0":{"101":1,"102":1},"1":{"102":1,"103":1},"2":{"0":10,"3":5,"6":13,"31":1,"54":1,"101":1,"102":3,"103":30,"127":1,"175":1}}],["over",{"2":{"1":1,"6":3,"36":2,"37":1,"44":3,"45":6,"47":1,"53":1,"54":11,"60":1,"63":1,"75":1,"86":1,"89":1,"97":15,"103":2,"106":1,"116":1,"136":22,"169":3}}],["opposed",{"2":{"174":1}}],["opposite",{"2":{"3":5,"6":5,"45":2,"52":1,"54":2,"63":1,"72":2,"75":1,"85":2,"100":2,"116":1}}],["ops",{"2":{"136":1}}],["open",{"2":{"45":1,"138":1,"170":1}}],["operates",{"2":{"136":1,"137":1,"143":1}}],["operate",{"2":{"18":1,"29":1,"136":1}}],["operations",{"0":{"23":1},"2":{"23":1,"26":1,"54":1,"63":1,"129":1}}],["operation",{"2":{"6":3,"45":1,"129":1,"142":2,"145":2,"166":2}}],["optimisation",{"2":{"97":1}}],["optimise",{"2":{"86":1}}],["optimal",{"2":{"6":1,"61":1}}],["options",{"2":{"14":1,"45":1}}],["optional",{"2":{"4":5,"6":6,"34":1,"37":2,"47":1,"66":2}}],["op",{"2":{"1":3,"6":3,"19":2,"44":1,"136":35}}],["on=2",{"2":{"97":1}}],["on`",{"2":{"97":1}}],["once",{"2":{"86":1,"103":1,"127":1}}],["onto",{"2":{"66":1}}],["ones",{"2":{"144":1}}],["oneunit",{"2":{"40":1}}],["one",{"2":{"1":1,"3":9,"6":14,"23":1,"34":4,"37":2,"39":1,"40":1,"44":1,"45":5,"47":3,"51":1,"52":1,"53":1,"54":32,"56":1,"62":2,"63":2,"65":2,"74":1,"81":1,"86":1,"88":1,"97":18,"102":1,"103":18,"105":2,"106":2,"109":3,"110":2,"111":2,"112":1,"113":1,"115":1,"116":1,"122":1,"126":1,"127":5,"136":1,"144":1,"148":1,"152":1,"160":1,"161":1,"170":1,"175":1}}],["on",{"0":{"170":1},"2":{"1":2,"4":3,"6":11,"9":1,"18":1,"20":1,"23":2,"25":3,"27":3,"29":2,"34":5,"37":3,"39":1,"40":2,"44":3,"45":28,"47":8,"50":1,"51":1,"52":5,"53":1,"54":4,"61":1,"62":1,"63":2,"65":1,"66":3,"69":2,"74":1,"75":7,"77":2,"78":3,"79":3,"80":1,"86":4,"89":6,"91":4,"92":1,"93":1,"97":125,"103":9,"106":7,"108":2,"116":7,"118":2,"119":1,"120":1,"127":3,"129":1,"131":1,"136":15,"137":1,"139":1,"142":1,"143":1,"150":1,"152":1,"158":1,"165":2,"168":1,"170":3,"171":1,"173":1,"174":1,"175":4,"176":1,"177":2,"178":2}}],["only",{"2":{"0":1,"5":1,"6":11,"23":1,"37":2,"39":2,"40":1,"41":1,"44":2,"45":4,"47":3,"50":1,"51":1,"53":1,"54":1,"61":3,"62":1,"66":2,"69":3,"102":3,"103":1,"105":1,"127":2,"136":2,"144":1,"150":1,"151":1,"153":2,"163":1,"166":2,"171":1,"177":1,"178":1}}],["often",{"2":{"170":1}}],["offers",{"2":{"169":1}}],["offer",{"2":{"152":1}}],["offset",{"2":{"34":8,"69":1}}],["off",{"2":{"4":1,"6":1,"45":4,"69":1,"97":6,"136":1}}],["of",{"0":{"59":1},"2":{"1":7,"3":29,"4":66,"5":5,"6":194,"7":2,"9":4,"17":3,"18":5,"19":1,"20":2,"22":1,"23":2,"24":2,"25":1,"26":1,"27":1,"29":3,"33":1,"34":38,"36":5,"37":28,"38":9,"39":1,"40":13,"41":1,"43":3,"44":12,"45":86,"46":5,"47":31,"50":5,"51":12,"52":13,"53":10,"54":48,"56":5,"60":3,"61":3,"62":9,"63":20,"65":6,"66":18,"68":2,"69":19,"71":4,"72":5,"74":6,"75":18,"77":1,"78":5,"79":5,"80":1,"81":2,"82":1,"85":5,"86":1,"88":3,"89":14,"91":1,"92":1,"93":1,"95":2,"96":1,"97":85,"99":1,"100":3,"102":1,"103":13,"105":2,"106":15,"108":3,"109":7,"110":5,"111":1,"112":2,"113":1,"115":4,"116":18,"118":3,"119":6,"120":6,"121":4,"122":1,"123":1,"125":2,"126":3,"127":19,"128":2,"129":3,"131":1,"134":5,"135":2,"136":27,"137":1,"138":1,"142":2,"143":4,"145":4,"147":3,"148":1,"150":2,"151":2,"152":5,"153":2,"156":8,"158":4,"159":2,"160":1,"162":1,"164":2,"166":4,"167":2,"169":6,"170":4,"171":2,"172":1,"173":4,"175":3,"176":4,"177":2}}],["org",{"2":{"51":1,"53":1,"62":1,"97":2,"158":1}}],["organise",{"2":{"10":1}}],["orange",{"2":{"49":1,"65":1,"68":2,"71":2,"88":2,"102":2,"115":2}}],["oro",{"2":{"11":2}}],["originate",{"2":{"63":1}}],["originals",{"2":{"22":1}}],["original",{"2":{"6":4,"18":1,"22":1,"45":10,"50":5,"51":1,"53":1,"63":4,"134":1,"136":3,"141":1,"147":2,"153":1,"155":4,"156":1}}],["orient",{"0":{"13":1},"1":{"14":1,"15":1},"2":{"13":7,"14":12,"45":15,"54":53}}],["orientation",{"0":{"124":1},"1":{"125":1,"126":1},"2":{"6":2,"10":1,"31":1,"37":1,"45":10,"47":2,"51":1,"53":2,"54":2,"62":1,"97":16,"125":1,"156":1}}],["ordered",{"2":{"36":1}}],["order",{"0":{"60":1},"2":{"1":4,"3":1,"4":2,"6":7,"34":1,"36":1,"37":2,"40":1,"45":4,"54":1,"60":4,"61":1,"63":1,"66":2,"69":3,"72":1,"75":1,"85":1,"100":1,"136":2,"148":2,"156":1,"175":1}}],["or",{"0":{"24":1},"2":{"1":11,"3":3,"4":10,"6":54,"18":1,"20":1,"22":1,"23":1,"25":1,"27":1,"29":2,"31":1,"34":4,"37":1,"40":1,"41":1,"43":2,"44":4,"45":24,"46":1,"50":1,"51":1,"52":3,"53":2,"54":9,"56":1,"61":1,"62":1,"63":2,"65":2,"66":4,"69":3,"71":1,"75":1,"77":2,"78":1,"79":1,"80":1,"81":1,"82":1,"88":2,"91":2,"92":3,"93":2,"94":1,"95":1,"96":1,"97":26,"99":2,"100":1,"102":1,"103":2,"105":1,"106":1,"112":1,"113":1,"116":1,"118":2,"122":1,"123":1,"125":2,"126":3,"127":7,"129":3,"131":1,"133":2,"135":1,"136":9,"137":1,"139":1,"141":5,"142":2,"148":2,"149":1,"150":2,"152":2,"153":2,"154":1,"156":3,"158":2,"160":2,"162":1,"164":3,"167":2,"175":1,"177":2}}],["est",{"2":{"177":1}}],["essentially",{"2":{"164":1}}],["especially",{"2":{"6":1,"18":1,"23":1,"127":1}}],["effects",{"2":{"136":3}}],["efficiently",{"2":{"20":1}}],["efficient",{"2":{"6":1,"40":1,"51":2,"53":2,"61":1,"62":2,"139":1}}],["e2",{"2":{"97":4}}],["e1",{"2":{"97":8}}],["euclid",{"2":{"47":2,"66":11,"97":1,"157":1}}],["euclidean",{"2":{"4":1,"6":1,"40":13,"66":6,"153":1}}],["everything",{"2":{"156":1}}],["every",{"2":{"45":1,"69":2,"134":1,"166":1}}],["evenly",{"2":{"176":1}}],["eventually",{"2":{"45":1}}],["even",{"2":{"37":2,"47":1,"54":1,"66":1,"69":1,"129":1,"138":1,"143":1}}],["evaluated",{"2":{"175":1}}],["eval",{"2":{"31":2,"136":2}}],["epsg",{"2":{"170":5,"171":8}}],["eps",{"2":{"34":2,"54":14}}],["eponymous",{"2":{"6":1,"152":1}}],["e",{"2":{"9":1,"22":1,"41":1,"127":1,"134":1,"136":2,"169":2,"170":1,"173":1}}],["ellipsoid",{"2":{"174":1}}],["eltype",{"2":{"127":4}}],["elements",{"2":{"81":1,"82":1,"95":1,"96":1,"103":1,"112":1,"113":1,"122":1,"123":1}}],["element",{"2":{"6":6,"33":1,"45":4,"50":2,"51":1,"53":1,"54":1,"62":3,"151":1,"170":1}}],["elsewhere",{"2":{"50":1}}],["elseif",{"2":{"45":5,"47":7,"51":1,"53":1,"54":14,"62":2,"63":1,"86":3,"97":10,"126":1,"127":2,"145":1,"158":2,"160":2}}],["else",{"2":{"3":6,"6":6,"34":1,"40":2,"45":20,"47":9,"50":1,"52":2,"54":9,"62":1,"63":9,"86":2,"97":17,"103":8,"127":20,"136":8,"139":1,"147":1,"149":1,"156":2,"158":4,"160":2,"161":1,"162":1,"166":1}}],["etc",{"2":{"6":1,"20":2,"36":1,"61":1,"164":1,"173":1}}],["empty",{"2":{"4":2,"6":6,"34":2,"45":2,"51":1,"53":1,"54":2,"62":1,"127":2}}],["embedding",{"0":{"135":1,"146":1}}],["embedded",{"0":{"171":1},"2":{"127":1,"135":3,"168":1,"171":1}}],["embed",{"2":{"0":2,"4":1,"6":1,"135":1,"146":2}}],["errors",{"2":{"31":1,"54":1,"153":1}}],["error",{"0":{"149":1},"2":{"4":1,"6":4,"7":1,"18":1,"31":6,"40":1,"41":4,"45":2,"54":2,"55":1,"69":2,"127":1,"134":1,"141":2,"149":3,"152":5,"160":4,"166":3,"167":1}}],["edgekeys",{"2":{"127":3}}],["edge",{"2":{"3":1,"4":3,"6":4,"20":1,"31":1,"37":1,"43":1,"45":25,"47":13,"51":1,"53":1,"54":6,"62":1,"66":4,"69":1,"77":2,"92":2,"93":1,"97":7,"103":21,"118":2,"119":1,"120":1,"127":7,"167":2}}],["edges`",{"2":{"54":1}}],["edges",{"2":{"0":1,"4":2,"6":9,"45":12,"47":8,"52":3,"54":10,"63":3,"66":3,"68":2,"69":1,"71":1,"77":1,"78":3,"79":7,"80":3,"88":1,"91":3,"94":1,"97":3,"103":20,"115":1,"118":1,"127":22,"167":29}}],["earlier",{"2":{"169":3}}],["earth",{"2":{"6":2,"25":1,"27":1,"152":2,"156":1,"170":2,"175":1}}],["easiest",{"2":{"172":1}}],["easier",{"2":{"163":1,"165":1}}],["easily",{"2":{"129":1}}],["east",{"2":{"47":9}}],["easy",{"2":{"1":1,"6":1,"143":1,"161":1}}],["eachindex",{"2":{"34":1,"126":1,"127":3,"136":2,"157":1,"160":1}}],["each",{"2":{"3":2,"4":3,"6":6,"9":1,"18":2,"20":1,"34":4,"37":2,"38":4,"40":1,"45":5,"47":1,"54":3,"66":1,"69":2,"75":1,"89":1,"97":6,"102":1,"103":3,"106":1,"116":1,"126":1,"127":1,"136":1,"143":2,"156":1,"172":1,"173":1,"176":2,"177":2,"178":1}}],["equatorial",{"2":{"6":6,"152":4}}],["equality",{"2":{"45":1,"54":1,"175":1}}],["equal",{"2":{"3":2,"4":16,"6":19,"34":6,"54":1,"65":1,"66":4,"68":3,"69":22,"77":1,"91":1,"97":15,"102":1,"103":2,"108":2,"118":1,"138":1}}],["equals",{"0":{"67":1,"68":1},"1":{"68":1,"69":1},"2":{"0":17,"4":3,"6":19,"31":1,"34":2,"45":5,"50":2,"54":8,"66":1,"67":1,"68":2,"69":50,"77":1,"91":1,"97":10,"103":2,"108":3,"118":1,"175":1}}],["equivalent",{"2":{"3":1,"4":4,"6":6,"37":1,"45":1,"54":1,"63":1,"69":5,"75":1,"97":1}}],["enable",{"2":{"178":1}}],["enabled",{"2":{"175":1}}],["enabling",{"0":{"178":1}}],["enclosed",{"2":{"97":1}}],["encode",{"2":{"24":1}}],["encompasses",{"2":{"18":1,"97":1}}],["encounters",{"2":{"18":1}}],["en",{"2":{"97":1,"158":1}}],["envelope",{"2":{"54":2}}],["envelopes",{"2":{"54":2}}],["enough",{"2":{"45":1}}],["entirely",{"2":{"97":1}}],["entire",{"2":{"47":1,"97":4}}],["entry",{"2":{"45":11,"52":3,"54":4,"63":3,"127":1}}],["ent",{"2":{"45":19,"50":2}}],["enter",{"2":{"45":4}}],["ensuring",{"2":{"6":1,"150":1,"153":1}}],["ensure",{"2":{"6":3,"40":1,"51":1,"53":1,"62":1,"137":2,"140":1}}],["ensures",{"2":{"6":3,"139":1,"142":3,"145":2}}],["enumerator",{"2":{"45":6}}],["enumerate",{"2":{"13":2,"34":1,"45":9,"47":1,"50":1,"52":1,"63":2,"97":1,"127":2,"145":2,"160":1}}],["enum",{"2":{"6":2,"45":3,"53":3,"97":3}}],["endpt",{"2":{"158":3}}],["endpoints",{"2":{"45":3,"47":1,"52":1,"54":6,"63":1,"66":2,"97":11,"103":2,"105":1}}],["endpoint=3",{"2":{"45":1}}],["endpointtype",{"2":{"45":2}}],["endpoint",{"2":{"3":1,"6":2,"45":27,"53":1,"54":16,"66":2,"74":1,"97":3,"103":2,"156":4,"158":4,"169":1}}],["ending",{"2":{"45":1,"47":1}}],["end",{"2":{"1":1,"6":1,"9":1,"13":4,"14":3,"31":4,"34":18,"37":8,"40":35,"41":3,"44":10,"45":133,"47":43,"50":9,"51":8,"52":12,"53":5,"54":31,"55":1,"61":3,"62":6,"63":24,"66":19,"69":20,"81":2,"82":2,"86":20,"95":2,"96":2,"97":104,"103":21,"108":1,"112":2,"113":2,"118":1,"122":2,"123":2,"126":9,"127":44,"128":4,"129":1,"136":49,"137":1,"139":5,"141":3,"145":18,"147":4,"148":1,"149":2,"152":8,"153":8,"156":7,"157":6,"158":30,"159":3,"160":27,"161":4,"162":4,"164":1,"165":3,"166":4,"167":19}}],["enforce",{"2":{"0":1,"6":2,"166":3}}],["exits",{"2":{"45":1}}],["exit",{"2":{"45":32,"50":2,"52":3,"54":3,"63":2}}],["existingnodes",{"2":{"127":3}}],["existing",{"2":{"45":3,"62":1,"127":1,"170":2,"172":1}}],["exists",{"2":{"45":1,"47":1,"54":1}}],["exist",{"2":{"6":1,"45":1,"54":3,"166":1}}],["excluding",{"2":{"94":1,"97":1,"118":2}}],["exclude",{"2":{"86":9}}],["exclusively",{"2":{"110":1}}],["exclusive",{"2":{"47":1,"54":2}}],["exc",{"2":{"41":2,"149":2,"152":2}}],["excellent",{"2":{"23":1}}],["except",{"2":{"18":1,"19":1}}],["excess",{"2":{"5":1,"6":1,"40":1}}],["exp10",{"2":{"152":1,"156":2}}],["expressed",{"2":{"38":2}}],["express",{"2":{"38":1}}],["experimental",{"2":{"31":3}}],["expect",{"2":{"1":1,"99":1,"148":1}}],["explain",{"2":{"26":1}}],["explanations",{"2":{"26":3}}],["explicitly",{"2":{"6":1,"18":1,"24":1,"34":2,"37":1,"40":1,"41":1,"66":2,"69":1,"149":1,"152":1,"153":1}}],["expose",{"2":{"56":1}}],["exposes",{"2":{"17":1}}],["export",{"2":{"38":1,"150":1,"171":1,"173":1}}],["exponential",{"2":{"9":1}}],["ext2",{"2":{"97":3}}],["ext1",{"2":{"97":3}}],["ext",{"2":{"39":15,"45":10,"47":2,"50":3,"51":8,"53":8,"54":18,"62":8,"63":14,"86":7,"97":7}}],["extrema",{"2":{"127":1,"167":1}}],["extreem",{"2":{"34":10}}],["extracts",{"2":{"61":1}}],["extract",{"2":{"61":1,"127":1,"136":3,"156":1}}],["extra",{"2":{"6":3,"45":2,"62":1,"150":1,"152":2,"153":1}}],["external",{"2":{"37":1,"97":2}}],["exteriors",{"2":{"9":1,"53":2,"62":2,"127":1}}],["exterior",{"2":{"3":4,"4":2,"6":10,"34":1,"36":1,"37":1,"39":1,"40":36,"44":2,"45":4,"51":2,"62":3,"63":14,"66":1,"69":2,"71":1,"72":1,"75":3,"85":1,"89":2,"97":9,"106":2,"115":1,"116":3,"119":3,"120":3,"126":6,"127":6,"139":3,"140":1,"142":1,"146":1,"169":2}}],["extending",{"2":{"103":1}}],["extended",{"2":{"66":1}}],["extensions",{"2":{"56":1,"173":1}}],["extension",{"2":{"1":1,"6":1,"40":1,"41":1,"61":1,"74":1,"128":1,"148":3,"149":2,"152":1,"153":1,"154":1,"173":1}}],["extent=true",{"2":{"146":1}}],["extent=nothing",{"2":{"136":1}}],["extent=",{"2":{"136":3}}],["extent=false",{"2":{"136":1,"156":1}}],["extent=gi",{"2":{"127":3}}],["extent`",{"2":{"133":1,"146":1}}],["extents",{"2":{"4":3,"6":3,"31":5,"47":1,"54":3,"97":5,"103":1,"127":3,"136":2,"146":2,"167":2}}],["extent",{"0":{"146":1},"2":{"0":2,"1":4,"4":3,"6":11,"24":1,"31":2,"39":1,"46":1,"47":1,"54":10,"97":4,"103":2,"127":12,"133":3,"135":4,"136":28,"146":2,"156":1,"165":1,"167":7}}],["exactly",{"2":{"160":1}}],["exactpredicates",{"2":{"7":1,"13":2,"14":2,"31":1}}],["exact",{"2":{"3":5,"6":5,"7":2,"12":1,"13":1,"45":36,"47":6,"50":7,"51":5,"53":5,"54":7,"55":1,"62":5,"63":7,"72":2,"75":3,"77":1,"78":3,"79":3,"80":1,"85":2,"86":1,"89":2,"91":1,"92":3,"93":2,"94":1,"97":24,"100":2,"103":3,"106":2,"108":1,"109":3,"110":1,"111":1,"116":3,"118":1,"119":3,"120":3,"121":1,"127":1,"144":1}}],["examples",{"0":{"151":1,"155":1},"2":{"3":8,"4":1,"6":11,"26":2,"69":1,"72":1,"75":1,"85":1,"86":1,"89":1,"103":1,"106":1,"116":1,"126":2,"167":1}}],["example",{"0":{"39":1,"57":1,"138":1,"144":1,"176":1,"177":1},"1":{"58":1},"2":{"1":3,"3":2,"6":13,"11":1,"20":1,"23":2,"33":1,"36":1,"39":1,"43":1,"44":1,"46":1,"49":1,"50":1,"51":1,"53":1,"54":1,"62":1,"65":1,"68":1,"69":1,"71":1,"74":1,"84":1,"86":1,"88":1,"97":1,"99":1,"100":1,"102":1,"105":1,"115":1,"126":1,"127":8,"129":1,"136":2,"138":1,"140":1,"143":1,"144":1,"147":1,"155":1,"156":2,"161":1,"166":1,"176":1,"178":1}}],["either",{"2":{"1":2,"3":1,"6":4,"22":1,"25":1,"27":1,"45":9,"51":1,"53":1,"54":2,"62":1,"63":1,"65":1,"75":1,"97":5,"99":1,"105":1,"106":1,"116":1,"127":1,"136":3,"141":1,"175":1}}],["lj",{"2":{"127":2}}],["lrs",{"2":{"156":2}}],["lr",{"2":{"127":3}}],["lp",{"2":{"97":2}}],["lstart",{"2":{"97":2}}],["ls",{"2":{"97":12}}],["ll",{"2":{"17":1,"39":1,"151":2,"156":1,"170":1,"172":1}}],["l",{"2":{"14":4,"40":6,"86":2,"97":32}}],["lgeos",{"2":{"156":1}}],["lg",{"2":{"13":1,"14":1,"15":2,"60":4,"152":9,"156":17}}],["l305",{"2":{"6":1}}],["loudly",{"2":{"136":1}}],["log10",{"2":{"152":2,"156":4}}],["log",{"2":{"131":3,"132":1,"151":2}}],["location",{"2":{"45":1,"97":6}}],["local",{"2":{"34":3,"37":1,"45":4,"52":1,"63":1,"127":1}}],["loose",{"2":{"137":1}}],["lookup",{"2":{"127":1,"136":1}}],["looks",{"2":{"43":1}}],["look",{"2":{"36":2,"127":2,"138":1,"151":1}}],["looping",{"2":{"127":1}}],["loop",{"2":{"34":1,"40":2,"44":3,"45":8,"47":1,"54":1,"63":1,"97":5,"127":3,"158":1}}],["lower",{"2":{"6":1,"7":1,"127":1,"176":1}}],["lon",{"2":{"6":2,"151":1,"152":2}}],["longitude",{"2":{"170":2}}],["long",{"2":{"6":1,"54":1,"152":1,"177":1}}],["longer",{"2":{"6":3,"150":1,"152":2,"153":1}}],["lots",{"2":{"170":1}}],["lot",{"2":{"6":1,"23":1,"34":1,"37":1,"44":1,"47":1,"66":1,"69":1,"103":1,"129":1,"151":1,"166":2}}],["load",{"2":{"136":2,"156":1,"168":2}}],["loading",{"2":{"41":1,"149":1,"152":1}}],["loads",{"2":{"5":1,"6":1,"40":1}}],["loaded",{"2":{"1":1,"41":3,"148":1,"149":2,"152":2}}],["laptop",{"2":{"177":1}}],["land",{"2":{"170":8}}],["layers",{"2":{"134":1}}],["lazy",{"2":{"45":6}}],["lazily",{"2":{"6":1,"131":1,"136":1}}],["label",{"2":{"14":4,"15":2,"58":2,"60":1,"65":1,"127":3,"151":2,"155":2,"156":2}}],["labels",{"2":{"13":2,"127":1}}],["latitude",{"2":{"170":2}}],["later",{"2":{"37":1,"60":1,"127":1}}],["lat",{"2":{"6":3,"151":1,"152":3}}],["larger",{"2":{"45":1,"62":1,"160":1}}],["large",{"2":{"6":8,"40":1,"156":2,"173":1,"177":1}}],["lastindex",{"2":{"160":1}}],["last",{"2":{"4":3,"6":3,"9":1,"34":11,"37":2,"39":2,"45":9,"47":4,"66":7,"69":5,"97":20,"108":1,"127":8,"138":1,"145":2,"158":1}}],["lt",{"2":{"6":6,"54":4,"151":1}}],["len",{"2":{"158":7}}],["length",{"2":{"0":1,"5":1,"6":5,"9":1,"18":1,"40":32,"42":1,"43":1,"44":22,"45":11,"47":1,"50":2,"51":2,"53":1,"54":1,"62":1,"63":1,"97":1,"127":10,"136":3,"145":2,"151":1,"157":1,"158":1,"159":1,"160":7}}],["legend",{"2":{"156":4}}],["le",{"2":{"97":10}}],["leaving",{"2":{"138":1}}],["leaf",{"2":{"136":4}}],["leading",{"2":{"169":1}}],["lead",{"2":{"54":1,"138":1}}],["least",{"2":{"3":4,"6":4,"45":1,"54":1,"63":2,"97":14,"103":6,"106":1,"109":3,"110":2,"111":2,"112":1,"113":1,"116":1,"122":1,"126":1}}],["leftover",{"2":{"45":1}}],["left=1",{"2":{"45":1}}],["left",{"2":{"40":1,"45":5,"126":1,"127":2,"158":17,"160":5,"175":1}}],["lets",{"2":{"37":1}}],["let",{"2":{"36":1,"43":1,"97":1,"127":3,"151":1,"169":6,"170":4,"171":3,"172":2,"173":2,"178":1}}],["levels",{"2":{"6":1,"127":1,"134":1,"164":1}}],["level",{"2":{"6":1,"7":1,"9":1,"18":2,"20":1,"29":1,"134":1,"136":2,"137":1,"139":1,"141":4,"142":1,"143":1,"145":2,"171":2}}],["less",{"2":{"3":1,"6":7,"34":1,"37":1,"40":1,"44":1,"47":1,"66":1,"69":1,"86":1,"103":1,"127":1,"156":1,"157":1}}],["l289",{"2":{"6":1}}],["l2",{"2":{"3":4,"4":4,"6":8,"68":4,"69":12,"71":8,"85":2,"88":5,"102":4,"105":3,"106":2,"115":8}}],["l195",{"2":{"6":1}}],["l177",{"2":{"6":1}}],["l1",{"2":{"3":6,"4":4,"6":10,"68":4,"69":12,"71":8,"74":4,"75":2,"84":4,"85":2,"88":5,"102":4,"105":3,"106":2,"115":8}}],["li",{"2":{"127":2}}],["lie",{"2":{"54":1}}],["lies",{"2":{"45":3,"176":1}}],["limitations",{"2":{"54":1}}],["limits",{"2":{"39":1}}],["limited",{"2":{"6":1,"150":1,"153":1}}],["library",{"2":{"50":1,"173":1}}],["libraries",{"2":{"37":1,"143":1,"173":1}}],["libgeos",{"2":{"6":2,"13":1,"14":1,"15":1,"23":1,"37":1,"41":5,"60":1,"128":1,"152":7,"156":4,"166":2}}],["little",{"2":{"26":1}}],["literate",{"2":{"26":1,"31":1,"34":1,"37":1,"40":1,"41":1,"44":1,"45":1,"47":1,"50":1,"52":1,"54":1,"55":1,"61":1,"63":1,"66":1,"69":1,"72":1,"82":1,"85":1,"86":1,"96":1,"97":1,"100":1,"103":1,"113":1,"123":1,"126":1,"127":1,"128":1,"136":1,"139":1,"142":1,"145":1,"146":1,"147":1,"149":1,"153":1,"160":1,"161":1,"162":1,"166":1,"167":1}}],["lift",{"2":{"14":2}}],["lin",{"2":{"152":5}}],["linked",{"2":{"56":1}}],["linrange",{"2":{"13":2,"14":5,"39":2,"65":1,"127":2,"152":1,"156":2}}],["linering",{"2":{"170":1}}],["linewidth",{"2":{"36":1,"169":1}}],["linesegment",{"2":{"126":2,"153":1}}],["lines",{"0":{"78":1,"92":1,"109":1,"119":1},"2":{"3":1,"4":4,"6":5,"45":3,"49":1,"54":9,"58":1,"59":2,"60":2,"65":1,"68":4,"69":4,"71":3,"74":1,"75":1,"84":2,"86":1,"88":3,"97":2,"99":3,"102":4,"103":2,"105":4,"115":3,"116":1,"127":3,"154":1,"169":4,"174":2}}],["linestrings",{"2":{"4":2,"6":2,"9":1,"69":2,"125":1,"137":1,"169":1}}],["linestringtrait",{"2":{"3":2,"4":4,"6":9,"11":3,"34":1,"44":4,"53":2,"66":2,"69":8,"77":1,"78":4,"79":1,"86":6,"91":1,"92":5,"103":4,"108":1,"109":4,"110":1,"118":1,"119":4,"120":1,"134":1,"141":2,"142":1,"153":2,"164":2}}],["linestring",{"2":{"3":5,"4":6,"6":15,"18":1,"20":1,"34":2,"44":2,"66":4,"68":2,"69":2,"71":2,"72":1,"77":1,"78":3,"85":2,"88":2,"89":1,"91":1,"92":4,"97":2,"102":2,"108":1,"109":3,"110":1,"115":2,"116":1,"118":1,"119":4,"120":1,"126":7,"136":4,"167":3,"169":5,"174":1}}],["linetrait",{"2":{"3":2,"4":4,"6":6,"34":1,"45":2,"50":2,"53":2,"66":2,"69":8,"77":1,"78":4,"79":1,"91":1,"92":5,"103":4,"108":1,"109":4,"110":1,"118":1,"119":4,"120":1}}],["line2",{"2":{"3":3,"6":7,"53":2,"54":2,"86":5,"99":3,"100":2,"103":3,"126":5}}],["line1",{"2":{"3":4,"6":8,"53":2,"54":2,"86":5,"99":3,"100":2,"103":5,"126":5}}],["linea",{"2":{"1":1,"6":1,"161":1}}],["linearmap",{"2":{"156":1}}],["linearalgebra",{"2":{"31":1}}],["linear",{"2":{"4":7,"6":10,"9":1,"37":2,"40":1,"43":1,"44":3,"47":1,"54":1,"66":5,"69":8,"79":1,"97":2,"109":1,"110":2,"119":1,"125":1,"136":2,"139":3,"151":5,"152":3,"153":4}}],["linearr",{"2":{"1":1,"6":1,"161":1}}],["linearrings",{"2":{"9":1,"93":1,"127":6,"137":1,"169":1}}],["linearringtrait",{"2":{"4":4,"6":6,"11":3,"34":3,"37":2,"44":4,"45":4,"53":2,"66":2,"69":8,"77":1,"78":1,"79":4,"91":1,"92":2,"93":3,"108":1,"109":1,"110":4,"118":1,"119":1,"120":4,"141":1,"153":2,"156":1,"164":2}}],["linearring",{"2":{"1":10,"3":2,"4":1,"6":15,"34":2,"44":2,"45":1,"61":1,"66":1,"77":1,"79":3,"91":1,"92":1,"93":2,"97":2,"103":4,"108":1,"109":1,"110":3,"118":1,"120":4,"126":1,"127":3,"136":5,"137":1,"138":6,"139":1,"144":13,"156":1,"161":8,"169":24,"170":6,"171":8,"176":2}}],["linearsegments",{"2":{"0":1,"6":4,"150":1,"151":1,"152":3,"153":5}}],["line",{"0":{"97":1},"2":{"0":1,"3":13,"4":9,"6":52,"23":1,"33":2,"34":7,"43":3,"44":10,"45":12,"47":8,"49":6,"50":18,"53":8,"54":67,"63":6,"66":11,"69":5,"72":2,"74":2,"75":1,"77":2,"78":11,"79":8,"84":1,"86":11,"89":2,"91":1,"92":9,"93":4,"97":141,"99":2,"100":2,"102":3,"103":12,"105":2,"106":2,"108":1,"109":10,"110":3,"116":2,"118":2,"119":10,"120":7,"126":6,"127":2,"153":1,"156":1,"157":1,"158":4,"159":1,"167":3,"169":3}}],["lineorientation",{"2":{"0":1,"6":2,"53":2}}],["lists",{"2":{"20":1,"45":3,"103":1}}],["listed",{"2":{"6":1,"34":1,"156":1}}],["list",{"2":{"6":16,"9":1,"34":20,"45":233,"50":20,"51":14,"52":8,"53":13,"54":5,"62":13,"63":1,"177":2}}],["likely",{"2":{"134":1}}],["like",{"0":{"55":1},"2":{"1":2,"6":9,"17":1,"18":2,"19":1,"20":1,"23":1,"24":1,"29":1,"37":1,"39":1,"40":1,"43":1,"47":1,"51":1,"53":1,"61":1,"62":1,"65":1,"66":1,"69":1,"129":2,"136":2,"141":2,"142":1,"150":1,"151":1,"164":2,"170":2}}],["iah",{"2":{"174":2}}],["image",{"2":{"127":1}}],["impossible",{"2":{"50":1,"102":1}}],["important",{"2":{"151":1}}],["import",{"2":{"1":3,"6":5,"13":2,"14":2,"15":1,"31":7,"33":1,"36":1,"41":1,"43":1,"46":1,"50":1,"51":1,"53":1,"54":1,"62":1,"65":1,"68":1,"69":1,"71":1,"72":1,"74":1,"75":1,"84":1,"85":1,"86":1,"88":1,"89":1,"99":1,"100":1,"102":1,"103":1,"105":1,"106":1,"115":1,"116":1,"126":3,"136":2,"149":1,"152":2,"155":2,"156":3,"161":2,"167":1,"168":5}}],["implements",{"2":{"166":1}}],["implementing",{"2":{"6":1,"156":1}}],["implement",{"2":{"6":1,"17":1,"23":1,"34":1,"37":1,"40":1,"44":1,"47":1,"61":1,"66":1,"69":1,"75":1,"89":1,"103":1,"106":1,"116":1,"129":1,"140":1,"141":3,"142":1}}],["implementation",{"0":{"34":1,"37":1,"44":1,"47":1,"50":1,"61":1,"66":1,"69":1,"72":1,"75":1,"85":1,"89":1,"100":1,"103":1,"106":1,"116":1,"133":1,"139":1,"145":1,"153":1},"2":{"6":1,"34":3,"37":3,"40":1,"44":3,"47":3,"62":1,"66":3,"69":3,"72":1,"75":2,"85":1,"89":2,"100":1,"103":3,"106":2,"116":2,"127":2,"128":1,"148":1,"156":1,"166":1}}],["implementations",{"2":{"6":1,"75":1,"89":1,"106":1,"116":1,"128":1,"154":1,"166":3}}],["implemented",{"0":{"128":1},"2":{"1":1,"6":2,"31":1,"37":1,"40":3,"50":2,"52":2,"54":2,"61":1,"63":2,"66":2,"128":1,"129":2,"141":2,"148":1,"154":1}}],["improvements",{"2":{"9":2,"10":1}}],["improve",{"2":{"4":1,"6":1,"146":1}}],["i=2",{"2":{"126":1}}],["ipoints",{"2":{"97":4}}],["ip",{"2":{"69":2}}],["ipt",{"2":{"45":8}}],["ihole",{"2":{"69":2}}],["ih",{"2":{"63":20}}],["i2",{"2":{"47":2}}],["i1",{"2":{"47":2}}],["ii",{"2":{"45":8}}],["io",{"2":{"41":5,"149":5,"152":5}}],["i+1",{"2":{"40":8,"127":1,"158":2,"160":1}}],["i",{"2":{"9":1,"13":4,"22":1,"34":14,"37":1,"40":16,"45":28,"47":4,"52":2,"62":2,"63":4,"66":2,"69":8,"86":7,"97":28,"126":14,"127":17,"136":14,"153":2,"157":3,"158":12,"160":28,"167":2,"169":2,"170":1,"177":3}}],["id",{"2":{"172":1}}],["identical",{"2":{"136":1,"144":1}}],["identity",{"2":{"127":4,"136":2,"146":1}}],["ideal",{"2":{"127":1}}],["idea",{"2":{"6":1,"20":1,"25":1,"27":1,"40":1,"129":1}}],["idx`",{"2":{"45":1}}],["idx",{"2":{"34":6,"45":167,"47":9,"50":23,"51":5,"53":5,"62":2,"145":34,"158":51}}],["id=",{"2":{"6":2}}],["ignored",{"2":{"6":1,"127":1}}],["ignore",{"2":{"6":1,"127":2}}],["i>",{"2":{"6":2}}],["i>method",{"2":{"6":2}}],["innerjoin",{"2":{"176":1,"177":1}}],["inner",{"2":{"97":6,"136":3,"175":1}}],["inline",{"2":{"97":4,"126":1,"136":21,"165":2}}],["in=1",{"2":{"97":1}}],["in`",{"2":{"97":1}}],["inject",{"0":{"55":1},"2":{"149":1}}],["inaccuracies",{"2":{"54":1}}],["ind",{"2":{"177":2}}],["individual",{"2":{"171":1}}],["indicate",{"2":{"136":1}}],["indicates",{"2":{"20":1}}],["indices",{"2":{"45":4,"136":4,"160":16}}],["indeed",{"2":{"138":1}}],["index",{"2":{"40":8,"45":12,"97":1,"136":1,"158":1}}],["inds",{"2":{"127":3}}],["inplace",{"2":{"40":1}}],["inputs",{"2":{"6":1,"45":1,"69":1,"72":1,"85":1,"100":1,"160":1}}],["input",{"2":{"6":12,"34":1,"50":1,"51":1,"53":1,"54":1,"62":1,"127":1,"129":1,"152":3,"153":2,"157":1,"158":1,"159":1,"170":1}}],["inbounds",{"2":{"40":16,"66":5,"97":1}}],["inspiration",{"2":{"50":1}}],["inspired",{"2":{"49":1,"50":2}}],["inside",{"2":{"34":3,"43":1,"45":3,"47":1,"51":1,"52":1,"53":1,"54":1,"62":1,"63":2,"65":3,"66":1,"77":1,"97":1,"115":1,"118":1,"127":2}}],["insertion",{"2":{"45":1}}],["insert",{"2":{"34":1,"158":1}}],["instability",{"2":{"24":2}}],["instantiating",{"2":{"20":1}}],["instead",{"2":{"18":1,"24":1}}],["instructs",{"2":{"6":1,"166":2}}],["init=nothing",{"2":{"136":1}}],["init=typemax",{"2":{"66":2}}],["init=zero",{"2":{"37":1,"47":1}}],["initial",{"2":{"54":2,"152":1}}],["initially",{"2":{"45":1}}],["initialize",{"2":{"40":3,"44":2,"45":1,"54":1}}],["init",{"2":{"19":1,"31":1,"34":1,"44":2,"136":30,"152":4}}],["incorrect",{"2":{"137":1,"138":1}}],["increase",{"2":{"45":1,"97":1}}],["increasing",{"2":{"6":1,"156":1}}],["increment",{"2":{"40":5}}],["including",{"2":{"34":1,"45":2,"54":1,"66":1,"77":1,"78":1,"79":1,"80":1,"97":2}}],["include",{"2":{"31":41,"34":1,"45":1,"56":1,"66":2,"156":2,"165":1,"171":2,"172":1}}],["included",{"2":{"6":2,"63":2,"142":2,"145":2,"171":1}}],["includes",{"2":{"4":2,"6":2,"63":1,"66":2,"69":1,"97":1}}],["incircle",{"0":{"16":1}}],["investigate",{"2":{"127":1}}],["investigating",{"0":{"60":1}}],["inverted",{"2":{"6":1,"61":1}}],["invalid",{"2":{"20":1,"52":2,"138":1,"143":1,"144":1}}],["invoke",{"2":{"20":1}}],["involved",{"2":{"129":1}}],["involve",{"2":{"20":1}}],["involving",{"2":{"6":3,"51":1,"53":1,"62":1}}],["invocation",{"2":{"18":1}}],["ing",{"2":{"1":1,"6":2,"40":1,"161":1}}],["intr",{"2":{"45":28,"47":9,"50":16,"54":8}}],["intr2",{"2":{"45":2,"54":14}}],["intr1",{"2":{"45":3,"54":21,"97":2}}],["intrs",{"2":{"45":10,"54":5}}],["introduction",{"0":{"27":1},"1":{"28":1,"29":1,"30":1}}],["introducing",{"2":{"24":1}}],["introduces",{"2":{"24":1}}],["int",{"2":{"45":6,"63":7,"86":7,"153":1,"156":1,"158":5,"159":1,"160":1}}],["integrate",{"2":{"37":1}}],["integrating",{"2":{"37":1}}],["integrals",{"2":{"36":1}}],["integral",{"2":{"36":1}}],["intended",{"2":{"6":1,"141":2,"142":1}}],["intermediate",{"2":{"47":1}}],["inter2",{"2":{"47":15}}],["inter1",{"2":{"47":23}}],["interpreted",{"2":{"40":1}}],["interpolation",{"2":{"5":1,"6":1,"39":1,"40":2,"150":1}}],["interpolated",{"2":{"5":3,"6":3,"40":17,"150":1}}],["interpolate",{"2":{"0":2,"5":2,"6":4,"38":1,"39":2,"40":25}}],["interest",{"2":{"40":1,"66":1}}],["internal",{"2":{"39":1}}],["internals",{"2":{"24":1}}],["inter",{"2":{"6":3,"45":21,"50":1,"51":1,"53":5,"54":4}}],["interface",{"0":{"141":1},"2":{"6":3,"20":1,"56":1,"61":1,"136":1,"140":1,"141":4,"142":1,"156":1,"170":1}}],["interacted",{"2":{"97":1}}],["interaction",{"0":{"97":1},"2":{"97":2}}],["interactions",{"2":{"45":1,"63":3,"97":15}}],["interactive",{"2":{"13":1,"14":1}}],["interacting",{"2":{"6":1,"53":1,"97":2}}],["interacts",{"2":{"3":1,"6":1,"97":3,"105":1,"106":1,"109":3,"110":1,"111":1}}],["interact",{"2":{"3":2,"6":2,"62":1,"63":1,"88":1,"97":5,"100":1,"105":1,"106":1,"108":1,"109":2,"110":2,"111":1}}],["interior",{"2":{"3":6,"6":7,"34":9,"36":1,"40":7,"44":5,"45":1,"63":18,"71":1,"72":1,"74":1,"75":3,"78":5,"79":1,"80":2,"84":2,"85":1,"86":1,"89":2,"91":2,"92":6,"93":3,"97":15,"105":1,"106":3,"109":1,"110":2,"111":2,"115":1,"116":3,"121":2,"126":2,"139":1,"142":1}}],["interiors",{"2":{"3":6,"6":7,"40":20,"71":1,"72":1,"74":1,"84":1,"85":1,"88":1,"89":1,"94":1,"97":5,"99":1,"100":1,"105":1,"106":1,"108":1,"109":2,"110":1,"115":1,"116":1,"119":3,"120":3}}],["intersectingpolygons",{"2":{"6":3}}],["intersecting",{"0":{"143":1},"1":{"144":1,"145":1},"2":{"6":4,"31":1,"45":2,"63":2,"142":4,"143":1,"145":4}}],["intersections",{"0":{"54":1},"2":{"45":2,"47":2,"52":1,"53":2,"54":1,"63":1,"97":2}}],["intersection",{"0":{"53":1,"98":1},"1":{"99":1,"100":1},"2":{"0":2,"3":3,"6":19,"9":1,"15":4,"23":1,"31":1,"45":38,"47":6,"50":3,"51":4,"52":4,"53":15,"54":73,"62":2,"63":2,"86":2,"97":6,"99":1,"103":5}}],["intersect",{"2":{"3":8,"6":11,"45":4,"47":3,"51":2,"53":1,"54":1,"62":1,"63":5,"71":1,"72":2,"74":1,"75":1,"85":1,"89":1,"92":1,"94":1,"97":4,"99":2,"103":1,"115":1,"116":2,"119":3,"120":3,"144":1,"145":4}}],["intersects",{"0":{"99":1},"2":{"0":2,"3":3,"6":6,"31":1,"45":1,"54":2,"63":2,"86":2,"98":1,"99":4,"100":4,"103":5,"121":1,"145":2,"175":1}}],["into",{"2":{"5":1,"6":7,"17":1,"26":1,"34":1,"37":1,"40":1,"44":4,"45":2,"50":1,"51":1,"53":1,"97":1,"127":4,"131":1,"136":6,"145":1,"156":1,"164":1,"167":2,"169":2,"175":1}}],["int64",{"2":{"1":6,"6":6,"138":6,"157":1,"158":1,"160":1,"161":6,"169":14}}],["info",{"2":{"150":1}}],["information",{"0":{"171":1},"2":{"6":1,"29":1,"40":1,"45":2,"46":1,"54":1,"61":1,"97":1,"168":1,"171":3,"173":2}}],["infinity",{"2":{"97":1,"103":1}}],["inf",{"2":{"1":1,"9":1,"50":2,"157":1,"160":3}}],["in",{"0":{"23":1},"2":{"1":6,"3":3,"4":1,"5":4,"6":51,"7":1,"9":2,"13":6,"14":2,"17":2,"18":4,"20":1,"23":3,"24":2,"25":1,"26":3,"27":1,"29":1,"30":1,"31":2,"34":7,"36":1,"37":3,"38":2,"40":22,"41":1,"43":2,"44":5,"45":73,"47":31,"50":6,"51":9,"52":3,"53":5,"54":29,"60":1,"61":3,"62":11,"63":28,"65":6,"66":6,"68":1,"69":17,"71":2,"72":1,"75":10,"78":1,"79":1,"80":1,"81":1,"82":1,"85":1,"86":7,"89":9,"91":1,"92":1,"93":1,"95":1,"96":1,"97":135,"99":2,"100":1,"102":1,"103":11,"105":1,"106":11,"110":1,"112":1,"113":1,"115":1,"116":10,"119":3,"120":3,"122":1,"123":1,"126":4,"127":10,"128":3,"129":1,"131":3,"134":2,"135":1,"136":12,"140":1,"141":1,"142":2,"143":1,"145":7,"146":1,"147":2,"148":3,"149":1,"150":2,"151":2,"152":14,"153":7,"154":1,"156":5,"157":2,"158":4,"159":1,"160":5,"161":2,"162":1,"163":4,"164":1,"165":1,"166":4,"167":8,"168":1,"169":2,"170":6,"173":2,"175":4,"176":3,"177":1,"178":1}}],["itererable",{"2":{"167":1}}],["iter",{"2":{"136":31}}],["iterate",{"2":{"40":2,"134":1,"136":5}}],["iteration",{"2":{"37":1}}],["iterators",{"2":{"13":1,"40":1,"45":8,"47":3,"53":1,"63":2,"127":1,"136":11,"145":6,"153":1}}],["iterator",{"2":{"6":2,"45":7,"53":2,"131":2,"136":2}}],["iterabletype",{"2":{"136":10}}],["iterable",{"2":{"4":1,"6":3,"18":1,"37":1,"47":1,"61":1,"131":1,"136":37,"169":1}}],["iterables",{"2":{"1":2,"6":2,"22":1,"136":6}}],["ith",{"2":{"45":3,"63":7}}],["itself",{"2":{"47":1,"126":1,"134":1}}],["its",{"2":{"5":1,"6":10,"18":1,"36":1,"40":1,"45":2,"47":4,"63":1,"78":1,"131":1,"136":1,"140":1,"156":1,"157":1,"158":1,"159":3,"175":1}}],["it",{"2":{"1":4,"4":1,"6":19,"9":1,"18":11,"19":2,"20":1,"22":1,"29":3,"30":1,"33":1,"34":1,"36":2,"37":3,"39":1,"41":1,"44":2,"45":2,"46":1,"47":2,"51":1,"52":1,"53":1,"54":4,"60":2,"61":2,"62":1,"63":3,"66":3,"69":1,"74":2,"77":3,"91":3,"97":14,"102":1,"103":1,"108":2,"118":3,"125":1,"126":2,"127":4,"129":3,"131":3,"134":3,"135":1,"136":15,"138":1,"139":1,"140":1,"142":1,"143":1,"148":5,"151":2,"152":1,"156":1,"158":1,"163":1,"164":2,"165":1,"166":7,"170":3,"171":3,"173":3,"177":2,"178":2}}],["iff",{"2":{"136":1}}],["if",{"0":{"55":1},"2":{"1":5,"3":17,"4":19,"5":1,"6":74,"18":1,"22":2,"33":1,"34":15,"36":1,"37":6,"40":5,"41":3,"44":1,"45":100,"47":36,"50":8,"51":13,"52":12,"53":9,"54":44,"61":3,"62":10,"63":22,"65":2,"66":8,"68":2,"69":35,"71":1,"72":1,"74":1,"75":2,"77":4,"78":3,"79":3,"80":2,"81":1,"82":1,"84":1,"85":1,"86":9,"88":1,"89":3,"91":5,"92":4,"93":2,"94":2,"95":1,"96":1,"97":132,"99":1,"100":1,"102":4,"103":16,"105":1,"106":2,"108":4,"109":3,"110":2,"111":2,"112":1,"113":1,"115":1,"116":2,"118":5,"119":3,"120":3,"121":1,"122":1,"123":1,"126":5,"127":35,"131":1,"134":1,"136":21,"139":1,"141":1,"142":2,"143":1,"145":12,"146":1,"147":1,"148":3,"149":2,"152":6,"153":2,"156":1,"158":12,"160":12,"161":1,"162":1,"165":1,"166":2,"170":1,"173":1,"176":2,"177":1}}],["isolate",{"2":{"156":1}}],["isodd",{"2":{"50":1}}],["istable",{"2":{"136":2}}],["isequal",{"2":{"127":1}}],["iseven",{"2":{"97":1}}],["isempty",{"2":{"37":1,"40":4,"47":1,"51":1,"52":2,"53":1,"127":1,"141":1,"158":1}}],["isparallel",{"2":{"97":1,"126":8}}],["is3d",{"2":{"69":1,"136":1,"147":1,"161":1,"162":1,"167":10}}],["issue",{"2":{"45":1}}],["issues",{"2":{"25":1,"27":1}}],["isa",{"2":{"18":1,"40":9,"45":1,"136":4,"167":1}}],["isnothing",{"2":{"41":1,"45":9,"50":1,"52":2,"54":2,"63":2,"69":1,"127":1,"149":1,"152":1,"156":1,"157":1,"158":5,"159":1,"160":6}}],["isn",{"2":{"6":1,"37":1,"45":4,"47":1,"50":1,"52":1,"54":3,"63":2,"66":3,"69":1,"74":1,"97":9,"103":1,"156":1,"166":1}}],["isconcave",{"0":{"126":1},"2":{"0":1,"6":2,"60":1,"124":1,"126":3}}],["isclockwise",{"0":{"125":1},"2":{"0":1,"6":2,"47":1,"124":1,"126":5,"127":2}}],["is",{"0":{"25":1,"33":1,"36":2,"43":1,"46":1,"49":1,"65":2,"68":1,"71":1,"74":1,"84":1,"88":1,"99":1,"102":1,"105":1,"115":1,"134":1},"2":{"0":1,"1":10,"3":8,"4":43,"5":1,"6":108,"9":3,"11":1,"13":1,"14":1,"18":3,"19":1,"20":1,"22":3,"23":2,"25":2,"27":2,"33":1,"34":19,"36":7,"37":19,"38":2,"39":2,"40":15,"41":3,"43":2,"44":5,"45":88,"46":3,"47":22,"49":1,"50":2,"51":4,"52":13,"53":4,"54":40,"56":1,"60":5,"61":4,"62":7,"63":20,"65":8,"66":23,"69":13,"71":2,"72":3,"74":4,"75":4,"77":7,"78":3,"79":3,"80":1,"81":1,"82":1,"85":3,"86":3,"88":1,"89":5,"91":9,"92":4,"93":2,"94":1,"95":1,"96":1,"97":91,"100":2,"102":3,"103":12,"106":4,"108":2,"115":4,"116":5,"118":8,"119":3,"120":3,"121":1,"122":2,"123":1,"125":2,"126":7,"127":11,"128":1,"129":2,"131":1,"134":3,"135":1,"136":24,"137":7,"138":2,"139":1,"140":3,"141":2,"142":1,"143":4,"144":1,"145":2,"147":1,"148":7,"149":2,"150":3,"151":3,"152":9,"153":6,"155":1,"156":4,"157":1,"158":2,"159":1,"161":2,"163":1,"164":1,"165":1,"166":3,"169":4,"170":5,"171":3,"172":1,"173":3,"175":2,"176":5,"177":2}}],["cpu",{"2":{"177":1}}],["cp",{"2":{"174":1}}],["cy",{"2":{"126":2}}],["cyan",{"2":{"41":1,"149":1,"152":1}}],["cx",{"2":{"126":2}}],["cdot",{"2":{"126":1}}],["cs",{"2":{"97":9}}],["cshape",{"2":{"43":3}}],["cw",{"2":{"47":2}}],["cb",{"2":{"39":1,"60":1,"127":1}}],["cgrad",{"2":{"39":1}}],["cgal",{"2":{"39":1}}],["c",{"2":{"37":1,"43":1,"47":4,"50":5,"55":3,"97":24,"152":1}}],["cleaner",{"2":{"61":1}}],["cleanest",{"2":{"61":1}}],["clear",{"2":{"46":1}}],["clearly",{"2":{"33":1,"36":1,"65":1}}],["clamped",{"2":{"54":18}}],["clamp",{"2":{"34":1,"54":1}}],["classified",{"2":{"45":1}}],["classify",{"2":{"45":4}}],["class",{"2":{"6":1,"127":1}}],["clipping",{"0":{"45":1,"51":1,"52":1,"54":1,"62":1,"63":1},"2":{"6":1,"9":1,"31":8,"45":9,"50":3,"51":1,"53":1,"62":1,"143":1}}],["closure",{"2":{"136":2}}],["closing",{"2":{"34":1}}],["close",{"2":{"34":5,"45":2,"47":1,"50":1,"54":1,"66":9,"127":1,"138":1,"139":4}}],["closest",{"2":{"4":3,"6":3,"54":2,"65":1,"66":6}}],["closed2",{"2":{"69":2}}],["closed1",{"2":{"69":2}}],["closed",{"0":{"137":1},"1":{"138":1,"139":1},"2":{"4":4,"6":11,"9":1,"31":1,"34":6,"37":3,"44":3,"45":11,"47":1,"54":1,"63":3,"69":21,"77":2,"78":5,"79":5,"91":2,"92":5,"93":3,"97":52,"109":5,"110":1,"118":3,"119":5,"120":5,"126":1,"127":1,"137":1,"138":1,"139":2,"140":1,"142":1,"169":1}}],["closedring",{"2":{"0":1,"6":1,"137":1,"138":1,"139":4,"140":1,"141":1,"142":1}}],["clockwise",{"2":{"4":1,"6":4,"9":1,"36":1,"37":1,"47":7,"60":1,"125":2,"126":3,"127":1}}],["ceil",{"2":{"153":1}}],["ce",{"2":{"97":11}}],["certainly",{"2":{"54":1}}],["certain",{"2":{"17":1,"18":1,"26":1,"29":1}}],["central",{"2":{"45":1}}],["centroids",{"2":{"43":1,"44":1}}],["centroid",{"0":{"42":1,"43":1},"1":{"43":1,"44":1},"2":{"0":4,"4":2,"6":6,"31":1,"42":3,"43":4,"44":38,"129":1,"156":4}}],["cent",{"2":{"43":2}}],["centered",{"2":{"45":1}}],["center",{"2":{"6":1,"43":1,"127":1}}],["cells",{"2":{"127":1}}],["cell",{"2":{"6":4,"46":3,"47":28,"127":2}}],["chunks",{"2":{"136":8}}],["chunk",{"2":{"136":12}}],["chose",{"2":{"24":1,"127":1}}],["choose",{"2":{"6":1,"61":1,"127":2}}],["changes",{"2":{"45":1}}],["changed",{"2":{"45":1}}],["change",{"2":{"24":1,"45":1,"60":1}}],["chain=2",{"2":{"45":1}}],["chain=1",{"2":{"45":1}}],["chain",{"2":{"45":66,"52":3,"54":4,"60":2,"63":4}}],["chains",{"2":{"20":1,"45":1}}],["chairmarks",{"2":{"13":1,"152":1,"156":1}}],["children",{"2":{"156":1}}],["child",{"2":{"6":2,"131":2,"136":7}}],["checkargs",{"2":{"157":1,"158":1,"159":1,"160":1}}],["checking",{"2":{"69":1,"158":1}}],["checks",{"0":{"86":1,"98":1},"1":{"99":1,"100":1},"2":{"41":1,"45":1,"54":1,"68":1,"71":1,"74":1,"84":1,"88":1,"97":5,"99":1,"102":1,"103":1,"105":1,"115":1,"176":1}}],["check",{"2":{"4":1,"6":1,"7":1,"44":1,"45":9,"47":3,"50":1,"51":1,"54":4,"55":1,"62":1,"69":8,"97":11,"127":5,"131":3,"132":1,"144":1,"146":1,"151":2,"158":1,"160":1}}],["checked",{"2":{"4":1,"6":1,"45":1,"54":1,"60":1,"97":1,"146":1}}],["c2",{"2":{"6":3,"15":2,"66":3,"69":14,"127":21}}],["c1",{"2":{"6":3,"15":2,"66":4,"69":13,"127":26}}],["ctor",{"2":{"1":1,"6":1,"161":1}}],["categorize",{"2":{"50":1}}],["categorical",{"2":{"39":1}}],["came",{"2":{"50":1}}],["case",{"2":{"34":1,"38":2,"44":1,"45":1,"51":1,"54":2,"63":1,"97":16,"136":1,"178":1}}],["cases",{"2":{"6":1,"40":1,"50":2,"97":3,"134":1,"136":5}}],["cause",{"2":{"18":1,"23":1,"158":1}}],["careful",{"2":{"40":1,"134":1}}],["care",{"2":{"17":1}}],["carried",{"2":{"6":1,"166":1}}],["cairomakie",{"2":{"13":1,"33":1,"36":1,"39":2,"43":1,"46":1,"49":1,"58":1,"59":1,"60":1,"65":1,"68":1,"71":1,"74":1,"84":1,"88":1,"99":1,"102":1,"105":1,"115":1,"151":1,"152":1,"156":1,"168":1,"174":1,"176":1,"177":1}}],["california",{"2":{"177":1}}],["callable",{"2":{"127":4,"141":1}}],["calling",{"2":{"45":2,"136":1}}],["calls",{"2":{"45":1,"54":1,"63":1,"66":1,"75":1,"89":1,"106":1,"116":1,"134":1,"136":1,"153":1}}],["call",{"2":{"18":1,"24":1,"37":1,"44":1,"136":4,"154":1}}],["called",{"2":{"6":2,"44":3,"45":1,"136":1,"139":1,"141":1,"142":1,"166":1,"170":1}}],["calculation",{"2":{"54":1}}],["calculations",{"2":{"6":1,"25":2,"27":2,"54":1,"152":1}}],["calculating",{"2":{"4":1,"6":1,"18":1,"45":1,"146":1}}],["calculated",{"2":{"6":1,"43":2,"47":1,"54":2,"66":1,"136":4}}],["calculates",{"2":{"4":2,"6":6,"37":1,"40":2,"47":1,"54":2,"62":1,"66":2,"152":1,"159":1}}],["calculate",{"2":{"1":2,"5":1,"6":6,"11":1,"34":3,"40":3,"44":1,"47":1,"54":1,"97":1,"127":1,"133":1,"136":3}}],["calc",{"2":{"1":2,"6":4,"24":1,"34":4,"133":1,"135":1,"136":15,"146":1,"156":2,"165":1}}],["cache",{"2":{"6":1,"40":1}}],["cant",{"2":{"69":1,"127":1,"167":1}}],["cannot",{"2":{"3":3,"4":2,"6":5,"37":1,"69":1,"77":1,"80":1,"103":2,"106":1,"108":2,"110":1,"121":1}}],["can",{"2":{"1":1,"4":2,"6":16,"7":2,"9":1,"13":1,"14":1,"24":1,"26":1,"31":1,"34":1,"37":1,"38":2,"39":1,"40":3,"41":1,"44":1,"45":3,"47":1,"51":3,"53":3,"54":1,"60":1,"61":2,"62":3,"63":1,"68":1,"69":3,"71":1,"74":1,"86":1,"88":1,"97":23,"99":2,"102":2,"103":3,"105":1,"109":1,"110":1,"115":1,"118":1,"119":1,"120":1,"127":1,"128":1,"129":1,"131":1,"135":1,"136":7,"138":2,"139":1,"142":1,"143":2,"144":1,"146":1,"149":1,"151":1,"152":2,"156":2,"166":1,"169":6,"170":1,"171":3,"173":3,"175":3,"176":3}}],["creation",{"2":{"169":1,"171":1}}],["creating",{"0":{"168":1,"169":1,"172":1},"1":{"169":1,"170":1,"171":1,"172":1,"173":1},"2":{"97":1}}],["creates",{"2":{"7":1,"45":3}}],["create",{"0":{"171":1},"2":{"6":2,"13":2,"14":1,"45":1,"50":1,"54":2,"61":1,"127":2,"136":1,"142":2,"143":3,"145":2,"168":2,"169":4,"170":5,"171":3,"172":1,"173":1,"176":1}}],["created",{"2":{"4":2,"6":2,"45":1,"66":3}}],["criteria",{"2":{"75":2,"89":2,"106":2,"116":2,"158":3}}],["cropping",{"2":{"39":2}}],["cross=1",{"2":{"53":1}}],["cross`",{"2":{"53":1}}],["crossings",{"2":{"45":3,"97":1}}],["crossing",{"0":{"86":1},"2":{"6":2,"45":81,"51":1,"52":7,"53":3,"54":7,"62":1,"63":6,"75":1,"86":1,"97":1,"116":1}}],["cross",{"0":{"113":1},"2":{"6":1,"9":1,"34":3,"45":13,"50":14,"51":2,"52":1,"53":2,"54":10,"55":4,"62":2,"63":1,"75":1,"86":2,"89":1,"97":17,"103":2,"106":1,"116":1,"126":3}}],["crosses",{"2":{"0":2,"3":2,"6":3,"31":1,"45":1,"50":1,"86":26,"97":2,"175":1}}],["crc",{"2":{"6":1,"40":1}}],["crs2",{"2":{"170":2}}],["crs1",{"2":{"170":2,"171":1}}],["crs`",{"2":{"148":6}}],["crs=nothing",{"2":{"136":1,"146":1,"156":1}}],["crs=gi",{"2":{"136":7}}],["crs",{"0":{"170":1},"2":{"1":16,"4":2,"6":10,"61":1,"127":10,"133":2,"135":3,"136":27,"146":1,"148":7,"156":1,"168":1,"170":13,"171":7,"173":1}}],["customize",{"2":{"136":2}}],["custom",{"0":{"178":1},"2":{"6":1,"40":1,"178":2}}],["curr^2",{"2":{"34":2}}],["curr",{"2":{"34":8,"45":114,"50":9,"63":3,"145":26}}],["currentnode",{"2":{"127":8}}],["current",{"2":{"34":1,"40":8,"45":3,"50":2,"52":1,"54":1,"63":6,"127":2,"145":3}}],["currently",{"2":{"5":1,"6":3,"23":1,"40":1,"45":1,"50":1,"52":2,"127":1,"136":1}}],["curve",{"0":{"97":1},"2":{"3":1,"4":7,"6":18,"34":6,"37":7,"45":6,"47":3,"53":7,"65":1,"66":22,"69":6,"75":2,"77":4,"78":9,"79":9,"89":1,"91":4,"92":6,"93":3,"97":152,"103":1,"106":1,"109":6,"111":3,"116":1,"118":4,"119":6,"120":6}}],["curves",{"2":{"0":1,"3":1,"6":5,"37":3,"47":3,"54":1,"65":1,"66":1,"69":13,"80":1,"97":1,"103":1,"121":1,"156":2}}],["cutpolygon",{"2":{"49":1}}],["cuts",{"2":{"49":1}}],["cutting",{"0":{"48":1},"1":{"49":1,"50":1},"2":{"45":1,"50":2}}],["cut",{"0":{"49":1},"2":{"0":1,"6":6,"31":1,"40":1,"48":1,"49":5,"50":22,"97":1}}],["coastlines",{"2":{"174":1}}],["coarse",{"2":{"6":1,"150":1,"153":1}}],["cos",{"2":{"169":3,"170":1,"171":2}}],["copy",{"2":{"141":1,"160":1}}],["coors1",{"2":{"126":2}}],["coors2",{"2":{"126":3}}],["coord",{"2":{"153":6}}],["coords",{"2":{"50":9,"153":8}}],["coordinatetransformations",{"2":{"1":2,"6":2,"156":1,"161":2,"168":1,"169":5,"171":2}}],["coordinate",{"0":{"40":1,"147":1,"170":1,"171":1},"2":{"1":4,"5":5,"6":7,"25":1,"27":1,"39":2,"40":10,"136":1,"148":4,"153":1,"168":3,"170":1}}],["coordinates",{"0":{"5":1,"38":1},"1":{"39":1,"40":1},"2":{"0":4,"1":1,"4":2,"5":7,"6":20,"37":2,"38":8,"40":25,"45":2,"46":1,"50":2,"51":1,"53":1,"62":1,"66":1,"69":2,"129":1,"147":2,"148":1,"151":1,"152":3,"170":2}}],["co",{"2":{"97":2}}],["corner",{"2":{"47":4,"127":1}}],["corners",{"2":{"47":1}}],["correspondent",{"2":{"126":1}}],["correspond",{"2":{"45":1}}],["corresponding",{"2":{"34":3,"52":2}}],["correctly",{"2":{"151":1}}],["corrected",{"2":{"141":1}}],["correctness",{"2":{"137":1,"166":1}}],["correcting",{"2":{"20":1,"141":1}}],["corrections",{"0":{"140":1,"142":1},"1":{"141":1,"142":1},"2":{"138":1,"141":6,"144":1}}],["correction",{"2":{"6":10,"31":4,"51":1,"52":2,"53":1,"54":2,"62":1,"63":2,"137":1,"139":2,"140":2,"141":8,"142":7,"143":1,"145":2}}],["correct",{"2":{"6":3,"24":1,"34":1,"37":1,"44":1,"45":1,"47":1,"51":1,"53":1,"62":1,"66":1,"69":1,"75":1,"89":1,"103":1,"106":1,"116":1,"137":1,"138":2,"140":1}}],["cov",{"2":{"47":16}}],["cover",{"2":{"77":1,"81":1}}],["covering",{"2":{"6":2,"84":1,"142":2,"145":2}}],["covered",{"0":{"79":1,"80":1,"120":1},"2":{"3":1,"6":1,"52":1,"63":1,"74":1,"75":1,"79":2,"80":2,"81":1,"82":2,"84":1,"96":2,"97":3,"145":1}}],["coveredby",{"0":{"73":1,"74":1,"77":1,"78":1,"81":1,"82":1,"96":1},"1":{"74":1,"75":1},"2":{"0":2,"3":4,"6":4,"31":1,"45":1,"73":1,"74":3,"75":10,"76":6,"77":13,"78":15,"79":13,"80":5,"81":2,"82":2,"85":3,"175":1}}],["covers",{"0":{"83":1,"84":1},"1":{"84":1,"85":1},"2":{"0":2,"3":5,"6":5,"31":1,"83":1,"84":4,"85":5,"127":1,"175":1}}],["coverages",{"2":{"6":1,"47":1}}],["coverage",{"0":{"46":1},"2":{"0":1,"6":2,"31":1,"46":3,"47":16}}],["code",{"2":{"7":1,"10":1,"26":5,"40":1,"75":1,"89":1,"97":1,"106":1,"116":1,"126":1,"163":1,"165":1,"177":1}}],["colname",{"2":{"136":3}}],["col",{"2":{"136":3}}],["column",{"2":{"22":1,"136":16,"172":2,"175":2}}],["colored",{"2":{"176":1}}],["color=",{"2":{"170":2}}],["colors",{"2":{"58":1,"59":1,"174":1,"176":2}}],["colorrange",{"2":{"39":2,"65":1}}],["colorbar",{"2":{"39":1,"60":1,"65":1,"127":1}}],["colormap",{"2":{"14":1,"39":3,"65":1}}],["color",{"2":{"6":3,"36":1,"39":2,"40":1,"41":1,"43":1,"49":3,"58":1,"59":1,"60":2,"65":2,"68":4,"71":4,"74":1,"84":1,"88":4,"102":4,"115":4,"149":1,"152":1,"169":1,"170":1,"174":1,"176":5}}],["collect",{"2":{"11":3,"13":1,"33":1,"36":2,"40":1,"43":1,"46":2,"49":2,"61":2,"65":1,"127":3,"136":3,"151":4,"167":2}}],["collections",{"0":{"81":1,"82":1,"95":1,"96":1,"112":1,"113":1,"122":1,"123":1},"2":{"1":2,"6":10,"22":1,"135":1,"136":7,"156":2,"173":1}}],["collection",{"2":{"1":1,"4":7,"6":13,"18":2,"29":2,"34":2,"37":3,"47":2,"66":2,"81":2,"82":2,"95":2,"96":2,"112":2,"113":2,"122":2,"123":2,"129":1,"136":3,"156":1,"162":1,"167":1}}],["collinear",{"2":{"3":1,"6":2,"45":5,"51":2,"53":3,"54":12,"62":2,"102":1,"103":2}}],["commonly",{"2":{"173":1}}],["common",{"2":{"68":1,"153":1,"168":1,"170":1,"171":1}}],["commented",{"2":{"126":1}}],["comments",{"2":{"97":1}}],["comment",{"2":{"30":1}}],["combos",{"2":{"52":1,"54":1,"63":1}}],["combines",{"2":{"44":1}}],["combine",{"2":{"44":2,"45":5,"145":1}}],["combined",{"2":{"6":1,"45":4,"63":1,"142":1,"145":2,"169":1}}],["combination",{"2":{"6":1,"45":1,"131":1,"136":1}}],["coming",{"2":{"47":1}}],["com",{"2":{"6":2,"54":1,"61":1}}],["compilation",{"2":{"165":1}}],["compiled",{"2":{"24":1}}],["compiler",{"2":{"24":1,"136":2,"165":2}}],["complex",{"2":{"129":1,"156":1,"175":1}}],["complexity",{"2":{"6":1,"129":1,"153":1}}],["complete",{"2":{"37":1}}],["completely",{"2":{"1":1,"3":4,"6":5,"45":2,"52":1,"63":1,"71":2,"72":1,"75":1,"84":1,"85":1,"97":1,"116":1,"136":1}}],["component",{"2":{"6":1,"37":3,"44":11,"47":8,"54":1,"131":1,"136":3}}],["components",{"2":{"6":2,"43":1,"44":2,"131":2,"136":24}}],["composed",{"2":{"4":4,"6":5,"69":5,"169":2}}],["comprised",{"2":{"6":3,"51":1,"53":1,"62":1}}],["computing",{"2":{"41":1,"56":1}}],["computational",{"2":{"6":1,"40":1}}],["computation",{"2":{"6":6,"40":1,"44":1,"51":1,"53":1,"62":1,"157":2,"158":2,"159":2}}],["computer",{"2":{"6":1,"40":1}}],["computes",{"2":{"6":1,"61":1}}],["compute",{"2":{"4":1,"6":3,"37":1,"40":1,"61":3,"153":1}}],["computed",{"2":{"4":4,"6":5,"34":1,"37":3,"40":3,"47":1,"174":1}}],["compact",{"2":{"177":3}}],["comparisons",{"2":{"175":1}}],["comparing",{"2":{"63":1,"69":1}}],["compares",{"2":{"127":1}}],["compared",{"2":{"69":1}}],["compare",{"2":{"3":1,"4":1,"6":2,"34":1,"63":1,"69":2,"103":1}}],["compatibility",{"2":{"37":1}}],["compatible",{"2":{"1":3,"6":1,"22":1,"25":1,"27":1,"34":1,"37":1,"40":2,"44":1,"47":1,"66":1,"69":1,"72":1,"75":1,"85":1,"89":1,"100":1,"103":1,"106":1,"116":1,"134":1,"136":1,"148":2}}],["couple",{"2":{"172":1}}],["course",{"2":{"135":1}}],["country",{"2":{"177":8}}],["countries",{"2":{"11":1,"59":1,"156":1}}],["counted",{"2":{"54":2}}],["counters",{"2":{"40":8}}],["counter",{"2":{"6":1,"45":7,"97":1,"125":1,"126":1}}],["counterclockwise",{"2":{"4":1,"6":2,"9":1,"36":2,"37":1,"60":1,"61":1}}],["count",{"2":{"45":16,"127":1,"160":1}}],["couldn",{"2":{"9":1,"165":1}}],["could",{"2":{"4":1,"6":1,"37":3,"54":4,"56":1,"63":1,"66":1,"97":2,"148":1}}],["conditions",{"2":{"175":1}}],["connected",{"2":{"97":5}}],["connect",{"2":{"47":11}}],["connecting",{"2":{"34":1,"158":1,"169":2}}],["connections",{"2":{"6":2,"142":2,"145":2}}],["context",{"2":{"152":4,"170":2}}],["contents",{"2":{"136":1,"137":1}}],["contours",{"2":{"127":1}}],["contour",{"2":{"127":4}}],["continue",{"2":{"37":1,"45":7,"47":1,"52":2,"54":1,"97":1,"141":1,"145":3,"160":1,"177":1}}],["contributions",{"2":{"25":1,"27":1}}],["controlled",{"2":{"24":1}}],["control",{"2":{"23":1}}],["containing",{"2":{"46":1,"176":1}}],["contain",{"2":{"3":1,"6":1,"26":1,"63":1,"71":1,"103":1,"169":1}}],["contained",{"2":{"3":1,"6":1,"9":1,"63":4,"72":1,"84":1,"102":1,"103":1,"136":1,"176":1}}],["contains",{"0":{"70":1,"71":1},"1":{"71":1,"72":1},"2":{"0":2,"3":4,"6":4,"26":1,"31":1,"45":1,"56":1,"63":1,"70":1,"71":5,"72":4,"134":1,"144":1,"175":1,"176":1}}],["consistent",{"2":{"45":1,"129":1}}],["consistency",{"2":{"22":1}}],["considered",{"2":{"34":1,"40":1}}],["consider",{"2":{"33":1,"36":1,"43":1,"46":1,"47":3,"49":1,"65":2,"68":1,"71":1,"74":1,"84":1,"88":1,"97":3,"99":1,"102":1,"105":1,"115":1}}],["constprop",{"2":{"86":1}}],["constants",{"2":{"45":1}}],["const",{"2":{"31":4,"45":1,"75":4,"89":3,"106":4,"116":4,"133":3,"136":1,"156":4}}],["constrained",{"2":{"6":3,"51":1,"53":1,"62":1}}],["constructing",{"2":{"171":1}}],["construct",{"2":{"164":1}}],["constructors",{"2":{"6":2,"164":2}}],["constructed",{"2":{"1":1,"20":1,"148":1}}],["concepts",{"0":{"28":1},"1":{"29":1,"30":1},"2":{"26":1}}],["concieve",{"2":{"9":1}}],["concavehull",{"2":{"128":1}}],["concave",{"2":{"6":1,"34":2,"43":2,"126":2}}],["convention",{"2":{"43":1}}],["convenience",{"2":{"40":1,"166":1}}],["conversely",{"2":{"45":1}}],["conversion",{"0":{"162":1},"2":{"22":1}}],["converted",{"2":{"22":1,"40":3}}],["converts",{"2":{"6":1,"167":1}}],["convert",{"0":{"76":1,"90":1,"107":1,"117":1},"2":{"6":3,"40":6,"61":1,"65":1,"127":2,"152":1,"156":3,"162":1,"166":1,"167":1}}],["convexhull",{"2":{"128":1}}],["convexity",{"2":{"60":2}}],["convex",{"0":{"56":1,"59":1},"1":{"57":1,"58":1,"59":1,"60":1,"61":1},"2":{"0":1,"6":7,"31":2,"34":3,"56":4,"58":2,"59":1,"60":4,"61":11,"126":1}}],["vw",{"2":{"156":3}}],["von",{"2":{"127":1}}],["v2",{"2":{"97":9}}],["v1",{"2":{"97":9}}],["v`",{"2":{"40":2}}],["vcat",{"2":{"34":1,"40":1,"45":1,"136":1}}],["vararg",{"2":{"40":1}}],["vary",{"2":{"34":1}}],["variables",{"2":{"24":1,"40":8,"72":1,"85":1,"100":1}}],["variable",{"2":{"24":1,"52":2}}],["vals",{"2":{"158":9}}],["valign",{"2":{"156":1}}],["validated",{"2":{"52":2,"54":2,"63":2}}],["validate",{"2":{"9":1}}],["valid",{"2":{"1":1,"6":8,"44":1,"51":2,"53":2,"54":3,"62":2,"127":1,"137":3,"138":1,"143":1,"144":1,"160":1,"161":1}}],["val",{"2":{"34":2,"45":2,"54":8,"97":30,"103":4}}],["values=",{"2":{"127":2}}],["values=sort",{"2":{"127":1}}],["values",{"2":{"1":1,"5":3,"6":16,"34":2,"39":3,"40":40,"44":2,"45":5,"47":5,"54":1,"66":2,"97":4,"127":19,"136":2,"158":2,"160":1,"165":1}}],["value",{"2":{"0":1,"4":7,"5":2,"6":15,"14":1,"24":1,"34":1,"36":2,"37":4,"40":45,"45":5,"47":2,"54":7,"65":1,"66":3,"127":6,"158":11,"166":2,"175":1}}],["vs",{"0":{"15":1},"2":{"12":1,"54":2}}],["vᵢ",{"2":{"6":1}}],["v0",{"2":{"6":2}}],["v",{"2":{"5":2,"6":6,"14":4,"40":23,"66":8}}],["visvalingam",{"2":{"154":1}}],["visvalingamwhyatt",{"0":{"159":1},"2":{"0":1,"6":3,"156":4,"159":5}}],["visualized",{"2":{"138":1}}],["visualize",{"2":{"99":1,"170":1}}],["visa",{"2":{"45":1}}],["visited",{"2":{"45":4}}],["view",{"2":{"45":2,"61":1,"127":1,"145":1,"158":3,"177":1}}],["viewport",{"2":{"14":1}}],["views",{"2":{"1":1,"45":1,"62":1,"148":1}}],["via",{"2":{"6":1,"41":1,"56":1,"128":1,"149":1,"152":1,"166":2}}],["vec",{"2":{"61":2}}],["vect",{"2":{"136":2}}],["vectypes",{"2":{"40":5}}],["vector",{"2":{"1":12,"4":6,"5":1,"6":46,"18":1,"23":1,"29":1,"33":1,"34":10,"40":14,"45":7,"50":6,"51":4,"52":1,"53":2,"54":3,"62":4,"97":1,"103":2,"126":3,"127":4,"129":1,"136":6,"138":8,"139":1,"144":22,"150":1,"151":1,"153":1,"157":1,"158":4,"159":1,"160":2,"161":10,"167":15,"169":18,"170":6,"171":9}}],["vectors",{"2":{"1":1,"4":2,"6":5,"22":1,"34":4,"40":3,"45":1,"61":1,"66":1,"125":1,"127":1,"136":2,"156":1}}],["ve",{"2":{"17":1,"153":1}}],["vein",{"2":{"7":1}}],["version",{"2":{"166":1}}],["versa",{"2":{"45":1}}],["vert",{"2":{"160":21}}],["verts",{"2":{"156":2}}],["vertical",{"2":{"39":1,"47":1,"54":1,"127":1}}],["vertices",{"2":{"6":7,"9":1,"38":4,"40":5,"45":1,"50":2,"61":1,"77":1,"79":5,"88":1,"91":3,"94":1,"97":1,"118":1,"138":1,"150":2,"151":1,"152":3,"153":3,"156":1,"159":1}}],["vertex",{"2":{"5":1,"6":2,"34":1,"38":2,"40":2,"45":19,"54":12,"60":1,"77":2,"92":2,"93":1,"97":1,"118":3}}],["very",{"2":{"0":1,"151":1,"177":2}}],["ty",{"2":{"127":3}}],["typing",{"2":{"41":1,"149":1,"152":1}}],["typically",{"2":{"38":1,"172":1}}],["typemax",{"2":{"66":1,"127":9}}],["typeof",{"2":{"19":1,"40":3,"136":2,"164":1,"178":1}}],["type2",{"2":{"6":2,"69":4}}],["type1",{"2":{"6":2,"69":5}}],["types",{"0":{"132":1,"163":1},"1":{"164":1,"165":1,"166":1},"2":{"6":4,"23":1,"24":1,"31":1,"40":3,"47":1,"50":1,"97":3,"156":1,"163":3,"165":1,"175":1}}],["type",{"2":{"4":11,"5":1,"6":62,"11":1,"22":2,"23":1,"24":2,"30":2,"34":9,"37":11,"39":1,"40":8,"44":8,"45":21,"47":8,"50":6,"51":7,"52":6,"53":8,"54":19,"62":7,"63":5,"66":28,"69":2,"131":2,"136":42,"140":1,"141":6,"142":6,"147":1,"152":1,"153":1,"156":3,"162":1,"164":3,"165":5,"166":1,"167":3,"174":1}}],["tx",{"2":{"127":3}}],["tᵢ",{"2":{"40":1}}],["temporary",{"2":{"45":1}}],["term",{"2":{"37":1}}],["terms",{"2":{"6":1,"40":1}}],["teach",{"2":{"26":1}}],["technically",{"2":{"23":1,"137":1}}],["technique",{"2":{"11":1}}],["tell",{"2":{"18":1,"97":1,"165":1,"178":1}}],["test",{"2":{"45":1,"156":2,"166":1}}],["testing",{"0":{"15":1}}],["tests",{"2":{"9":2}}],["tutorial",{"2":{"168":1,"175":1}}],["tutorials",{"2":{"26":2}}],["tups",{"2":{"139":4}}],["tuplepoint",{"2":{"31":3,"167":1}}],["tuple",{"0":{"162":1},"2":{"4":1,"6":19,"31":2,"40":2,"44":3,"45":5,"47":3,"50":1,"54":31,"97":17,"126":2,"127":5,"136":2,"138":6,"144":13,"151":1,"156":2,"158":1,"160":2,"167":6,"169":99,"176":2}}],["tuples",{"2":{"0":1,"6":2,"31":1,"41":1,"44":1,"45":1,"50":1,"51":3,"52":1,"53":2,"54":1,"61":2,"62":4,"63":5,"139":2,"145":2,"156":2,"162":2,"177":2}}],["turf",{"2":{"126":1}}],["turned",{"2":{"127":1,"136":1}}],["turning",{"2":{"127":8}}],["turn",{"2":{"6":1,"127":1}}],["t2",{"2":{"6":5,"40":47,"76":1,"86":2,"107":1,"117":1}}],["t1",{"2":{"6":6,"40":51,"86":2}}],["t=float64",{"2":{"4":1,"6":3,"44":3}}],["two",{"2":{"3":5,"4":10,"6":23,"23":2,"34":2,"36":1,"40":1,"44":1,"45":6,"47":3,"51":2,"53":1,"54":14,"62":4,"63":3,"66":5,"68":3,"69":12,"71":2,"72":1,"74":1,"84":1,"85":1,"86":1,"88":1,"97":2,"99":2,"100":2,"102":4,"103":5,"105":3,"106":1,"115":2,"127":3,"141":2,"142":1,"144":2,"145":2,"151":1,"166":1,"169":1,"175":3,"176":3}}],["task",{"2":{"136":6}}],["tasks",{"2":{"136":10}}],["taskrange",{"2":{"136":10}}],["tags",{"2":{"45":4}}],["taget",{"2":{"6":2}}],["taylor",{"2":{"6":1,"40":1}}],["table2",{"2":{"175":1}}],["table1",{"2":{"175":3}}],["tables",{"2":{"22":4,"31":1,"136":11}}],["table",{"0":{"172":1},"2":{"6":1,"18":1,"29":2,"136":12,"156":1,"172":1,"173":1,"175":1}}],["taking",{"2":{"6":3,"44":1,"51":1,"52":1,"53":1,"54":1,"62":1,"63":1,"143":1}}],["takes",{"2":{"45":3,"175":1}}],["taken",{"2":{"20":1,"39":1}}],["take",{"2":{"1":1,"6":2,"29":1,"45":3,"51":1,"52":1,"53":1,"54":1,"63":1,"126":2,"127":2,"129":1,"148":1}}],["target=nothing",{"2":{"51":1,"53":1,"62":1}}],["target=gi",{"2":{"45":1}}],["targets",{"2":{"23":1,"34":2,"37":3,"47":3,"66":3}}],["target",{"0":{"23":1},"2":{"1":14,"6":28,"15":3,"22":2,"23":2,"40":1,"44":2,"45":1,"51":5,"52":11,"53":6,"54":10,"62":4,"63":13,"127":1,"129":1,"131":4,"134":5,"135":1,"136":142,"145":2,"148":3,"156":2,"164":3}}],["tilted",{"2":{"47":1}}],["tie",{"2":{"34":1}}],["timings",{"2":{"13":5}}],["timing",{"2":{"13":2}}],["times",{"2":{"4":1,"6":1,"146":1}}],["time",{"2":{"1":5,"13":3,"24":1,"39":1,"127":1,"148":4,"166":1,"169":1,"170":1,"171":2,"176":1,"177":1}}],["title",{"2":{"13":2,"39":2,"60":2,"127":1,"152":1,"156":2}}],["tip",{"2":{"1":1,"5":1,"6":1,"40":1,"148":1,"175":1}}],["tree",{"2":{"175":1}}],["treating",{"2":{"156":1}}],["treated",{"2":{"97":5,"169":1}}],["treats",{"2":{"37":1,"66":1}}],["trials",{"2":{"152":2,"156":2}}],["triangles",{"2":{"38":1}}],["triangle",{"2":{"6":1,"38":4,"159":4,"176":1}}],["triangulation",{"2":{"6":1,"31":1,"61":1}}],["trivially",{"2":{"129":1}}],["try",{"2":{"55":3,"127":1,"134":1,"136":9,"177":1}}],["tr",{"2":{"37":3}}],["trues",{"2":{"145":3}}],["true",{"0":{"24":1},"2":{"1":5,"3":25,"4":3,"6":42,"34":7,"37":1,"39":2,"41":1,"45":30,"47":6,"50":1,"51":1,"52":2,"53":1,"54":1,"62":2,"63":3,"66":4,"69":21,"71":1,"72":1,"74":2,"75":6,"77":1,"78":1,"79":4,"81":1,"82":1,"84":2,"85":1,"86":9,"88":2,"89":2,"91":1,"92":1,"93":3,"95":1,"96":1,"97":78,"99":3,"100":1,"102":2,"103":18,"105":2,"106":6,"109":1,"110":1,"112":1,"113":1,"115":2,"116":7,"118":1,"119":1,"120":4,"122":1,"123":1,"126":4,"127":5,"136":8,"145":1,"149":1,"152":1,"156":1,"165":2,"175":1,"178":1}}],["traditional",{"2":{"127":1}}],["traverse",{"2":{"45":1}}],["traced",{"2":{"45":1}}],["traces",{"2":{"45":1}}],["trace",{"2":{"45":2,"51":1,"53":1,"62":1}}],["track",{"2":{"45":3,"145":2}}],["tracing",{"2":{"6":1,"45":4,"47":1,"52":5,"54":2,"63":2}}],["transverse",{"2":{"170":1}}],["translate",{"2":{"39":2}}],["translation",{"2":{"1":2,"6":2,"156":2,"161":2,"169":3,"171":1}}],["transformations",{"2":{"31":10}}],["transformation",{"0":{"161":1},"2":{"6":1,"127":1,"140":1,"148":1,"168":1}}],["transform",{"2":{"0":2,"1":6,"6":3,"15":2,"31":1,"129":1,"148":2,"156":1,"161":4,"169":4,"171":1}}],["trait`",{"2":{"136":1}}],["trait2",{"2":{"66":10,"69":2,"91":2,"92":2,"103":2,"108":2,"110":2,"111":2}}],["trait1",{"2":{"66":12,"69":2,"91":2,"92":2,"103":2,"108":2,"110":2,"111":2}}],["traits",{"2":{"6":2,"18":1,"103":1,"134":2,"141":2,"156":2,"164":3}}],["trait",{"2":{"1":5,"3":2,"4":2,"6":17,"18":7,"20":1,"22":1,"31":1,"34":2,"37":5,"40":6,"44":7,"45":1,"47":2,"50":3,"51":2,"52":2,"53":6,"54":4,"62":2,"63":2,"66":7,"69":11,"75":3,"86":2,"89":3,"97":4,"103":10,"106":3,"116":3,"126":1,"129":1,"131":2,"134":3,"136":49,"141":9,"142":1,"153":1,"156":2,"164":8,"167":7,"169":1}}],["traittarget",{"0":{"164":1},"2":{"0":1,"1":2,"6":8,"34":1,"37":1,"44":1,"47":1,"51":2,"52":4,"53":3,"54":4,"62":2,"63":4,"66":1,"129":2,"132":1,"136":10,"153":1,"156":1,"163":1,"164":20}}],["thus",{"2":{"34":1,"37":1,"45":3,"52":1,"54":1,"63":1}}],["those",{"2":{"34":1,"45":1,"54":1,"77":1,"118":1}}],["though",{"2":{"20":1,"138":1}}],["thing",{"0":{"30":1}}],["things",{"2":{"9":1}}],["this",{"0":{"30":1},"2":{"0":1,"1":1,"3":1,"4":6,"5":1,"6":30,"7":1,"18":1,"23":3,"24":2,"25":2,"27":2,"29":1,"31":1,"33":2,"34":6,"36":2,"37":9,"39":3,"40":11,"41":2,"43":1,"44":4,"45":27,"46":1,"47":4,"49":1,"50":5,"52":1,"54":5,"55":1,"61":5,"62":1,"63":2,"65":4,"66":6,"69":4,"71":1,"72":2,"74":3,"75":3,"82":1,"84":1,"85":2,"86":1,"89":3,"96":1,"97":3,"100":2,"102":1,"103":4,"106":3,"113":1,"115":1,"116":3,"123":1,"125":1,"126":3,"127":8,"128":2,"129":2,"134":2,"136":17,"137":3,"139":3,"140":1,"141":6,"142":7,"143":4,"145":3,"146":2,"147":2,"148":4,"149":3,"150":3,"151":5,"152":5,"153":4,"154":2,"156":3,"160":9,"161":1,"162":1,"163":3,"164":2,"165":3,"166":2,"167":1,"168":1,"169":2,"170":4,"171":3,"172":3,"173":1,"175":3,"176":3,"177":3,"178":1}}],["three",{"2":{"26":1,"38":1,"54":1}}],["thread",{"2":{"136":6}}],["threading",{"0":{"136":1},"2":{"136":7,"165":1}}],["threads",{"2":{"1":1,"6":1,"136":10}}],["threaded=",{"2":{"136":8}}],["threaded=true",{"2":{"136":1}}],["threaded=false",{"2":{"37":1,"44":4,"47":2,"66":8,"136":2,"146":1,"156":1}}],["threaded==true",{"2":{"1":1,"6":1,"136":1}}],["threaded",{"2":{"1":3,"4":1,"6":7,"24":1,"34":2,"37":1,"44":3,"47":3,"66":5,"133":1,"136":47,"146":1,"153":6,"156":1,"165":2}}],["through",{"2":{"6":4,"34":1,"40":1,"45":3,"47":1,"49":1,"50":2,"61":1,"75":1,"97":5,"116":1,"127":1,"134":1,"136":1,"142":2,"145":2,"158":1,"166":1,"169":1}}],["thrown",{"2":{"134":1}}],["throws",{"2":{"6":1,"166":1}}],["throw",{"2":{"4":1,"6":1,"63":1,"69":1,"127":1,"136":5}}],["than",{"2":{"1":1,"3":1,"6":11,"11":1,"45":2,"77":1,"86":1,"103":1,"118":1,"126":1,"127":2,"135":1,"136":1,"142":2,"143":1,"144":1,"145":2,"150":1,"152":2,"153":1,"157":1,"166":2}}],["that",{"2":{"1":1,"3":3,"4":8,"6":44,"9":1,"17":1,"18":4,"19":3,"20":1,"22":3,"25":1,"26":1,"27":1,"34":4,"36":2,"37":4,"40":4,"41":2,"43":2,"44":3,"45":17,"46":3,"47":5,"51":4,"52":5,"53":4,"54":14,"56":1,"60":3,"61":4,"62":3,"63":5,"66":2,"68":1,"69":11,"71":4,"72":1,"74":2,"75":1,"85":1,"88":1,"89":1,"97":3,"99":1,"100":1,"102":2,"103":10,"105":2,"106":2,"108":2,"115":3,"116":1,"118":3,"126":1,"127":4,"129":1,"131":2,"136":4,"137":3,"138":2,"139":1,"140":3,"141":2,"142":4,"143":2,"144":3,"145":4,"148":1,"150":2,"151":2,"152":3,"153":2,"156":2,"158":1,"160":1,"164":1,"165":1,"166":1,"170":4,"171":1,"172":2,"173":3,"175":1,"176":2}}],["theorem",{"2":{"66":1}}],["themselves",{"2":{"40":1}}],["them",{"2":{"6":1,"25":1,"27":1,"45":1,"127":2,"128":2,"131":1,"136":1,"138":2,"143":1,"144":1,"156":1,"169":1,"171":1,"173":3}}],["thereof",{"2":{"129":1}}],["therefore",{"2":{"65":1,"137":1}}],["there",{"2":{"6":3,"22":1,"34":1,"40":2,"41":1,"45":3,"47":1,"50":2,"52":1,"54":6,"55":1,"63":1,"97":1,"103":2,"127":3,"128":1,"129":1,"136":4,"138":1,"151":1,"160":1,"164":1,"166":1,"170":2,"173":3}}],["then",{"2":{"6":5,"18":1,"22":1,"29":1,"34":3,"40":2,"45":6,"47":1,"51":1,"53":2,"54":6,"55":2,"61":1,"62":2,"63":2,"97":1,"127":2,"134":1,"136":3,"143":1,"152":2,"156":1,"170":1,"175":1,"176":1}}],["their",{"2":{"3":1,"4":1,"6":2,"40":1,"43":2,"63":1,"66":2,"94":1,"103":1,"105":1,"109":1,"110":1,"119":3,"120":3,"129":1,"136":1,"138":1,"144":1,"146":1}}],["they",{"2":{"3":3,"4":11,"6":25,"20":2,"22":1,"23":1,"24":1,"38":1,"44":2,"45":8,"47":2,"51":2,"53":1,"54":6,"60":1,"62":2,"63":3,"68":3,"69":16,"75":1,"88":1,"92":2,"93":1,"94":1,"97":2,"99":1,"102":2,"103":4,"108":1,"110":1,"111":1,"119":1,"120":1,"127":6,"136":1,"137":1,"142":2,"145":2,"151":1,"160":1,"163":1,"176":1}}],["these",{"2":{"1":2,"6":5,"24":1,"34":1,"40":5,"45":3,"63":1,"68":1,"69":1,"71":1,"75":1,"84":1,"86":2,"88":1,"89":1,"99":1,"102":1,"103":1,"105":2,"106":1,"115":1,"116":1,"126":1,"127":3,"134":1,"136":2,"148":1,"152":1,"156":2,"166":1,"173":1,"175":1}}],["the",{"0":{"26":1,"29":1,"43":1,"59":1,"60":1},"2":{"1":28,"3":64,"4":112,"5":12,"6":403,"7":5,"9":3,"10":1,"11":3,"17":5,"18":10,"19":2,"20":4,"22":4,"23":5,"24":3,"25":3,"26":4,"27":3,"29":3,"33":1,"34":63,"36":12,"37":43,"38":15,"39":12,"40":71,"41":6,"43":6,"44":25,"45":122,"46":7,"47":47,"49":2,"50":7,"51":27,"52":23,"53":27,"54":82,"55":1,"56":6,"60":11,"61":16,"62":29,"63":70,"65":11,"66":81,"68":5,"69":47,"71":9,"72":11,"74":8,"75":25,"78":8,"79":9,"80":3,"81":3,"82":2,"84":4,"85":11,"86":5,"88":2,"89":21,"91":8,"92":6,"93":4,"95":3,"96":2,"97":123,"99":5,"100":6,"102":5,"103":26,"105":5,"106":21,"108":6,"109":10,"110":7,"111":3,"112":3,"113":2,"115":7,"116":24,"118":2,"119":9,"120":9,"121":6,"122":2,"123":2,"125":1,"126":8,"127":47,"128":1,"129":8,"131":4,"133":2,"134":11,"136":85,"137":5,"138":5,"139":4,"140":2,"141":13,"142":10,"143":4,"144":8,"145":6,"146":1,"147":5,"148":14,"149":2,"150":3,"151":5,"152":26,"153":17,"154":3,"156":18,"157":3,"158":6,"159":3,"160":2,"161":3,"162":1,"163":2,"165":5,"166":21,"169":10,"170":11,"171":10,"172":2,"173":4,"175":10,"176":17,"177":3}}],["t",{"2":{"0":1,"4":28,"6":56,"9":1,"23":1,"31":8,"34":32,"37":41,"40":26,"44":38,"45":74,"47":44,"50":18,"51":12,"52":12,"53":12,"54":156,"62":10,"63":20,"66":87,"69":17,"74":1,"92":1,"97":24,"103":1,"105":1,"109":2,"110":1,"127":14,"136":10,"142":2,"145":2,"152":3,"153":5,"156":1,"162":7,"164":14,"165":2,"166":3,"167":10,"169":4,"177":1}}],["tokyo",{"2":{"177":1}}],["toy",{"2":{"175":1}}],["together",{"2":{"54":1,"63":1,"169":1,"176":1}}],["touching",{"0":{"109":1},"2":{"54":1,"63":1}}],["touch",{"0":{"110":1,"111":1,"112":1},"2":{"45":1,"105":1,"108":2,"110":1,"112":1}}],["touches",{"0":{"104":1,"105":1,"108":1},"1":{"105":1,"106":1},"2":{"0":2,"3":3,"6":3,"31":1,"104":1,"105":3,"106":11,"107":6,"108":11,"109":15,"110":9,"111":8,"112":3,"113":4,"175":1}}],["totally",{"2":{"62":1}}],["total",{"2":{"37":1,"40":2,"45":2,"47":1}}],["towards",{"2":{"25":1,"27":1}}],["topright",{"2":{"156":1}}],["topologypreserve",{"2":{"154":1}}],["topology",{"2":{"154":1}}],["top",{"2":{"20":1,"26":1,"45":1,"127":1}}],["took",{"2":{"177":1}}],["tools",{"2":{"17":1}}],["too",{"2":{"6":1,"54":1,"150":1,"153":1}}],["tol^2",{"2":{"157":1,"158":1}}],["tolerances",{"2":{"159":1,"160":29}}],["tolerance",{"2":{"157":1,"158":1,"159":1,"160":17}}],["tol",{"2":{"6":12,"152":2,"156":18,"157":7,"158":15,"159":8,"160":18}}],["todo",{"2":{"3":2,"6":2,"45":1,"54":1,"61":2,"86":4,"103":1,"127":1,"136":1,"139":1,"156":1,"165":1}}],["to",{"0":{"9":1,"23":1,"26":1,"55":1,"76":1,"90":1,"107":1,"117":1},"2":{"0":2,"1":22,"3":1,"4":33,"5":4,"6":142,"7":2,"9":3,"10":2,"11":2,"13":1,"17":2,"18":9,"19":1,"20":2,"22":3,"23":4,"24":2,"25":3,"26":2,"27":3,"29":4,"30":1,"33":1,"34":8,"36":1,"37":4,"38":4,"39":1,"40":26,"41":2,"43":2,"44":5,"45":33,"46":1,"47":12,"49":1,"50":3,"51":8,"52":4,"53":8,"54":27,"56":1,"58":1,"59":1,"60":4,"61":6,"62":7,"63":11,"65":6,"66":32,"68":2,"69":17,"71":1,"72":1,"74":2,"75":7,"84":3,"85":1,"86":2,"88":1,"89":7,"97":21,"99":2,"100":1,"102":3,"103":7,"105":1,"106":7,"108":1,"115":1,"116":7,"126":4,"127":16,"129":4,"131":4,"133":7,"134":6,"135":1,"136":51,"137":2,"138":3,"140":4,"141":8,"142":5,"143":3,"144":1,"145":4,"146":3,"147":1,"148":4,"149":1,"150":3,"151":3,"152":9,"153":7,"154":1,"156":4,"157":1,"158":15,"159":1,"160":2,"161":4,"162":1,"163":2,"164":2,"165":6,"166":9,"167":28,"168":4,"169":6,"170":10,"171":6,"172":7,"173":5,"174":1,"175":7,"176":5,"177":2,"178":8}}],["rd",{"2":{"156":3}}],["rdbu",{"2":{"65":1}}],["rhumb",{"2":{"126":2}}],["runner",{"2":{"170":1}}],["running",{"2":{"136":3}}],["run",{"2":{"136":8,"177":1}}],["runs",{"2":{"54":2,"125":1}}],["rule",{"2":{"45":1}}],["rules",{"2":{"45":1}}],["right=2",{"2":{"45":1}}],["right",{"2":{"40":1,"45":4,"50":1,"66":1,"126":1,"158":19,"160":5,"169":1,"175":1}}],["ring4",{"2":{"171":2}}],["ring3",{"2":{"170":1}}],["ring2",{"2":{"169":2}}],["ring1",{"2":{"169":2}}],["rings",{"0":{"79":1,"93":1,"110":1,"120":1,"137":1},"1":{"138":1,"139":1},"2":{"4":4,"6":6,"9":2,"37":1,"44":1,"45":3,"54":1,"69":7,"125":1,"127":5,"139":1,"142":1,"156":1}}],["ring",{"2":{"4":7,"6":13,"9":1,"31":1,"34":3,"37":2,"40":1,"43":1,"44":4,"45":30,"47":13,"63":3,"66":5,"69":4,"77":1,"78":2,"79":5,"91":1,"93":1,"97":2,"108":1,"109":1,"110":3,"118":1,"119":2,"120":4,"126":3,"127":11,"137":2,"138":1,"139":14,"140":1,"169":1}}],["rtrees",{"2":{"20":1}}],["r+y",{"2":{"13":2,"14":1}}],["r+x",{"2":{"13":2,"14":1}}],["ry",{"2":{"13":3,"14":3}}],["rx",{"2":{"13":3,"14":3}}],["round",{"2":{"156":1,"158":1,"160":1}}],["routines",{"2":{"11":1}}],["row",{"2":{"136":3}}],["rows",{"2":{"136":2}}],["robust",{"0":{"15":1},"2":{"60":1}}],["rotate",{"2":{"47":1}}],["rotation",{"2":{"1":1,"6":1,"161":1}}],["rotations",{"2":{"1":3,"6":3,"161":3}}],["rotmatrix2d",{"2":{"156":1}}],["rotmatrix",{"2":{"1":1,"6":1,"161":1}}],["r",{"2":{"6":1,"9":1,"13":11,"14":12,"152":1,"160":2,"169":6,"170":2,"171":4}}],["rᵢ₋₁",{"2":{"40":20}}],["rᵢ∗rᵢ₊₁+sᵢ⋅sᵢ₊₁",{"2":{"6":1}}],["rᵢ₊₁",{"2":{"6":1,"40":29}}],["rᵢ",{"2":{"6":2,"40":49}}],["ramer",{"2":{"158":1}}],["raster",{"0":{"127":1},"2":{"127":4}}],["ray",{"2":{"97":4}}],["raw",{"2":{"18":1}}],["range",{"2":{"13":8,"14":4,"127":1,"136":4}}],["ranges",{"2":{"6":1,"127":2}}],["randomly",{"2":{"176":2}}],["random",{"2":{"156":2}}],["randn",{"2":{"58":1}}],["rand",{"2":{"6":1,"60":1,"127":1,"176":2}}],["rather",{"2":{"6":1,"127":1,"144":1}}],["ratio",{"2":{"6":7,"54":1,"152":1,"156":1,"157":4,"158":6,"159":4,"160":11}}],["radii",{"2":{"6":1,"152":1}}],["radius`",{"2":{"152":1}}],["radius",{"2":{"6":7,"40":13,"152":4}}],["radialdistance",{"0":{"157":1},"2":{"0":1,"6":2,"154":1,"156":4,"157":4}}],["rrayscore",{"2":{"1":1,"6":1,"161":1}}],["rring",{"2":{"1":1,"6":1,"161":1}}],["rewrap",{"2":{"136":3}}],["req",{"2":{"97":44}}],["requirement",{"2":{"137":1,"143":1}}],["requirements",{"2":{"97":5}}],["required",{"2":{"61":1,"75":3,"89":3,"106":3,"116":3,"151":1,"168":1}}],["require",{"2":{"61":1,"74":2,"75":6,"89":3,"97":32,"106":3,"116":3}}],["requires",{"2":{"41":1,"69":1,"71":1,"75":2,"78":3,"79":3,"80":1,"89":1,"92":3,"93":2,"94":1,"106":1,"109":3,"110":1,"111":1,"115":1,"116":1,"119":3,"120":3,"121":1,"149":1,"152":1,"166":1}}],["requests",{"2":{"25":1,"27":1}}],["reflected",{"2":{"156":3}}],["ref",{"2":{"65":1}}],["referring",{"2":{"97":1}}],["refer",{"2":{"6":1,"127":1}}],["references",{"2":{"6":1,"40":1}}],["reference",{"0":{"170":1,"171":1},"2":{"0":1,"1":2,"148":2,"168":2,"170":1}}],["reveal",{"2":{"63":1}}],["reveals",{"2":{"63":1}}],["reverse",{"2":{"36":1,"39":1,"40":1,"45":2,"169":2}}],["rev",{"2":{"62":1}}],["render",{"2":{"39":1}}],["rendering",{"2":{"39":3,"40":1}}],["rename",{"2":{"10":1}}],["regardless",{"2":{"54":1,"97":1}}],["regions",{"2":{"52":3,"54":5,"62":1,"63":3,"97":2,"177":1}}],["region",{"2":{"41":2,"54":3,"63":2,"177":1}}],["register",{"2":{"31":3,"40":3}}],["regular",{"0":{"15":1}}],["readable",{"2":{"173":1}}],["readability",{"2":{"45":1}}],["read",{"2":{"170":2}}],["reached",{"2":{"136":4}}],["reaches",{"2":{"134":1}}],["reach",{"2":{"134":1}}],["reasons",{"2":{"166":1}}],["reason",{"2":{"24":1,"137":1,"143":1,"165":1}}],["real`",{"2":{"152":1,"153":1}}],["reality",{"2":{"60":1}}],["really",{"2":{"37":1,"97":1,"127":1,"165":1}}],["real=1",{"2":{"6":2,"152":2}}],["real=6378137`",{"2":{"152":1}}],["real=6378137",{"2":{"6":2,"152":1}}],["real",{"0":{"177":1},"2":{"5":1,"6":13,"34":1,"40":45,"44":2,"54":1,"152":3,"153":1,"160":5,"175":1}}],["related",{"2":{"129":1}}],["relation",{"2":{"45":2}}],["relations",{"2":{"31":10,"86":1,"103":1}}],["relationship",{"2":{"23":1,"175":2}}],["relative",{"2":{"40":3}}],["relevant",{"2":{"6":1,"10":1,"61":1}}],["reducing",{"2":{"136":2}}],["reduced",{"2":{"157":1,"158":1,"159":1}}],["reduces",{"2":{"19":1,"63":1}}],["reduce",{"2":{"1":1,"6":1,"127":1,"136":2,"141":1}}],["redundant",{"2":{"45":1}}],["red",{"2":{"14":1,"43":2,"65":1,"74":1,"84":1,"99":1,"169":1,"170":1,"176":2}}],["removal",{"2":{"45":1}}],["removes",{"2":{"45":1,"129":1}}],["removed",{"2":{"45":3,"52":5,"127":1}}],["remove",{"2":{"37":1,"45":33,"47":1,"50":2,"51":5,"53":5,"62":2,"145":2,"157":1,"158":3,"160":4}}],["removing",{"2":{"6":3,"45":1,"52":1,"157":1,"158":1,"159":1}}],["remainingnode",{"2":{"127":3}}],["remaining",{"2":{"45":1,"69":1,"97":2,"158":1}}],["remain",{"2":{"1":1,"6":9,"136":1,"156":2}}],["resolution",{"2":{"170":1}}],["resolved",{"2":{"127":1}}],["reset",{"2":{"45":1}}],["resize",{"2":{"13":1,"14":1,"45":2}}],["resampled",{"2":{"6":1,"153":1}}],["respectively",{"2":{"45":1,"103":1,"136":1,"169":1}}],["respect",{"2":{"6":2,"53":1,"54":1,"61":1,"97":6}}],["rest",{"2":{"6":1,"40":2,"62":1}}],["resulting",{"2":{"50":1,"63":1,"127":1,"176":1}}],["results",{"2":{"3":2,"6":2,"54":1,"86":1,"103":1,"136":2,"138":1,"158":25,"169":3}}],["result",{"2":{"1":2,"3":5,"4":5,"6":13,"19":1,"34":1,"37":2,"47":1,"54":15,"61":1,"66":2,"72":1,"75":1,"85":1,"100":1,"116":1,"136":2,"152":3,"160":6}}],["receives",{"2":{"136":2}}],["recent",{"2":{"45":1,"52":1,"54":1,"63":1}}],["recalculate",{"2":{"135":1}}],["recursive",{"2":{"134":1}}],["recursively",{"2":{"4":1,"6":1,"134":1,"146":1}}],["rect",{"2":{"33":3,"36":5,"46":3,"65":7}}],["rectangle",{"2":{"33":2,"36":2,"39":2,"46":2,"47":1,"65":2,"151":5,"152":8,"176":2}}],["recommended",{"2":{"22":1}}],["reconstructing",{"2":{"156":1}}],["reconstructed",{"2":{"18":1}}],["reconstruct",{"2":{"0":2,"1":1,"6":3,"18":1,"131":2,"136":29}}],["replace",{"2":{"45":1,"127":2,"158":1}}],["replaced",{"2":{"22":1}}],["repl",{"2":{"41":1,"149":1,"152":1}}],["repeat",{"2":{"44":1,"45":3,"69":6}}],["repeating",{"2":{"37":1,"63":1}}],["repeated",{"2":{"4":3,"6":3,"9":1,"34":2,"40":1,"45":2,"63":2,"66":2,"69":4,"97":1}}],["represented",{"2":{"176":1}}],["represent",{"2":{"17":1,"40":1,"45":4,"69":1}}],["representing",{"2":{"6":2,"52":1,"54":1,"61":1,"63":1,"65":1,"69":1,"177":1}}],["represents",{"2":{"6":1,"141":2,"142":1}}],["reprojects",{"2":{"148":1}}],["reprojection",{"0":{"148":1},"1":{"149":1}}],["reproject",{"2":{"0":1,"1":4,"31":2,"129":1,"148":6,"149":2}}],["re",{"2":{"1":1,"6":1,"17":1,"61":1,"161":1,"168":1,"170":1}}],["retrievable",{"2":{"1":1,"148":1}}],["returnval",{"2":{"97":9}}],["returntype",{"2":{"19":1}}],["returning",{"2":{"18":1,"41":1,"52":2}}],["return",{"0":{"22":1},"2":{"1":1,"3":18,"4":2,"6":37,"13":3,"14":3,"23":2,"30":1,"34":5,"37":5,"40":20,"41":1,"44":4,"45":36,"47":12,"50":12,"51":5,"52":4,"53":4,"54":18,"61":2,"62":6,"63":9,"66":8,"69":30,"72":1,"75":1,"81":2,"82":2,"85":1,"86":18,"89":2,"95":2,"96":2,"97":71,"99":1,"100":1,"103":28,"106":1,"108":2,"112":2,"113":2,"116":1,"122":2,"123":2,"126":10,"127":12,"136":26,"137":1,"139":4,"141":6,"142":2,"145":2,"147":2,"148":1,"153":4,"156":3,"157":1,"158":5,"159":3,"160":7,"161":2,"162":2,"166":3,"167":8}}],["returned",{"2":{"1":1,"6":11,"22":2,"23":1,"45":3,"50":1,"51":2,"53":2,"54":2,"60":1,"61":1,"62":2,"127":1,"131":1,"136":2,"148":1,"156":1,"165":1}}],["returns",{"2":{"1":1,"3":5,"4":4,"5":3,"6":24,"18":1,"22":2,"34":1,"37":2,"40":6,"44":3,"45":5,"47":6,"50":1,"51":1,"54":1,"61":1,"62":1,"66":8,"68":1,"71":2,"72":1,"75":1,"84":2,"85":1,"88":1,"97":4,"100":1,"103":2,"116":1,"127":2,"136":2,"153":1,"162":1,"175":1}}],["rebuilt",{"2":{"1":1,"6":2,"131":1,"136":2}}],["rebuild",{"2":{"0":2,"6":4,"131":4,"134":1,"136":10,"153":1,"156":2}}],["psa",{"2":{"136":2}}],["pb",{"2":{"86":2}}],["p0",{"2":{"66":9}}],["p3",{"2":{"45":8,"159":4}}],["ptm",{"2":{"126":3}}],["ptj",{"2":{"126":5}}],["pti",{"2":{"126":3}}],["ptrait",{"2":{"66":2}}],["pts",{"2":{"45":22,"50":7}}],["pt",{"2":{"45":114,"50":2,"54":26,"97":8,"158":4}}],["pt2",{"2":{"45":14,"54":2}}],["pt1",{"2":{"45":18,"54":2}}],["pn",{"2":{"108":3}}],["pn2",{"2":{"45":4}}],["pn1",{"2":{"45":4}}],["pfirst",{"2":{"37":3}}],["pu",{"2":{"176":2}}],["purpose",{"2":{"136":1}}],["pure",{"2":{"6":1,"61":1,"127":1}}],["purely",{"2":{"6":1,"18":1,"152":1}}],["push",{"2":{"45":15,"50":5,"51":2,"53":2,"54":2,"62":4,"63":5,"127":3,"139":1,"153":3,"158":3}}],["pulling",{"2":{"61":1}}],["pull",{"2":{"25":1,"27":1}}],["public",{"2":{"24":1}}],["pick",{"2":{"170":2}}],["piece",{"2":{"45":6,"145":6}}],["pieces",{"2":{"45":12,"50":1,"52":2,"62":4,"97":1,"145":9}}],["pi",{"2":{"13":2}}],["pixels",{"2":{"127":1}}],["pixel",{"2":{"6":2,"127":7}}],["pythagorean",{"2":{"66":1}}],["py",{"2":{"13":2,"14":2}}],["px",{"2":{"13":2,"14":2}}],["peucker",{"2":{"154":2,"156":3,"158":2}}],["peaks",{"2":{"127":2}}],["peculiarities",{"0":{"21":1},"1":{"22":1,"23":1,"24":1}}],["people",{"2":{"9":1}}],["performed",{"2":{"176":1}}],["performs",{"2":{"40":1,"153":1}}],["perform",{"2":{"26":1,"39":1,"40":2,"45":1,"129":1,"175":3,"176":2,"178":1}}],["performing",{"2":{"6":3,"23":1,"40":1,"51":1,"53":1,"62":1,"176":1}}],["performance",{"2":{"4":1,"6":2,"22":1,"127":1,"143":1,"146":1,"156":1,"173":1}}],["per",{"2":{"5":2,"6":2,"39":1,"40":2,"45":5,"127":1,"136":4,"153":1}}],["pl",{"2":{"176":2}}],["plt",{"2":{"169":1}}],["please",{"2":{"45":1}}],["plan",{"2":{"150":1}}],["plane",{"2":{"40":1,"174":1}}],["place",{"2":{"54":1,"175":1}}],["placement",{"2":{"45":1}}],["plottable",{"2":{"127":1}}],["plotted",{"2":{"43":1}}],["plotting",{"0":{"169":1},"2":{"6":1,"127":1,"150":1,"153":1,"168":1,"169":4,"170":1}}],["plots",{"2":{"39":2}}],["plot",{"0":{"170":1},"2":{"13":1,"39":3,"58":2,"59":1,"60":1,"68":1,"102":1,"127":1,"152":2,"156":4,"168":2,"169":9,"170":5,"171":1,"173":1,"176":1}}],["plus",{"2":{"5":1,"6":1,"40":1}}],["p2y",{"2":{"167":3}}],["p2x",{"2":{"167":3}}],["p2box",{"2":{"39":1}}],["p2",{"2":{"3":2,"4":2,"6":6,"15":12,"34":12,"37":9,"45":18,"47":19,"60":1,"62":2,"66":15,"69":11,"75":2,"84":2,"97":12,"103":2,"126":3,"151":1,"159":4,"167":3,"169":2}}],["p1y",{"2":{"167":3}}],["p1x",{"2":{"167":3}}],["p1",{"2":{"3":3,"4":2,"6":7,"15":12,"34":21,"37":8,"39":4,"45":9,"47":25,"49":1,"60":2,"62":2,"66":15,"69":14,"74":5,"75":3,"84":5,"97":4,"103":2,"108":3,"126":3,"159":4,"167":3,"169":1}}],["practice",{"2":{"171":1}}],["pred",{"2":{"175":2,"176":1,"177":2,"178":1}}],["predicate",{"2":{"7":1,"86":1,"175":3,"176":1,"178":5}}],["predicates",{"0":{"12":1,"15":1,"178":1},"1":{"13":1,"14":1,"15":1,"16":1},"2":{"7":4,"12":1,"31":1,"45":5,"54":4,"55":3,"97":1,"175":1,"177":1}}],["pretty",{"2":{"148":1}}],["prettytime",{"2":{"13":2}}],["prevent",{"2":{"52":2,"54":2,"63":2}}],["prev^2",{"2":{"34":2}}],["prev",{"2":{"34":14,"45":69,"126":4}}],["previously",{"2":{"151":1}}],["previous",{"2":{"19":1,"34":1,"136":1,"157":3}}],["preparations",{"2":{"20":1}}],["prepared",{"2":{"20":1,"127":2}}],["prepare",{"0":{"20":1},"2":{"17":1,"20":1}}],["precision",{"2":{"11":1}}],["preserve",{"2":{"156":4,"158":3}}],["preserving",{"2":{"154":1}}],["presentation",{"2":{"6":1,"40":1}}],["present",{"2":{"6":1,"166":1}}],["presence",{"2":{"6":1,"166":1}}],["prescribes",{"2":{"20":1}}],["press",{"2":{"6":1,"40":1}}],["pre",{"2":{"6":1,"62":1,"156":1,"158":2}}],["prefilter",{"2":{"6":1,"156":7}}],["protters",{"2":{"136":2}}],["progressively",{"2":{"134":1}}],["program",{"2":{"17":1}}],["programming",{"2":{"17":1,"26":1}}],["promote",{"2":{"40":5}}],["property",{"2":{"136":2}}],["properties=gi",{"2":{"136":1}}],["properties=namedtuple",{"2":{"136":1}}],["properties=",{"2":{"127":1}}],["properties",{"2":{"6":1,"136":9,"156":1,"160":1}}],["propagate",{"2":{"40":16,"66":4}}],["probably",{"2":{"37":1,"136":1}}],["prod",{"2":{"34":4}}],["product",{"2":{"34":1}}],["process",{"2":{"77":3,"78":3,"79":3,"80":1,"86":1,"91":3,"92":3,"93":2,"94":1,"97":11,"108":1,"109":3,"110":1,"111":1,"118":3,"119":3,"120":3,"121":1,"136":2,"158":1}}],["processed",{"2":{"45":6}}],["processors",{"2":{"31":1,"75":2,"89":2,"106":2,"116":2}}],["processor",{"2":{"31":1}}],["processing",{"2":{"23":1}}],["profile",{"2":{"9":1}}],["providers",{"2":{"138":1,"144":1}}],["provide",{"0":{"23":1},"2":{"6":6,"33":1,"36":1,"38":1,"43":1,"46":1,"49":1,"51":2,"53":2,"62":2,"65":1,"68":1,"71":1,"74":1,"84":1,"88":1,"97":2,"99":1,"102":1,"105":1,"115":1,"127":1,"160":1}}],["provides",{"2":{"6":1,"56":1,"61":1,"170":1}}],["provided",{"2":{"4":1,"6":3,"11":1,"45":1,"66":1,"69":1,"144":1,"152":2,"166":1}}],["projecting",{"2":{"170":1}}],["projection",{"2":{"66":2,"168":1,"170":1}}],["project",{"2":{"9":1}}],["projects",{"2":{"9":1}}],["proj",{"2":{"1":2,"6":3,"148":2,"149":4,"151":1,"152":6,"168":1}}],["prints",{"2":{"149":1}}],["printstyled",{"2":{"41":1,"149":1,"152":1}}],["println",{"2":{"41":1,"149":1,"152":1,"156":2}}],["print",{"2":{"41":2,"149":2,"152":2}}],["primitives",{"2":{"31":1}}],["primitive",{"0":{"129":1},"1":{"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1},"2":{"29":1}}],["primarily",{"2":{"6":1,"25":2,"27":2,"164":1}}],["primary",{"2":{"3":2,"6":3,"75":1,"116":1,"156":1}}],["priority",{"2":{"1":1,"148":1}}],["pay",{"2":{"136":1}}],["paper",{"2":{"97":2}}],["pa",{"2":{"86":2}}],["paths",{"0":{"174":1},"2":{"165":1,"174":2}}],["pathof",{"2":{"156":2}}],["path",{"2":{"36":3,"170":2}}],["padding",{"2":{"6":2}}],["parquet",{"2":{"173":3}}],["parent",{"2":{"165":1}}],["parse",{"2":{"97":1,"103":1}}],["part",{"2":{"47":2,"63":2,"97":3,"135":1}}],["partition",{"2":{"136":4}}],["partialsort",{"2":{"160":1}}],["partial",{"2":{"47":4}}],["partially",{"2":{"45":2,"63":2}}],["particularly",{"2":{"40":1}}],["particular",{"2":{"30":1,"34":1,"127":1,"170":2}}],["parallel",{"2":{"97":1,"126":1}}],["paradigm",{"0":{"29":1}}],["paradigms",{"0":{"17":1},"1":{"18":1,"19":1,"20":1},"2":{"17":2,"20":1}}],["parameters",{"2":{"6":1,"136":1,"164":2}}],["parameter",{"2":{"6":2,"164":3}}],["params",{"2":{"6":2,"166":10}}],["parlance",{"2":{"5":1,"6":1,"40":1}}],["passes",{"2":{"47":2,"97":1}}],["passed",{"2":{"1":2,"6":7,"61":1,"127":1,"131":1,"136":2,"148":1,"152":2,"161":1,"166":2,"178":1}}],["passable",{"2":{"40":18}}],["passing",{"2":{"18":1,"136":1,"154":1}}],["pass",{"2":{"5":1,"6":4,"18":1,"40":1,"45":2,"72":1,"85":1,"97":2,"100":1,"152":1,"153":1,"156":1,"165":1}}],["pairs",{"2":{"54":1,"169":1}}],["pair",{"2":{"3":2,"6":2,"47":1,"103":2,"136":3}}],["packages",{"2":{"6":1,"25":1,"27":1,"56":1,"131":1,"136":1,"137":1,"163":1,"168":3,"170":1,"173":1}}],["package",{"2":{"1":2,"6":1,"22":1,"25":2,"27":2,"41":1,"56":2,"61":1,"127":1,"148":3,"149":1,"152":1,"170":1,"173":2}}],["page",{"2":{"0":1,"9":1,"26":1,"29":1,"31":1,"34":1,"37":1,"39":1,"40":1,"41":1,"44":1,"45":1,"47":1,"50":1,"52":1,"54":1,"55":1,"61":1,"63":1,"66":1,"69":1,"72":1,"82":1,"85":1,"86":1,"96":1,"97":1,"100":1,"103":1,"113":1,"123":1,"126":1,"127":1,"128":1,"136":1,"139":1,"142":1,"145":1,"146":1,"147":1,"149":1,"153":1,"160":1,"161":1,"162":1,"166":1,"167":1}}],["p",{"2":{"1":5,"6":5,"13":13,"14":12,"15":2,"33":1,"36":1,"43":1,"45":5,"46":1,"47":5,"52":2,"58":1,"59":1,"62":2,"65":3,"68":1,"71":1,"74":1,"84":1,"86":4,"88":1,"97":20,"99":1,"102":1,"105":1,"115":1,"126":4,"127":3,"129":3,"136":3,"147":7,"151":1,"155":1,"156":1,"160":3,"161":9,"162":7,"167":11,"175":1,"176":1}}],["poylgon",{"2":{"97":1}}],["potential",{"2":{"47":1}}],["potentially",{"2":{"6":2,"45":1,"142":2,"145":2}}],["post",{"2":{"158":2}}],["possibly",{"2":{"136":1}}],["possiblenodes",{"2":{"127":2}}],["possible",{"2":{"6":3,"51":1,"53":1,"62":1,"127":1,"136":2}}],["possibility",{"2":{"134":1}}],["possibilities",{"2":{"54":1}}],["position=",{"2":{"156":1}}],["position",{"2":{"6":1,"126":1,"151":1}}],["positive",{"2":{"4":4,"6":4,"36":3,"37":1,"65":3,"66":3,"153":1,"160":1}}],["polgons",{"2":{"127":1}}],["polgontrait",{"2":{"1":1,"6":1}}],["polar",{"2":{"6":1,"152":1}}],["polynodes",{"2":{"45":7,"51":1,"53":1,"62":1}}],["polynode",{"2":{"45":36}}],["polypoints",{"2":{"40":46}}],["polys",{"2":{"6":2,"45":39,"49":3,"50":10,"51":14,"52":14,"53":9,"54":6,"62":14,"63":28,"145":26}}],["polys1",{"2":{"3":2,"6":2,"103":6}}],["polys2",{"2":{"3":2,"6":2,"103":6}}],["poly",{"2":{"3":2,"6":16,"15":2,"33":1,"36":1,"37":6,"39":2,"40":3,"43":1,"45":111,"46":2,"47":4,"49":4,"50":20,"51":22,"52":12,"53":15,"54":10,"58":2,"62":19,"63":79,"65":1,"66":3,"69":4,"86":10,"97":21,"103":8,"126":5,"127":5,"145":18,"151":2,"155":2,"156":8,"167":8,"169":2,"176":5}}],["poly2",{"2":{"3":3,"4":2,"6":7,"51":2,"69":2,"97":19,"103":7}}],["poly1",{"2":{"3":3,"4":2,"6":7,"51":2,"69":2,"97":14,"103":7}}],["polygon3",{"2":{"169":2,"170":1}}],["polygon2",{"2":{"169":6}}],["polygon1",{"2":{"169":4}}],["polygonization",{"2":{"127":1}}],["polygonizing",{"0":{"127":1}}],["polygonized",{"2":{"127":1}}],["polygonize",{"2":{"0":1,"6":6,"9":1,"31":1,"127":31}}],["polygon`",{"2":{"40":3,"61":1}}],["polygons",{"0":{"80":1,"111":1,"121":1,"143":1},"1":{"144":1,"145":1},"2":{"3":4,"4":3,"5":1,"6":18,"9":1,"23":5,"31":1,"37":5,"38":1,"40":2,"43":1,"44":1,"45":14,"47":1,"50":2,"51":9,"52":5,"53":3,"54":8,"62":6,"63":19,"65":1,"66":1,"69":5,"80":1,"103":5,"121":1,"126":1,"127":19,"134":1,"138":2,"142":3,"143":2,"144":2,"145":10,"154":1,"156":1,"169":3,"170":1,"176":5,"177":3}}],["polygontrait",{"2":{"1":1,"3":4,"4":6,"6":14,"15":3,"23":1,"34":2,"37":3,"40":3,"44":2,"45":2,"47":2,"50":1,"51":5,"52":5,"53":3,"54":5,"62":4,"63":8,"66":2,"69":10,"77":2,"78":1,"79":1,"80":3,"81":1,"86":4,"91":2,"92":2,"93":1,"94":2,"95":1,"103":8,"108":2,"109":1,"110":1,"111":3,"112":1,"118":2,"119":1,"120":1,"121":3,"122":1,"129":1,"134":2,"136":1,"139":2,"141":2,"142":1,"145":2,"156":2,"167":1}}],["polygon",{"0":{"45":1,"48":1,"51":1,"52":1,"54":1,"62":1,"63":1,"94":1},"1":{"49":1,"50":1},"2":{"0":1,"1":4,"3":4,"4":21,"5":9,"6":65,"9":2,"11":3,"15":4,"20":1,"23":1,"33":1,"34":5,"36":2,"37":5,"38":5,"39":16,"40":57,"43":2,"44":4,"45":39,"46":3,"47":4,"49":3,"50":10,"51":5,"52":7,"53":5,"54":6,"56":1,"60":1,"61":3,"62":6,"63":34,"65":3,"66":14,"69":12,"75":1,"77":3,"78":3,"79":4,"80":8,"86":1,"91":3,"92":4,"93":4,"94":4,"97":66,"103":4,"106":1,"108":3,"109":4,"110":5,"111":7,"116":1,"118":3,"119":4,"120":4,"121":8,"126":5,"127":4,"136":1,"137":4,"138":8,"139":5,"140":1,"142":4,"143":3,"144":12,"145":7,"151":1,"152":4,"155":1,"156":9,"161":3,"167":6,"169":12,"170":5,"171":7,"172":2,"176":6}}],["pointwise",{"0":{"161":1},"2":{"148":1}}],["point1",{"2":{"66":4}}],["point`",{"2":{"54":1}}],["pointedgeside",{"2":{"45":1}}],["point₂",{"2":{"44":13}}],["point₁",{"2":{"44":13}}],["point3s",{"2":{"40":10}}],["point3f",{"2":{"39":1}}],["pointrait",{"2":{"6":1}}],["point2f",{"2":{"39":4,"40":2,"58":1,"65":1}}],["point2d",{"2":{"39":1}}],["point2",{"2":{"6":2,"40":5,"60":1,"66":4}}],["pointtrait",{"2":{"1":1,"4":4,"6":9,"18":1,"34":2,"37":1,"40":3,"47":1,"53":2,"61":1,"66":17,"69":8,"77":6,"81":1,"91":6,"95":1,"108":6,"112":1,"118":6,"122":1,"129":2,"134":1,"136":21,"141":2,"142":1,"146":1,"147":2,"156":2,"161":2,"162":2,"164":2,"167":1}}],["point",{"0":{"91":1,"108":1},"2":{"1":4,"3":10,"4":37,"5":7,"6":83,"9":2,"20":1,"34":12,"37":3,"38":3,"39":1,"40":126,"44":6,"45":103,"47":50,"50":13,"52":9,"53":1,"54":71,"61":3,"63":9,"65":17,"66":73,"69":27,"72":3,"74":1,"75":2,"77":8,"86":21,"89":2,"91":10,"97":138,"99":1,"102":2,"103":21,"105":1,"106":3,"108":10,"109":1,"111":1,"116":4,"118":11,"126":1,"127":3,"136":1,"137":1,"138":2,"142":2,"143":1,"145":2,"148":1,"150":1,"156":2,"157":3,"158":9,"159":1,"161":2,"167":4,"169":111,"170":7,"171":8,"176":2}}],["points2",{"2":{"3":1,"6":1,"103":3}}],["points1",{"2":{"3":1,"6":1,"103":3}}],["points",{"0":{"77":1,"118":1},"2":{"0":1,"1":3,"3":1,"4":11,"5":1,"6":53,"9":3,"13":1,"34":2,"36":3,"37":3,"39":8,"40":32,"44":1,"45":56,"47":5,"50":3,"51":5,"52":1,"53":8,"54":28,"56":3,"58":4,"60":4,"61":6,"62":4,"63":1,"65":2,"66":8,"68":2,"69":13,"71":1,"75":6,"77":3,"78":4,"89":6,"91":1,"92":7,"93":3,"97":10,"103":5,"106":5,"108":1,"109":2,"110":4,"111":3,"115":1,"116":5,"118":3,"119":3,"120":3,"121":1,"125":1,"127":3,"136":1,"146":2,"148":1,"151":2,"152":2,"156":11,"157":11,"158":26,"159":10,"160":33,"161":2,"162":2,"167":25,"169":8,"170":1,"175":1,"176":11}}],["pointorientation",{"2":{"0":1,"6":2,"97":2}}],["my",{"2":{"177":1,"178":2}}],["moore",{"2":{"127":1}}],["moved",{"2":{"45":1,"148":1}}],["move",{"2":{"44":1,"97":1}}],["mode",{"2":{"178":3}}],["model",{"2":{"175":1}}],["modify",{"2":{"169":1}}],["modified",{"2":{"136":2}}],["module",{"2":{"148":1,"153":1}}],["modules",{"2":{"6":1,"40":1}}],["mod1",{"2":{"40":5}}],["mod",{"2":{"40":1,"45":1}}],["most",{"2":{"25":1,"27":1,"45":1,"52":1,"54":1,"60":1,"63":1,"97":1,"156":1,"173":2}}],["monotone",{"2":{"20":1,"60":2}}],["monotonechainmethod",{"2":{"0":1,"6":1,"56":1,"60":2,"61":4}}],["moment",{"2":{"6":1,"151":1,"153":1}}],["more",{"2":{"6":3,"7":1,"9":1,"10":1,"11":1,"23":1,"26":1,"29":1,"45":1,"51":1,"53":1,"61":1,"62":1,"97":1,"103":1,"136":4,"139":1,"149":1,"151":1,"153":1,"169":2,"175":1}}],["mistakenly",{"2":{"143":1}}],["missing",{"2":{"131":6,"132":2,"151":4}}],["missed",{"2":{"127":1}}],["mid",{"2":{"47":2,"97":3}}],["midpoint",{"2":{"45":2}}],["middle",{"2":{"45":2}}],["mining",{"2":{"177":1}}],["minimal",{"2":{"177":1}}],["minimize",{"2":{"54":1}}],["minimum",{"2":{"4":7,"6":12,"46":1,"47":2,"66":12,"156":1,"157":1,"159":1}}],["mind",{"2":{"151":1,"176":1}}],["minmax",{"2":{"54":4}}],["min",{"2":{"47":1,"54":16,"66":15,"156":1,"158":3,"159":1,"160":28}}],["minus",{"2":{"36":1}}],["minpoints=0",{"2":{"127":1}}],["minpoints",{"2":{"6":2}}],["might",{"2":{"6":3,"25":1,"27":1,"37":1,"51":1,"53":1,"54":1,"62":1,"140":1,"158":1}}],["mixed",{"2":{"6":4,"156":1}}],["m",{"2":{"5":1,"6":1,"15":10,"40":2,"47":6,"126":2,"170":1}}],["mp",{"2":{"86":2}}],["mp1",{"2":{"4":2,"6":2,"69":7}}],["mp2",{"2":{"4":2,"6":2,"69":8}}],["manner",{"2":{"175":1}}],["manipulate",{"2":{"173":1}}],["manually",{"2":{"137":1}}],["many",{"2":{"4":1,"5":1,"6":2,"23":1,"26":1,"40":1,"45":1,"50":1,"52":1,"54":2,"63":1,"69":1,"138":1,"146":1}}],["mason",{"2":{"136":2}}],["markersize",{"2":{"169":2}}],["marker",{"2":{"169":2}}],["marked",{"2":{"45":6,"52":1,"54":1,"63":1}}],["marking",{"2":{"52":2,"54":2,"63":2}}],["mark",{"2":{"45":2}}],["marks",{"2":{"45":1}}],["mag",{"2":{"34":4}}],["making",{"2":{"45":1,"127":1,"134":1,"144":1,"169":1,"171":2}}],["makie",{"2":{"13":1,"14":1,"33":1,"36":1,"39":3,"43":1,"46":1,"49":4,"58":1,"59":1,"65":1,"68":1,"71":1,"74":1,"84":1,"88":1,"99":1,"102":1,"105":1,"115":1,"127":3,"155":1,"156":1,"174":1}}],["makevalid",{"2":{"156":2}}],["makes",{"2":{"37":1,"45":4,"66":1,"136":1,"138":1,"143":1,"144":1}}],["make",{"2":{"9":1,"25":1,"27":1,"34":1,"45":3,"54":1,"66":1,"103":1,"127":2,"134":1,"139":1,"151":1,"160":1,"163":1,"169":2,"171":1}}],["mainly",{"2":{"40":1,"65":1,"129":1}}],["maintain",{"2":{"37":1}}],["main",{"0":{"28":1},"1":{"29":1,"30":1},"2":{"7":1,"26":1,"45":1,"127":1,"136":1,"152":1}}],["mapped",{"2":{"173":1}}],["maptasks",{"2":{"136":6}}],["mapreducetasks",{"2":{"136":5}}],["mapreduce",{"2":{"52":1,"127":2,"136":8}}],["map",{"0":{"170":1},"2":{"6":1,"13":1,"18":3,"19":1,"29":1,"40":1,"45":1,"54":1,"103":2,"127":17,"136":24,"139":1,"156":1,"164":1,"168":1,"170":1,"171":1,"173":1}}],["matlab",{"2":{"49":1}}],["materializer`",{"2":{"136":1}}],["materializer",{"2":{"22":1,"136":1}}],["mathrm",{"2":{"40":1}}],["math",{"2":{"7":1}}],["mathematically",{"2":{"6":1,"126":1}}],["matches",{"2":{"69":1,"127":1}}],["match",{"2":{"6":1,"69":12,"103":3,"127":1,"131":1,"136":2}}],["matching",{"2":{"3":1,"6":1,"22":1,"69":3,"103":1,"134":2}}],["matrix",{"2":{"6":1,"14":2,"40":1}}],["maximal",{"2":{"54":1}}],["maximum",{"2":{"3":1,"6":4,"14":1,"46":1,"47":4,"86":1,"127":1,"152":1,"153":1,"158":4}}],["max",{"2":{"6":9,"34":2,"47":1,"127":1,"136":2,"151":5,"152":8,"153":7,"158":36,"160":1,"174":1}}],["made",{"2":{"6":2,"44":1,"45":1,"54":1,"110":1,"134":1,"142":1,"145":1,"159":1}}],["maybe",{"2":{"6":1,"97":4,"131":1,"136":6}}],["may",{"2":{"1":1,"6":5,"23":2,"24":1,"40":2,"45":1,"54":1,"60":1,"126":1,"128":1,"134":1,"136":4,"143":1,"144":1,"152":1,"164":1}}],["mercator",{"2":{"170":1}}],["merge",{"2":{"136":1}}],["measure",{"2":{"136":1,"150":1}}],["meant",{"2":{"26":1}}],["meaning",{"2":{"3":3,"4":1,"6":4,"24":1,"37":1,"41":1,"103":4,"126":1}}],["means",{"2":{"3":1,"6":2,"36":1,"37":1,"41":1,"74":1,"97":3,"102":1,"103":1,"126":1,"134":1}}],["mean",{"2":{"0":1,"6":5,"17":1,"39":2,"40":5,"136":1}}],["meanvalue",{"2":{"0":1,"5":2,"6":3,"38":1,"39":2,"40":15}}],["meets",{"2":{"97":9,"103":1,"158":1}}],["meet",{"2":{"54":3,"74":1,"75":1,"89":1,"97":7,"106":1,"116":1}}],["memory",{"2":{"40":1,"171":1}}],["mesh",{"2":{"39":1,"136":1}}],["message",{"2":{"6":1,"166":1}}],["me",{"0":{"23":1}}],["mentioned",{"2":{"19":1}}],["mentions",{"2":{"6":1,"166":1}}],["menu",{"2":{"14":3}}],["median",{"2":{"13":4,"136":1}}],["mechanics",{"2":{"6":1,"40":1}}],["met",{"2":{"97":44}}],["meters",{"2":{"6":4,"151":1,"152":4,"170":1}}],["methoderror",{"2":{"31":3}}],["methods",{"0":{"2":1,"3":1,"4":1,"6":1},"1":{"3":1,"4":1},"2":{"1":1,"6":9,"9":1,"25":1,"27":1,"31":27,"40":3,"56":1,"75":1,"89":1,"106":1,"116":1,"127":1,"131":1,"134":1,"136":2,"151":1,"156":2,"161":1,"164":1,"169":1}}],["method",{"0":{"149":1},"2":{"1":1,"4":1,"5":10,"6":97,"24":1,"34":1,"37":1,"40":37,"41":2,"44":1,"47":1,"54":1,"60":3,"61":2,"63":1,"66":4,"69":1,"75":2,"89":2,"103":1,"106":2,"116":2,"127":1,"136":5,"148":1,"149":2,"151":2,"152":9,"153":14,"154":2,"165":1,"166":3,"175":1,"178":1}}],["mutation",{"2":{"172":1}}],["mutlipolygon",{"2":{"4":1,"6":1,"44":1}}],["muladd",{"2":{"40":2}}],["multifloats",{"2":{"13":1,"14":1,"15":1}}],["multifloat",{"2":{"7":1}}],["multilinestringtrait",{"2":{"141":1}}],["multilinestring",{"2":{"6":1,"136":1,"167":2}}],["multi",{"0":{"81":1,"82":1,"95":1,"96":1,"112":1,"113":1,"122":1,"123":1},"2":{"4":2,"6":3,"34":1,"37":1,"47":1,"69":2,"81":1,"82":1,"95":1,"96":1,"112":1,"113":1,"122":1,"123":1}}],["multicurves",{"2":{"37":1,"47":1}}],["multicurve",{"2":{"4":1,"6":1,"37":1}}],["multigeometry",{"2":{"4":2,"6":2,"66":2}}],["multiplication",{"2":{"153":1}}],["multiplied",{"2":{"40":3}}],["multiple",{"2":{"4":1,"6":1,"40":1,"97":1,"146":1,"160":1,"169":1,"173":1}}],["multiply",{"2":{"1":1,"6":1,"161":1}}],["multipolys",{"2":{"63":3}}],["multipoly`",{"2":{"51":2,"53":2,"62":2}}],["multipoly",{"2":{"6":9,"15":3,"51":1,"52":27,"53":1,"54":26,"62":1,"63":24,"145":21,"156":9}}],["multipolygon`",{"2":{"127":1}}],["multipolygons",{"2":{"3":1,"4":1,"6":11,"44":1,"51":3,"53":3,"54":3,"62":3,"65":1,"69":1,"103":2,"144":1,"169":1,"170":1}}],["multipolygon",{"2":{"3":2,"4":5,"6":16,"37":2,"43":1,"51":1,"52":7,"53":1,"54":5,"62":1,"63":6,"69":4,"103":2,"127":7,"136":1,"142":2,"143":7,"144":8,"145":2,"156":3,"169":8,"170":1}}],["multipolygontrait",{"2":{"1":1,"3":4,"4":2,"6":7,"23":1,"52":4,"54":4,"63":4,"69":6,"81":1,"82":1,"95":1,"96":1,"103":8,"112":1,"113":1,"122":1,"123":1,"136":1,"141":1,"145":4}}],["multipoint",{"2":{"4":5,"6":5,"37":1,"69":5,"86":6,"136":4,"156":1,"169":5}}],["multipoints",{"2":{"3":2,"4":1,"6":3,"37":1,"47":1,"69":2,"103":2,"156":1,"169":1}}],["multipointtrait",{"2":{"1":1,"3":2,"4":4,"6":8,"34":2,"37":1,"47":1,"69":8,"81":1,"82":1,"86":4,"95":1,"96":1,"103":4,"112":1,"113":1,"122":1,"123":1,"134":1,"141":1,"156":2,"167":1}}],["multithreading",{"2":{"1":2,"4":1,"6":5,"133":1}}],["must",{"2":{"1":1,"3":8,"4":2,"5":1,"6":23,"9":1,"34":1,"40":5,"41":1,"45":3,"47":3,"50":1,"54":2,"69":5,"72":2,"75":1,"84":1,"85":1,"89":1,"97":13,"103":1,"105":1,"106":1,"116":2,"127":1,"131":1,"136":1,"140":1,"141":3,"142":1,"148":1,"152":1,"153":1,"156":1,"160":4,"166":1}}],["much",{"2":{"0":1,"6":3,"51":1,"53":1,"62":1}}],["mdash",{"2":{"1":4,"3":9,"4":8,"5":3,"6":89,"131":3,"141":1,"142":4}}],["df",{"2":{"172":3,"173":4,"176":10,"177":12}}],["dp",{"2":{"156":3}}],["dy",{"2":{"126":2,"153":3}}],["dy2",{"2":{"126":2}}],["dy1",{"2":{"86":10,"126":2}}],["dyc",{"2":{"86":2}}],["dx",{"2":{"126":2,"153":3}}],["dx2",{"2":{"126":2}}],["dx1",{"2":{"86":10,"126":2}}],["dxc",{"2":{"86":2}}],["drop",{"2":{"63":1,"145":1,"153":1}}],["driven",{"2":{"25":1,"27":1}}],["driving",{"2":{"25":1,"27":1}}],["duplicated",{"2":{"54":2}}],["during",{"2":{"45":1}}],["due",{"2":{"44":1,"45":1,"54":3}}],["date",{"2":{"60":1}}],["datas",{"2":{"178":1}}],["datasets",{"2":{"170":1,"175":1,"176":1}}],["dataset",{"2":{"170":1,"175":1}}],["datainterpolations",{"2":{"150":1}}],["dataframes",{"2":{"172":3,"176":2,"177":1}}],["dataframe",{"2":{"29":1,"172":1,"175":1,"176":5,"177":2}}],["data",{"0":{"127":1,"173":1},"2":{"23":1,"25":1,"27":1,"59":1,"127":2,"156":10,"168":1,"170":2,"171":2,"172":2,"173":6,"176":1}}],["dataaspect",{"2":{"13":1,"14":1,"33":1,"36":1,"39":2,"43":1,"46":1,"65":2,"127":2,"151":1,"156":1}}],["dashboard",{"0":{"14":1},"2":{"13":1,"14":1}}],["d",{"2":{"1":2,"5":1,"6":1,"40":1,"148":1,"158":3}}],["deu",{"2":{"177":2}}],["demonstrates",{"2":{"176":1}}],["densify",{"2":{"152":3}}],["densifying",{"2":{"152":1}}],["densifies",{"2":{"150":1}}],["denoted",{"2":{"97":1}}],["denotes",{"2":{"45":1}}],["debug",{"2":{"141":1}}],["debugging",{"2":{"40":1,"45":1}}],["de",{"2":{"97":2,"175":1}}],["derivation",{"2":{"54":1}}],["dealing",{"2":{"47":1}}],["delete",{"2":{"86":1,"103":1,"127":1,"158":1}}],["deleteat",{"2":{"45":6,"158":1,"160":2}}],["deltri",{"2":{"61":1}}],["delayed",{"2":{"45":10,"52":2,"54":2,"63":2}}],["delay",{"2":{"45":14,"51":2,"52":2,"53":2,"54":2,"62":2,"63":2}}],["delaunay",{"2":{"6":1,"61":1}}],["delaunaytriangulation",{"2":{"6":1,"31":1,"56":1,"61":6}}],["depend",{"2":{"45":2}}],["depends",{"2":{"45":1,"50":1}}],["depending",{"2":{"1":1,"6":1,"23":1,"54":1,"136":1}}],["depth",{"2":{"40":2}}],["desktop",{"2":{"173":1}}],["dest",{"2":{"170":2}}],["destination",{"2":{"170":5}}],["desired",{"2":{"62":1,"173":1}}],["despite",{"2":{"34":1}}],["describe",{"2":{"17":1}}],["described",{"2":{"6":1,"40":1,"44":1,"45":1}}],["deconstruct",{"2":{"129":1}}],["decomposition",{"2":{"18":1,"129":1}}],["decomposing",{"2":{"18":1}}],["decompose",{"2":{"18":2,"29":1,"40":4,"137":1}}],["decrementing",{"2":{"127":1}}],["decrease",{"2":{"44":1}}],["decreasing",{"2":{"6":1,"156":1}}],["decide",{"2":{"60":1,"127":1}}],["decision",{"2":{"24":1}}],["degeneracies",{"2":{"9":1}}],["degenerate",{"2":{"6":1,"40":1,"50":2}}],["degrees",{"2":{"6":1,"33":1,"126":1,"152":1}}],["defines",{"2":{"45":1,"129":1,"140":1,"163":1}}],["define",{"2":{"39":1,"54":2,"68":1,"127":2,"129":1,"134":1,"136":1,"163":1,"178":2}}],["defined",{"2":{"4":1,"5":1,"6":3,"7":1,"22":1,"34":2,"40":1,"45":1,"46":1,"47":4,"54":4,"66":2,"125":1,"136":1,"153":1,"163":1}}],["definitions",{"2":{"166":1}}],["definition",{"2":{"4":4,"6":6,"69":8,"74":1,"153":1}}],["default",{"2":{"1":2,"4":5,"6":14,"34":1,"37":2,"47":1,"51":1,"52":2,"53":1,"54":5,"61":1,"62":1,"63":2,"66":2,"127":5,"131":1,"136":2,"148":2,"156":2}}],["defaults",{"2":{"1":6,"4":2,"6":14,"133":3,"136":1}}],["deeper",{"2":{"1":1,"6":1,"135":1,"136":2}}],["detrimental",{"2":{"143":1}}],["detector",{"2":{"60":1}}],["detection",{"2":{"60":1,"127":1}}],["determined",{"2":{"45":1,"47":1}}],["determine",{"2":{"45":10,"47":3,"51":2,"53":2,"54":9,"62":2,"75":1,"89":1,"97":9,"103":1,"106":1,"116":1,"158":3,"175":1}}],["determines",{"2":{"37":1,"45":3,"54":1,"97":10}}],["determinant",{"2":{"6":1,"40":1}}],["details",{"2":{"131":3,"132":1,"151":2}}],["detail",{"2":{"26":1}}],["det",{"2":{"0":1,"6":2,"40":4}}],["dirname",{"2":{"156":4}}],["dirty",{"2":{"155":1}}],["directive",{"2":{"136":1}}],["direction",{"2":{"6":1,"45":1,"69":5,"127":3}}],["directly",{"2":{"6":1,"61":3,"127":1,"152":1}}],["dig",{"2":{"136":1}}],["dict",{"2":{"127":5}}],["didn",{"2":{"63":1,"97":1,"165":1}}],["division",{"2":{"39":1}}],["divided",{"2":{"26":1}}],["div",{"2":{"6":2}}],["div>",{"2":{"6":2}}],["ditance",{"2":{"4":1,"6":1,"66":1}}],["dimensional",{"2":{"5":1,"6":3,"36":1,"40":1,"61":2}}],["dimensions",{"2":{"3":1,"6":1,"103":2}}],["dimension",{"2":{"1":1,"3":4,"6":4,"86":2,"102":1,"103":4,"148":1}}],["discouraged",{"2":{"171":1}}],["discussion",{"2":{"25":1,"27":1,"50":1}}],["distributed",{"2":{"176":2}}],["distinct",{"2":{"54":1,"127":1}}],["dist",{"2":{"54":40,"66":19,"97":2,"152":8,"158":40}}],["distance`",{"2":{"152":3,"153":1,"166":1}}],["distances",{"2":{"54":1,"65":1,"152":1,"157":5}}],["distance",{"0":{"64":2,"65":2},"1":{"65":2,"66":2},"2":{"0":4,"4":26,"6":47,"31":1,"40":13,"41":3,"47":3,"54":32,"64":2,"65":17,"66":92,"97":1,"129":1,"150":1,"151":5,"152":13,"153":14,"156":1,"157":3,"158":6,"159":1,"174":1,"178":2}}],["disagree",{"2":{"37":1}}],["disparate",{"2":{"25":1,"27":1}}],["dispatches",{"2":{"6":1,"34":1,"37":1,"40":1,"44":1,"47":1,"66":1,"69":1,"75":1,"89":1,"103":1,"106":1,"116":1}}],["dispatch",{"2":{"4":1,"6":5,"24":1,"40":1,"69":1,"131":1,"136":2,"164":1,"166":1}}],["displaying",{"2":{"170":1}}],["display",{"2":{"13":1,"39":1,"170":1}}],["disjoint",{"0":{"87":1,"88":1,"91":1,"92":1,"93":1,"94":1,"95":1},"1":{"88":1,"89":1},"2":{"0":2,"3":5,"6":7,"23":1,"31":1,"63":2,"87":1,"88":3,"89":11,"90":6,"91":15,"92":18,"93":10,"94":5,"95":4,"96":2,"97":16,"100":3,"142":2,"143":2,"145":7,"175":1}}],["diffs",{"2":{"34":4}}],["diff",{"2":{"6":2,"34":17,"51":5,"52":3,"103":3,"145":8}}],["differs",{"2":{"170":1}}],["differ",{"2":{"4":1,"6":1,"66":1}}],["differently",{"2":{"4":3,"6":4,"34":1,"37":2,"47":1}}],["different",{"2":{"3":1,"4":4,"6":6,"20":1,"23":1,"34":1,"37":4,"45":3,"47":1,"54":2,"60":1,"103":3,"127":1,"134":1,"136":1,"143":2,"170":2,"173":1}}],["differences",{"0":{"52":1},"2":{"54":1,"158":1}}],["difference",{"0":{"51":1},"2":{"0":1,"6":7,"11":1,"23":1,"31":1,"45":3,"51":12,"52":14,"54":1,"62":1,"63":3,"142":1,"145":1,"152":1}}],["diffintersectingpolygons",{"2":{"0":1,"6":1,"142":1,"145":4}}],["doi",{"2":{"51":2,"53":2,"62":2,"97":1}}],["doing",{"2":{"17":1,"22":1,"136":1,"171":1}}],["dot",{"2":{"34":2,"40":1}}],["doable",{"2":{"9":1}}],["documenter",{"2":{"131":3,"132":1,"151":2}}],["documentation",{"0":{"0":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"2":{"0":1,"26":1,"39":1}}],["docstring",{"2":{"131":6,"132":2,"151":4}}],["docstrings",{"0":{"130":1},"1":{"131":1},"2":{"7":1}}],["docs",{"0":{"26":1},"2":{"26":1,"127":1}}],["doc",{"2":{"9":1,"10":1}}],["does",{"0":{"22":1},"2":{"7":1,"19":1,"43":1,"54":2,"71":1,"74":3,"97":1}}],["doesn",{"2":{"4":1,"6":2,"37":1,"50":1,"69":1,"152":1,"166":1,"177":1}}],["download",{"2":{"170":1}}],["down",{"2":{"6":1,"18":1,"29":1,"40":1,"136":1}}],["doublets",{"2":{"177":2}}],["double",{"2":{"159":4}}],["doubled",{"2":{"6":1,"159":1}}],["douglas",{"2":{"154":2,"156":2,"158":1}}],["douglaspeucker",{"0":{"158":1},"2":{"0":1,"6":5,"154":1,"156":5,"158":6}}],["done",{"0":{"10":1},"2":{"13":1,"14":1,"97":2,"127":1,"129":1,"143":1,"169":1,"175":1}}],["don",{"2":{"4":2,"6":3,"45":4,"51":1,"63":1,"69":6,"92":1,"97":1,"105":1,"109":1,"127":2,"136":3,"153":1,"166":1}}],["do",{"0":{"9":1,"23":1,"55":1},"2":{"1":1,"6":2,"14":1,"23":1,"31":1,"34":1,"37":2,"40":2,"41":1,"44":1,"47":1,"50":1,"63":3,"66":2,"68":1,"69":1,"84":1,"92":2,"93":1,"94":2,"97":1,"127":4,"129":1,"136":9,"138":1,"139":1,"144":1,"147":2,"149":1,"152":1,"156":1,"161":2,"162":2,"170":2,"171":2,"172":3,"176":1,"177":1}}],["ay",{"2":{"126":2}}],["azimuth",{"2":{"126":2}}],["automatically",{"2":{"103":1,"170":1}}],["a3",{"2":{"59":1}}],["against",{"2":{"69":1,"97":2,"152":1,"156":1}}],["again",{"2":{"54":1,"136":1}}],["a``",{"2":{"52":2}}],["a`",{"2":{"45":1,"52":7,"54":3,"63":2}}],["away",{"2":{"41":1,"86":1,"178":1}}],["a2y",{"2":{"54":4}}],["a2x",{"2":{"54":4}}],["a2",{"2":{"39":4,"54":54,"60":1,"103":6}}],["a1y",{"2":{"54":7}}],["a1x",{"2":{"54":7}}],["a1",{"2":{"39":2,"45":9,"54":66,"60":1,"103":6}}],["ams",{"2":{"174":2}}],["america",{"2":{"156":1}}],["am",{"2":{"97":1}}],["ambiguity",{"2":{"66":2,"136":5}}],["amounts",{"2":{"173":1}}],["amount",{"2":{"36":1,"46":1}}],["amp",{"2":{"6":1,"9":1}}],["axes",{"2":{"127":6}}],["ax",{"2":{"13":3,"14":3,"126":2,"169":5}}],["axislegend",{"2":{"58":1,"151":1,"155":1}}],["axis",{"2":{"13":2,"14":1,"33":1,"36":1,"39":4,"43":1,"46":1,"60":2,"65":1,"127":2,"151":1,"156":1,"174":1}}],["axs",{"2":{"13":2}}],["a>",{"2":{"6":2}}],["adjust",{"2":{"54":1}}],["adjacent",{"2":{"45":1,"52":1,"54":1,"63":1}}],["adaptivity",{"0":{"55":1}}],["adaptive",{"2":{"7":1,"13":3,"14":2,"55":1}}],["adapted",{"2":{"51":1,"53":1,"62":1,"126":1}}],["advance",{"2":{"44":2}}],["advised",{"2":{"6":1,"164":1}}],["administrative",{"2":{"177":1}}],["admin",{"2":{"11":1,"59":1,"156":2}}],["adm0",{"2":{"11":7,"59":4}}],["adds",{"2":{"45":1}}],["additional",{"2":{"173":1}}],["additionally",{"2":{"45":3,"69":1}}],["addition",{"2":{"39":1,"63":1}}],["adding",{"2":{"4":1,"6":4,"7":1,"63":2,"127":1,"146":1,"150":1,"152":2,"153":1}}],["added",{"2":{"6":1,"34":1,"45":6,"47":1,"63":2,"131":1,"136":1,"145":2,"158":1}}],["add",{"2":{"3":1,"6":1,"7":2,"40":1,"41":1,"45":16,"47":1,"50":4,"51":3,"53":1,"54":2,"61":1,"62":2,"63":9,"86":1,"127":4,"136":1,"150":1,"152":1,"158":10,"165":1,"170":1,"172":2,"175":1}}],["average",{"2":{"38":3,"44":4,"54":1}}],["available",{"0":{"142":1},"2":{"6":3,"31":1,"44":1,"141":3,"150":1,"151":1,"153":1,"156":1,"160":1,"164":1}}],["avoid",{"2":{"5":1,"6":7,"40":1,"51":1,"53":1,"54":1,"62":1,"63":1,"127":2,"136":5,"153":1,"157":1,"158":1,"159":1,"169":3}}],["achieve",{"2":{"143":1}}],["across",{"2":{"134":1}}],["acos",{"2":{"34":1}}],["activate",{"2":{"151":1}}],["action",{"2":{"20":2}}],["actions",{"2":{"20":2}}],["actual",{"2":{"10":1,"40":1,"126":1,"139":1,"148":1,"152":1}}],["actually",{"2":{"1":1,"6":1,"9":1,"40":4,"54":1,"63":3,"97":1,"127":1,"161":1,"173":1}}],["access",{"2":{"170":1}}],["accessed",{"2":{"166":1}}],["acceptable",{"2":{"97":1}}],["accepts",{"2":{"61":1}}],["accept",{"2":{"6":1,"166":1}}],["according",{"2":{"138":1,"143":1,"144":1,"176":1}}],["accordingly",{"2":{"45":1}}],["account",{"2":{"51":1,"53":1}}],["accurary",{"2":{"54":1}}],["accuratearithmetic",{"2":{"11":2}}],["accurate",{"0":{"11":1},"2":{"11":3,"151":1}}],["accumulators",{"2":{"40":1}}],["accumulator",{"2":{"40":1}}],["accumulate",{"2":{"37":1,"44":3}}],["accumulation",{"0":{"11":1},"2":{"40":1}}],["after",{"2":{"6":8,"34":1,"45":3,"136":1,"156":2}}],["ab",{"2":{"45":3,"51":1,"53":1,"54":5,"62":1}}],["able",{"2":{"20":1,"54":1}}],["ability",{"2":{"17":1}}],["about",{"2":{"6":1,"24":2,"30":1,"40":2,"97":1,"137":1}}],["above",{"2":{"4":1,"6":1,"34":1,"44":1,"45":1,"54":1,"63":1,"141":1}}],["abs",{"2":{"34":1,"37":4,"44":1,"47":2,"86":8,"103":2,"127":1,"159":1,"178":1}}],["absolute",{"2":{"4":1,"6":1,"36":1,"37":2}}],["abstractpolygon",{"2":{"136":1}}],["abstractpolygontrait",{"2":{"66":1}}],["abstractpoint",{"2":{"136":1}}],["abstractface",{"2":{"136":1}}],["abstractfloat",{"2":{"31":1,"34":1,"37":2,"45":1,"47":2,"50":1,"51":1,"53":1,"54":1,"62":1,"66":8}}],["abstractrange",{"2":{"127":6}}],["abstractmesh",{"2":{"136":1}}],["abstractmulticurvetrait",{"2":{"81":1,"82":1,"95":1,"96":1,"112":1,"113":1,"122":1,"123":1}}],["abstractmatrix",{"2":{"6":5,"127":13}}],["abstractcurvetrait",{"2":{"34":1,"37":1,"45":1,"47":1,"77":1,"80":1,"81":1,"86":1,"91":1,"95":1,"108":1,"111":1,"112":1,"118":1,"121":1,"122":1,"126":1,"156":2,"167":3}}],["abstractarrays",{"2":{"134":1}}],["abstractarray",{"2":{"6":1,"131":1,"136":6,"167":2}}],["abstract",{"2":{"6":3,"40":3,"140":1,"141":4,"142":1,"156":3,"165":1}}],["abstractvector",{"2":{"5":1,"6":1,"40":26,"127":8}}],["abstractgeometrytrait`",{"2":{"141":1}}],["abstractgeometrytrait",{"2":{"6":3,"37":2,"47":1,"66":1,"82":1,"96":1,"113":1,"123":1,"131":1,"134":1,"141":4,"142":2,"167":5}}],["abstractgeometry",{"2":{"3":4,"6":4,"72":2,"85":2,"136":1}}],["abstracttrait",{"2":{"1":2,"3":2,"6":8,"50":1,"52":2,"54":4,"63":2,"103":4,"129":1,"131":2,"136":9,"164":3}}],["abstractbarycentriccoordinatemethod",{"2":{"0":1,"5":1,"6":7,"40":18}}],["attribute",{"2":{"173":1}}],["attributed",{"2":{"172":1}}],["attributes",{"0":{"172":1},"2":{"168":1,"172":3}}],["attempts",{"2":{"97":1}}],["attach",{"2":{"1":2,"4":1,"6":5,"133":1}}],["atomic",{"2":{"7":1}}],["at",{"2":{"3":4,"5":1,"6":6,"9":1,"18":1,"20":1,"24":1,"26":1,"34":2,"36":1,"37":1,"39":1,"40":2,"45":4,"47":2,"54":8,"60":1,"63":2,"97":17,"103":6,"105":1,"106":1,"109":3,"110":2,"111":2,"112":1,"113":1,"116":1,"122":1,"126":1,"134":1,"136":1,"151":1,"153":1,"158":1,"160":1,"170":1,"171":2}}],["arbitrarily",{"2":{"134":1}}],["arbitrary",{"2":{"38":1,"129":1,"169":1}}],["around",{"2":{"39":1,"40":2,"50":1,"65":1,"69":1,"127":1,"156":1,"176":1}}],["argmin",{"2":{"160":1}}],["argtypes",{"2":{"41":2,"149":1,"152":1}}],["args",{"2":{"13":2}}],["argumenterror",{"2":{"63":1,"127":1,"136":5}}],["argument",{"2":{"4":5,"6":10,"34":1,"37":2,"44":1,"47":1,"51":1,"53":1,"62":1,"66":2,"136":2,"166":2,"170":1,"171":1}}],["arguments",{"2":{"1":1,"3":1,"6":5,"45":1,"75":2,"89":1,"106":1,"116":1,"148":1,"152":2,"153":1,"166":1}}],["arithmetic",{"2":{"11":1}}],["archgdal",{"2":{"23":1}}],["arc",{"2":{"6":1,"152":1}}],["array",{"2":{"4":1,"6":2,"37":1,"47":1,"127":5,"136":7,"157":1,"160":1}}],["arrays",{"2":{"1":1,"6":2,"22":1,"127":1,"136":2}}],["aren",{"2":{"4":3,"6":5,"50":1,"52":1,"54":2,"63":4,"69":3,"142":2,"145":2}}],["are",{"2":{"1":1,"3":4,"4":18,"5":2,"6":50,"9":2,"20":2,"22":3,"24":1,"25":1,"26":2,"27":1,"33":1,"34":8,"36":1,"37":2,"38":6,"40":11,"43":1,"44":3,"45":31,"47":6,"50":3,"51":3,"52":15,"53":2,"54":16,"60":3,"62":5,"63":9,"65":1,"66":1,"68":3,"69":26,"71":1,"75":7,"77":1,"78":3,"79":3,"80":1,"82":1,"88":1,"89":5,"91":1,"92":1,"93":1,"95":1,"96":1,"97":12,"103":7,"106":5,"108":1,"110":2,"115":1,"116":5,"118":1,"119":3,"120":3,"121":1,"123":1,"126":1,"127":14,"128":1,"131":1,"134":1,"136":4,"137":1,"138":1,"139":1,"141":1,"142":3,"143":1,"144":1,"145":2,"146":1,"151":1,"152":1,"153":1,"156":4,"158":1,"160":2,"162":1,"163":2,"164":1,"166":1,"169":1,"172":2,"173":2,"174":1,"175":3,"176":6,"177":1,"178":1}}],["area2",{"2":{"44":4}}],["area1",{"2":{"44":4}}],["areas",{"2":{"4":2,"6":2,"37":3,"159":2}}],["area",{"0":{"35":2,"36":2},"1":{"36":2,"37":2},"2":{"0":5,"4":15,"6":25,"11":6,"31":1,"35":2,"36":9,"37":61,"42":1,"43":3,"44":49,"46":2,"47":44,"62":2,"63":1,"103":1,"129":1,"142":2,"145":2,"156":2,"159":4,"170":1}}],["ask",{"2":{"23":1}}],["aspect",{"2":{"13":1,"14":1,"33":1,"36":1,"39":2,"43":1,"46":1,"65":2,"127":2,"151":1,"156":1}}],["assign",{"2":{"168":1}}],["assigned",{"2":{"45":1,"127":7,"176":1}}],["assets",{"2":{"170":1}}],["assetpath",{"2":{"170":1}}],["assemble",{"2":{"139":1}}],["assert",{"2":{"40":23,"44":1,"45":2,"50":1,"52":1,"54":1,"153":1,"167":1}}],["assume",{"2":{"103":2,"136":3,"138":1,"145":1}}],["assumed",{"2":{"37":1,"69":1,"97":1}}],["assumes",{"2":{"6":1,"45":1,"66":1,"152":1,"160":1}}],["associativity",{"2":{"19":1}}],["associated",{"0":{"1":1},"2":{"38":2}}],["as",{"2":{"1":8,"3":18,"4":6,"5":1,"6":80,"7":1,"11":2,"13":3,"14":3,"15":3,"17":2,"18":2,"20":1,"22":1,"23":2,"24":1,"25":1,"27":1,"33":2,"34":4,"36":2,"37":3,"38":4,"39":1,"40":4,"41":3,"43":2,"44":1,"45":18,"46":2,"47":5,"49":3,"50":5,"51":8,"52":2,"53":7,"54":8,"56":1,"58":2,"59":2,"60":3,"61":3,"62":7,"63":5,"65":3,"66":1,"68":2,"69":2,"71":2,"72":2,"74":3,"75":3,"84":2,"85":2,"86":2,"88":2,"89":3,"97":7,"99":2,"100":2,"102":2,"103":2,"105":2,"106":3,"108":1,"115":2,"116":3,"126":8,"127":3,"129":3,"131":1,"134":2,"135":2,"136":15,"138":2,"139":2,"141":1,"142":1,"144":2,"146":1,"148":3,"150":2,"151":2,"152":3,"154":2,"155":2,"156":7,"158":2,"161":3,"164":2,"165":2,"166":2,"167":2,"168":3,"169":2,"170":1,"171":1,"173":3,"174":3,"175":2,"176":3,"177":2}}],["alone",{"2":{"136":1}}],["along",{"2":{"4":4,"6":5,"45":3,"47":2,"54":4,"69":4,"97":1}}],["although",{"2":{"119":1,"120":1}}],["alternate",{"2":{"45":1}}],["alternative",{"2":{"45":1}}],["already",{"2":{"69":1,"97":2,"158":1}}],["almost",{"2":{"54":1}}],["alg=nothing",{"2":{"156":1}}],["alg`",{"2":{"156":1}}],["alg",{"2":{"6":4,"156":21,"157":3,"158":8,"159":3,"160":7,"166":9}}],["algorithms",{"2":{"6":3,"56":1,"60":1,"138":1,"153":1,"154":1,"156":4,"158":1,"160":1}}],["algorithm",{"0":{"157":1,"158":1,"159":1},"2":{"6":12,"39":1,"45":2,"47":1,"50":3,"51":1,"53":1,"56":1,"61":4,"62":1,"97":1,"154":1,"156":8,"157":1,"158":3,"159":1,"166":4}}],["allocating",{"2":{"61":1}}],["allocations",{"2":{"5":1,"6":1,"40":1}}],["allocate",{"2":{"61":1}}],["allow=",{"2":{"97":1}}],["allows",{"2":{"11":1,"18":1,"23":1,"24":1,"29":1,"75":2,"77":3,"78":3,"79":3,"80":1,"89":2,"91":3,"92":3,"93":2,"94":1,"106":1,"109":1,"110":1,"111":1,"116":3,"118":3,"119":3,"120":3,"121":1,"129":1,"154":1,"170":1,"172":1,"175":1}}],["allowed",{"2":{"6":1,"75":3,"89":3,"97":6,"106":5,"108":1,"109":2,"116":3,"156":1}}],["allow",{"2":{"1":1,"6":1,"23":1,"54":1,"75":7,"86":3,"89":7,"97":73,"106":10,"116":10,"161":1}}],["all",{"2":{"1":3,"3":2,"4":3,"6":14,"9":1,"11":7,"22":1,"25":1,"27":1,"31":2,"34":5,"37":3,"40":1,"45":13,"47":3,"51":1,"52":3,"54":3,"56":1,"59":3,"61":1,"63":5,"65":1,"69":2,"71":1,"78":3,"79":3,"82":1,"95":1,"96":1,"97":7,"103":4,"115":1,"123":1,"126":1,"127":3,"128":1,"131":1,"134":2,"135":1,"136":8,"139":1,"141":1,"143":1,"146":1,"147":1,"156":1,"161":2,"162":1,"163":1,"169":1,"171":1,"173":1,"175":1}}],["always",{"2":{"1":7,"4":6,"6":10,"25":1,"27":1,"36":1,"37":4,"47":2,"60":1,"65":1,"66":1,"69":1,"136":2,"148":4,"175":1}}],["also",{"2":{"1":2,"6":11,"23":1,"34":1,"37":2,"44":2,"45":3,"47":1,"51":1,"53":1,"54":2,"56":1,"60":1,"61":1,"62":1,"65":1,"66":2,"69":3,"103":1,"127":1,"134":1,"136":1,"139":1,"142":3,"145":2,"149":1,"150":1,"151":1,"152":1,"154":1,"161":1,"164":1,"169":2,"172":1}}],["a",{"0":{"23":1,"170":1,"172":1},"2":{"1":13,"3":5,"4":79,"5":1,"6":196,"7":3,"9":1,"11":1,"15":2,"17":1,"18":6,"20":3,"22":3,"23":4,"24":2,"25":2,"27":2,"29":2,"30":2,"33":3,"34":22,"36":11,"37":20,"38":13,"39":4,"40":11,"41":2,"43":5,"44":8,"45":286,"46":2,"47":17,"49":3,"50":4,"51":39,"52":30,"53":38,"54":91,"55":3,"56":3,"58":3,"59":2,"60":1,"61":4,"62":36,"63":45,"65":15,"66":27,"68":2,"69":54,"71":2,"74":1,"75":3,"77":5,"78":3,"79":2,"81":2,"82":2,"84":2,"86":1,"88":1,"89":3,"91":4,"92":3,"93":1,"95":2,"96":2,"97":52,"99":2,"102":5,"103":27,"105":2,"106":4,"108":4,"109":2,"110":2,"111":1,"112":2,"113":2,"115":1,"116":3,"118":5,"119":2,"120":2,"122":2,"123":2,"125":1,"126":4,"127":79,"129":4,"131":2,"134":4,"136":34,"137":6,"138":2,"139":2,"140":5,"141":5,"142":9,"143":8,"145":6,"146":2,"147":3,"148":8,"149":3,"150":5,"151":4,"152":8,"153":10,"155":3,"156":5,"159":3,"160":1,"161":2,"162":1,"164":6,"165":1,"166":12,"167":2,"168":1,"169":21,"170":12,"171":5,"172":5,"173":11,"174":1,"175":5,"176":8,"177":3,"178":3}}],["annotation",{"2":{"165":1}}],["annotated",{"2":{"26":1}}],["angels",{"2":{"34":1}}],["angle",{"2":{"34":35,"126":1}}],["angles",{"0":{"32":1,"33":1},"1":{"33":1,"34":1},"2":{"0":2,"4":10,"6":10,"31":1,"32":1,"33":4,"34":42}}],["answers",{"2":{"143":1}}],["answer",{"2":{"6":3,"51":1,"53":1,"54":1,"62":1}}],["another",{"2":{"3":1,"6":1,"45":2,"54":1,"61":1,"65":1,"71":1,"74":1,"77":1,"79":1,"80":1,"84":1,"88":1,"91":1,"92":1,"93":1,"94":1,"97":1,"99":1,"102":1,"103":1,"105":1,"108":1,"109":1,"110":1,"111":1,"115":1,"118":1,"119":1,"120":1,"121":1,"127":1,"148":1}}],["anonymous",{"2":{"1":1,"6":1,"161":1}}],["an",{"2":{"1":3,"4":11,"5":1,"6":29,"9":1,"13":1,"14":1,"18":1,"20":1,"23":2,"33":1,"34":4,"36":1,"37":2,"39":1,"40":3,"41":2,"43":1,"45":17,"46":2,"47":2,"49":1,"50":1,"51":2,"52":5,"53":2,"54":9,"61":3,"62":2,"63":2,"65":2,"66":5,"68":1,"69":1,"71":1,"74":2,"77":2,"84":1,"88":1,"97":13,"99":1,"102":1,"103":1,"105":1,"115":1,"118":2,"119":1,"120":1,"127":3,"128":1,"131":1,"134":1,"135":1,"136":8,"139":1,"146":1,"148":1,"152":1,"161":2,"166":3,"167":1,"169":2,"170":2,"172":1,"174":1,"176":1}}],["anything",{"2":{"39":1,"97":1}}],["any",{"2":{"1":3,"3":1,"4":2,"6":19,"18":1,"24":1,"25":1,"27":1,"29":1,"38":2,"44":1,"45":7,"47":1,"50":1,"52":1,"54":4,"63":1,"66":2,"76":2,"77":1,"80":1,"88":1,"90":2,"91":1,"92":2,"93":1,"94":2,"97":8,"103":2,"107":2,"117":2,"121":1,"127":2,"129":2,"131":1,"136":2,"139":1,"140":1,"141":3,"142":4,"145":4,"148":2,"150":1,"152":1,"153":1,"158":1,"167":1,"175":2,"176":2}}],["and",{"0":{"1":1,"20":1,"22":1,"24":1,"35":1,"52":1,"54":1,"63":1,"64":1,"169":1,"170":1,"172":1},"1":{"36":1,"37":1,"65":1,"66":1},"2":{"0":2,"1":8,"3":11,"4":18,"6":84,"7":1,"9":2,"17":4,"18":4,"20":2,"22":1,"23":2,"24":3,"25":2,"26":5,"27":2,"29":2,"30":1,"31":2,"34":13,"36":1,"37":7,"38":2,"39":2,"40":20,"41":1,"42":2,"43":1,"44":29,"45":72,"46":2,"47":18,"49":1,"50":4,"51":4,"52":16,"53":4,"54":38,"60":1,"61":2,"62":6,"63":15,"65":2,"66":13,"68":2,"69":13,"71":3,"72":2,"74":2,"75":3,"78":3,"79":4,"80":1,"84":2,"85":2,"86":1,"89":3,"92":3,"93":1,"94":1,"97":36,"99":1,"102":2,"103":3,"106":2,"110":2,"111":2,"115":3,"116":4,"118":2,"119":3,"120":3,"121":1,"126":2,"127":16,"129":8,"131":1,"134":2,"135":3,"136":22,"137":1,"138":2,"139":1,"140":1,"141":4,"142":2,"143":1,"146":2,"147":2,"148":2,"151":1,"152":5,"153":4,"154":2,"155":1,"156":8,"158":8,"159":1,"160":1,"161":1,"164":1,"165":3,"166":4,"168":3,"169":9,"170":7,"171":2,"173":5,"175":2,"176":4,"177":2}}],["apart",{"2":{"145":1}}],["april",{"0":{"7":1}}],["appears",{"2":{"138":1}}],["append",{"2":{"34":1,"45":5,"51":1,"52":2,"54":2,"62":1,"63":5,"145":2}}],["approximately",{"2":{"45":1,"151":1}}],["approach",{"2":{"19":1}}],["appropriately",{"2":{"176":1}}],["appropriate",{"2":{"6":1,"166":2}}],["applies",{"2":{"134":2}}],["applied",{"2":{"6":3,"20":1,"131":1,"136":2,"140":2,"141":2,"142":1}}],["application",{"2":{"1":1,"6":3,"136":1,"139":1,"141":3,"142":1,"145":2,"150":1,"153":1}}],["apply`",{"2":{"136":1}}],["applys",{"2":{"37":1,"47":1}}],["applyreduce",{"0":{"19":1},"2":{"0":2,"1":1,"6":1,"17":1,"19":2,"29":1,"34":1,"37":1,"44":2,"47":1,"66":2,"129":3,"131":1,"136":39,"165":1}}],["apply",{"0":{"1":1,"18":1,"22":1,"29":1,"134":1},"1":{"19":1},"2":{"0":2,"1":4,"6":7,"17":1,"18":5,"20":1,"22":1,"24":1,"29":3,"129":5,"131":1,"133":1,"134":4,"135":1,"136":56,"141":4,"142":1,"146":1,"147":3,"148":1,"152":1,"153":1,"156":2,"161":3,"162":2,"165":1}}],["apis",{"2":{"17":1}}],["api",{"0":{"0":1,"40":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"2":{"0":1,"6":3,"24":1,"40":1,"152":1,"156":1,"166":1}}],["snapped",{"2":{"127":1}}],["s3",{"2":{"45":3}}],["scratch",{"2":{"173":1}}],["sciences",{"2":{"170":1}}],["scalefactor",{"2":{"152":3}}],["scattered",{"2":{"176":1}}],["scatter",{"2":{"43":1,"65":2,"68":2,"71":2,"74":1,"84":1,"88":2,"102":2,"115":2,"176":1}}],["schema",{"2":{"136":6}}],["scheme",{"2":{"44":1}}],["scenario",{"2":{"97":2}}],["scene",{"2":{"14":1}}],["skipmissing",{"2":{"127":1}}],["skipped",{"2":{"127":1}}],["skip",{"2":{"37":1,"97":14,"127":1,"160":4}}],["skygering",{"2":{"7":1}}],["square",{"2":{"66":1,"157":1,"158":1}}],["squared",{"2":{"6":2,"47":2,"66":12,"157":2,"158":7}}],["sqrt",{"2":{"34":2,"44":1,"66":3}}],["sgn",{"2":{"34":5}}],["smallest",{"2":{"34":2,"54":1,"56":1}}],["sᵢ₋₁",{"2":{"40":25}}],["sᵢ₊₁",{"2":{"6":2,"40":41}}],["sᵢ",{"2":{"6":4,"40":46}}],["src",{"2":{"6":2}}],["syntax",{"2":{"172":1}}],["symdifference",{"2":{"128":1}}],["sym10100477",{"2":{"97":1}}],["symbol=",{"2":{"86":1}}],["symbol",{"2":{"6":1,"166":2}}],["system",{"0":{"170":1,"171":1},"2":{"1":2,"148":2,"168":2,"170":1}}],["switches",{"2":{"54":1,"63":1}}],["switch",{"2":{"45":1,"63":1,"165":1}}],["switching",{"2":{"6":1,"47":1}}],["swap",{"2":{"6":1,"63":1,"66":2,"147":1}}],["swapped",{"2":{"3":1,"6":1,"72":1,"75":1,"85":1,"86":1,"100":1,"103":1}}],["swapping",{"2":{"1":1,"6":1,"136":1}}],["s2",{"2":{"6":4,"40":6,"45":3}}],["s1",{"2":{"6":3,"40":6,"45":3}}],["saving",{"0":{"173":1}}],["saved",{"2":{"69":1}}],["save",{"2":{"34":1,"168":1,"173":3}}],["samples",{"2":{"13":1}}],["sample",{"2":{"13":1}}],["same",{"2":{"3":2,"4":12,"6":23,"18":1,"34":3,"37":1,"45":15,"47":1,"50":1,"51":3,"53":1,"54":1,"60":1,"62":1,"63":1,"65":1,"68":2,"69":30,"97":2,"102":1,"103":8,"131":1,"134":1,"136":6,"137":1,"142":2,"144":1,"145":2,"151":1,"169":1,"170":1,"173":1}}],["says",{"2":{"60":1}}],["say",{"2":{"6":1,"40":1,"152":1}}],["span",{"2":{"176":1}}],["spatial",{"0":{"175":1},"1":{"176":1,"177":1,"178":1},"2":{"175":6,"176":3,"178":1}}],["spawn",{"2":{"136":5}}],["space",{"2":{"6":2,"25":1,"27":1,"34":1,"36":1,"97":1,"152":1,"153":1}}],["sp",{"2":{"97":2}}],["split",{"2":{"50":1}}],["specialized",{"2":{"25":1,"27":1,"61":1}}],["specify",{"2":{"6":1,"131":1,"136":1,"170":1,"171":1,"175":1}}],["specification",{"2":{"138":1,"141":1,"143":1,"144":1}}],["specifically",{"2":{"6":2,"40":3,"154":1,"175":1}}],["specific",{"2":{"45":1,"75":1,"89":1,"106":1,"116":1,"136":5}}],["specified",{"2":{"3":1,"6":2,"45":1,"52":2,"54":2,"63":2,"103":1,"134":1,"156":1}}],["slow",{"2":{"177":1}}],["slower",{"2":{"6":1,"166":2}}],["slope2",{"2":{"126":2}}],["slope1",{"2":{"126":2}}],["slidergrid",{"2":{"14":1}}],["sliders",{"2":{"14":3}}],["slightly",{"2":{"4":2,"6":2,"37":2}}],["suite",{"2":{"152":5,"156":13}}],["suggestion",{"2":{"149":1}}],["sun",{"2":{"97":1}}],["surrounds",{"2":{"97":1}}],["sure",{"2":{"9":1,"34":1,"45":5,"66":1,"103":1,"160":1}}],["suppose",{"2":{"177":1,"178":1}}],["support",{"2":{"41":1,"150":1,"178":1}}],["supports",{"2":{"39":1,"40":1,"56":1,"173":1,"178":2}}],["supported",{"2":{"23":1,"173":1}}],["supertype",{"2":{"6":1,"40":1}}],["sukumar",{"2":{"6":1,"40":1}}],["such",{"2":{"4":1,"6":1,"36":1,"49":1,"56":1,"134":1,"146":1}}],["sum=1",{"2":{"40":1}}],["sum",{"2":{"4":2,"6":3,"11":6,"36":1,"37":2,"38":2,"40":8,"47":1,"66":2,"126":5,"160":1,"167":4}}],["sublevel",{"2":{"177":1}}],["subsequent",{"2":{"169":1}}],["substituted",{"2":{"1":1,"6":1,"136":1}}],["subgeom1",{"2":{"136":2}}],["subgeom",{"2":{"136":3}}],["subject",{"2":{"45":1}}],["subtype",{"2":{"136":1}}],["subtypes",{"2":{"6":2,"40":2}}],["subtracted",{"2":{"126":1}}],["subtitle",{"2":{"13":1,"39":2,"152":1,"156":2}}],["sub",{"2":{"4":6,"6":7,"34":1,"37":3,"47":1,"52":6,"54":3,"63":4,"66":2,"81":2,"82":2,"95":2,"96":2,"112":2,"113":2,"122":2,"123":2,"136":3,"143":4,"144":2,"145":4}}],["series",{"2":{"169":1}}],["serve",{"2":{"6":1,"40":1}}],["searchsortedfirst",{"2":{"158":1}}],["seg2",{"2":{"126":2}}],["seg1",{"2":{"126":3}}],["seg",{"2":{"97":23,"103":9}}],["segmentation",{"2":{"151":1}}],["segments",{"2":{"23":1,"31":1,"33":2,"34":1,"43":1,"44":2,"45":3,"47":1,"54":6,"97":18,"152":1,"153":3}}],["segmentization",{"2":{"150":1}}],["segmentizing",{"2":{"6":3,"151":1,"152":2,"153":1}}],["segmentized",{"2":{"151":1}}],["segmentizes",{"2":{"150":1}}],["segmentizemethod",{"2":{"6":1,"152":3,"153":2}}],["segmentize",{"0":{"150":1},"1":{"151":1,"152":1,"153":1},"2":{"0":1,"6":4,"31":1,"41":1,"129":1,"150":1,"151":5,"152":11,"153":13,"174":1}}],["segment",{"2":{"4":4,"6":7,"34":1,"44":5,"45":6,"47":3,"49":1,"54":17,"66":2,"86":3,"97":43,"103":3,"126":2,"150":1,"152":2,"153":1}}],["seperate",{"2":{"54":1}}],["separates",{"2":{"97":1}}],["separate",{"2":{"45":1,"127":1,"136":1,"165":1,"173":1,"176":1}}],["separately",{"2":{"40":1,"127":1}}],["sense",{"2":{"37":1,"66":1}}],["several",{"2":{"20":2,"37":1,"137":1,"145":1}}],["section",{"2":{"26":1,"97":3,"102":1}}],["sections",{"2":{"10":1,"26":1}}],["seconds=1",{"2":{"152":3,"156":8}}],["secondisleft",{"2":{"127":4}}],["secondisstraight",{"2":{"127":7}}],["secondary",{"2":{"3":3,"6":3,"72":1,"75":1,"116":1}}],["second",{"2":{"3":8,"6":9,"45":1,"54":4,"69":1,"71":2,"72":1,"74":1,"75":1,"78":1,"79":1,"80":1,"85":2,"89":2,"97":2,"106":1,"115":1,"116":1,"119":1,"120":1,"121":2,"158":1,"171":1,"175":1}}],["self",{"2":{"9":2}}],["selected",{"2":{"127":1}}],["selectednode",{"2":{"127":3}}],["selection",{"2":{"14":1}}],["select",{"2":{"6":1,"164":1}}],["seem",{"2":{"25":1,"27":1}}],["see",{"2":{"6":4,"7":1,"29":1,"43":1,"61":1,"66":1,"68":1,"71":1,"74":1,"88":1,"97":5,"99":1,"102":1,"105":1,"115":1,"127":2,"138":1,"139":1,"141":1,"142":3,"144":1,"145":2,"151":2,"158":1,"176":2}}],["setup=",{"2":{"75":1,"89":1,"106":1,"116":1}}],["sets",{"2":{"45":1,"60":1}}],["setting",{"2":{"23":1}}],["set",{"0":{"23":1},"2":{"3":2,"4":7,"6":19,"23":1,"34":1,"38":2,"40":8,"45":3,"51":2,"53":2,"54":7,"56":2,"62":2,"68":2,"69":10,"75":1,"86":1,"89":1,"97":2,"103":1,"106":1,"116":1,"126":1,"127":1,"142":2,"145":2,"158":2,"169":1,"173":1,"176":3}}],["sve",{"2":{"1":1,"6":1,"161":1}}],["svector",{"2":{"1":14,"6":14,"45":5,"51":1,"54":2,"63":6,"97":1,"127":1,"161":13,"169":6,"171":4}}],["solution",{"2":{"97":1}}],["solid",{"2":{"6":2}}],["south",{"2":{"47":7}}],["source",{"2":{"1":10,"3":19,"4":22,"5":3,"6":91,"26":4,"86":2,"131":3,"141":1,"142":4,"148":3,"170":13,"171":1}}],["sort",{"2":{"45":4,"50":2,"54":2,"62":2,"97":1,"103":2,"127":1,"158":1}}],["sorted",{"2":{"20":1,"45":1,"158":7,"175":1}}],["someone",{"2":{"61":1,"166":1}}],["something",{"0":{"55":1},"2":{"10":1}}],["some",{"2":{"3":1,"6":3,"9":1,"17":1,"40":4,"69":1,"97":3,"103":1,"127":1,"128":1,"129":2,"134":2,"136":2,"140":1,"141":2,"142":1,"160":1,"163":2,"168":2,"175":1,"178":1}}],["so",{"2":{"1":1,"4":4,"6":10,"9":1,"17":1,"19":1,"25":1,"27":1,"31":1,"39":1,"40":1,"45":1,"46":1,"54":1,"62":2,"63":2,"65":1,"66":1,"68":1,"69":4,"71":1,"88":1,"97":2,"99":1,"115":1,"127":3,"131":1,"136":6,"150":1,"151":1,"152":3,"153":1,"160":1,"161":1,"166":2,"170":1,"171":1}}],["step",{"2":{"45":7,"51":1,"52":3,"53":1,"54":3,"62":1,"63":3,"127":4,"167":1}}],["storing",{"2":{"173":1}}],["stored",{"2":{"45":2,"176":1}}],["stores",{"2":{"45":1}}],["store",{"2":{"40":1,"173":1}}],["stopping",{"2":{"158":2}}],["stops",{"2":{"134":1}}],["stop",{"2":{"18":2,"86":3,"97":4,"103":3}}],["style",{"2":{"6":2}}],["style=",{"2":{"6":2}}],["stay",{"2":{"63":1}}],["stackoverflow",{"2":{"54":1}}],["stack",{"2":{"50":1}}],["states",{"2":{"156":1}}],["state",{"2":{"62":1,"177":9}}],["status",{"2":{"45":31,"52":4,"54":5,"63":4,"127":1}}],["static",{"2":{"165":1}}],["staticarray",{"2":{"40":1}}],["staticarrays",{"2":{"31":1,"45":5,"51":1,"54":2,"63":6,"97":1,"127":1,"161":2}}],["staticarraysco",{"2":{"1":1,"6":1,"161":1}}],["staticarrayscore",{"2":{"1":10,"6":10,"40":1,"161":10,"169":6,"171":4}}],["statica",{"2":{"1":1,"6":1,"161":1}}],["statistics",{"2":{"13":2,"31":1}}],["stability",{"2":{"23":1,"30":1}}],["stable",{"2":{"13":1,"24":1,"153":1}}],["stage",{"2":{"7":1}}],["standardized",{"2":{"97":1}}],["standards",{"2":{"97":1}}],["standard",{"2":{"6":1,"61":1}}],["started",{"2":{"45":1}}],["starting",{"2":{"44":2,"45":2,"47":1,"54":1,"145":4}}],["startvalue",{"2":{"14":4}}],["start",{"2":{"6":1,"18":1,"34":7,"40":1,"45":76,"47":17,"52":4,"54":4,"63":5,"69":1,"86":4,"97":44,"103":3,"118":1,"127":2,"137":1,"158":16,"169":1}}],["straightline",{"2":{"127":3}}],["straight",{"2":{"127":6}}],["strait",{"2":{"127":1}}],["structs",{"2":{"20":1,"141":1}}],["structures",{"2":{"129":1}}],["structure",{"2":{"6":2,"131":1,"136":1,"147":1}}],["struct",{"2":{"6":3,"40":2,"45":2,"61":1,"139":1,"145":2,"152":2,"157":1,"158":1,"159":1,"164":3,"165":2,"166":4}}],["strings",{"2":{"6":1,"44":1,"54":1}}],["string",{"2":{"1":2,"14":1,"43":1,"44":1,"148":2}}],["still",{"2":{"0":1,"37":1,"44":1,"45":3,"74":1,"158":1}}],["shp",{"2":{"173":1}}],["ships",{"2":{"170":1}}],["shifting",{"2":{"171":1}}],["shift",{"2":{"169":3}}],["shewchuck",{"2":{"7":1}}],["short",{"2":{"136":1}}],["shorthand",{"2":{"61":1}}],["show",{"2":{"9":1,"11":1,"13":1,"14":1,"39":1,"170":1,"173":1,"175":2}}],["shoelace",{"2":{"4":1,"6":1,"37":2,"47":1}}],["shouldn",{"2":{"54":1}}],["should",{"2":{"1":1,"4":1,"6":14,"17":1,"18":1,"20":2,"25":1,"27":1,"34":3,"37":1,"44":1,"45":3,"46":1,"69":1,"97":4,"127":2,"131":1,"136":2,"138":1,"141":4,"142":2,"153":1,"156":2,"165":1}}],["sharing",{"2":{"88":1}}],["shares",{"2":{"54":1}}],["share",{"2":{"4":7,"6":8,"68":2,"69":8,"92":2,"93":1,"94":1,"103":1,"111":1}}],["shared",{"0":{"160":1},"2":{"3":1,"6":1,"45":2,"54":2,"103":3}}],["shapes",{"2":{"66":1,"173":7}}],["shape",{"2":{"43":1,"52":1,"54":1,"68":1,"144":1,"169":1}}],["shaped",{"2":{"39":1}}],["shapefiles",{"2":{"173":1}}],["shapefile",{"2":{"29":1,"173":4}}],["shallower",{"2":{"1":1,"6":1,"136":1}}],["sites",{"2":{"177":1}}],["sides",{"2":{"45":3,"138":1}}],["side",{"2":{"34":4,"45":26}}],["signals",{"2":{"135":1}}],["sign",{"2":{"13":2,"14":2,"34":7,"37":2,"126":3}}],["signed",{"0":{"35":1,"36":1,"64":1,"65":1},"1":{"36":1,"37":1,"65":1,"66":1},"2":{"0":4,"4":15,"6":18,"11":3,"35":1,"36":5,"37":23,"47":3,"64":1,"65":7,"66":19}}],["six",{"2":{"6":1,"156":1}}],["size=",{"2":{"170":1}}],["sizehint",{"2":{"45":2,"52":1,"153":1}}],["size",{"2":{"6":4,"13":2,"14":5,"39":1,"63":1,"127":2,"136":4,"156":1}}],["sin",{"2":{"169":3,"170":1,"171":2}}],["singed",{"2":{"66":1}}],["singular",{"2":{"54":1}}],["singlepoly",{"2":{"156":6}}],["single",{"2":{"4":6,"6":10,"23":1,"34":2,"37":1,"47":1,"69":5,"102":2,"127":2,"142":2,"143":1,"145":2,"169":3,"173":1}}],["since",{"2":{"1":1,"6":2,"26":1,"34":1,"37":1,"44":1,"47":2,"62":1,"66":1,"69":1,"97":1,"103":2,"110":1,"148":1,"165":1,"166":2,"177":1}}],["simulation",{"2":{"23":1}}],["simultaneously",{"2":{"20":1}}],["simply",{"2":{"7":1,"36":1,"41":1,"45":1,"54":1,"63":1,"72":1,"85":1,"100":1,"127":1,"140":1,"148":1,"149":1,"152":1,"169":1,"172":1}}],["simpler",{"2":{"6":1,"127":1}}],["simple",{"0":{"58":1,"176":1},"2":{"6":3,"40":1,"61":1,"129":3,"147":1,"148":1,"155":2,"156":2,"165":1}}],["simplifier",{"2":{"156":4}}],["simplified",{"2":{"23":1,"155":1}}],["simplifies",{"2":{"6":3,"157":1,"158":1,"159":1}}],["simplification",{"0":{"154":1},"1":{"155":1,"156":1},"2":{"6":2,"154":2,"156":3}}],["simplifying",{"2":{"154":1}}],["simplify",{"0":{"157":1,"158":1,"159":1},"2":{"0":1,"6":15,"9":1,"31":1,"45":1,"129":1,"155":1,"156":41,"157":1,"158":2,"159":1}}],["simplifyalgs",{"2":{"160":1}}],["simplifyalg",{"2":{"0":1,"6":8,"156":5,"157":2,"158":2,"159":2}}],["similarly",{"2":{"129":1}}],["similar",{"2":{"1":1,"6":4,"18":1,"25":1,"27":1,"29":1,"41":1,"56":1,"61":1,"127":2,"136":1,"152":2,"153":1,"162":1}}],["s",{"0":{"30":1},"2":{"0":1,"3":1,"6":10,"7":1,"9":1,"18":1,"19":1,"29":1,"34":1,"36":1,"37":4,"38":1,"39":2,"40":5,"43":3,"44":3,"45":3,"47":1,"49":1,"52":1,"54":2,"60":1,"63":3,"66":1,"69":1,"84":2,"91":3,"92":4,"93":2,"97":9,"103":1,"105":1,"106":1,"111":1,"127":5,"129":2,"131":3,"132":1,"136":1,"139":1,"142":4,"143":1,"145":3,"151":4,"152":1,"154":1,"156":2,"160":4,"164":2,"165":1,"166":6,"169":6,"170":4,"171":4,"172":2,"173":5,"178":2}}],["fn",{"2":{"173":8}}],["fc",{"2":{"136":22,"156":3,"167":14}}],["fj",{"2":{"127":2}}],["f2",{"2":{"45":2}}],["f1",{"2":{"45":2}}],["f64",{"2":{"13":2,"14":2}}],["few",{"2":{"138":1}}],["fetch",{"2":{"136":2}}],["fetched",{"2":{"127":1}}],["feb",{"0":{"8":1},"1":{"9":1,"10":1}}],["featurecollection",{"2":{"6":2,"11":1,"18":1,"127":4,"136":7,"170":2}}],["featurecollectiontrait",{"2":{"1":1,"6":2,"131":1,"134":1,"136":14,"167":5}}],["features",{"0":{"76":1,"90":1,"107":1,"117":1},"2":{"1":1,"6":3,"11":1,"22":1,"61":1,"127":3,"135":1,"136":19,"170":1}}],["featuretrait",{"2":{"1":2,"6":3,"76":4,"86":2,"90":4,"107":4,"117":4,"131":1,"134":3,"136":15,"167":5}}],["feature",{"2":{"1":6,"4":1,"6":10,"18":2,"22":1,"37":1,"47":1,"127":2,"129":1,"135":1,"136":49,"156":2,"167":2,"173":1}}],["fra",{"2":{"177":2}}],["frame",{"2":{"172":1}}],["framework",{"2":{"129":4}}],["fracs",{"2":{"45":20,"50":1}}],["frac",{"2":{"40":1,"45":2,"54":17,"156":2}}],["fractional",{"2":{"45":1,"54":3}}],["fractions",{"2":{"45":1,"54":4}}],["fraction",{"2":{"6":4,"54":2,"66":1,"156":1}}],["front",{"2":{"34":1}}],["from",{"2":{"1":3,"3":4,"4":16,"6":29,"7":1,"11":1,"20":1,"22":1,"26":1,"31":1,"37":2,"39":1,"40":4,"41":1,"44":1,"45":6,"47":11,"50":1,"51":1,"52":3,"53":1,"54":11,"61":1,"62":1,"63":6,"66":25,"89":2,"91":5,"92":4,"93":2,"94":1,"95":2,"97":6,"103":2,"126":2,"127":7,"131":3,"136":3,"145":1,"148":4,"150":1,"156":1,"157":1,"158":3,"159":1,"167":1,"168":1,"170":5,"173":1,"175":1,"176":1,"178":1}}],["footprint",{"2":{"171":1}}],["foldable",{"2":{"136":3}}],["follows",{"2":{"45":2,"75":1,"89":1,"106":1,"116":1,"127":1}}],["followed",{"2":{"26":1}}],["following",{"2":{"6":1,"40":1,"49":1,"138":1,"144":1,"156":1,"175":1}}],["focusing",{"2":{"25":1,"27":1}}],["foundational",{"2":{"17":1}}],["found",{"2":{"6":8,"26":1,"47":1,"50":1,"51":2,"53":2,"54":1,"62":2,"69":1,"127":5,"134":3,"136":7,"153":1}}],["forward",{"2":{"54":1}}],["forwards",{"2":{"45":1,"52":1,"63":1}}],["formats",{"2":{"168":1,"171":1,"173":3}}],["format",{"2":{"50":1,"173":3}}],["form",{"2":{"18":1,"45":3,"54":8,"63":3,"136":1}}],["formed",{"2":{"4":2,"6":3,"33":1,"34":4,"40":1,"45":9,"62":1,"63":1,"158":1}}],["formula",{"2":{"4":1,"6":1,"37":2,"47":1}}],["force",{"2":{"1":1,"136":1,"148":1,"156":1}}],["for",{"0":{"52":1,"54":1,"63":1},"2":{"0":2,"1":3,"3":1,"4":4,"5":3,"6":46,"7":4,"9":2,"13":5,"14":1,"18":1,"20":1,"22":1,"23":5,"25":3,"26":1,"27":3,"29":1,"31":2,"34":5,"37":8,"38":1,"39":1,"40":19,"41":3,"44":7,"45":35,"47":11,"50":5,"51":2,"52":3,"53":1,"54":7,"56":2,"59":1,"61":3,"62":1,"63":9,"65":2,"66":7,"69":13,"75":3,"81":1,"82":1,"84":1,"86":6,"89":2,"95":1,"96":1,"97":22,"102":1,"103":11,"106":2,"112":1,"113":1,"116":3,"122":1,"123":1,"125":1,"126":5,"127":13,"128":1,"129":3,"131":6,"132":2,"136":6,"137":3,"138":2,"140":1,"141":5,"143":3,"144":1,"145":5,"146":1,"148":3,"150":4,"151":7,"152":6,"153":8,"154":4,"156":12,"157":2,"158":2,"159":1,"160":6,"164":1,"165":2,"166":5,"167":7,"168":1,"170":4,"171":1,"173":3,"175":1,"177":2,"178":1}}],["fi",{"2":{"127":2}}],["fine",{"2":{"151":1}}],["final",{"2":{"63":1,"141":4,"152":1}}],["finally",{"2":{"39":2,"54":1,"127":1,"136":3,"173":1}}],["findmin",{"2":{"160":1}}],["findmax",{"2":{"156":1,"158":1}}],["findall",{"2":{"141":1}}],["finding",{"2":{"54":1}}],["findfirst",{"2":{"45":6,"50":2,"59":1,"156":1}}],["findnext",{"2":{"45":3}}],["findlast",{"2":{"45":2}}],["findprev",{"2":{"45":2}}],["finds",{"2":{"45":1,"47":1}}],["find",{"2":{"34":6,"37":1,"45":12,"47":3,"50":2,"51":4,"53":2,"54":8,"62":1,"66":3,"69":1,"97":7,"127":2,"158":5,"177":1}}],["finish",{"2":{"9":1}}],["fill",{"2":{"45":1,"127":1,"153":3}}],["filled",{"2":{"45":5,"47":3,"65":1,"66":2,"97":16}}],["files",{"2":{"163":1,"173":2}}],["file",{"2":{"26":1,"45":1,"75":3,"89":3,"106":3,"116":3,"127":1,"128":1,"129":1,"140":1,"148":1,"153":1,"154":1,"163":2,"168":1,"173":2}}],["filters",{"2":{"45":1}}],["filtering",{"2":{"6":1,"156":1}}],["filter",{"2":{"4":1,"6":2,"45":2,"136":3,"145":2,"146":1,"156":1}}],["fit",{"2":{"17":1}}],["field",{"2":{"13":2,"45":2}}],["figure",{"2":{"13":1,"14":1,"36":1,"39":2,"60":1,"170":3}}],["fig",{"2":{"13":6,"14":6,"60":5,"169":7,"170":4,"174":2}}],["fix1",{"2":{"136":2,"153":1}}],["fixme",{"2":{"126":1}}],["fix2",{"2":{"45":2}}],["fixed",{"2":{"6":3,"51":1,"53":1,"62":1}}],["fix",{"0":{"20":1},"2":{"6":9,"9":3,"15":3,"17":1,"20":1,"51":1,"52":11,"53":1,"54":11,"60":2,"62":1,"63":10,"138":1,"140":1,"141":1,"144":1}}],["firstisright",{"2":{"127":2}}],["firstisleft",{"2":{"127":4}}],["firstisstraight",{"2":{"127":4}}],["firstnode",{"2":{"127":9}}],["first",{"2":{"3":9,"6":10,"34":14,"37":7,"39":1,"40":9,"41":1,"44":1,"45":17,"47":2,"50":1,"51":2,"53":1,"54":5,"62":3,"66":8,"69":4,"71":2,"72":2,"74":1,"75":2,"78":1,"79":1,"80":1,"85":2,"89":3,"97":22,"103":1,"106":2,"108":1,"115":1,"116":2,"119":1,"120":1,"121":2,"126":1,"127":16,"136":6,"138":1,"153":3,"157":1,"158":2,"167":2,"168":1,"169":1,"170":1,"171":1,"175":1,"176":1}}],["fancy",{"2":{"169":1}}],["fancis",{"2":{"6":1,"40":1}}],["fair",{"2":{"151":1}}],["fail",{"2":{"1":1,"6":2,"136":6,"152":1}}],["fallback",{"2":{"136":1}}],["falses",{"2":{"45":2,"50":1,"51":1,"53":1}}],["false",{"0":{"24":1},"2":{"1":29,"3":7,"4":3,"6":55,"34":2,"37":1,"39":5,"45":26,"47":5,"50":1,"51":1,"52":3,"54":1,"62":4,"66":2,"68":2,"69":27,"71":2,"75":8,"77":2,"78":4,"79":1,"80":1,"81":1,"82":1,"84":2,"86":11,"89":9,"91":1,"92":4,"95":1,"96":1,"97":39,"103":22,"106":8,"108":3,"109":4,"110":1,"112":1,"113":1,"115":1,"116":7,"118":2,"119":4,"120":1,"121":1,"122":1,"123":1,"126":10,"127":5,"136":18,"138":16,"144":44,"145":4,"153":2,"156":1,"160":2,"161":20,"165":2,"167":2,"169":242,"170":12,"171":18,"175":1}}],["fashion",{"2":{"36":1}}],["faster",{"2":{"40":1,"136":1}}],["fast",{"2":{"12":1}}],["f",{"2":{"1":12,"6":25,"15":1,"18":3,"19":1,"22":2,"33":1,"36":2,"39":4,"41":1,"43":2,"45":19,"46":2,"49":2,"51":2,"52":2,"53":2,"54":2,"58":2,"59":2,"62":2,"63":2,"65":5,"68":2,"71":2,"74":2,"84":2,"88":2,"97":7,"99":2,"102":2,"105":2,"115":2,"127":30,"131":2,"134":2,"136":168,"149":1,"151":2,"152":1,"155":2,"156":1,"160":6,"161":6,"166":5,"167":16,"169":6,"171":2,"176":3}}],["fulfilled",{"2":{"158":1}}],["fully",{"2":{"6":1,"45":4,"50":1,"103":4}}],["full",{"0":{"0":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"2":{"0":1,"47":5,"141":1,"177":4}}],["furthest",{"2":{"127":1}}],["further",{"2":{"43":1,"136":1}}],["furthermore",{"2":{"3":2,"6":5,"45":1,"51":1,"53":1,"62":1,"75":1,"116":1}}],["fun",{"2":{"169":1}}],["fundamental",{"2":{"26":1,"163":1}}],["func",{"2":{"13":5}}],["funcs",{"2":{"13":2,"14":3}}],["functionality",{"2":{"54":1,"129":1,"147":1,"148":1,"153":1,"166":1}}],["functionalities",{"2":{"45":1}}],["functionally",{"2":{"1":1,"6":1,"18":1,"29":1,"136":1}}],["function",{"2":{"1":8,"3":9,"4":9,"5":3,"6":14,"7":2,"9":1,"13":3,"14":2,"18":2,"29":1,"31":1,"34":5,"37":3,"40":13,"44":6,"45":20,"47":7,"49":2,"50":4,"51":3,"52":3,"53":2,"54":7,"55":1,"61":2,"62":2,"63":4,"66":6,"68":1,"69":8,"71":1,"74":1,"75":1,"81":1,"82":1,"84":1,"86":5,"88":1,"89":1,"95":1,"96":1,"97":9,"99":1,"102":1,"103":7,"105":1,"106":1,"112":1,"113":1,"115":1,"116":1,"122":1,"123":1,"126":4,"127":16,"128":3,"131":3,"134":2,"136":29,"139":2,"141":7,"142":2,"145":2,"147":2,"148":1,"150":2,"152":2,"153":7,"156":3,"157":2,"158":3,"159":2,"160":7,"161":3,"162":1,"166":6,"167":12,"169":1,"175":1,"178":4}}],["functions",{"0":{"1":1,"52":1,"54":1,"63":1,"129":1,"131":1,"167":1},"1":{"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1},"2":{"6":1,"9":3,"17":1,"26":1,"29":1,"37":1,"40":1,"44":1,"45":2,"47":1,"49":1,"97":1,"128":1,"129":2,"134":1,"141":2,"142":1}}],["future",{"2":{"23":1,"56":1,"66":1,"150":2}}],["flexijoins",{"2":{"175":1,"176":3,"177":1,"178":5}}],["flags",{"2":{"45":5}}],["flag",{"2":{"45":12,"50":1}}],["flat",{"2":{"6":1,"160":2,"167":1}}],["flattened",{"2":{"18":1}}],["flattening",{"2":{"6":4,"152":2}}],["flatten",{"2":{"0":2,"6":4,"11":3,"13":1,"18":1,"40":1,"45":3,"47":3,"53":1,"61":2,"63":1,"86":1,"131":4,"136":27,"145":1}}],["floating",{"2":{"6":1,"45":1,"54":5,"127":2}}],["float",{"2":{"6":3,"51":1,"53":1,"62":1}}],["float64x2",{"2":{"13":6,"14":6,"15":2}}],["float64",{"2":{"1":6,"4":10,"6":30,"13":1,"33":1,"34":3,"37":6,"44":1,"47":4,"50":2,"51":2,"53":1,"54":3,"60":1,"62":1,"66":12,"97":4,"103":2,"126":4,"138":6,"144":26,"151":2,"152":2,"153":1,"157":4,"158":9,"159":2,"160":6,"161":6,"162":1,"167":8,"169":190,"170":7,"171":10}}],["flipping",{"0":{"147":1},"2":{"147":1}}],["flipped",{"2":{"1":2,"6":2,"136":2}}],["flipaxis",{"2":{"39":1}}],["flip",{"2":{"0":1,"6":1,"31":1,"129":2,"136":1,"147":2}}],["wgs84",{"2":{"170":1}}],["wglmakie",{"2":{"14":1}}],["wₜₒₜ",{"2":{"40":8}}],["wᵢ",{"2":{"40":18}}],["wt",{"2":{"40":3}}],["w",{"2":{"13":13,"14":7,"66":4,"127":1}}],["wrong",{"2":{"143":1,"160":1}}],["writing",{"2":{"173":1}}],["written",{"2":{"69":1}}],["write",{"2":{"7":1,"30":1,"127":1,"173":7}}],["wrap",{"2":{"4":1,"6":1,"146":1,"152":1}}],["wrapped",{"2":{"22":1,"127":2,"134":1,"136":1}}],["wrapper",{"0":{"30":1},"2":{"30":1,"34":1,"37":1,"44":1,"47":1,"66":1,"69":1,"75":1,"89":1,"103":1,"106":1,"116":1}}],["wrappers`",{"2":{"136":1}}],["wrappers",{"2":{"1":10,"6":12,"22":1,"126":2,"127":1,"131":1,"138":8,"139":1,"144":22,"151":1,"152":1,"156":1,"161":10,"167":1,"169":121,"170":5,"171":9}}],["wrappergeometry`",{"2":{"148":1}}],["wrappergeometry",{"2":{"1":1}}],["wrapping",{"2":{"1":1,"6":1,"69":1,"148":1,"162":1}}],["web",{"2":{"173":1}}],["west",{"2":{"47":8}}],["were",{"2":{"45":1,"127":1,"176":1}}],["welcome",{"2":{"25":1,"27":1}}],["well",{"2":{"17":1,"45":1,"47":1,"61":1,"150":1,"154":1,"165":1}}],["we",{"0":{"55":2},"2":{"7":1,"11":1,"13":1,"17":3,"19":1,"23":3,"24":1,"25":2,"26":1,"27":2,"34":1,"36":2,"37":2,"39":4,"40":8,"41":2,"44":1,"45":7,"47":4,"52":8,"53":2,"54":3,"56":1,"60":3,"61":2,"63":1,"66":1,"68":1,"69":5,"71":1,"72":1,"74":1,"75":1,"85":1,"88":1,"89":1,"97":2,"99":3,"100":1,"102":1,"103":2,"105":1,"106":1,"115":1,"116":1,"127":21,"128":1,"134":1,"136":20,"137":1,"149":1,"150":2,"151":2,"152":3,"153":1,"156":5,"160":2,"163":1,"165":4,"166":1,"168":2,"169":4,"170":6,"171":4,"172":1,"173":3,"175":3,"176":7}}],["weighting",{"2":{"43":2,"44":1}}],["weights",{"2":{"38":4}}],["weight",{"2":{"6":5,"40":14,"44":1}}],["weighted",{"2":{"0":1,"6":2,"38":3,"40":4,"44":4}}],["walk",{"2":{"50":1}}],["wall2",{"2":{"47":7}}],["wall1",{"2":{"47":12}}],["walls",{"2":{"47":3}}],["wall",{"2":{"47":69}}],["wachspress",{"2":{"40":1}}],["wasincreasing",{"2":{"127":10}}],["wasn",{"2":{"45":1}}],["was",{"2":{"31":1,"34":1,"37":1,"39":1,"40":4,"41":1,"44":1,"45":1,"47":1,"50":1,"51":1,"52":3,"53":1,"54":2,"55":1,"61":1,"62":1,"63":3,"66":1,"69":1,"72":1,"82":1,"85":1,"86":1,"96":1,"97":1,"100":1,"103":1,"113":1,"123":1,"126":1,"127":1,"128":1,"134":1,"136":1,"139":1,"142":1,"145":1,"146":1,"147":1,"149":1,"151":1,"153":1,"160":1,"161":1,"162":1,"166":2,"167":1}}],["wanted",{"2":{"178":1}}],["wants",{"2":{"61":1,"136":1}}],["want",{"0":{"23":1,"55":1},"2":{"13":1,"18":1,"23":1,"40":1,"45":1,"126":1,"170":2,"172":1,"177":1,"178":1}}],["ways",{"2":{"143":1}}],["way",{"2":{"6":1,"17":1,"18":1,"24":1,"29":1,"38":1,"129":1,"140":1,"153":1,"164":1,"166":2,"172":1}}],["warn",{"2":{"127":2}}],["warned",{"2":{"6":1,"166":1}}],["warning",{"2":{"0":1,"5":1,"6":3,"24":1,"40":1,"61":1,"136":1,"152":1,"163":1,"177":1}}],["wong",{"2":{"58":1,"59":1,"174":1}}],["won",{"2":{"23":1,"45":1,"136":1}}],["wouldn",{"2":{"54":1}}],["would",{"0":{"55":1},"2":{"6":3,"23":1,"51":1,"53":1,"54":1,"61":4,"62":1,"127":1,"165":2,"170":1,"177":1,"178":1}}],["wound",{"2":{"6":1,"61":1}}],["world",{"0":{"177":1},"2":{"175":1}}],["worrying",{"2":{"24":1}}],["words",{"2":{"3":1,"6":1,"71":1,"99":1,"105":1,"106":1}}],["workflow",{"2":{"86":1,"103":1}}],["workflows",{"2":{"23":1,"25":1,"27":1}}],["works",{"2":{"26":1,"148":1,"150":1}}],["working",{"2":{"3":1,"6":1,"86":1,"170":1}}],["work",{"2":{"1":3,"6":3,"9":1,"34":1,"37":2,"44":1,"47":2,"50":2,"56":1,"66":1,"69":1,"97":1,"103":1,"126":1,"136":2,"148":1,"161":1,"177":1}}],["whole",{"2":{"97":1}}],["whose",{"2":{"3":1,"6":1,"86":1}}],["white",{"2":{"39":1}}],["while",{"2":{"34":1,"43":1,"44":1,"45":5,"54":2,"60":2,"65":1,"69":1,"86":1,"97":1,"127":3,"145":1,"158":1,"160":2,"176":1}}],["whichever",{"2":{"6":1,"156":1}}],["which",{"2":{"1":1,"4":2,"5":1,"6":8,"7":1,"11":1,"13":1,"14":1,"17":1,"18":4,"20":1,"23":2,"36":1,"37":1,"38":1,"39":2,"40":5,"41":1,"45":11,"47":2,"54":2,"56":1,"61":1,"69":2,"97":3,"127":3,"128":1,"129":1,"136":1,"137":2,"138":1,"141":1,"143":1,"144":1,"149":1,"150":1,"151":1,"152":3,"153":2,"156":1,"158":2,"161":1,"164":1,"166":4,"173":3,"175":3,"176":6,"178":1}}],["what",{"0":{"22":1,"25":1,"30":1,"33":1,"36":2,"43":1,"46":1,"49":1,"65":2,"68":1,"71":1,"74":1,"84":1,"88":1,"99":1,"102":1,"105":1,"115":1,"134":1},"2":{"13":1,"14":1,"24":1,"43":1,"126":1,"127":1,"151":1,"165":1,"170":1,"177":1}}],["whatever",{"2":{"1":1,"6":1,"22":1,"136":1}}],["whyatt",{"2":{"154":1}}],["why",{"0":{"22":1,"23":1},"2":{"9":1,"17":1,"30":1,"37":1}}],["wheel",{"2":{"17":1}}],["whether",{"2":{"1":4,"4":1,"6":10,"125":1,"126":1,"133":2,"137":1}}],["when",{"2":{"1":1,"4":2,"5":1,"6":5,"18":1,"20":1,"23":2,"24":1,"37":1,"40":3,"44":1,"45":2,"52":5,"54":6,"63":7,"97":1,"127":1,"134":3,"136":1,"138":1,"141":1,"146":2,"156":1,"170":1,"171":2,"173":1,"178":1}}],["wherever",{"2":{"6":1,"162":1}}],["where",{"2":{"1":2,"4":5,"6":11,"20":1,"31":2,"34":8,"37":12,"38":2,"40":24,"44":8,"45":14,"47":8,"50":5,"51":2,"52":5,"53":3,"54":18,"62":2,"63":9,"66":25,"69":1,"97":9,"127":3,"136":52,"143":1,"148":1,"151":1,"162":1,"163":1,"164":5,"167":3,"169":4}}],["widely",{"2":{"173":1}}],["widths",{"2":{"14":1}}],["width",{"2":{"6":2}}],["wiki",{"2":{"97":1,"158":1}}],["wikipedia",{"2":{"97":1,"158":2}}],["wind",{"2":{"4":1,"6":2,"37":1,"69":1}}],["winding",{"0":{"60":1},"2":{"4":2,"6":3,"37":3,"45":7,"60":4,"61":1,"69":1,"127":1}}],["without",{"2":{"1":2,"6":1,"17":1,"24":1,"45":1,"88":1,"103":1,"136":3,"148":1,"161":1}}],["with",{"0":{"52":1,"54":1,"63":1,"157":1,"158":1,"159":1,"171":1,"172":1},"2":{"1":5,"3":5,"4":7,"6":27,"11":1,"20":1,"22":2,"23":1,"33":1,"34":2,"37":7,"38":4,"39":1,"40":2,"44":1,"45":14,"47":6,"52":8,"53":5,"54":15,"62":1,"63":12,"65":1,"66":2,"75":1,"88":1,"92":1,"97":28,"99":1,"102":2,"103":5,"105":1,"106":1,"109":3,"110":2,"111":2,"121":1,"127":7,"129":1,"131":2,"134":1,"136":17,"138":1,"143":1,"146":1,"148":1,"150":1,"153":2,"156":2,"158":2,"159":1,"161":1,"165":1,"166":1,"168":1,"169":4,"170":6,"171":2,"172":2,"173":2,"175":1,"176":1,"177":1}}],["within",{"0":{"114":1,"115":1,"118":1,"119":1,"121":1,"122":1,"123":1},"1":{"115":1,"116":1},"2":{"0":2,"3":9,"4":3,"5":1,"6":13,"7":1,"9":1,"31":1,"34":2,"37":1,"38":3,"40":1,"44":1,"45":9,"46":2,"47":5,"52":1,"54":2,"62":1,"63":6,"65":1,"66":5,"71":2,"72":3,"74":2,"91":1,"97":9,"102":1,"103":9,"114":1,"115":6,"116":11,"117":6,"118":14,"119":15,"120":15,"121":7,"122":4,"123":4,"129":1,"175":1,"176":4,"177":2}}],["will",{"2":{"1":8,"4":7,"5":1,"6":44,"11":1,"18":3,"23":2,"24":1,"34":4,"37":3,"40":2,"44":1,"45":5,"47":1,"50":1,"51":4,"52":4,"53":4,"54":4,"61":1,"62":4,"63":4,"65":2,"66":4,"69":1,"86":1,"126":1,"127":2,"131":2,"134":1,"135":2,"136":8,"138":1,"142":2,"143":1,"145":2,"148":3,"150":2,"152":3,"156":2,"158":1,"160":1,"161":2,"166":1,"170":1,"173":1,"175":2,"177":1,"178":1}}],["wip",{"2":{"0":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/previews/PR195/assets/chunks/VPLocalSearchBox.DO9T_jde.js b/previews/PR195/assets/chunks/VPLocalSearchBox.DO9T_jde.js new file mode 100644 index 000000000..77295f3e2 --- /dev/null +++ b/previews/PR195/assets/chunks/VPLocalSearchBox.DO9T_jde.js @@ -0,0 +1,7 @@ +var kt=Object.defineProperty;var Ft=(a,e,t)=>e in a?kt(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ce=(a,e,t)=>Ft(a,typeof e!="symbol"?e+"":e,t);import{X as Ot,s as ne,v as Ve,al as Rt,am as Ct,d as Mt,G as be,an as et,h as ye,ao as At,ap as Lt,x as Dt,aq as zt,y as Me,R as de,Q as we,ar as Pt,as as jt,Y as Vt,U as $t,a1 as Bt,o as Q,b as Wt,j as x,a2 as Kt,k as D,at as Jt,au as Ut,av as qt,c as Z,n as tt,e as _e,E as st,F as nt,a as he,t as fe,aw as Gt,p as Qt,l as Ht,ax as it,ay as Yt,ab as Zt,ah as Xt,az as es,_ as ts}from"./framework.BjTE4JnT.js";import{u as ss,c as ns}from"./theme.Czc396Vw.js";const is={root:()=>Ot(()=>import("./@localSearchIndexroot.CyuJdoA_.js"),[])};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var vt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ie=vt.join(","),mt=typeof Element>"u",re=mt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ne=!mt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},ke=function a(e,t){var s;t===void 0&&(t=!0);var n=e==null||(s=e.getAttribute)===null||s===void 0?void 0:s.call(e,"inert"),r=n===""||n==="true",i=r||t&&e&&a(e.parentNode);return i},rs=function(e){var t,s=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return s===""||s==="true"},gt=function(e,t,s){if(ke(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ie));return t&&re.call(e,Ie)&&n.unshift(e),n=n.filter(s),n},bt=function a(e,t,s){for(var n=[],r=Array.from(e);r.length;){var i=r.shift();if(!ke(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),c=o.length?o:i.children,l=a(c,!0,s);s.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var h=re.call(i,Ie);h&&s.filter(i)&&(t||!e.includes(i))&&n.push(i);var f=i.shadowRoot||typeof s.getShadowRoot=="function"&&s.getShadowRoot(i),v=!ke(f,!1)&&(!s.shadowRootFilter||s.shadowRootFilter(i));if(f&&v){var b=a(f===!0?i.children:f.children,!0,s);s.flatten?n.push.apply(n,b):n.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return n},yt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},ie=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||rs(e))&&!yt(e)?0:e.tabIndex},as=function(e,t){var s=ie(e);return s<0&&t&&!yt(e)?0:s},os=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},wt=function(e){return e.tagName==="INPUT"},cs=function(e){return wt(e)&&e.type==="hidden"},ls=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(s){return s.tagName==="SUMMARY"});return t},us=function(e,t){for(var s=0;ssummary:first-of-type"),i=r?e.parentElement:e;if(re.call(i,"details:not([open]) *"))return!0;if(!s||s==="full"||s==="legacy-full"){if(typeof n=="function"){for(var o=e;e;){var c=e.parentElement,l=Ne(e);if(c&&!c.shadowRoot&&n(c)===!0)return rt(e);e.assignedSlot?e=e.assignedSlot:!c&&l!==e.ownerDocument?e=l.host:e=c}e=o}if(ps(e))return!e.getClientRects().length;if(s!=="legacy-full")return!0}else if(s==="non-zero-area")return rt(e);return!1},ms=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var s=0;s=0)},bs=function a(e){var t=[],s=[];return e.forEach(function(n,r){var i=!!n.scopeParent,o=i?n.scopeParent:n,c=as(o,i),l=i?a(n.candidates):o;c===0?i?t.push.apply(t,l):t.push(o):s.push({documentOrder:r,tabIndex:c,item:n,isScope:i,content:l})}),s.sort(os).reduce(function(n,r){return r.isScope?n.push.apply(n,r.content):n.push(r.content),n},[]).concat(t)},ys=function(e,t){t=t||{};var s;return t.getShadowRoot?s=bt([e],t.includeContainer,{filter:$e.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:gs}):s=gt(e,t.includeContainer,$e.bind(null,t)),bs(s)},ws=function(e,t){t=t||{};var s;return t.getShadowRoot?s=bt([e],t.includeContainer,{filter:Fe.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):s=gt(e,t.includeContainer,Fe.bind(null,t)),s},ae=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return re.call(e,Ie)===!1?!1:$e(t,e)},_s=vt.concat("iframe").join(","),Ae=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return re.call(e,_s)===!1?!1:Fe(t,e)};/*! +* focus-trap 7.5.4 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function at(a,e){var t=Object.keys(a);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(a);e&&(s=s.filter(function(n){return Object.getOwnPropertyDescriptor(a,n).enumerable})),t.push.apply(t,s)}return t}function ot(a){for(var e=1;e0){var s=e[e.length-1];s!==t&&s.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var s=e.indexOf(t);s!==-1&&e.splice(s,1),e.length>0&&e[e.length-1].unpause()}},Ts=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Is=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ve=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Ns=function(e){return ve(e)&&!e.shiftKey},ks=function(e){return ve(e)&&e.shiftKey},lt=function(e){return setTimeout(e,0)},ut=function(e,t){var s=-1;return e.every(function(n,r){return t(n)?(s=r,!1):!0}),s},pe=function(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),n=1;n1?m-1:0),E=1;E=0)u=s.activeElement;else{var d=i.tabbableGroups[0],m=d&&d.firstTabbableNode;u=m||h("fallbackFocus")}if(!u)throw new Error("Your focus-trap needs to have at least one focusable element");return u},v=function(){if(i.containerGroups=i.containers.map(function(u){var d=ys(u,r.tabbableOptions),m=ws(u,r.tabbableOptions),S=d.length>0?d[0]:void 0,E=d.length>0?d[d.length-1]:void 0,k=m.find(function(p){return ae(p)}),F=m.slice().reverse().find(function(p){return ae(p)}),M=!!d.find(function(p){return ie(p)>0});return{container:u,tabbableNodes:d,focusableNodes:m,posTabIndexesFound:M,firstTabbableNode:S,lastTabbableNode:E,firstDomTabbableNode:k,lastDomTabbableNode:F,nextTabbableNode:function(g){var N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,O=d.indexOf(g);return O<0?N?m.slice(m.indexOf(g)+1).find(function(P){return ae(P)}):m.slice(0,m.indexOf(g)).reverse().find(function(P){return ae(P)}):d[O+(N?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(u){return u.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(u){return u.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},b=function T(u){var d=u.activeElement;if(d)return d.shadowRoot&&d.shadowRoot.activeElement!==null?T(d.shadowRoot):d},w=function T(u){if(u!==!1&&u!==b(document)){if(!u||!u.focus){T(f());return}u.focus({preventScroll:!!r.preventScroll}),i.mostRecentlyFocusedNode=u,Ts(u)&&u.select()}},_=function(u){var d=h("setReturnFocus",u);return d||(d===!1?!1:u)},y=function(u){var d=u.target,m=u.event,S=u.isBackward,E=S===void 0?!1:S;d=d||xe(m),v();var k=null;if(i.tabbableGroups.length>0){var F=l(d,m),M=F>=0?i.containerGroups[F]:void 0;if(F<0)E?k=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:k=i.tabbableGroups[0].firstTabbableNode;else if(E){var p=ut(i.tabbableGroups,function(I){var L=I.firstTabbableNode;return d===L});if(p<0&&(M.container===d||Ae(d,r.tabbableOptions)&&!ae(d,r.tabbableOptions)&&!M.nextTabbableNode(d,!1))&&(p=F),p>=0){var g=p===0?i.tabbableGroups.length-1:p-1,N=i.tabbableGroups[g];k=ie(d)>=0?N.lastTabbableNode:N.lastDomTabbableNode}else ve(m)||(k=M.nextTabbableNode(d,!1))}else{var O=ut(i.tabbableGroups,function(I){var L=I.lastTabbableNode;return d===L});if(O<0&&(M.container===d||Ae(d,r.tabbableOptions)&&!ae(d,r.tabbableOptions)&&!M.nextTabbableNode(d))&&(O=F),O>=0){var P=O===i.tabbableGroups.length-1?0:O+1,j=i.tabbableGroups[P];k=ie(d)>=0?j.firstTabbableNode:j.firstDomTabbableNode}else ve(m)||(k=M.nextTabbableNode(d))}}else k=h("fallbackFocus");return k},R=function(u){var d=xe(u);if(!(l(d,u)>=0)){if(pe(r.clickOutsideDeactivates,u)){o.deactivate({returnFocus:r.returnFocusOnDeactivate});return}pe(r.allowOutsideClick,u)||u.preventDefault()}},C=function(u){var d=xe(u),m=l(d,u)>=0;if(m||d instanceof Document)m&&(i.mostRecentlyFocusedNode=d);else{u.stopImmediatePropagation();var S,E=!0;if(i.mostRecentlyFocusedNode)if(ie(i.mostRecentlyFocusedNode)>0){var k=l(i.mostRecentlyFocusedNode),F=i.containerGroups[k].tabbableNodes;if(F.length>0){var M=F.findIndex(function(p){return p===i.mostRecentlyFocusedNode});M>=0&&(r.isKeyForward(i.recentNavEvent)?M+1=0&&(S=F[M-1],E=!1))}}else i.containerGroups.some(function(p){return p.tabbableNodes.some(function(g){return ie(g)>0})})||(E=!1);else E=!1;E&&(S=y({target:i.mostRecentlyFocusedNode,isBackward:r.isKeyBackward(i.recentNavEvent)})),w(S||i.mostRecentlyFocusedNode||f())}i.recentNavEvent=void 0},J=function(u){var d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=u;var m=y({event:u,isBackward:d});m&&(ve(u)&&u.preventDefault(),w(m))},H=function(u){if(Is(u)&&pe(r.escapeDeactivates,u)!==!1){u.preventDefault(),o.deactivate();return}(r.isKeyForward(u)||r.isKeyBackward(u))&&J(u,r.isKeyBackward(u))},W=function(u){var d=xe(u);l(d,u)>=0||pe(r.clickOutsideDeactivates,u)||pe(r.allowOutsideClick,u)||(u.preventDefault(),u.stopImmediatePropagation())},V=function(){if(i.active)return ct.activateTrap(n,o),i.delayInitialFocusTimer=r.delayInitialFocus?lt(function(){w(f())}):w(f()),s.addEventListener("focusin",C,!0),s.addEventListener("mousedown",R,{capture:!0,passive:!1}),s.addEventListener("touchstart",R,{capture:!0,passive:!1}),s.addEventListener("click",W,{capture:!0,passive:!1}),s.addEventListener("keydown",H,{capture:!0,passive:!1}),o},$=function(){if(i.active)return s.removeEventListener("focusin",C,!0),s.removeEventListener("mousedown",R,!0),s.removeEventListener("touchstart",R,!0),s.removeEventListener("click",W,!0),s.removeEventListener("keydown",H,!0),o},Re=function(u){var d=u.some(function(m){var S=Array.from(m.removedNodes);return S.some(function(E){return E===i.mostRecentlyFocusedNode})});d&&w(f())},A=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(Re):void 0,U=function(){A&&(A.disconnect(),i.active&&!i.paused&&i.containers.map(function(u){A.observe(u,{subtree:!0,childList:!0})}))};return o={get active(){return i.active},get paused(){return i.paused},activate:function(u){if(i.active)return this;var d=c(u,"onActivate"),m=c(u,"onPostActivate"),S=c(u,"checkCanFocusTrap");S||v(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=s.activeElement,d==null||d();var E=function(){S&&v(),V(),U(),m==null||m()};return S?(S(i.containers.concat()).then(E,E),this):(E(),this)},deactivate:function(u){if(!i.active)return this;var d=ot({onDeactivate:r.onDeactivate,onPostDeactivate:r.onPostDeactivate,checkCanReturnFocus:r.checkCanReturnFocus},u);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,$(),i.active=!1,i.paused=!1,U(),ct.deactivateTrap(n,o);var m=c(d,"onDeactivate"),S=c(d,"onPostDeactivate"),E=c(d,"checkCanReturnFocus"),k=c(d,"returnFocus","returnFocusOnDeactivate");m==null||m();var F=function(){lt(function(){k&&w(_(i.nodeFocusedBeforeActivation)),S==null||S()})};return k&&E?(E(_(i.nodeFocusedBeforeActivation)).then(F,F),this):(F(),this)},pause:function(u){if(i.paused||!i.active)return this;var d=c(u,"onPause"),m=c(u,"onPostPause");return i.paused=!0,d==null||d(),$(),U(),m==null||m(),this},unpause:function(u){if(!i.paused||!i.active)return this;var d=c(u,"onUnpause"),m=c(u,"onPostUnpause");return i.paused=!1,d==null||d(),v(),V(),U(),m==null||m(),this},updateContainerElements:function(u){var d=[].concat(u).filter(Boolean);return i.containers=d.map(function(m){return typeof m=="string"?s.querySelector(m):m}),i.active&&v(),U(),this}},o.updateContainerElements(e),o};function Rs(a,e={}){let t;const{immediate:s,...n}=e,r=ne(!1),i=ne(!1),o=f=>t&&t.activate(f),c=f=>t&&t.deactivate(f),l=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)};return Ve(()=>Rt(a),f=>{f&&(t=Os(f,{...n,onActivate(){r.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){r.value=!1,e.onDeactivate&&e.onDeactivate()}}),s&&o())},{flush:"post"}),Ct(()=>c()),{hasFocus:r,isPaused:i,activate:o,deactivate:c,pause:l,unpause:h}}class ce{constructor(e,t=!0,s=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=s,this.iframesTimeout=n}static matches(e,t){const s=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let r=!1;return s.every(i=>n.call(e,i)?(r=!0,!1):!0),r}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(s=>{const n=t.filter(r=>r.contains(s)).length>0;t.indexOf(s)===-1&&!n&&t.push(s)}),t}getIframeContents(e,t,s=()=>{}){let n;try{const r=e.contentWindow;if(n=r.document,!r||!n)throw new Error("iframe inaccessible")}catch{s()}n&&t(n)}isIframeBlank(e){const t="about:blank",s=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&s!==t&&s}observeIframeLoad(e,t,s){let n=!1,r=null;const i=()=>{if(!n){n=!0,clearTimeout(r);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,s))}catch{s()}}};e.addEventListener("load",i),r=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,s){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,s):this.getIframeContents(e,t,s):this.observeIframeLoad(e,t,s)}catch{s()}}waitForIframes(e,t){let s=0;this.forEachIframe(e,()=>!0,n=>{s++,this.waitForIframes(n.querySelector("html"),()=>{--s||t()})},n=>{n||t()})}forEachIframe(e,t,s,n=()=>{}){let r=e.querySelectorAll("iframe"),i=r.length,o=0;r=Array.prototype.slice.call(r);const c=()=>{--i<=0&&n(o)};i||c(),r.forEach(l=>{ce.matches(l,this.exclude)?c():this.onIframeReady(l,h=>{t(l)&&(o++,s(h)),c()},c)})}createIterator(e,t,s){return document.createNodeIterator(e,t,s,!1)}createInstanceOnIframe(e){return new ce(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,s){const n=e.compareDocumentPosition(s),r=Node.DOCUMENT_POSITION_PRECEDING;if(n&r)if(t!==null){const i=t.compareDocumentPosition(s),o=Node.DOCUMENT_POSITION_FOLLOWING;if(i&o)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let s;return t===null?s=e.nextNode():s=e.nextNode()&&e.nextNode(),{prevNode:t,node:s}}checkIframeFilter(e,t,s,n){let r=!1,i=!1;return n.forEach((o,c)=>{o.val===s&&(r=c,i=o.handled)}),this.compareNodeIframe(e,t,s)?(r===!1&&!i?n.push({val:s,handled:!0}):r!==!1&&!i&&(n[r].handled=!0),!0):(r===!1&&n.push({val:s,handled:!1}),!1)}handleOpenIframes(e,t,s,n){e.forEach(r=>{r.handled||this.getIframeContents(r.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,s,n)})})}iterateThroughNodes(e,t,s,n,r){const i=this.createIterator(t,e,n);let o=[],c=[],l,h,f=()=>({prevNode:h,node:l}=this.getIteratorNode(i),l);for(;f();)this.iframes&&this.forEachIframe(t,v=>this.checkIframeFilter(l,h,v,o),v=>{this.createInstanceOnIframe(v).forEachNode(e,b=>c.push(b),n)}),c.push(l);c.forEach(v=>{s(v)}),this.iframes&&this.handleOpenIframes(o,e,s,n),r()}forEachNode(e,t,s,n=()=>{}){const r=this.getContexts();let i=r.length;i||n(),r.forEach(o=>{const c=()=>{this.iterateThroughNodes(e,o,t,s,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(o,c):c()})}}let Cs=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new ce(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const s=this.opt.log;this.opt.debug&&typeof s=="object"&&typeof s[t]=="function"&&s[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,s=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let r in t)if(t.hasOwnProperty(r)){const i=t[r],o=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(r):this.escapeStr(r),c=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);o!==""&&c!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(o)}|${this.escapeStr(c)})`,`gm${s}`),n+`(${this.processSynomyms(o)}|${this.processSynomyms(c)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,s,n)=>{let r=n.charAt(s+1);return/[(|)\\]/.test(r)||r===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const s=this.opt.ignorePunctuation;return Array.isArray(s)&&s.length&&t.push(this.escapeStr(s.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",s=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(r=>{s.every(i=>{if(i.indexOf(r)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let s=this.opt.accuracy,n=typeof s=="string"?s:s.value,r=typeof s=="string"?[]:s.limiters,i="";switch(r.forEach(o=>{i+=`|${this.escapeStr(o)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(s=>{this.opt.separateWordSearch?s.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):s.trim()&&t.indexOf(s)===-1&&t.push(s)}),{keywords:t.sort((s,n)=>n.length-s.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let s=0;return e.sort((n,r)=>n.start-r.start).forEach(n=>{let{start:r,end:i,valid:o}=this.callNoMatchOnInvalidRanges(n,s);o&&(n.start=r,n.length=i-r,t.push(n),s=i)}),t}callNoMatchOnInvalidRanges(e,t){let s,n,r=!1;return e&&typeof e.start<"u"?(s=parseInt(e.start,10),n=s+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-s>0?r=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:s,end:n,valid:r}}checkWhitespaceRanges(e,t,s){let n,r=!0,i=s.length,o=t-i,c=parseInt(e.start,10)-o;return c=c>i?i:c,n=c+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),c<0||n-c<0||c>i||n>i?(r=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):s.substring(c,n).replace(/\s+/g,"")===""&&(r=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:c,end:n,valid:r}}getTextNodes(e){let t="",s=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{s.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:s})})}matchesExclude(e){return ce.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,s){const n=this.opt.element?this.opt.element:"mark",r=e.splitText(t),i=r.splitText(s-t);let o=document.createElement(n);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=r.textContent,r.parentNode.replaceChild(o,r),i}wrapRangeInMappedTextNode(e,t,s,n,r){e.nodes.every((i,o)=>{const c=e.nodes[o+1];if(typeof c>"u"||c.start>t){if(!n(i.node))return!1;const l=t-i.start,h=(s>i.end?i.end:s)-i.start,f=e.value.substr(0,i.start),v=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,l,h),e.value=f+v,e.nodes.forEach((b,w)=>{w>=o&&(e.nodes[w].start>0&&w!==o&&(e.nodes[w].start-=h),e.nodes[w].end-=h)}),s-=h,r(i.node.previousSibling,i.start),s>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,s,n,r){const i=t===0?0:t+1;this.getTextNodes(o=>{o.nodes.forEach(c=>{c=c.node;let l;for(;(l=e.exec(c.textContent))!==null&&l[i]!=="";){if(!s(l[i],c))continue;let h=l.index;if(i!==0)for(let f=1;f{let c;for(;(c=e.exec(o.value))!==null&&c[i]!=="";){let l=c.index;if(i!==0)for(let f=1;fs(c[i],f),(f,v)=>{e.lastIndex=v,n(f)})}r()})}wrapRangeFromIndex(e,t,s,n){this.getTextNodes(r=>{const i=r.value.length;e.forEach((o,c)=>{let{start:l,end:h,valid:f}=this.checkWhitespaceRanges(o,i,r.value);f&&this.wrapRangeInMappedTextNode(r,l,h,v=>t(v,o,r.value.substring(l,h),c),v=>{s(v,o)})}),n()})}unwrapMatches(e){const t=e.parentNode;let s=document.createDocumentFragment();for(;e.firstChild;)s.appendChild(e.removeChild(e.firstChild));t.replaceChild(s,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let s=0,n="wrapMatches";const r=i=>{s++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,o)=>this.opt.filter(o,i,s),r,()=>{s===0&&this.opt.noMatch(e),this.opt.done(s)})}mark(e,t){this.opt=t;let s=0,n="wrapMatches";const{keywords:r,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),o=this.opt.caseSensitive?"":"i",c=l=>{let h=new RegExp(this.createRegExp(l),`gm${o}`),f=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(v,b)=>this.opt.filter(b,l,s,f),v=>{f++,s++,this.opt.each(v)},()=>{f===0&&this.opt.noMatch(l),r[i-1]===l?this.opt.done(s):c(r[r.indexOf(l)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(s):c(r[0])}markRanges(e,t){this.opt=t;let s=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(r,i,o,c)=>this.opt.filter(r,i,o,c),(r,i)=>{s++,this.opt.each(r,i)},()=>{this.opt.done(s)})):this.opt.done(s)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,s=>{this.unwrapMatches(s)},s=>{const n=ce.matches(s,t),r=this.matchesExclude(s);return!n||r?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Ms(a){const e=new Cs(a);return this.mark=(t,s)=>(e.mark(t,s),this),this.markRegExp=(t,s)=>(e.markRegExp(t,s),this),this.markRanges=(t,s)=>(e.markRanges(t,s),this),this.unmark=t=>(e.unmark(t),this),this}function Te(a,e,t,s){function n(r){return r instanceof t?r:new t(function(i){i(r)})}return new(t||(t=Promise))(function(r,i){function o(h){try{l(s.next(h))}catch(f){i(f)}}function c(h){try{l(s.throw(h))}catch(f){i(f)}}function l(h){h.done?r(h.value):n(h.value).then(o,c)}l((s=s.apply(a,[])).next())})}const As="ENTRIES",_t="KEYS",xt="VALUES",z="";class Le{constructor(e,t){const s=e._tree,n=Array.from(s.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:s,keys:n}]:[]}next(){const e=this.dive();return this.backtrack(),e}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:e,keys:t}=oe(this._path);if(oe(t)===z)return{done:!1,value:this.result()};const s=e.get(oe(t));return this._path.push({node:s,keys:Array.from(s.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const e=oe(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:e})=>oe(e)).filter(e=>e!==z).join("")}value(){return oe(this._path).node.get(z)}result(){switch(this._type){case xt:return this.value();case _t:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const oe=a=>a[a.length-1],Ls=(a,e,t)=>{const s=new Map;if(e===void 0)return s;const n=e.length+1,r=n+t,i=new Uint8Array(r*n).fill(t+1);for(let o=0;o{const c=r*i;e:for(const l of a.keys())if(l===z){const h=n[c-1];h<=t&&s.set(o,[a.get(l),h])}else{let h=r;for(let f=0;ft)continue e}St(a.get(l),e,t,s,n,h,i,o+l)}};class X{constructor(e=new Map,t=""){this._size=void 0,this._tree=e,this._prefix=t}atPrefix(e){if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");const[t,s]=Oe(this._tree,e.slice(this._prefix.length));if(t===void 0){const[n,r]=Je(s);for(const i of n.keys())if(i!==z&&i.startsWith(r)){const o=new Map;return o.set(i.slice(r.length),n.get(i)),new X(o,e)}}return new X(t,e)}clear(){this._size=void 0,this._tree.clear()}delete(e){return this._size=void 0,Ds(this._tree,e)}entries(){return new Le(this,As)}forEach(e){for(const[t,s]of this)e(t,s,this)}fuzzyGet(e,t){return Ls(this._tree,e,t)}get(e){const t=Be(this._tree,e);return t!==void 0?t.get(z):void 0}has(e){const t=Be(this._tree,e);return t!==void 0&&t.has(z)}keys(){return new Le(this,_t)}set(e,t){if(typeof e!="string")throw new Error("key must be a string");return this._size=void 0,De(this._tree,e).set(z,t),this}get size(){if(this._size)return this._size;this._size=0;const e=this.entries();for(;!e.next().done;)this._size+=1;return this._size}update(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=De(this._tree,e);return s.set(z,t(s.get(z))),this}fetch(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=De(this._tree,e);let n=s.get(z);return n===void 0&&s.set(z,n=t()),n}values(){return new Le(this,xt)}[Symbol.iterator](){return this.entries()}static from(e){const t=new X;for(const[s,n]of e)t.set(s,n);return t}static fromObject(e){return X.from(Object.entries(e))}}const Oe=(a,e,t=[])=>{if(e.length===0||a==null)return[a,t];for(const s of a.keys())if(s!==z&&e.startsWith(s))return t.push([a,s]),Oe(a.get(s),e.slice(s.length),t);return t.push([a,e]),Oe(void 0,"",t)},Be=(a,e)=>{if(e.length===0||a==null)return a;for(const t of a.keys())if(t!==z&&e.startsWith(t))return Be(a.get(t),e.slice(t.length))},De=(a,e)=>{const t=e.length;e:for(let s=0;a&&s{const[t,s]=Oe(a,e);if(t!==void 0){if(t.delete(z),t.size===0)Et(s);else if(t.size===1){const[n,r]=t.entries().next().value;Tt(s,n,r)}}},Et=a=>{if(a.length===0)return;const[e,t]=Je(a);if(e.delete(t),e.size===0)Et(a.slice(0,-1));else if(e.size===1){const[s,n]=e.entries().next().value;s!==z&&Tt(a.slice(0,-1),s,n)}},Tt=(a,e,t)=>{if(a.length===0)return;const[s,n]=Je(a);s.set(n+e,t),s.delete(n)},Je=a=>a[a.length-1],Ue="or",It="and",zs="and_not";class le{constructor(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');const t=e.autoVacuum==null||e.autoVacuum===!0?je:e.autoVacuum;this._options=Object.assign(Object.assign(Object.assign({},Pe),e),{autoVacuum:t,searchOptions:Object.assign(Object.assign({},dt),e.searchOptions||{}),autoSuggestOptions:Object.assign(Object.assign({},Bs),e.autoSuggestOptions||{})}),this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=Ke,this.addFields(this._options.fields)}add(e){const{extractField:t,tokenize:s,processTerm:n,fields:r,idField:i}=this._options,o=t(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);if(this._idToShortId.has(o))throw new Error(`MiniSearch: duplicate ID ${o}`);const c=this.addDocumentId(o);this.saveStoredFields(c,e);for(const l of r){const h=t(e,l);if(h==null)continue;const f=s(h.toString(),l),v=this._fieldIds[l],b=new Set(f).size;this.addFieldLength(c,v,this._documentCount-1,b);for(const w of f){const _=n(w,l);if(Array.isArray(_))for(const y of _)this.addTerm(v,c,y);else _&&this.addTerm(v,c,_)}}}addAll(e){for(const t of e)this.add(t)}addAllAsync(e,t={}){const{chunkSize:s=10}=t,n={chunk:[],promise:Promise.resolve()},{chunk:r,promise:i}=e.reduce(({chunk:o,promise:c},l,h)=>(o.push(l),(h+1)%s===0?{chunk:[],promise:c.then(()=>new Promise(f=>setTimeout(f,0))).then(()=>this.addAll(o))}:{chunk:o,promise:c}),n);return i.then(()=>this.addAll(r))}remove(e){const{tokenize:t,processTerm:s,extractField:n,fields:r,idField:i}=this._options,o=n(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);const c=this._idToShortId.get(o);if(c==null)throw new Error(`MiniSearch: cannot remove document with ID ${o}: it is not in the index`);for(const l of r){const h=n(e,l);if(h==null)continue;const f=t(h.toString(),l),v=this._fieldIds[l],b=new Set(f).size;this.removeFieldLength(c,v,this._documentCount,b);for(const w of f){const _=s(w,l);if(Array.isArray(_))for(const y of _)this.removeTerm(v,c,y);else _&&this.removeTerm(v,c,_)}}this._storedFields.delete(c),this._documentIds.delete(c),this._idToShortId.delete(o),this._fieldLength.delete(c),this._documentCount-=1}removeAll(e){if(e)for(const t of e)this.remove(t);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(e){const t=this._idToShortId.get(e);if(t==null)throw new Error(`MiniSearch: cannot discard document with ID ${e}: it is not in the index`);this._idToShortId.delete(e),this._documentIds.delete(t),this._storedFields.delete(t),(this._fieldLength.get(t)||[]).forEach((s,n)=>{this.removeFieldLength(t,n,this._documentCount,s)}),this._fieldLength.delete(t),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;const{minDirtFactor:e,minDirtCount:t,batchSize:s,batchWait:n}=this._options.autoVacuum;this.conditionalVacuum({batchSize:s,batchWait:n},{minDirtCount:t,minDirtFactor:e})}discardAll(e){const t=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(const s of e)this.discard(s)}finally{this._options.autoVacuum=t}this.maybeAutoVacuum()}replace(e){const{idField:t,extractField:s}=this._options,n=s(e,t);this.discard(n),this.add(e)}vacuum(e={}){return this.conditionalVacuum(e)}conditionalVacuum(e,t){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{const s=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=Ke,this.performVacuuming(e,s)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)}performVacuuming(e,t){return Te(this,void 0,void 0,function*(){const s=this._dirtCount;if(this.vacuumConditionsMet(t)){const n=e.batchSize||We.batchSize,r=e.batchWait||We.batchWait;let i=1;for(const[o,c]of this._index){for(const[l,h]of c)for(const[f]of h)this._documentIds.has(f)||(h.size<=1?c.delete(l):h.delete(f));this._index.get(o).size===0&&this._index.delete(o),i%n===0&&(yield new Promise(l=>setTimeout(l,r))),i+=1}this._dirtCount-=s}yield null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null})}vacuumConditionsMet(e){if(e==null)return!0;let{minDirtCount:t,minDirtFactor:s}=e;return t=t||je.minDirtCount,s=s||je.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=s}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(e){return this._idToShortId.has(e)}getStoredFields(e){const t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)}search(e,t={}){const s=this.executeQuery(e,t),n=[];for(const[r,{score:i,terms:o,match:c}]of s){const l=o.length||1,h={id:this._documentIds.get(r),score:i*l,terms:Object.keys(c),queryTerms:o,match:c};Object.assign(h,this._storedFields.get(r)),(t.filter==null||t.filter(h))&&n.push(h)}return e===le.wildcard&&t.boostDocument==null&&this._options.searchOptions.boostDocument==null||n.sort(ft),n}autoSuggest(e,t={}){t=Object.assign(Object.assign({},this._options.autoSuggestOptions),t);const s=new Map;for(const{score:r,terms:i}of this.search(e,t)){const o=i.join(" "),c=s.get(o);c!=null?(c.score+=r,c.count+=1):s.set(o,{score:r,terms:i,count:1})}const n=[];for(const[r,{score:i,terms:o,count:c}]of s)n.push({suggestion:r,terms:o,score:i/c});return n.sort(ft),n}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)}static loadJSONAsync(e,t){return Te(this,void 0,void 0,function*(){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(e),t)})}static getDefault(e){if(Pe.hasOwnProperty(e))return ze(Pe,e);throw new Error(`MiniSearch: unknown option "${e}"`)}static loadJS(e,t){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,c=this.instantiateMiniSearch(e,t);c._documentIds=Se(n),c._fieldLength=Se(r),c._storedFields=Se(i);for(const[l,h]of c._documentIds)c._idToShortId.set(h,l);for(const[l,h]of s){const f=new Map;for(const v of Object.keys(h)){let b=h[v];o===1&&(b=b.ds),f.set(parseInt(v,10),Se(b))}c._index.set(l,f)}return c}static loadJSAsync(e,t){return Te(this,void 0,void 0,function*(){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,c=this.instantiateMiniSearch(e,t);c._documentIds=yield Ee(n),c._fieldLength=yield Ee(r),c._storedFields=yield Ee(i);for(const[h,f]of c._documentIds)c._idToShortId.set(f,h);let l=0;for(const[h,f]of s){const v=new Map;for(const b of Object.keys(f)){let w=f[b];o===1&&(w=w.ds),v.set(parseInt(b,10),yield Ee(w))}++l%1e3===0&&(yield Nt(0)),c._index.set(h,v)}return c})}static instantiateMiniSearch(e,t){const{documentCount:s,nextId:n,fieldIds:r,averageFieldLength:i,dirtCount:o,serializationVersion:c}=e;if(c!==1&&c!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");const l=new le(t);return l._documentCount=s,l._nextId=n,l._idToShortId=new Map,l._fieldIds=r,l._avgFieldLength=i,l._dirtCount=o||0,l._index=new X,l}executeQuery(e,t={}){if(e===le.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){const v=Object.assign(Object.assign(Object.assign({},t),e),{queries:void 0}),b=e.queries.map(w=>this.executeQuery(w,v));return this.combineResults(b,v.combineWith)}const{tokenize:s,processTerm:n,searchOptions:r}=this._options,i=Object.assign(Object.assign({tokenize:s,processTerm:n},r),t),{tokenize:o,processTerm:c}=i,f=o(e).flatMap(v=>c(v)).filter(v=>!!v).map($s(i)).map(v=>this.executeQuerySpec(v,i));return this.combineResults(f,i.combineWith)}executeQuerySpec(e,t){const s=Object.assign(Object.assign({},this._options.searchOptions),t),n=(s.fields||this._options.fields).reduce((_,y)=>Object.assign(Object.assign({},_),{[y]:ze(s.boost,y)||1}),{}),{boostDocument:r,weights:i,maxFuzzy:o,bm25:c}=s,{fuzzy:l,prefix:h}=Object.assign(Object.assign({},dt.weights),i),f=this._index.get(e.term),v=this.termResults(e.term,e.term,1,e.termBoost,f,n,r,c);let b,w;if(e.prefix&&(b=this._index.atPrefix(e.term)),e.fuzzy){const _=e.fuzzy===!0?.2:e.fuzzy,y=_<1?Math.min(o,Math.round(e.term.length*_)):_;y&&(w=this._index.fuzzyGet(e.term,y))}if(b)for(const[_,y]of b){const R=_.length-e.term.length;if(!R)continue;w==null||w.delete(_);const C=h*_.length/(_.length+.3*R);this.termResults(e.term,_,C,e.termBoost,y,n,r,c,v)}if(w)for(const _ of w.keys()){const[y,R]=w.get(_);if(!R)continue;const C=l*_.length/(_.length+R);this.termResults(e.term,_,C,e.termBoost,y,n,r,c,v)}return v}executeWildcardQuery(e){const t=new Map,s=Object.assign(Object.assign({},this._options.searchOptions),e);for(const[n,r]of this._documentIds){const i=s.boostDocument?s.boostDocument(r,"",this._storedFields.get(n)):1;t.set(n,{score:i,terms:[],match:{}})}return t}combineResults(e,t=Ue){if(e.length===0)return new Map;const s=t.toLowerCase(),n=Ps[s];if(!n)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(n)||new Map}toJSON(){const e=[];for(const[t,s]of this._index){const n={};for(const[r,i]of s)n[r]=Object.fromEntries(i);e.push([t,n])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:e,serializationVersion:2}}termResults(e,t,s,n,r,i,o,c,l=new Map){if(r==null)return l;for(const h of Object.keys(i)){const f=i[h],v=this._fieldIds[h],b=r.get(v);if(b==null)continue;let w=b.size;const _=this._avgFieldLength[v];for(const y of b.keys()){if(!this._documentIds.has(y)){this.removeTerm(v,y,t),w-=1;continue}const R=o?o(this._documentIds.get(y),t,this._storedFields.get(y)):1;if(!R)continue;const C=b.get(y),J=this._fieldLength.get(y)[v],H=Vs(C,w,this._documentCount,J,_,c),W=s*n*f*R*H,V=l.get(y);if(V){V.score+=W,Ws(V.terms,e);const $=ze(V.match,t);$?$.push(h):V.match[t]=[h]}else l.set(y,{score:W,terms:[e],match:{[t]:[h]}})}}return l}addTerm(e,t,s){const n=this._index.fetch(s,pt);let r=n.get(e);if(r==null)r=new Map,r.set(t,1),n.set(e,r);else{const i=r.get(t);r.set(t,(i||0)+1)}}removeTerm(e,t,s){if(!this._index.has(s)){this.warnDocumentChanged(t,e,s);return}const n=this._index.fetch(s,pt),r=n.get(e);r==null||r.get(t)==null?this.warnDocumentChanged(t,e,s):r.get(t)<=1?r.size<=1?n.delete(e):r.delete(t):r.set(t,r.get(t)-1),this._index.get(s).size===0&&this._index.delete(s)}warnDocumentChanged(e,t,s){for(const n of Object.keys(this._fieldIds))if(this._fieldIds[n]===t){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(e)} has changed before removal: term "${s}" was not present in field "${n}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(e){const t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t}addFields(e){for(let t=0;tObject.prototype.hasOwnProperty.call(a,e)?a[e]:void 0,Ps={[Ue]:(a,e)=>{for(const t of e.keys()){const s=a.get(t);if(s==null)a.set(t,e.get(t));else{const{score:n,terms:r,match:i}=e.get(t);s.score=s.score+n,s.match=Object.assign(s.match,i),ht(s.terms,r)}}return a},[It]:(a,e)=>{const t=new Map;for(const s of e.keys()){const n=a.get(s);if(n==null)continue;const{score:r,terms:i,match:o}=e.get(s);ht(n.terms,i),t.set(s,{score:n.score+r,terms:n.terms,match:Object.assign(n.match,o)})}return t},[zs]:(a,e)=>{for(const t of e.keys())a.delete(t);return a}},js={k:1.2,b:.7,d:.5},Vs=(a,e,t,s,n,r)=>{const{k:i,b:o,d:c}=r;return Math.log(1+(t-e+.5)/(e+.5))*(c+a*(i+1)/(a+i*(1-o+o*s/n)))},$s=a=>(e,t,s)=>{const n=typeof a.fuzzy=="function"?a.fuzzy(e,t,s):a.fuzzy||!1,r=typeof a.prefix=="function"?a.prefix(e,t,s):a.prefix===!0,i=typeof a.boostTerm=="function"?a.boostTerm(e,t,s):1;return{term:e,fuzzy:n,prefix:r,termBoost:i}},Pe={idField:"id",extractField:(a,e)=>a[e],tokenize:a=>a.split(Ks),processTerm:a=>a.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(a,e)=>{typeof(console==null?void 0:console[a])=="function"&&console[a](e)},autoVacuum:!0},dt={combineWith:Ue,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:js},Bs={combineWith:It,prefix:(a,e,t)=>e===t.length-1},We={batchSize:1e3,batchWait:10},Ke={minDirtFactor:.1,minDirtCount:20},je=Object.assign(Object.assign({},We),Ke),Ws=(a,e)=>{a.includes(e)||a.push(e)},ht=(a,e)=>{for(const t of e)a.includes(t)||a.push(t)},ft=({score:a},{score:e})=>e-a,pt=()=>new Map,Se=a=>{const e=new Map;for(const t of Object.keys(a))e.set(parseInt(t,10),a[t]);return e},Ee=a=>Te(void 0,void 0,void 0,function*(){const e=new Map;let t=0;for(const s of Object.keys(a))e.set(parseInt(s,10),a[s]),++t%1e3===0&&(yield Nt(0));return e}),Nt=a=>new Promise(e=>setTimeout(e,a)),Ks=/[\n\r\p{Z}\p{P}]+/u;class Js{constructor(e=10){Ce(this,"max");Ce(this,"cache");this.max=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}}const K=a=>(Qt("data-v-f4c4f812"),a=a(),Ht(),a),Us=["aria-owns"],qs={class:"shell"},Gs=["title"],Qs=K(()=>x("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)),Hs=[Qs],Ys={class:"search-actions before"},Zs=["title"],Xs=K(()=>x("span",{class:"vpi-arrow-left local-search-icon"},null,-1)),en=[Xs],tn=["placeholder"],sn={class:"search-actions"},nn=["title"],rn=K(()=>x("span",{class:"vpi-layout-list local-search-icon"},null,-1)),an=[rn],on=["disabled","title"],cn=K(()=>x("span",{class:"vpi-delete local-search-icon"},null,-1)),ln=[cn],un=["id","role","aria-labelledby"],dn=["aria-selected"],hn=["href","aria-label","onMouseenter","onFocusin"],fn={class:"titles"},pn=K(()=>x("span",{class:"title-icon"},"#",-1)),vn=["innerHTML"],mn=K(()=>x("span",{class:"vpi-chevron-right local-search-icon"},null,-1)),gn={class:"title main"},bn=["innerHTML"],yn={key:0,class:"excerpt-wrapper"},wn={key:0,class:"excerpt",inert:""},_n=["innerHTML"],xn=K(()=>x("div",{class:"excerpt-gradient-bottom"},null,-1)),Sn=K(()=>x("div",{class:"excerpt-gradient-top"},null,-1)),En={key:0,class:"no-results"},Tn={class:"search-keyboard-shortcuts"},In=["aria-label"],Nn=K(()=>x("span",{class:"vpi-arrow-up navigate-icon"},null,-1)),kn=[Nn],Fn=["aria-label"],On=K(()=>x("span",{class:"vpi-arrow-down navigate-icon"},null,-1)),Rn=[On],Cn=["aria-label"],Mn=K(()=>x("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)),An=[Mn],Ln=["aria-label"],Dn=Mt({__name:"VPLocalSearchBox",emits:["close"],setup(a,{emit:e}){var F,M;const t=e,s=be(),n=be(),r=be(is),i=ss(),{activate:o}=Rs(s,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:c,theme:l}=i,h=et(async()=>{var p,g,N,O,P,j,I,L,q;return it(le.loadJSON((N=await((g=(p=r.value)[c.value])==null?void 0:g.call(p)))==null?void 0:N.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((O=l.value.search)==null?void 0:O.provider)==="local"&&((j=(P=l.value.search.options)==null?void 0:P.miniSearch)==null?void 0:j.searchOptions)},...((I=l.value.search)==null?void 0:I.provider)==="local"&&((q=(L=l.value.search.options)==null?void 0:L.miniSearch)==null?void 0:q.options)}))}),v=ye(()=>{var p,g;return((p=l.value.search)==null?void 0:p.provider)==="local"&&((g=l.value.search.options)==null?void 0:g.disableQueryPersistence)===!0}).value?ne(""):At("vitepress:local-search-filter",""),b=Lt("vitepress:local-search-detailed-list",((F=l.value.search)==null?void 0:F.provider)==="local"&&((M=l.value.search.options)==null?void 0:M.detailedView)===!0),w=ye(()=>{var p,g,N;return((p=l.value.search)==null?void 0:p.provider)==="local"&&(((g=l.value.search.options)==null?void 0:g.disableDetailedView)===!0||((N=l.value.search.options)==null?void 0:N.detailedView)===!1)}),_=ye(()=>{var g,N,O,P,j,I,L;const p=((g=l.value.search)==null?void 0:g.options)??l.value.algolia;return((j=(P=(O=(N=p==null?void 0:p.locales)==null?void 0:N[c.value])==null?void 0:O.translations)==null?void 0:P.button)==null?void 0:j.buttonText)||((L=(I=p==null?void 0:p.translations)==null?void 0:I.button)==null?void 0:L.buttonText)||"Search"});Dt(()=>{w.value&&(b.value=!1)});const y=be([]),R=ne(!1);Ve(v,()=>{R.value=!1});const C=et(async()=>{if(n.value)return it(new Ms(n.value))},null),J=new Js(16);zt(()=>[h.value,v.value,b.value],async([p,g,N],O,P)=>{var me,qe,Ge,Qe;(O==null?void 0:O[0])!==p&&J.clear();let j=!1;if(P(()=>{j=!0}),!p)return;y.value=p.search(g).slice(0,16),R.value=!0;const I=N?await Promise.all(y.value.map(B=>H(B.id))):[];if(j)return;for(const{id:B,mod:ee}of I){const te=B.slice(0,B.indexOf("#"));let Y=J.get(te);if(Y)continue;Y=new Map,J.set(te,Y);const G=ee.default??ee;if(G!=null&&G.render||G!=null&&G.setup){const se=Yt(G);se.config.warnHandler=()=>{},se.provide(Zt,i),Object.defineProperties(se.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const He=document.createElement("div");se.mount(He),He.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(ue=>{var Xe;const ge=(Xe=ue.querySelector("a"))==null?void 0:Xe.getAttribute("href"),Ye=(ge==null?void 0:ge.startsWith("#"))&&ge.slice(1);if(!Ye)return;let Ze="";for(;(ue=ue.nextElementSibling)&&!/^h[1-6]$/i.test(ue.tagName);)Ze+=ue.outerHTML;Y.set(Ye,Ze)}),se.unmount()}if(j)return}const L=new Set;if(y.value=y.value.map(B=>{const[ee,te]=B.id.split("#"),Y=J.get(ee),G=(Y==null?void 0:Y.get(te))??"";for(const se in B.match)L.add(se);return{...B,text:G}}),await de(),j)return;await new Promise(B=>{var ee;(ee=C.value)==null||ee.unmark({done:()=>{var te;(te=C.value)==null||te.markRegExp(k(L),{done:B})}})});const q=((me=s.value)==null?void 0:me.querySelectorAll(".result .excerpt"))??[];for(const B of q)(qe=B.querySelector('mark[data-markjs="true"]'))==null||qe.scrollIntoView({block:"center"});(Qe=(Ge=n.value)==null?void 0:Ge.firstElementChild)==null||Qe.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function H(p){const g=Xt(p.slice(0,p.indexOf("#")));try{if(!g)throw new Error(`Cannot find file for id: ${p}`);return{id:p,mod:await import(g)}}catch(N){return console.error(N),{id:p,mod:{}}}}const W=ne(),V=ye(()=>{var p;return((p=v.value)==null?void 0:p.length)<=0});function $(p=!0){var g,N;(g=W.value)==null||g.focus(),p&&((N=W.value)==null||N.select())}Me(()=>{$()});function Re(p){p.pointerType==="mouse"&&$()}const A=ne(-1),U=ne(!1);Ve(y,p=>{A.value=p.length?0:-1,T()});function T(){de(()=>{const p=document.querySelector(".result.selected");p==null||p.scrollIntoView({block:"nearest"})})}we("ArrowUp",p=>{p.preventDefault(),A.value--,A.value<0&&(A.value=y.value.length-1),U.value=!0,T()}),we("ArrowDown",p=>{p.preventDefault(),A.value++,A.value>=y.value.length&&(A.value=0),U.value=!0,T()});const u=Pt();we("Enter",p=>{if(p.isComposing||p.target instanceof HTMLButtonElement&&p.target.type!=="submit")return;const g=y.value[A.value];if(p.target instanceof HTMLInputElement&&!g){p.preventDefault();return}g&&(u.go(g.id),t("close"))}),we("Escape",()=>{t("close")});const m=ns({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Me(()=>{window.history.pushState(null,"",null)}),jt("popstate",p=>{p.preventDefault(),t("close")});const S=Vt($t?document.body:null);Me(()=>{de(()=>{S.value=!0,de().then(()=>o())})}),Bt(()=>{S.value=!1});function E(){v.value="",de().then(()=>$(!1))}function k(p){return new RegExp([...p].sort((g,N)=>N.length-g.length).map(g=>`(${es(g)})`).join("|"),"gi")}return(p,g)=>{var N,O,P,j;return Q(),Wt(Gt,{to:"body"},[x("div",{ref_key:"el",ref:s,role:"button","aria-owns":(N=y.value)!=null&&N.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[x("div",{class:"backdrop",onClick:g[0]||(g[0]=I=>p.$emit("close"))}),x("div",qs,[x("form",{class:"search-bar",onPointerup:g[4]||(g[4]=I=>Re(I)),onSubmit:g[5]||(g[5]=Kt(()=>{},["prevent"]))},[x("label",{title:_.value,id:"localsearch-label",for:"localsearch-input"},Hs,8,Gs),x("div",Ys,[x("button",{class:"back-button",title:D(m)("modal.backButtonTitle"),onClick:g[1]||(g[1]=I=>p.$emit("close"))},en,8,Zs)]),Jt(x("input",{ref_key:"searchInput",ref:W,"onUpdate:modelValue":g[2]||(g[2]=I=>qt(v)?v.value=I:null),placeholder:_.value,id:"localsearch-input","aria-labelledby":"localsearch-label",class:"search-input"},null,8,tn),[[Ut,D(v)]]),x("div",sn,[w.value?_e("",!0):(Q(),Z("button",{key:0,class:tt(["toggle-layout-button",{"detailed-list":D(b)}]),type:"button",title:D(m)("modal.displayDetails"),onClick:g[3]||(g[3]=I=>A.value>-1&&(b.value=!D(b)))},an,10,nn)),x("button",{class:"clear-button",type:"reset",disabled:V.value,title:D(m)("modal.resetButtonTitle"),onClick:E},ln,8,on)])],32),x("ul",{ref_key:"resultsEl",ref:n,id:(O=y.value)!=null&&O.length?"localsearch-list":void 0,role:(P=y.value)!=null&&P.length?"listbox":void 0,"aria-labelledby":(j=y.value)!=null&&j.length?"localsearch-label":void 0,class:"results",onMousemove:g[7]||(g[7]=I=>U.value=!1)},[(Q(!0),Z(nt,null,st(y.value,(I,L)=>(Q(),Z("li",{key:I.id,role:"option","aria-selected":A.value===L?"true":"false"},[x("a",{href:I.id,class:tt(["result",{selected:A.value===L}]),"aria-label":[...I.titles,I.title].join(" > "),onMouseenter:q=>!U.value&&(A.value=L),onFocusin:q=>A.value=L,onClick:g[6]||(g[6]=q=>p.$emit("close"))},[x("div",null,[x("div",fn,[pn,(Q(!0),Z(nt,null,st(I.titles,(q,me)=>(Q(),Z("span",{key:me,class:"title"},[x("span",{class:"text",innerHTML:q},null,8,vn),mn]))),128)),x("span",gn,[x("span",{class:"text",innerHTML:I.title},null,8,bn)])]),D(b)?(Q(),Z("div",yn,[I.text?(Q(),Z("div",wn,[x("div",{class:"vp-doc",innerHTML:I.text},null,8,_n)])):_e("",!0),xn,Sn])):_e("",!0)])],42,hn)],8,dn))),128)),D(v)&&!y.value.length&&R.value?(Q(),Z("li",En,[he(fe(D(m)("modal.noResultsText"))+' "',1),x("strong",null,fe(D(v)),1),he('" ')])):_e("",!0)],40,un),x("div",Tn,[x("span",null,[x("kbd",{"aria-label":D(m)("modal.footer.navigateUpKeyAriaLabel")},kn,8,In),x("kbd",{"aria-label":D(m)("modal.footer.navigateDownKeyAriaLabel")},Rn,8,Fn),he(" "+fe(D(m)("modal.footer.navigateText")),1)]),x("span",null,[x("kbd",{"aria-label":D(m)("modal.footer.selectKeyAriaLabel")},An,8,Cn),he(" "+fe(D(m)("modal.footer.selectText")),1)]),x("span",null,[x("kbd",{"aria-label":D(m)("modal.footer.closeKeyAriaLabel")},"esc",8,Ln),he(" "+fe(D(m)("modal.footer.closeText")),1)])])])],8,Us)])}}}),Bn=ts(Dn,[["__scopeId","data-v-f4c4f812"]]);export{Bn as default}; diff --git a/previews/PR195/assets/chunks/framework.BjTE4JnT.js b/previews/PR195/assets/chunks/framework.BjTE4JnT.js new file mode 100644 index 000000000..bd1b1d918 --- /dev/null +++ b/previews/PR195/assets/chunks/framework.BjTE4JnT.js @@ -0,0 +1,17 @@ +/** +* @vue/shared v3.4.35 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function wr(e,t){const n=new Set(e.split(","));return r=>n.has(r)}const ne={},yt=[],Te=()=>{},Mi=()=>!1,Kt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Er=e=>e.startsWith("onUpdate:"),fe=Object.assign,Cr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ii=Object.prototype.hasOwnProperty,z=(e,t)=>Ii.call(e,t),k=Array.isArray,_t=e=>xn(e)==="[object Map]",Gs=e=>xn(e)==="[object Set]",W=e=>typeof e=="function",ie=e=>typeof e=="string",Qe=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",Xs=e=>(Z(e)||W(e))&&W(e.then)&&W(e.catch),Ys=Object.prototype.toString,xn=e=>Ys.call(e),Pi=e=>xn(e).slice(8,-1),zs=e=>xn(e)==="[object Object]",Sr=e=>ie(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,bt=wr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Tn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Ni=/-(\w)/g,Oe=Tn(e=>e.replace(Ni,(t,n)=>n?n.toUpperCase():"")),Fi=/\B([A-Z])/g,Ze=Tn(e=>e.replace(Fi,"-$1").toLowerCase()),An=Tn(e=>e.charAt(0).toUpperCase()+e.slice(1)),fn=Tn(e=>e?`on${An(e)}`:""),ze=(e,t)=>!Object.is(e,t),dn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},cr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},$i=e=>{const t=ie(e)?Number(e):NaN;return isNaN(t)?e:t};let Jr;const Qs=()=>Jr||(Jr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function xr(e){if(k(e)){const t={};for(let n=0;n{if(n){const r=n.split(ji);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Tr(e){let t="";if(ie(e))t=e;else if(k(e))for(let n=0;n!!(e&&e.__v_isRef===!0),ki=e=>ie(e)?e:e==null?"":k(e)||Z(e)&&(e.toString===Ys||!W(e.toString))?eo(e)?ki(e.value):JSON.stringify(e,to,2):String(e),to=(e,t)=>eo(t)?to(e,t.value):_t(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[kn(r,o)+" =>"]=s,n),{})}:Gs(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>kn(n))}:Qe(t)?kn(t):Z(t)&&!k(t)&&!zs(t)?String(t):t,kn=(e,t="")=>{var n;return Qe(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.35 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let we;class Ki{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=we,!t&&we&&(this.index=(we.scopes||(we.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=we;try{return we=this,t()}finally{we=n}}}on(){we=this}off(){we=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),tt()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Xe,n=ct;try{return Xe=!0,ct=this,this._runnings++,Qr(this),this.fn()}finally{Zr(this),this._runnings--,ct=n,Xe=t}}stop(){this.active&&(Qr(this),Zr(this),this.onStop&&this.onStop(),this.active=!1)}}function Gi(e){return e.value}function Qr(e){e._trackId++,e._depsLength=0}function Zr(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},yn=new WeakMap,at=Symbol(""),fr=Symbol("");function be(e,t,n){if(Xe&&ct){let r=yn.get(e);r||yn.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=lo(()=>r.delete(n))),oo(ct,s)}}function Ve(e,t,n,r,s,o){const i=yn.get(e);if(!i)return;let l=[];if(t==="clear")l=[...i.values()];else if(n==="length"&&k(e)){const c=Number(r);i.forEach((u,f)=>{(f==="length"||!Qe(f)&&f>=c)&&l.push(u)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":k(e)?Sr(n)&&l.push(i.get("length")):(l.push(i.get(at)),_t(e)&&l.push(i.get(fr)));break;case"delete":k(e)||(l.push(i.get(at)),_t(e)&&l.push(i.get(fr)));break;case"set":_t(e)&&l.push(i.get(at));break}Rr();for(const c of l)c&&io(c,4);Or()}function Xi(e,t){const n=yn.get(e);return n&&n.get(t)}const Yi=wr("__proto__,__v_isRef,__isVue"),co=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Qe)),es=zi();function zi(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=J(this);for(let o=0,i=this.length;o{e[t]=function(...n){et(),Rr();const r=J(this)[t].apply(this,n);return Or(),tt(),r}}),e}function Ji(e){Qe(e)||(e=String(e));const t=J(this);return be(t,"has",e),t.hasOwnProperty(e)}class ao{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?ul:po:o?ho:fo).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=k(t);if(!s){if(i&&z(es,n))return Reflect.get(es,n,r);if(n==="hasOwnProperty")return Ji}const l=Reflect.get(t,n,r);return(Qe(n)?co.has(n):Yi(n))||(s||be(t,"get",n),o)?l:de(l)?i&&Sr(n)?l:l.value:Z(l)?s?Ln(l):On(l):l}}class uo extends ao{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._isShallow){const c=dt(o);if(!St(r)&&!dt(r)&&(o=J(o),r=J(r)),!k(t)&&de(o)&&!de(r))return c?!1:(o.value=r,!0)}const i=k(t)&&Sr(n)?Number(n)e,Rn=e=>Reflect.getPrototypeOf(e);function Jt(e,t,n=!1,r=!1){e=e.__v_raw;const s=J(e),o=J(t);n||(ze(t,o)&&be(s,"get",t),be(s,"get",o));const{has:i}=Rn(s),l=r?Lr:n?Pr:jt;if(i.call(s,t))return l(e.get(t));if(i.call(s,o))return l(e.get(o));e!==s&&e.get(t)}function Qt(e,t=!1){const n=this.__v_raw,r=J(n),s=J(e);return t||(ze(e,s)&&be(r,"has",e),be(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function Zt(e,t=!1){return e=e.__v_raw,!t&&be(J(e),"iterate",at),Reflect.get(e,"size",e)}function ts(e,t=!1){!t&&!St(e)&&!dt(e)&&(e=J(e));const n=J(this);return Rn(n).has.call(n,e)||(n.add(e),Ve(n,"add",e,e)),this}function ns(e,t,n=!1){!n&&!St(t)&&!dt(t)&&(t=J(t));const r=J(this),{has:s,get:o}=Rn(r);let i=s.call(r,e);i||(e=J(e),i=s.call(r,e));const l=o.call(r,e);return r.set(e,t),i?ze(t,l)&&Ve(r,"set",e,t):Ve(r,"add",e,t),this}function rs(e){const t=J(this),{has:n,get:r}=Rn(t);let s=n.call(t,e);s||(e=J(e),s=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return s&&Ve(t,"delete",e,void 0),o}function ss(){const e=J(this),t=e.size!==0,n=e.clear();return t&&Ve(e,"clear",void 0,void 0),n}function en(e,t){return function(r,s){const o=this,i=o.__v_raw,l=J(i),c=t?Lr:e?Pr:jt;return!e&&be(l,"iterate",at),i.forEach((u,f)=>r.call(s,c(u),c(f),o))}}function tn(e,t,n){return function(...r){const s=this.__v_raw,o=J(s),i=_t(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,u=s[e](...r),f=n?Lr:t?Pr:jt;return!t&&be(o,"iterate",c?fr:at),{next(){const{value:h,done:m}=u.next();return m?{value:h,done:m}:{value:l?[f(h[0]),f(h[1])]:f(h),done:m}},[Symbol.iterator](){return this}}}}function Ue(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function nl(){const e={get(o){return Jt(this,o)},get size(){return Zt(this)},has:Qt,add:ts,set:ns,delete:rs,clear:ss,forEach:en(!1,!1)},t={get(o){return Jt(this,o,!1,!0)},get size(){return Zt(this)},has:Qt,add(o){return ts.call(this,o,!0)},set(o,i){return ns.call(this,o,i,!0)},delete:rs,clear:ss,forEach:en(!1,!0)},n={get(o){return Jt(this,o,!0)},get size(){return Zt(this,!0)},has(o){return Qt.call(this,o,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:en(!0,!1)},r={get(o){return Jt(this,o,!0,!0)},get size(){return Zt(this,!0)},has(o){return Qt.call(this,o,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:en(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=tn(o,!1,!1),n[o]=tn(o,!0,!1),t[o]=tn(o,!1,!0),r[o]=tn(o,!0,!0)}),[e,n,t,r]}const[rl,sl,ol,il]=nl();function Mr(e,t){const n=t?e?il:ol:e?sl:rl;return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(z(n,s)&&s in r?n:r,s,o)}const ll={get:Mr(!1,!1)},cl={get:Mr(!1,!0)},al={get:Mr(!0,!1)};const fo=new WeakMap,ho=new WeakMap,po=new WeakMap,ul=new WeakMap;function fl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function dl(e){return e.__v_skip||!Object.isExtensible(e)?0:fl(Pi(e))}function On(e){return dt(e)?e:Ir(e,!1,Zi,ll,fo)}function hl(e){return Ir(e,!1,tl,cl,ho)}function Ln(e){return Ir(e,!0,el,al,po)}function Ir(e,t,n,r,s){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const i=dl(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return s.set(e,l),l}function vt(e){return dt(e)?vt(e.__v_raw):!!(e&&e.__v_isReactive)}function dt(e){return!!(e&&e.__v_isReadonly)}function St(e){return!!(e&&e.__v_isShallow)}function go(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function hn(e){return Object.isExtensible(e)&&Js(e,"__v_skip",!0),e}const jt=e=>Z(e)?On(e):e,Pr=e=>Z(e)?Ln(e):e;class mo{constructor(t,n,r,s){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Ar(()=>t(this._value),()=>Mt(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=J(this);return(!t._cacheable||t.effect.dirty)&&ze(t._value,t._value=t.effect.run())&&Mt(t,4),Nr(t),t.effect._dirtyLevel>=2&&Mt(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function pl(e,t,n=!1){let r,s;const o=W(e);return o?(r=e,s=Te):(r=e.get,s=e.set),new mo(r,s,o||!s,n)}function Nr(e){var t;Xe&&ct&&(e=J(e),oo(ct,(t=e.dep)!=null?t:e.dep=lo(()=>e.dep=void 0,e instanceof mo?e:void 0)))}function Mt(e,t=4,n,r){e=J(e);const s=e.dep;s&&io(s,t)}function de(e){return!!(e&&e.__v_isRef===!0)}function oe(e){return yo(e,!1)}function Fr(e){return yo(e,!0)}function yo(e,t){return de(e)?e:new gl(e,t)}class gl{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:jt(t)}get value(){return Nr(this),this._value}set value(t){const n=this.__v_isShallow||St(t)||dt(t);t=n?t:J(t),ze(t,this._rawValue)&&(this._rawValue,this._rawValue=t,this._value=n?t:jt(t),Mt(this,4))}}function _o(e){return de(e)?e.value:e}const ml={get:(e,t,n)=>_o(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return de(s)&&!de(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function bo(e){return vt(e)?e:new Proxy(e,ml)}class yl{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Nr(this),()=>Mt(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function _l(e){return new yl(e)}class bl{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Xi(J(this._object),this._key)}}class vl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function wl(e,t,n){return de(e)?e:W(e)?new vl(e):Z(e)&&arguments.length>1?El(e,t,n):oe(e)}function El(e,t,n){const r=e[t];return de(r)?r:new bl(e,t,n)}/** +* @vue/runtime-core v3.4.35 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Ye(e,t,n,r){try{return r?e(...r):e()}catch(s){Wt(s,t,n)}}function Ae(e,t,n,r){if(W(e)){const s=Ye(e,t,n,r);return s&&Xs(s)&&s.catch(o=>{Wt(o,t,n)}),s}if(k(e)){const s=[];for(let o=0;o>>1,s=pe[r],o=Dt(s);oNe&&pe.splice(t,1)}function Tl(e){k(e)?wt.push(...e):(!Ke||!Ke.includes(e,e.allowRecurse?it+1:it))&&wt.push(e),wo()}function os(e,t,n=Vt?Ne+1:0){for(;nDt(n)-Dt(r));if(wt.length=0,Ke){Ke.push(...t);return}for(Ke=t,it=0;ite.id==null?1/0:e.id,Al=(e,t)=>{const n=Dt(e)-Dt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Eo(e){dr=!1,Vt=!0,pe.sort(Al);try{for(Ne=0;Ne{r._d&&_s(-1);const o=bn(t);let i;try{i=e(...s)}finally{bn(o),r._d&&_s(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function cu(e,t){if(ue===null)return e;const n=Vn(ue),r=e.dirs||(e.dirs=[]);for(let s=0;s{e.isMounted=!0}),Ro(()=>{e.isUnmounting=!0}),e}const Ce=[Function,Array],Co={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ce,onEnter:Ce,onAfterEnter:Ce,onEnterCancelled:Ce,onBeforeLeave:Ce,onLeave:Ce,onAfterLeave:Ce,onLeaveCancelled:Ce,onBeforeAppear:Ce,onAppear:Ce,onAfterAppear:Ce,onAppearCancelled:Ce},So=e=>{const t=e.subTree;return t.component?So(t.component):t},Ll={name:"BaseTransition",props:Co,setup(e,{slots:t}){const n=jn(),r=Ol();return()=>{const s=t.default&&To(t.default(),!0);if(!s||!s.length)return;let o=s[0];if(s.length>1){for(const m of s)if(m.type!==me){o=m;break}}const i=J(e),{mode:l}=i;if(r.isLeaving)return Kn(o);const c=is(o);if(!c)return Kn(o);let u=hr(c,i,r,n,m=>u=m);vn(c,u);const f=n.subTree,h=f&&is(f);if(h&&h.type!==me&&!lt(c,h)&&So(n).type!==me){const m=hr(h,i,r,n);if(vn(h,m),l==="out-in"&&c.type!==me)return r.isLeaving=!0,m.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},Kn(o);l==="in-out"&&c.type!==me&&(m.delayLeave=(_,w,O)=>{const B=xo(r,h);B[String(h.key)]=h,_[We]=()=>{w(),_[We]=void 0,delete u.delayedLeave},u.delayedLeave=O})}return o}}},Ml=Ll;function xo(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function hr(e,t,n,r,s){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:c,onEnter:u,onAfterEnter:f,onEnterCancelled:h,onBeforeLeave:m,onLeave:_,onAfterLeave:w,onLeaveCancelled:O,onBeforeAppear:B,onAppear:K,onAfterAppear:H,onAppearCancelled:p}=t,y=String(e.key),I=xo(n,e),T=(M,b)=>{M&&Ae(M,r,9,b)},F=(M,b)=>{const N=b[1];T(M,b),k(M)?M.every(x=>x.length<=1)&&N():M.length<=1&&N()},j={mode:i,persisted:l,beforeEnter(M){let b=c;if(!n.isMounted)if(o)b=B||c;else return;M[We]&&M[We](!0);const N=I[y];N&<(e,N)&&N.el[We]&&N.el[We](),T(b,[M])},enter(M){let b=u,N=f,x=h;if(!n.isMounted)if(o)b=K||u,N=H||f,x=p||h;else return;let G=!1;const ee=M[nn]=re=>{G||(G=!0,re?T(x,[M]):T(N,[M]),j.delayedLeave&&j.delayedLeave(),M[nn]=void 0)};b?F(b,[M,ee]):ee()},leave(M,b){const N=String(e.key);if(M[nn]&&M[nn](!0),n.isUnmounting)return b();T(m,[M]);let x=!1;const G=M[We]=ee=>{x||(x=!0,b(),ee?T(O,[M]):T(w,[M]),M[We]=void 0,I[N]===e&&delete I[N])};I[N]=e,_?F(_,[M,G]):G()},clone(M){const b=hr(M,t,n,r,s);return s&&s(b),b}};return j}function Kn(e){if(qt(e))return e=Je(e),e.children=null,e}function is(e){if(!qt(e))return e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&W(n.default))return n.default()}}function vn(e,t){e.shapeFlag&6&&e.component?vn(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function To(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function au(e){W(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,timeout:o,suspensible:i=!0,onError:l}=e;let c=null,u,f=0;const h=()=>(f++,c=null,m()),m=()=>{let _;return c||(_=c=t().catch(w=>{if(w=w instanceof Error?w:new Error(String(w)),l)return new Promise((O,B)=>{l(w,()=>O(h()),()=>B(w),f+1)});throw w}).then(w=>_!==c&&c?c:(w&&(w.__esModule||w[Symbol.toStringTag]==="Module")&&(w=w.default),u=w,w)))};return Hr({name:"AsyncComponentWrapper",__asyncLoader:m,get __asyncResolved(){return u},setup(){const _=ae;if(u)return()=>Wn(u,_);const w=H=>{c=null,Wt(H,_,13,!r)};if(i&&_.suspense||Xt)return m().then(H=>()=>Wn(H,_)).catch(H=>(w(H),()=>r?le(r,{error:H}):null));const O=oe(!1),B=oe(),K=oe(!!s);return s&&setTimeout(()=>{K.value=!1},s),o!=null&&setTimeout(()=>{if(!O.value&&!B.value){const H=new Error(`Async component timed out after ${o}ms.`);w(H),B.value=H}},o),m().then(()=>{O.value=!0,_.parent&&qt(_.parent.vnode)&&(_.parent.effect.dirty=!0,In(_.parent.update))}).catch(H=>{w(H),B.value=H}),()=>{if(O.value&&u)return Wn(u,_);if(B.value&&r)return le(r,{error:B.value});if(n&&!K.value)return le(n)}}})}function Wn(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=le(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const qt=e=>e.type.__isKeepAlive;function Il(e,t){Ao(e,"a",t)}function Pl(e,t){Ao(e,"da",t)}function Ao(e,t,n=ae){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Nn(t,r,n),n){let s=n.parent;for(;s&&s.parent;)qt(s.parent.vnode)&&Nl(r,t,n,s),s=s.parent}}function Nl(e,t,n,r){const s=Nn(t,e,r,!0);Fn(()=>{Cr(r[t],s)},n)}function Nn(e,t,n=ae,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{et();const l=Gt(n),c=Ae(t,n,e,i);return l(),tt(),c});return r?s.unshift(o):s.push(o),o}}const De=e=>(t,n=ae)=>{(!Xt||e==="sp")&&Nn(e,(...r)=>t(...r),n)},Fl=De("bm"),Tt=De("m"),$l=De("bu"),Hl=De("u"),Ro=De("bum"),Fn=De("um"),jl=De("sp"),Vl=De("rtg"),Dl=De("rtc");function Ul(e,t=ae){Nn("ec",e,t)}const Oo="components";function uu(e,t){return Mo(Oo,e,!0,t)||e}const Lo=Symbol.for("v-ndc");function fu(e){return ie(e)?Mo(Oo,e,!1)||e:e||Lo}function Mo(e,t,n=!0,r=!1){const s=ue||ae;if(s){const o=s.type;{const l=Pc(o,!1);if(l&&(l===t||l===Oe(t)||l===An(Oe(t))))return o}const i=ls(s[e]||o[e],t)||ls(s.appContext[e],t);return!i&&r?o:i}}function ls(e,t){return e&&(e[t]||e[Oe(t)]||e[An(Oe(t))])}function du(e,t,n,r){let s;const o=n;if(k(e)||ie(e)){s=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,o));else{const i=Object.keys(e);s=new Array(i.length);for(let l=0,c=i.length;lCn(t)?!(t.type===me||t.type===_e&&!Io(t.children)):!0)?e:null}function pu(e,t){const n={};for(const r in e)n[/[A-Z]/.test(r)?`on:${r}`:fn(r)]=e[r];return n}const pr=e=>e?oi(e)?Vn(e):pr(e.parent):null,It=fe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>pr(e.parent),$root:e=>pr(e.root),$emit:e=>e.emit,$options:e=>jr(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,In(e.update)}),$nextTick:e=>e.n||(e.n=Mn.bind(e.proxy)),$watch:e=>gc.bind(e)}),qn=(e,t)=>e!==ne&&!e.__isScriptSetup&&z(e,t),Bl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:c}=e;let u;if(t[0]!=="$"){const _=i[t];if(_!==void 0)switch(_){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(qn(r,t))return i[t]=1,r[t];if(s!==ne&&z(s,t))return i[t]=2,s[t];if((u=e.propsOptions[0])&&z(u,t))return i[t]=3,o[t];if(n!==ne&&z(n,t))return i[t]=4,n[t];gr&&(i[t]=0)}}const f=It[t];let h,m;if(f)return t==="$attrs"&&be(e.attrs,"get",""),f(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==ne&&z(n,t))return i[t]=4,n[t];if(m=c.config.globalProperties,z(m,t))return m[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return qn(s,t)?(s[t]=n,!0):r!==ne&&z(r,t)?(r[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},i){let l;return!!n[i]||e!==ne&&z(e,i)||qn(t,i)||(l=o[0])&&z(l,i)||z(r,i)||z(It,i)||z(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function gu(){return kl().slots}function kl(){const e=jn();return e.setupContext||(e.setupContext=li(e))}function cs(e){return k(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let gr=!0;function Kl(e){const t=jr(e),n=e.proxy,r=e.ctx;gr=!1,t.beforeCreate&&as(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:c,inject:u,created:f,beforeMount:h,mounted:m,beforeUpdate:_,updated:w,activated:O,deactivated:B,beforeDestroy:K,beforeUnmount:H,destroyed:p,unmounted:y,render:I,renderTracked:T,renderTriggered:F,errorCaptured:j,serverPrefetch:M,expose:b,inheritAttrs:N,components:x,directives:G,filters:ee}=t;if(u&&Wl(u,r,null),i)for(const Y in i){const V=i[Y];W(V)&&(r[Y]=V.bind(n))}if(s){const Y=s.call(n,n);Z(Y)&&(e.data=On(Y))}if(gr=!0,o)for(const Y in o){const V=o[Y],He=W(V)?V.bind(n,n):W(V.get)?V.get.bind(n,n):Te,Yt=!W(V)&&W(V.set)?V.set.bind(n):Te,nt=se({get:He,set:Yt});Object.defineProperty(r,Y,{enumerable:!0,configurable:!0,get:()=>nt.value,set:Me=>nt.value=Me})}if(l)for(const Y in l)Po(l[Y],r,n,Y);if(c){const Y=W(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(V=>{Jl(V,Y[V])})}f&&as(f,e,"c");function U(Y,V){k(V)?V.forEach(He=>Y(He.bind(n))):V&&Y(V.bind(n))}if(U(Fl,h),U(Tt,m),U($l,_),U(Hl,w),U(Il,O),U(Pl,B),U(Ul,j),U(Dl,T),U(Vl,F),U(Ro,H),U(Fn,y),U(jl,M),k(b))if(b.length){const Y=e.exposed||(e.exposed={});b.forEach(V=>{Object.defineProperty(Y,V,{get:()=>n[V],set:He=>n[V]=He})})}else e.exposed||(e.exposed={});I&&e.render===Te&&(e.render=I),N!=null&&(e.inheritAttrs=N),x&&(e.components=x),G&&(e.directives=G)}function Wl(e,t,n=Te){k(e)&&(e=mr(e));for(const r in e){const s=e[r];let o;Z(s)?"default"in s?o=Ct(s.from||r,s.default,!0):o=Ct(s.from||r):o=Ct(s),de(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function as(e,t,n){Ae(k(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Po(e,t,n,r){const s=r.includes(".")?zo(n,r):()=>n[r];if(ie(e)){const o=t[e];W(o)&&Fe(s,o)}else if(W(e))Fe(s,e.bind(n));else if(Z(e))if(k(e))e.forEach(o=>Po(o,t,n,r));else{const o=W(e.handler)?e.handler.bind(n):t[e.handler];W(o)&&Fe(s,o,e)}}function jr(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(u=>wn(c,u,i,!0)),wn(c,t,i)),Z(t)&&o.set(t,c),c}function wn(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&wn(e,o,n,!0),s&&s.forEach(i=>wn(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=ql[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const ql={data:us,props:fs,emits:fs,methods:Lt,computed:Lt,beforeCreate:ge,created:ge,beforeMount:ge,mounted:ge,beforeUpdate:ge,updated:ge,beforeDestroy:ge,beforeUnmount:ge,destroyed:ge,unmounted:ge,activated:ge,deactivated:ge,errorCaptured:ge,serverPrefetch:ge,components:Lt,directives:Lt,watch:Xl,provide:us,inject:Gl};function us(e,t){return t?e?function(){return fe(W(e)?e.call(this,this):e,W(t)?t.call(this,this):t)}:t:e}function Gl(e,t){return Lt(mr(e),mr(t))}function mr(e){if(k(e)){const t={};for(let n=0;n1)return n&&W(t)?t.call(r&&r.proxy):t}}const Fo={},$o=()=>Object.create(Fo),Ho=e=>Object.getPrototypeOf(e)===Fo;function Ql(e,t,n,r=!1){const s={},o=$o();e.propsDefaults=Object.create(null),jo(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:hl(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function Zl(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,l=J(s),[c]=e.propsOptions;let u=!1;if((r||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[m,_]=Vo(h,t,!0);fe(i,m),_&&l.push(..._)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return Z(e)&&r.set(e,yt),yt;if(k(o))for(let f=0;fe[0]==="_"||e==="$stable",Vr=e=>k(e)?e.map(xe):[xe(e)],tc=(e,t,n)=>{if(t._n)return t;const r=Rl((...s)=>Vr(t(...s)),n);return r._c=!1,r},Uo=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Do(s))continue;const o=e[s];if(W(o))t[s]=tc(s,o,r);else if(o!=null){const i=Vr(o);t[s]=()=>i}}},Bo=(e,t)=>{const n=Vr(t);e.slots.default=()=>n},ko=(e,t,n)=>{for(const r in t)(n||r!=="_")&&(e[r]=t[r])},nc=(e,t,n)=>{const r=e.slots=$o();if(e.vnode.shapeFlag&32){const s=t._;s?(ko(r,t,n),n&&Js(r,"_",s,!0)):Uo(t,r)}else t&&Bo(e,t)},rc=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=ne;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:ko(s,t,n):(o=!t.$stable,Uo(t,s)),i=t}else t&&(Bo(e,t),i={default:1});if(o)for(const l in s)!Do(l)&&i[l]==null&&delete s[l]};function En(e,t,n,r,s=!1){if(k(e)){e.forEach((m,_)=>En(m,t&&(k(t)?t[_]:t),n,r,s));return}if(Et(r)&&!s)return;const o=r.shapeFlag&4?Vn(r.component):r.el,i=s?null:o,{i:l,r:c}=e,u=t&&t.r,f=l.refs===ne?l.refs={}:l.refs,h=l.setupState;if(u!=null&&u!==c&&(ie(u)?(f[u]=null,z(h,u)&&(h[u]=null)):de(u)&&(u.value=null)),W(c))Ye(c,l,12,[i,f]);else{const m=ie(c),_=de(c);if(m||_){const w=()=>{if(e.f){const O=m?z(h,c)?h[c]:f[c]:c.value;s?k(O)&&Cr(O,o):k(O)?O.includes(o)||O.push(o):m?(f[c]=[o],z(h,c)&&(h[c]=f[c])):(c.value=[o],e.k&&(f[e.k]=c.value))}else m?(f[c]=i,z(h,c)&&(h[c]=i)):_&&(c.value=i,e.k&&(f[e.k]=i))};i?(w.id=-1,ye(w,n)):w()}}}const Ko=Symbol("_vte"),sc=e=>e.__isTeleport,Nt=e=>e&&(e.disabled||e.disabled===""),hs=e=>typeof SVGElement<"u"&&e instanceof SVGElement,ps=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,_r=(e,t)=>{const n=e&&e.to;return ie(n)?t?t(n):null:n},oc={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,o,i,l,c,u){const{mc:f,pc:h,pbc:m,o:{insert:_,querySelector:w,createText:O,createComment:B}}=u,K=Nt(t.props);let{shapeFlag:H,children:p,dynamicChildren:y}=t;if(e==null){const I=t.el=O(""),T=t.anchor=O("");_(I,n,r),_(T,n,r);const F=t.target=_r(t.props,w),j=qo(F,t,O,_);F&&(i==="svg"||hs(F)?i="svg":(i==="mathml"||ps(F))&&(i="mathml"));const M=(b,N)=>{H&16&&f(p,b,N,s,o,i,l,c)};K?M(n,T):F&&M(F,j)}else{t.el=e.el,t.targetStart=e.targetStart;const I=t.anchor=e.anchor,T=t.target=e.target,F=t.targetAnchor=e.targetAnchor,j=Nt(e.props),M=j?n:T,b=j?I:F;if(i==="svg"||hs(T)?i="svg":(i==="mathml"||ps(T))&&(i="mathml"),y?(m(e.dynamicChildren,y,M,s,o,i,l),Dr(e,t,!0)):c||h(e,t,M,b,s,o,i,l,!1),K)j?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):rn(t,n,I,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const N=t.target=_r(t.props,w);N&&rn(t,N,null,u,0)}else j&&rn(t,T,F,u,1)}Wo(t)},remove(e,t,n,{um:r,o:{remove:s}},o){const{shapeFlag:i,children:l,anchor:c,targetStart:u,targetAnchor:f,target:h,props:m}=e;if(h&&(s(u),s(f)),o&&s(c),i&16){const _=o||!Nt(m);for(let w=0;w{gs||(console.error("Hydration completed but contains mismatches."),gs=!0)},lc=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",cc=e=>e.namespaceURI.includes("MathML"),sn=e=>{if(lc(e))return"svg";if(cc(e))return"mathml"},on=e=>e.nodeType===8;function ac(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:l,insert:c,createComment:u}}=e,f=(p,y)=>{if(!y.hasChildNodes()){n(null,p,y),_n(),y._vnode=p;return}h(y.firstChild,p,null,null,null),_n(),y._vnode=p},h=(p,y,I,T,F,j=!1)=>{j=j||!!y.dynamicChildren;const M=on(p)&&p.data==="[",b=()=>O(p,y,I,T,F,M),{type:N,ref:x,shapeFlag:G,patchFlag:ee}=y;let re=p.nodeType;y.el=p,ee===-2&&(j=!1,y.dynamicChildren=null);let U=null;switch(N){case ut:re!==3?y.children===""?(c(y.el=s(""),i(p),p),U=p):U=b():(p.data!==y.children&&(gt(),p.data=y.children),U=o(p));break;case me:H(p)?(U=o(p),K(y.el=p.content.firstChild,p,I)):re!==8||M?U=b():U=o(p);break;case Ft:if(M&&(p=o(p),re=p.nodeType),re===1||re===3){U=p;const Y=!y.children.length;for(let V=0;V{j=j||!!y.dynamicChildren;const{type:M,props:b,patchFlag:N,shapeFlag:x,dirs:G,transition:ee}=y,re=M==="input"||M==="option";if(re||N!==-1){G&&Pe(y,null,I,"created");let U=!1;if(H(p)){U=Xo(T,ee)&&I&&I.vnode.props&&I.vnode.props.appear;const V=p.content.firstChild;U&&ee.beforeEnter(V),K(V,p,I),y.el=p=V}if(x&16&&!(b&&(b.innerHTML||b.textContent))){let V=_(p.firstChild,y,p,I,T,F,j);for(;V;){gt();const He=V;V=V.nextSibling,l(He)}}else x&8&&p.textContent!==y.children&&(gt(),p.textContent=y.children);if(b){if(re||!j||N&48)for(const V in b)(re&&(V.endsWith("value")||V==="indeterminate")||Kt(V)&&!bt(V)||V[0]===".")&&r(p,V,null,b[V],void 0,I);else if(b.onClick)r(p,"onClick",null,b.onClick,void 0,I);else if(N&4&&vt(b.style))for(const V in b.style)b.style[V]}let Y;(Y=b&&b.onVnodeBeforeMount)&&Se(Y,I,y),G&&Pe(y,null,I,"beforeMount"),((Y=b&&b.onVnodeMounted)||G||U)&&Qo(()=>{Y&&Se(Y,I,y),U&&ee.enter(p),G&&Pe(y,null,I,"mounted")},T)}return p.nextSibling},_=(p,y,I,T,F,j,M)=>{M=M||!!y.dynamicChildren;const b=y.children,N=b.length;for(let x=0;x{const{slotScopeIds:M}=y;M&&(F=F?F.concat(M):M);const b=i(p),N=_(o(p),y,b,I,T,F,j);return N&&on(N)&&N.data==="]"?o(y.anchor=N):(gt(),c(y.anchor=u("]"),b,N),N)},O=(p,y,I,T,F,j)=>{if(gt(),y.el=null,j){const N=B(p);for(;;){const x=o(p);if(x&&x!==N)l(x);else break}}const M=o(p),b=i(p);return l(p),n(null,y,b,M,I,T,sn(b),F),M},B=(p,y="[",I="]")=>{let T=0;for(;p;)if(p=o(p),p&&on(p)&&(p.data===y&&T++,p.data===I)){if(T===0)return o(p);T--}return p},K=(p,y,I)=>{const T=y.parentNode;T&&T.replaceChild(p,y);let F=I;for(;F;)F.vnode.el===y&&(F.vnode.el=F.subTree.el=p),F=F.parent},H=p=>p.nodeType===1&&p.tagName.toLowerCase()==="template";return[f,h]}const ye=Qo;function uc(e){return Go(e)}function fc(e){return Go(e,ac)}function Go(e,t){const n=Qs();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:c,setText:u,setElementText:f,parentNode:h,nextSibling:m,setScopeId:_=Te,insertStaticContent:w}=e,O=(a,d,g,C=null,v=null,S=null,L=void 0,A=null,R=!!d.dynamicChildren)=>{if(a===d)return;a&&!lt(a,d)&&(C=zt(a),Me(a,v,S,!0),a=null),d.patchFlag===-2&&(R=!1,d.dynamicChildren=null);const{type:E,ref:P,shapeFlag:D}=d;switch(E){case ut:B(a,d,g,C);break;case me:K(a,d,g,C);break;case Ft:a==null&&H(d,g,C,L);break;case _e:x(a,d,g,C,v,S,L,A,R);break;default:D&1?I(a,d,g,C,v,S,L,A,R):D&6?G(a,d,g,C,v,S,L,A,R):(D&64||D&128)&&E.process(a,d,g,C,v,S,L,A,R,ht)}P!=null&&v&&En(P,a&&a.ref,S,d||a,!d)},B=(a,d,g,C)=>{if(a==null)r(d.el=l(d.children),g,C);else{const v=d.el=a.el;d.children!==a.children&&u(v,d.children)}},K=(a,d,g,C)=>{a==null?r(d.el=c(d.children||""),g,C):d.el=a.el},H=(a,d,g,C)=>{[a.el,a.anchor]=w(a.children,d,g,C,a.el,a.anchor)},p=({el:a,anchor:d},g,C)=>{let v;for(;a&&a!==d;)v=m(a),r(a,g,C),a=v;r(d,g,C)},y=({el:a,anchor:d})=>{let g;for(;a&&a!==d;)g=m(a),s(a),a=g;s(d)},I=(a,d,g,C,v,S,L,A,R)=>{d.type==="svg"?L="svg":d.type==="math"&&(L="mathml"),a==null?T(d,g,C,v,S,L,A,R):M(a,d,v,S,L,A,R)},T=(a,d,g,C,v,S,L,A)=>{let R,E;const{props:P,shapeFlag:D,transition:$,dirs:q}=a;if(R=a.el=i(a.type,S,P&&P.is,P),D&8?f(R,a.children):D&16&&j(a.children,R,null,C,v,Gn(a,S),L,A),q&&Pe(a,null,C,"created"),F(R,a,a.scopeId,L,C),P){for(const te in P)te!=="value"&&!bt(te)&&o(R,te,null,P[te],S,C);"value"in P&&o(R,"value",null,P.value,S),(E=P.onVnodeBeforeMount)&&Se(E,C,a)}q&&Pe(a,null,C,"beforeMount");const X=Xo(v,$);X&&$.beforeEnter(R),r(R,d,g),((E=P&&P.onVnodeMounted)||X||q)&&ye(()=>{E&&Se(E,C,a),X&&$.enter(R),q&&Pe(a,null,C,"mounted")},v)},F=(a,d,g,C,v)=>{if(g&&_(a,g),C)for(let S=0;S{for(let E=R;E{const A=d.el=a.el;let{patchFlag:R,dynamicChildren:E,dirs:P}=d;R|=a.patchFlag&16;const D=a.props||ne,$=d.props||ne;let q;if(g&&rt(g,!1),(q=$.onVnodeBeforeUpdate)&&Se(q,g,d,a),P&&Pe(d,a,g,"beforeUpdate"),g&&rt(g,!0),(D.innerHTML&&$.innerHTML==null||D.textContent&&$.textContent==null)&&f(A,""),E?b(a.dynamicChildren,E,A,g,C,Gn(d,v),S):L||V(a,d,A,null,g,C,Gn(d,v),S,!1),R>0){if(R&16)N(A,D,$,g,v);else if(R&2&&D.class!==$.class&&o(A,"class",null,$.class,v),R&4&&o(A,"style",D.style,$.style,v),R&8){const X=d.dynamicProps;for(let te=0;te{q&&Se(q,g,d,a),P&&Pe(d,a,g,"updated")},C)},b=(a,d,g,C,v,S,L)=>{for(let A=0;A{if(d!==g){if(d!==ne)for(const S in d)!bt(S)&&!(S in g)&&o(a,S,d[S],null,v,C);for(const S in g){if(bt(S))continue;const L=g[S],A=d[S];L!==A&&S!=="value"&&o(a,S,A,L,v,C)}"value"in g&&o(a,"value",d.value,g.value,v)}},x=(a,d,g,C,v,S,L,A,R)=>{const E=d.el=a?a.el:l(""),P=d.anchor=a?a.anchor:l("");let{patchFlag:D,dynamicChildren:$,slotScopeIds:q}=d;q&&(A=A?A.concat(q):q),a==null?(r(E,g,C),r(P,g,C),j(d.children||[],g,P,v,S,L,A,R)):D>0&&D&64&&$&&a.dynamicChildren?(b(a.dynamicChildren,$,g,v,S,L,A),(d.key!=null||v&&d===v.subTree)&&Dr(a,d,!0)):V(a,d,g,P,v,S,L,A,R)},G=(a,d,g,C,v,S,L,A,R)=>{d.slotScopeIds=A,a==null?d.shapeFlag&512?v.ctx.activate(d,g,C,L,R):ee(d,g,C,v,S,L,R):re(a,d,R)},ee=(a,d,g,C,v,S,L)=>{const A=a.component=Oc(a,C,v);if(qt(a)&&(A.ctx.renderer=ht),Lc(A,!1,L),A.asyncDep){if(v&&v.registerDep(A,U,L),!a.el){const R=A.subTree=le(me);K(null,R,d,g)}}else U(A,a,d,g,v,S,L)},re=(a,d,g)=>{const C=d.component=a.component;if(vc(a,d,g))if(C.asyncDep&&!C.asyncResolved){Y(C,d,g);return}else C.next=d,xl(C.update),C.effect.dirty=!0,C.update();else d.el=a.el,C.vnode=d},U=(a,d,g,C,v,S,L)=>{const A=()=>{if(a.isMounted){let{next:P,bu:D,u:$,parent:q,vnode:X}=a;{const pt=Yo(a);if(pt){P&&(P.el=X.el,Y(a,P,L)),pt.asyncDep.then(()=>{a.isUnmounted||A()});return}}let te=P,Q;rt(a,!1),P?(P.el=X.el,Y(a,P,L)):P=X,D&&dn(D),(Q=P.props&&P.props.onVnodeBeforeUpdate)&&Se(Q,q,P,X),rt(a,!0);const ce=Xn(a),Re=a.subTree;a.subTree=ce,O(Re,ce,h(Re.el),zt(Re),a,v,S),P.el=ce.el,te===null&&wc(a,ce.el),$&&ye($,v),(Q=P.props&&P.props.onVnodeUpdated)&&ye(()=>Se(Q,q,P,X),v)}else{let P;const{el:D,props:$}=d,{bm:q,m:X,parent:te}=a,Q=Et(d);if(rt(a,!1),q&&dn(q),!Q&&(P=$&&$.onVnodeBeforeMount)&&Se(P,te,d),rt(a,!0),D&&Bn){const ce=()=>{a.subTree=Xn(a),Bn(D,a.subTree,a,v,null)};Q?d.type.__asyncLoader().then(()=>!a.isUnmounted&&ce()):ce()}else{const ce=a.subTree=Xn(a);O(null,ce,g,C,a,v,S),d.el=ce.el}if(X&&ye(X,v),!Q&&(P=$&&$.onVnodeMounted)){const ce=d;ye(()=>Se(P,te,ce),v)}(d.shapeFlag&256||te&&Et(te.vnode)&&te.vnode.shapeFlag&256)&&a.a&&ye(a.a,v),a.isMounted=!0,d=g=C=null}},R=a.effect=new Ar(A,Te,()=>In(E),a.scope),E=a.update=()=>{R.dirty&&R.run()};E.i=a,E.id=a.uid,rt(a,!0),E()},Y=(a,d,g)=>{d.component=a;const C=a.vnode.props;a.vnode=d,a.next=null,Zl(a,d.props,C,g),rc(a,d.children,g),et(),os(a),tt()},V=(a,d,g,C,v,S,L,A,R=!1)=>{const E=a&&a.children,P=a?a.shapeFlag:0,D=d.children,{patchFlag:$,shapeFlag:q}=d;if($>0){if($&128){Yt(E,D,g,C,v,S,L,A,R);return}else if($&256){He(E,D,g,C,v,S,L,A,R);return}}q&8?(P&16&&At(E,v,S),D!==E&&f(g,D)):P&16?q&16?Yt(E,D,g,C,v,S,L,A,R):At(E,v,S,!0):(P&8&&f(g,""),q&16&&j(D,g,C,v,S,L,A,R))},He=(a,d,g,C,v,S,L,A,R)=>{a=a||yt,d=d||yt;const E=a.length,P=d.length,D=Math.min(E,P);let $;for($=0;$P?At(a,v,S,!0,!1,D):j(d,g,C,v,S,L,A,R,D)},Yt=(a,d,g,C,v,S,L,A,R)=>{let E=0;const P=d.length;let D=a.length-1,$=P-1;for(;E<=D&&E<=$;){const q=a[E],X=d[E]=R?qe(d[E]):xe(d[E]);if(lt(q,X))O(q,X,g,null,v,S,L,A,R);else break;E++}for(;E<=D&&E<=$;){const q=a[D],X=d[$]=R?qe(d[$]):xe(d[$]);if(lt(q,X))O(q,X,g,null,v,S,L,A,R);else break;D--,$--}if(E>D){if(E<=$){const q=$+1,X=q$)for(;E<=D;)Me(a[E],v,S,!0),E++;else{const q=E,X=E,te=new Map;for(E=X;E<=$;E++){const ve=d[E]=R?qe(d[E]):xe(d[E]);ve.key!=null&&te.set(ve.key,E)}let Q,ce=0;const Re=$-X+1;let pt=!1,Xr=0;const Rt=new Array(Re);for(E=0;E=Re){Me(ve,v,S,!0);continue}let Ie;if(ve.key!=null)Ie=te.get(ve.key);else for(Q=X;Q<=$;Q++)if(Rt[Q-X]===0&<(ve,d[Q])){Ie=Q;break}Ie===void 0?Me(ve,v,S,!0):(Rt[Ie-X]=E+1,Ie>=Xr?Xr=Ie:pt=!0,O(ve,d[Ie],g,null,v,S,L,A,R),ce++)}const Yr=pt?dc(Rt):yt;for(Q=Yr.length-1,E=Re-1;E>=0;E--){const ve=X+E,Ie=d[ve],zr=ve+1{const{el:S,type:L,transition:A,children:R,shapeFlag:E}=a;if(E&6){nt(a.component.subTree,d,g,C);return}if(E&128){a.suspense.move(d,g,C);return}if(E&64){L.move(a,d,g,ht);return}if(L===_e){r(S,d,g);for(let D=0;DA.enter(S),v);else{const{leave:D,delayLeave:$,afterLeave:q}=A,X=()=>r(S,d,g),te=()=>{D(S,()=>{X(),q&&q()})};$?$(S,X,te):te()}else r(S,d,g)},Me=(a,d,g,C=!1,v=!1)=>{const{type:S,props:L,ref:A,children:R,dynamicChildren:E,shapeFlag:P,patchFlag:D,dirs:$,cacheIndex:q}=a;if(D===-2&&(v=!1),A!=null&&En(A,null,g,a,!0),q!=null&&(d.renderCache[q]=void 0),P&256){d.ctx.deactivate(a);return}const X=P&1&&$,te=!Et(a);let Q;if(te&&(Q=L&&L.onVnodeBeforeUnmount)&&Se(Q,d,a),P&6)Li(a.component,g,C);else{if(P&128){a.suspense.unmount(g,C);return}X&&Pe(a,null,d,"beforeUnmount"),P&64?a.type.remove(a,d,g,ht,C):E&&!E.hasOnce&&(S!==_e||D>0&&D&64)?At(E,d,g,!1,!0):(S===_e&&D&384||!v&&P&16)&&At(R,d,g),C&&qr(a)}(te&&(Q=L&&L.onVnodeUnmounted)||X)&&ye(()=>{Q&&Se(Q,d,a),X&&Pe(a,null,d,"unmounted")},g)},qr=a=>{const{type:d,el:g,anchor:C,transition:v}=a;if(d===_e){Oi(g,C);return}if(d===Ft){y(a);return}const S=()=>{s(g),v&&!v.persisted&&v.afterLeave&&v.afterLeave()};if(a.shapeFlag&1&&v&&!v.persisted){const{leave:L,delayLeave:A}=v,R=()=>L(g,S);A?A(a.el,S,R):R()}else S()},Oi=(a,d)=>{let g;for(;a!==d;)g=m(a),s(a),a=g;s(d)},Li=(a,d,g)=>{const{bum:C,scope:v,update:S,subTree:L,um:A,m:R,a:E}=a;ms(R),ms(E),C&&dn(C),v.stop(),S&&(S.active=!1,Me(L,a,d,g)),A&&ye(A,d),ye(()=>{a.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&a.asyncDep&&!a.asyncResolved&&a.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},At=(a,d,g,C=!1,v=!1,S=0)=>{for(let L=S;L{if(a.shapeFlag&6)return zt(a.component.subTree);if(a.shapeFlag&128)return a.suspense.next();const d=m(a.anchor||a.el),g=d&&d[Ko];return g?m(g):d};let Dn=!1;const Gr=(a,d,g)=>{a==null?d._vnode&&Me(d._vnode,null,null,!0):O(d._vnode||null,a,d,null,null,null,g),Dn||(Dn=!0,os(),_n(),Dn=!1),d._vnode=a},ht={p:O,um:Me,m:nt,r:qr,mt:ee,mc:j,pc:V,pbc:b,n:zt,o:e};let Un,Bn;return t&&([Un,Bn]=t(ht)),{render:Gr,hydrate:Un,createApp:zl(Gr,Un)}}function Gn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function rt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Xo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Dr(e,t,n=!1){const r=e.children,s=t.children;if(k(r)&&k(s))for(let o=0;o>1,e[n[l]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Yo(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Yo(t)}function ms(e){if(e)for(let t=0;tCt(hc);function Ur(e,t){return $n(e,null,t)}function yu(e,t){return $n(e,null,{flush:"post"})}const ln={};function Fe(e,t,n){return $n(e,t,n)}function $n(e,t,{immediate:n,deep:r,flush:s,once:o,onTrack:i,onTrigger:l}=ne){if(t&&o){const T=t;t=(...F)=>{T(...F),I()}}const c=ae,u=T=>r===!0?T:Ge(T,r===!1?1:void 0);let f,h=!1,m=!1;if(de(e)?(f=()=>e.value,h=St(e)):vt(e)?(f=()=>u(e),h=!0):k(e)?(m=!0,h=e.some(T=>vt(T)||St(T)),f=()=>e.map(T=>{if(de(T))return T.value;if(vt(T))return u(T);if(W(T))return Ye(T,c,2)})):W(e)?t?f=()=>Ye(e,c,2):f=()=>(_&&_(),Ae(e,c,3,[w])):f=Te,t&&r){const T=f;f=()=>Ge(T())}let _,w=T=>{_=p.onStop=()=>{Ye(T,c,4),_=p.onStop=void 0}},O;if(Xt)if(w=Te,t?n&&Ae(t,c,3,[f(),m?[]:void 0,w]):f(),s==="sync"){const T=pc();O=T.__watcherHandles||(T.__watcherHandles=[])}else return Te;let B=m?new Array(e.length).fill(ln):ln;const K=()=>{if(!(!p.active||!p.dirty))if(t){const T=p.run();(r||h||(m?T.some((F,j)=>ze(F,B[j])):ze(T,B)))&&(_&&_(),Ae(t,c,3,[T,B===ln?void 0:m&&B[0]===ln?[]:B,w]),B=T)}else p.run()};K.allowRecurse=!!t;let H;s==="sync"?H=K:s==="post"?H=()=>ye(K,c&&c.suspense):(K.pre=!0,c&&(K.id=c.uid),H=()=>In(K));const p=new Ar(f,Te,H),y=no(),I=()=>{p.stop(),y&&Cr(y.effects,p)};return t?n?K():B=p.run():s==="post"?ye(p.run.bind(p),c&&c.suspense):p.run(),O&&O.push(I),I}function gc(e,t,n){const r=this.proxy,s=ie(e)?e.includes(".")?zo(r,e):()=>r[e]:e.bind(r,r);let o;W(t)?o=t:(o=t.handler,n=t);const i=Gt(this),l=$n(s,o.bind(r),n);return i(),l}function zo(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s{Ge(r,t,n)});else if(zs(e)){for(const r in e)Ge(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Ge(e[r],t,n)}return e}const mc=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Oe(t)}Modifiers`]||e[`${Ze(t)}Modifiers`];function yc(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||ne;let s=n;const o=t.startsWith("update:"),i=o&&mc(r,t.slice(7));i&&(i.trim&&(s=n.map(f=>ie(f)?f.trim():f)),i.number&&(s=n.map(cr)));let l,c=r[l=fn(t)]||r[l=fn(Oe(t))];!c&&o&&(c=r[l=fn(Ze(t))]),c&&Ae(c,e,6,s);const u=r[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ae(u,e,6,s)}}function Jo(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},l=!1;if(!W(e)){const c=u=>{const f=Jo(u,t,!0);f&&(l=!0,fe(i,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(Z(e)&&r.set(e,null),null):(k(o)?o.forEach(c=>i[c]=null):fe(i,o),Z(e)&&r.set(e,i),i)}function Hn(e,t){return!e||!Kt(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,Ze(t))||z(e,t))}function Xn(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:l,emit:c,render:u,renderCache:f,props:h,data:m,setupState:_,ctx:w,inheritAttrs:O}=e,B=bn(e);let K,H;try{if(n.shapeFlag&4){const y=s||r,I=y;K=xe(u.call(I,y,f,h,_,m,w)),H=l}else{const y=t;K=xe(y.length>1?y(h,{attrs:l,slots:i,emit:c}):y(h,null)),H=t.props?l:_c(l)}}catch(y){$t.length=0,Wt(y,e,1),K=le(me)}let p=K;if(H&&O!==!1){const y=Object.keys(H),{shapeFlag:I}=p;y.length&&I&7&&(o&&y.some(Er)&&(H=bc(H,o)),p=Je(p,H,!1,!0))}return n.dirs&&(p=Je(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&(p.transition=n.transition),K=p,bn(B),K}const _c=e=>{let t;for(const n in e)(n==="class"||n==="style"||Kt(n))&&((t||(t={}))[n]=e[n]);return t},bc=(e,t)=>{const n={};for(const r in e)(!Er(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function vc(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:l,patchFlag:c}=t,u=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?ys(r,i,u):!!i;if(c&8){const f=t.dynamicProps;for(let h=0;he.__isSuspense;function Qo(e,t){t&&t.pendingBranch?k(e)?t.effects.push(...e):t.effects.push(e):Tl(e)}const _e=Symbol.for("v-fgt"),ut=Symbol.for("v-txt"),me=Symbol.for("v-cmt"),Ft=Symbol.for("v-stc"),$t=[];let Ee=null;function Zo(e=!1){$t.push(Ee=e?null:[])}function Cc(){$t.pop(),Ee=$t[$t.length-1]||null}let Ut=1;function _s(e){Ut+=e,e<0&&Ee&&(Ee.hasOnce=!0)}function ei(e){return e.dynamicChildren=Ut>0?Ee||yt:null,Cc(),Ut>0&&Ee&&Ee.push(e),e}function _u(e,t,n,r,s,o){return ei(ri(e,t,n,r,s,o,!0))}function ti(e,t,n,r,s){return ei(le(e,t,n,r,s,!0))}function Cn(e){return e?e.__v_isVNode===!0:!1}function lt(e,t){return e.type===t.type&&e.key===t.key}const ni=({key:e})=>e??null,pn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ie(e)||de(e)||W(e)?{i:ue,r:e,k:t,f:!!n}:e:null);function ri(e,t=null,n=null,r=0,s=null,o=e===_e?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ni(t),ref:t&&pn(t),scopeId:Pn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:ue};return l?(Br(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=ie(n)?8:16),Ut>0&&!i&&Ee&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Ee.push(c),c}const le=Sc;function Sc(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===Lo)&&(e=me),Cn(e)){const l=Je(e,t,!0);return n&&Br(l,n),Ut>0&&!o&&Ee&&(l.shapeFlag&6?Ee[Ee.indexOf(e)]=l:Ee.push(l)),l.patchFlag=-2,l}if(Nc(e)&&(e=e.__vccOpts),t){t=xc(t);let{class:l,style:c}=t;l&&!ie(l)&&(t.class=Tr(l)),Z(c)&&(go(c)&&!k(c)&&(c=fe({},c)),t.style=xr(c))}const i=ie(e)?1:Ec(e)?128:sc(e)?64:Z(e)?4:W(e)?2:0;return ri(e,t,n,r,s,i,o,!0)}function xc(e){return e?go(e)||Ho(e)?fe({},e):e:null}function Je(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:l,transition:c}=e,u=t?Tc(s||{},t):s,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&ni(u),ref:t&&t.ref?n&&o?k(o)?o.concat(pn(t)):[o,pn(t)]:pn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==_e?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Je(e.ssContent),ssFallback:e.ssFallback&&Je(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&vn(f,c.clone(f)),f}function si(e=" ",t=0){return le(ut,null,e,t)}function bu(e,t){const n=le(Ft,null,e);return n.staticCount=t,n}function vu(e="",t=!1){return t?(Zo(),ti(me,null,e)):le(me,null,e)}function xe(e){return e==null||typeof e=="boolean"?le(me):k(e)?le(_e,null,e.slice()):typeof e=="object"?qe(e):le(ut,null,String(e))}function qe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Je(e)}function Br(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(k(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Br(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!Ho(t)?t._ctx=ue:s===3&&ue&&(ue.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else W(t)?(t={default:t,_ctx:ue},n=32):(t=String(t),r&64?(n=16,t=[si(t)]):n=8);e.children=t,e.shapeFlag|=n}function Tc(...e){const t={};for(let n=0;nae||ue;let Sn,br;{const e=Qs(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};Sn=t("__VUE_INSTANCE_SETTERS__",n=>ae=n),br=t("__VUE_SSR_SETTERS__",n=>Xt=n)}const Gt=e=>{const t=ae;return Sn(e),e.scope.on(),()=>{e.scope.off(),Sn(t)}},bs=()=>{ae&&ae.scope.off(),Sn(null)};function oi(e){return e.vnode.shapeFlag&4}let Xt=!1;function Lc(e,t=!1,n=!1){t&&br(t);const{props:r,children:s}=e.vnode,o=oi(e);Ql(e,r,o,t),nc(e,s,n);const i=o?Mc(e,t):void 0;return t&&br(!1),i}function Mc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Bl);const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?li(e):null,o=Gt(e);et();const i=Ye(r,e,0,[e.props,s]);if(tt(),o(),Xs(i)){if(i.then(bs,bs),t)return i.then(l=>{vs(e,l,t)}).catch(l=>{Wt(l,e,0)});e.asyncDep=i}else vs(e,i,t)}else ii(e,t)}function vs(e,t,n){W(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=bo(t)),ii(e,n)}let ws;function ii(e,t,n){const r=e.type;if(!e.render){if(!t&&ws&&!r.render){const s=r.template||jr(e).template;if(s){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=r,u=fe(fe({isCustomElement:o,delimiters:l},i),c);r.render=ws(s,u)}}e.render=r.render||Te}{const s=Gt(e);et();try{Kl(e)}finally{tt(),s()}}}const Ic={get(e,t){return be(e,"get",""),e[t]}};function li(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Ic),slots:e.slots,emit:e.emit,expose:t}}function Vn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(bo(hn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in It)return It[n](e)},has(t,n){return n in t||n in It}})):e.proxy}function Pc(e,t=!0){return W(e)?e.displayName||e.name:e.name||t&&e.__name}function Nc(e){return W(e)&&"__vccOpts"in e}const se=(e,t)=>pl(e,t,Xt);function vr(e,t,n){const r=arguments.length;return r===2?Z(t)&&!k(t)?Cn(t)?le(e,null,[t]):le(e,t):le(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Cn(n)&&(n=[n]),le(e,t,n))}const Fc="3.4.35";/** +* @vue/runtime-dom v3.4.35 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const $c="http://www.w3.org/2000/svg",Hc="http://www.w3.org/1998/Math/MathML",je=typeof document<"u"?document:null,Es=je&&je.createElement("template"),jc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?je.createElementNS($c,e):t==="mathml"?je.createElementNS(Hc,e):n?je.createElement(e,{is:n}):je.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>je.createTextNode(e),createComment:e=>je.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>je.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{Es.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const l=Es.content;if(r==="svg"||r==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Be="transition",Ot="animation",Bt=Symbol("_vtc"),ci=(e,{slots:t})=>vr(Ml,Vc(e),t);ci.displayName="Transition";const ai={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};ci.props=fe({},Co,ai);const st=(e,t=[])=>{k(e)?e.forEach(n=>n(...t)):e&&e(...t)},Cs=e=>e?k(e)?e.some(t=>t.length>1):e.length>1:!1;function Vc(e){const t={};for(const x in e)x in ai||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:u=i,appearToClass:f=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:_=`${n}-leave-to`}=e,w=Dc(s),O=w&&w[0],B=w&&w[1],{onBeforeEnter:K,onEnter:H,onEnterCancelled:p,onLeave:y,onLeaveCancelled:I,onBeforeAppear:T=K,onAppear:F=H,onAppearCancelled:j=p}=t,M=(x,G,ee)=>{ot(x,G?f:l),ot(x,G?u:i),ee&&ee()},b=(x,G)=>{x._isLeaving=!1,ot(x,h),ot(x,_),ot(x,m),G&&G()},N=x=>(G,ee)=>{const re=x?F:H,U=()=>M(G,x,ee);st(re,[G,U]),Ss(()=>{ot(G,x?c:o),ke(G,x?f:l),Cs(re)||xs(G,r,O,U)})};return fe(t,{onBeforeEnter(x){st(K,[x]),ke(x,o),ke(x,i)},onBeforeAppear(x){st(T,[x]),ke(x,c),ke(x,u)},onEnter:N(!1),onAppear:N(!0),onLeave(x,G){x._isLeaving=!0;const ee=()=>b(x,G);ke(x,h),ke(x,m),kc(),Ss(()=>{x._isLeaving&&(ot(x,h),ke(x,_),Cs(y)||xs(x,r,B,ee))}),st(y,[x,ee])},onEnterCancelled(x){M(x,!1),st(p,[x])},onAppearCancelled(x){M(x,!0),st(j,[x])},onLeaveCancelled(x){b(x),st(I,[x])}})}function Dc(e){if(e==null)return null;if(Z(e))return[Yn(e.enter),Yn(e.leave)];{const t=Yn(e);return[t,t]}}function Yn(e){return $i(e)}function ke(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Bt]||(e[Bt]=new Set)).add(t)}function ot(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Bt];n&&(n.delete(t),n.size||(e[Bt]=void 0))}function Ss(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Uc=0;function xs(e,t,n,r){const s=e._endId=++Uc,o=()=>{s===e._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=Bc(e,t);if(!i)return r();const u=i+"end";let f=0;const h=()=>{e.removeEventListener(u,m),o()},m=_=>{_.target===e&&++f>=c&&h()};setTimeout(()=>{f(n[w]||"").split(", "),s=r(`${Be}Delay`),o=r(`${Be}Duration`),i=Ts(s,o),l=r(`${Ot}Delay`),c=r(`${Ot}Duration`),u=Ts(l,c);let f=null,h=0,m=0;t===Be?i>0&&(f=Be,h=i,m=o.length):t===Ot?u>0&&(f=Ot,h=u,m=c.length):(h=Math.max(i,u),f=h>0?i>u?Be:Ot:null,m=f?f===Be?o.length:c.length:0);const _=f===Be&&/\b(transform|all)(,|$)/.test(r(`${Be}Property`).toString());return{type:f,timeout:h,propCount:m,hasTransform:_}}function Ts(e,t){for(;e.lengthAs(n)+As(e[r])))}function As(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function kc(){return document.body.offsetHeight}function Kc(e,t,n){const r=e[Bt];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Rs=Symbol("_vod"),Wc=Symbol("_vsh"),qc=Symbol(""),Gc=/(^|;)\s*display\s*:/;function Xc(e,t,n){const r=e.style,s=ie(n);let o=!1;if(n&&!s){if(t)if(ie(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&gn(r,l,"")}else for(const i in t)n[i]==null&&gn(r,i,"");for(const i in n)i==="display"&&(o=!0),gn(r,i,n[i])}else if(s){if(t!==n){const i=r[qc];i&&(n+=";"+i),r.cssText=n,o=Gc.test(n)}}else t&&e.removeAttribute("style");Rs in e&&(e[Rs]=o?r.display:"",e[Wc]&&(r.display="none"))}const Os=/\s*!important$/;function gn(e,t,n){if(k(n))n.forEach(r=>gn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Yc(e,t);Os.test(n)?e.setProperty(Ze(r),n.replace(Os,""),"important"):e[r]=n}}const Ls=["Webkit","Moz","ms"],zn={};function Yc(e,t){const n=zn[t];if(n)return n;let r=Oe(t);if(r!=="filter"&&r in e)return zn[t]=r;r=An(r);for(let s=0;sJn||(ea.then(()=>Jn=0),Jn=Date.now());function na(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Ae(ra(r,n.value),t,5,[r])};return n.value=e,n.attached=ta(),n}function ra(e,t){if(k(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const Fs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,sa=(e,t,n,r,s,o)=>{const i=s==="svg";t==="class"?Kc(e,r,i):t==="style"?Xc(e,n,r):Kt(t)?Er(t)||Qc(e,t,n,r,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):oa(e,t,r,i))?(zc(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Is(e,t,r,i,o,t!=="value")):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Is(e,t,r,i))};function oa(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Fs(t)&&W(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Fs(t)&&ie(n)?!1:t in e}const $s=e=>{const t=e.props["onUpdate:modelValue"]||!1;return k(t)?n=>dn(t,n):t};function ia(e){e.target.composing=!0}function Hs(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Qn=Symbol("_assign"),wu={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[Qn]=$s(s);const o=r||s.props&&s.props.type==="number";mt(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=cr(l)),e[Qn](l)}),n&&mt(e,"change",()=>{e.value=e.value.trim()}),t||(mt(e,"compositionstart",ia),mt(e,"compositionend",Hs),mt(e,"change",Hs))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:s,number:o}},i){if(e[Qn]=$s(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?cr(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(r&&t===n||s&&e.value.trim()===c)||(e.value=c))}},la=["ctrl","shift","alt","meta"],ca={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>la.some(n=>e[`${n}Key`]&&!t.includes(n))},Eu=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(s,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=s=>{if(!("key"in s))return;const o=Ze(s.key);if(t.some(i=>i===o||aa[i]===o))return e(s)})},ui=fe({patchProp:sa},jc);let Ht,js=!1;function ua(){return Ht||(Ht=uc(ui))}function fa(){return Ht=js?Ht:fc(ui),js=!0,Ht}const Su=(...e)=>{const t=ua().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=di(r);if(!s)return;const o=t._component;!W(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,fi(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t},xu=(...e)=>{const t=fa().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=di(r);if(s)return n(s,!0,fi(s))},t};function fi(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function di(e){return ie(e)?document.querySelector(e):e}const Tu=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},da="modulepreload",ha=function(e){return"/GeometryOps.jl/previews/PR195/"+e},Vs={},Au=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),i=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));s=Promise.all(n.map(l=>{if(l=ha(l),l in Vs)return;Vs[l]=!0;const c=l.endsWith(".css"),u=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const f=document.createElement("link");if(f.rel=c?"stylesheet":da,c||(f.as="script",f.crossOrigin=""),f.href=l,i&&f.setAttribute("nonce",i),document.head.appendChild(f),c)return new Promise((h,m)=>{f.addEventListener("load",h),f.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${l}`)))})}))}return s.then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},pa=window.__VP_SITE_DATA__;function kr(e){return no()?(qi(e),!0):!1}function $e(e){return typeof e=="function"?e():_o(e)}const hi=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const ga=Object.prototype.toString,ma=e=>ga.call(e)==="[object Object]",kt=()=>{},Ds=ya();function ya(){var e,t;return hi&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function _a(e,t){function n(...r){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(o)})}return n}const pi=e=>e();function ba(e,t={}){let n,r,s=kt;const o=l=>{clearTimeout(l),s(),s=kt};return l=>{const c=$e(e),u=$e(t.maxWait);return n&&o(n),c<=0||u!==void 0&&u<=0?(r&&(o(r),r=null),Promise.resolve(l())):new Promise((f,h)=>{s=t.rejectOnCancel?h:f,u&&!r&&(r=setTimeout(()=>{n&&o(n),r=null,f(l())},u)),n=setTimeout(()=>{r&&o(r),r=null,f(l())},c)})}}function va(e=pi){const t=oe(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...o)=>{t.value&&e(...o)};return{isActive:Ln(t),pause:n,resume:r,eventFilter:s}}function wa(e){return jn()}function gi(...e){if(e.length!==1)return wl(...e);const t=e[0];return typeof t=="function"?Ln(_l(()=>({get:t,set:kt}))):oe(t)}function mi(e,t,n={}){const{eventFilter:r=pi,...s}=n;return Fe(e,_a(r,t),s)}function Ea(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:o,pause:i,resume:l,isActive:c}=va(r);return{stop:mi(e,t,{...s,eventFilter:o}),pause:i,resume:l,isActive:c}}function Kr(e,t=!0,n){wa()?Tt(e,n):t?e():Mn(e)}function Ru(e,t,n={}){const{debounce:r=0,maxWait:s=void 0,...o}=n;return mi(e,t,{...o,eventFilter:ba(r,{maxWait:s})})}function Ou(e,t,n){let r;de(n)?r={evaluating:n}:r={};const{lazy:s=!1,evaluating:o=void 0,shallow:i=!0,onError:l=kt}=r,c=oe(!s),u=i?Fr(t):oe(t);let f=0;return Ur(async h=>{if(!c.value)return;f++;const m=f;let _=!1;o&&Promise.resolve().then(()=>{o.value=!0});try{const w=await e(O=>{h(()=>{o&&(o.value=!1),_||O()})});m===f&&(u.value=w)}catch(w){l(w)}finally{o&&m===f&&(o.value=!1),_=!0}}),s?se(()=>(c.value=!0,u.value)):u}function yi(e){var t;const n=$e(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Le=hi?window:void 0;function xt(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Le):[t,n,r,s]=e,!t)return kt;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],i=()=>{o.forEach(f=>f()),o.length=0},l=(f,h,m,_)=>(f.addEventListener(h,m,_),()=>f.removeEventListener(h,m,_)),c=Fe(()=>[yi(t),$e(s)],([f,h])=>{if(i(),!f)return;const m=ma(h)?{...h}:h;o.push(...n.flatMap(_=>r.map(w=>l(f,_,w,m))))},{immediate:!0,flush:"post"}),u=()=>{c(),i()};return kr(u),u}function Ca(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Lu(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=Le,eventName:o="keydown",passive:i=!1,dedupe:l=!1}=r,c=Ca(t);return xt(s,o,f=>{f.repeat&&$e(l)||c(f)&&n(f)},i)}function Sa(){const e=oe(!1),t=jn();return t&&Tt(()=>{e.value=!0},t),e}function xa(e){const t=Sa();return se(()=>(t.value,!!e()))}function _i(e,t={}){const{window:n=Le}=t,r=xa(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const o=oe(!1),i=u=>{o.value=u.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},c=Ur(()=>{r.value&&(l(),s=n.matchMedia($e(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),o.value=s.matches)});return kr(()=>{c(),l(),s=void 0}),o}const cn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},an="__vueuse_ssr_handlers__",Ta=Aa();function Aa(){return an in cn||(cn[an]=cn[an]||{}),cn[an]}function bi(e,t){return Ta[e]||t}function Ra(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Oa={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Us="vueuse-storage";function Wr(e,t,n,r={}){var s;const{flush:o="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:f,window:h=Le,eventFilter:m,onError:_=b=>{console.error(b)},initOnMounted:w}=r,O=(f?Fr:oe)(typeof t=="function"?t():t);if(!n)try{n=bi("getDefaultStorage",()=>{var b;return(b=Le)==null?void 0:b.localStorage})()}catch(b){_(b)}if(!n)return O;const B=$e(t),K=Ra(B),H=(s=r.serializer)!=null?s:Oa[K],{pause:p,resume:y}=Ea(O,()=>T(O.value),{flush:o,deep:i,eventFilter:m});h&&l&&Kr(()=>{xt(h,"storage",j),xt(h,Us,M),w&&j()}),w||j();function I(b,N){h&&h.dispatchEvent(new CustomEvent(Us,{detail:{key:e,oldValue:b,newValue:N,storageArea:n}}))}function T(b){try{const N=n.getItem(e);if(b==null)I(N,null),n.removeItem(e);else{const x=H.write(b);N!==x&&(n.setItem(e,x),I(N,x))}}catch(N){_(N)}}function F(b){const N=b?b.newValue:n.getItem(e);if(N==null)return c&&B!=null&&n.setItem(e,H.write(B)),B;if(!b&&u){const x=H.read(N);return typeof u=="function"?u(x,B):K==="object"&&!Array.isArray(x)?{...B,...x}:x}else return typeof N!="string"?N:H.read(N)}function j(b){if(!(b&&b.storageArea!==n)){if(b&&b.key==null){O.value=B;return}if(!(b&&b.key!==e)){p();try{(b==null?void 0:b.newValue)!==H.write(O.value)&&(O.value=F(b))}catch(N){_(N)}finally{b?Mn(y):y()}}}}function M(b){j(b.detail)}return O}function vi(e){return _i("(prefers-color-scheme: dark)",e)}function La(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Le,storage:o,storageKey:i="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:u,disableTransition:f=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},m=vi({window:s}),_=se(()=>m.value?"dark":"light"),w=c||(i==null?gi(r):Wr(i,r,o,{window:s,listenToStorageChanges:l})),O=se(()=>w.value==="auto"?_.value:w.value),B=bi("updateHTMLAttrs",(y,I,T)=>{const F=typeof y=="string"?s==null?void 0:s.document.querySelector(y):yi(y);if(!F)return;let j;if(f&&(j=s.document.createElement("style"),j.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),s.document.head.appendChild(j)),I==="class"){const M=T.split(/\s/g);Object.values(h).flatMap(b=>(b||"").split(/\s/g)).filter(Boolean).forEach(b=>{M.includes(b)?F.classList.add(b):F.classList.remove(b)})}else F.setAttribute(I,T);f&&(s.getComputedStyle(j).opacity,document.head.removeChild(j))});function K(y){var I;B(t,n,(I=h[y])!=null?I:y)}function H(y){e.onChanged?e.onChanged(y,K):K(y)}Fe(O,H,{flush:"post",immediate:!0}),Kr(()=>H(O.value));const p=se({get(){return u?w.value:O.value},set(y){w.value=y}});try{return Object.assign(p,{store:w,system:_,state:O})}catch{return p}}function Ma(e={}){const{valueDark:t="dark",valueLight:n="",window:r=Le}=e,s=La({...e,onChanged:(l,c)=>{var u;e.onChanged?(u=e.onChanged)==null||u.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),o=se(()=>s.system?s.system.value:vi({window:r}).value?"dark":"light");return se({get(){return s.value==="dark"},set(l){const c=l?"dark":"light";o.value===c?s.value="auto":s.value=c}})}function Zn(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Mu(e,t,n={}){const{window:r=Le}=n;return Wr(e,t,r==null?void 0:r.localStorage,n)}function wi(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const er=new WeakMap;function Iu(e,t=!1){const n=oe(t);let r=null,s="";Fe(gi(e),l=>{const c=Zn($e(l));if(c){const u=c;if(er.get(u)||er.set(u,u.style.overflow),u.style.overflow!=="hidden"&&(s=u.style.overflow),u.style.overflow==="hidden")return n.value=!0;if(n.value)return u.style.overflow="hidden"}},{immediate:!0});const o=()=>{const l=Zn($e(e));!l||n.value||(Ds&&(r=xt(l,"touchmove",c=>{Ia(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},i=()=>{const l=Zn($e(e));!l||!n.value||(Ds&&(r==null||r()),l.style.overflow=s,er.delete(l),n.value=!1)};return kr(i),se({get(){return n.value},set(l){l?o():i()}})}function Pu(e,t,n={}){const{window:r=Le}=n;return Wr(e,t,r==null?void 0:r.sessionStorage,n)}function Nu(e={}){const{window:t=Le,behavior:n="auto"}=e;if(!t)return{x:oe(0),y:oe(0)};const r=oe(t.scrollX),s=oe(t.scrollY),o=se({get(){return r.value},set(l){scrollTo({left:l,behavior:n})}}),i=se({get(){return s.value},set(l){scrollTo({top:l,behavior:n})}});return xt(t,"scroll",()=>{r.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:o,y:i}}function Fu(e={}){const{window:t=Le,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:o=!0}=e,i=oe(n),l=oe(r),c=()=>{t&&(o?(i.value=t.innerWidth,l.value=t.innerHeight):(i.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(c(),Kr(c),xt("resize",c,{passive:!0}),s){const u=_i("(orientation: portrait)");Fe(u,()=>c())}return{width:i,height:l}}var tr={BASE_URL:"/GeometryOps.jl/previews/PR195/",DEV:!1,MODE:"production",PROD:!0,SSR:!1},nr={};const Ei=/^(?:[a-z]+:|\/\/)/i,Pa="vitepress-theme-appearance",Na=/#.*$/,Fa=/[?#].*$/,$a=/(?:(^|\/)index)?\.(?:md|html)$/,he=typeof document<"u",Ci={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Ha(e,t,n=!1){if(t===void 0)return!1;if(e=Bs(`/${e}`),n)return new RegExp(t).test(e);if(Bs(t)!==e)return!1;const r=t.match(Na);return r?(he?location.hash:"")===r[0]:!0}function Bs(e){return decodeURI(e).replace(Fa,"").replace($a,"$1")}function ja(e){return Ei.test(e)}function Va(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!ja(n)&&Ha(t,`/${n}/`,!0))||"root"}function Da(e,t){var r,s,o,i,l,c,u;const n=Va(e,t);return Object.assign({},e,{localeIndex:n,lang:((r=e.locales[n])==null?void 0:r.lang)??e.lang,dir:((s=e.locales[n])==null?void 0:s.dir)??e.dir,title:((o=e.locales[n])==null?void 0:o.title)??e.title,titleTemplate:((i=e.locales[n])==null?void 0:i.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:xi(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(u=e.locales[n])==null?void 0:u.themeConfig}})}function Si(e,t){const n=t.title||e.title,r=t.titleTemplate??e.titleTemplate;if(typeof r=="string"&&r.includes(":title"))return r.replace(/:title/g,n);const s=Ua(e.title,r);return n===s.slice(3)?n:`${n}${s}`}function Ua(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Ba(e,t){const[n,r]=t;if(n!=="meta")return!1;const s=Object.entries(r)[0];return s==null?!1:e.some(([o,i])=>o===n&&i[s[0]]===s[1])}function xi(e,t){return[...e.filter(n=>!Ba(t,n)),...t]}const ka=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Ka=/^[a-z]:/i;function ks(e){const t=Ka.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(ka,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const rr=new Set;function Wa(e){if(rr.size===0){const n=typeof process=="object"&&(nr==null?void 0:nr.VITE_EXTRA_EXTENSIONS)||(tr==null?void 0:tr.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(r=>rr.add(r))}const t=e.split(".").pop();return t==null||!rr.has(t.toLowerCase())}function $u(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const qa=Symbol(),ft=Fr(pa);function Hu(e){const t=se(()=>Da(ft.value,e.data.relativePath)),n=t.value.appearance,r=n==="force-dark"?oe(!0):n?Ma({storageKey:Pa,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):oe(!1),s=oe(he?location.hash:"");return he&&window.addEventListener("hashchange",()=>{s.value=location.hash}),Fe(()=>e.data,()=>{s.value=he?location.hash:""}),{site:t,theme:se(()=>t.value.themeConfig),page:se(()=>e.data),frontmatter:se(()=>e.data.frontmatter),params:se(()=>e.data.params),lang:se(()=>t.value.lang),dir:se(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:se(()=>t.value.localeIndex||"root"),title:se(()=>Si(t.value,e.data)),description:se(()=>e.data.description||t.value.description),isDark:r,hash:se(()=>s.value)}}function Ga(){const e=Ct(qa);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Xa(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Ks(e){return Ei.test(e)||!e.startsWith("/")?e:Xa(ft.value.base,e)}function Ya(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),he){const n="/GeometryOps.jl/previews/PR195/";t=ks(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let r=__VP_HASH_MAP__[t.toLowerCase()];if(r||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",r=__VP_HASH_MAP__[t.toLowerCase()]),!r)return null;t=`${n}assets/${t}.${r}.js`}else t=`./${ks(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let mn=[];function ju(e){mn.push(e),Fn(()=>{mn=mn.filter(t=>t!==e)})}function za(){let e=ft.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Ws(e,n);else if(Array.isArray(e))for(const r of e){const s=Ws(r,n);if(s){t=s;break}}return t}function Ws(e,t){const n=document.querySelector(e);if(!n)return 0;const r=n.getBoundingClientRect().bottom;return r<0?0:r+t}const Ja=Symbol(),Ti="http://a.com",Qa=()=>({path:"/",component:null,data:Ci});function Vu(e,t){const n=On(Qa()),r={route:n,go:s};async function s(l=he?location.href:"/"){var c,u;l=sr(l),await((c=r.onBeforeRouteChange)==null?void 0:c.call(r,l))!==!1&&(he&&l!==sr(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await i(l),await((u=r.onAfterRouteChanged)==null?void 0:u.call(r,l)))}let o=null;async function i(l,c=0,u=!1){var m;if(await((m=r.onBeforePageLoad)==null?void 0:m.call(r,l))===!1)return;const f=new URL(l,Ti),h=o=f.pathname;try{let _=await e(h);if(!_)throw new Error(`Page not found: ${h}`);if(o===h){o=null;const{default:w,__pageData:O}=_;if(!w)throw new Error(`Invalid route component: ${w}`);n.path=he?h:Ks(h),n.component=hn(w),n.data=hn(O),he&&Mn(()=>{let B=ft.value.base+O.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ft.value.cleanUrls&&!B.endsWith("/")&&(B+=".html"),B!==f.pathname&&(f.pathname=B,l=B+f.search+f.hash,history.replaceState({},"",l)),f.hash&&!c){let K=null;try{K=document.getElementById(decodeURIComponent(f.hash).slice(1))}catch(H){console.warn(H)}if(K){qs(K,f.hash);return}}window.scrollTo(0,c)})}}catch(_){if(!/fetch|Page not found/.test(_.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(_),!u)try{const w=await fetch(ft.value.base+"hashmap.json");window.__VP_HASH_MAP__=await w.json(),await i(l,c,!0);return}catch{}if(o===h){o=null,n.path=he?h:Ks(h),n.component=t?hn(t):null;const w=he?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...Ci,relativePath:w}}}}return he&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const u=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(u==null)return;const{href:f,origin:h,pathname:m,hash:_,search:w}=new URL(u,c.baseURI),O=new URL(location.href);h===O.origin&&Wa(m)&&(l.preventDefault(),m===O.pathname&&w===O.search?(_!==O.hash&&(history.pushState({},"",f),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:O.href,newURL:f}))),_?qs(c,_,c.classList.contains("header-anchor")):window.scrollTo(0,0)):s(f))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await i(sr(location.href),l.state&&l.state.scrollPosition||0),(c=r.onAfterRouteChanged)==null||c.call(r,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),r}function Za(){const e=Ct(Ja);if(!e)throw new Error("useRouter() is called without provider.");return e}function Ai(){return Za().route}function qs(e,t,n=!1){let r=null;try{r=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(s){console.warn(s)}if(r){let s=function(){!n||Math.abs(i-window.scrollY)>window.innerHeight?window.scrollTo(0,i):window.scrollTo({left:0,top:i,behavior:"smooth"})};const o=parseInt(window.getComputedStyle(r).paddingTop,10),i=window.scrollY+r.getBoundingClientRect().top-za()+o;requestAnimationFrame(s)}}function sr(e){const t=new URL(e,Ti);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),ft.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const or=()=>mn.forEach(e=>e()),Du=Hr({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Ai(),{site:n}=Ga();return()=>vr(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?vr(t.component,{onVnodeMounted:or,onVnodeUpdated:or,onVnodeUnmounted:or}):"404 Page Not Found"])}}),Uu=Hr({setup(e,{slots:t}){const n=oe(!1);return Tt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Bu(){he&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement;if(!r)return;const s=Array.from(r.querySelectorAll("input")).indexOf(t);if(s<0)return;const o=r.querySelector(".blocks");if(!o)return;const i=Array.from(o.children).find(u=>u.classList.contains("active"));if(!i)return;const l=o.children[s];if(!l||i===l)return;i.classList.remove("active"),l.classList.add("active");const c=r==null?void 0:r.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function ku(){if(he){const e=new WeakMap;window.addEventListener("click",t=>{var r;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const s=n.parentElement,o=(r=n.nextElementSibling)==null?void 0:r.nextElementSibling;if(!s||!o)return;const i=/language-(shellscript|shell|bash|sh|zsh)/.test(s.className),l=[".vp-copy-ignore",".diff.remove"],c=o.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(f=>f.remove());let u=c.textContent||"";i&&(u=u.replace(/^ *(\$|>) /gm,"").trim()),eu(u).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const f=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,f)})}})}}async function eu(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const r=document.getSelection(),s=r?r.rangeCount>0&&r.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),s&&(r.removeAllRanges(),r.addRange(s)),n&&n.focus()}}function Ku(e,t){let n=!0,r=[];const s=o=>{if(n){n=!1,o.forEach(l=>{const c=ir(l);for(const u of document.head.children)if(u.isEqualNode(c)){r.push(u);return}});return}const i=o.map(ir);r.forEach((l,c)=>{const u=i.findIndex(f=>f==null?void 0:f.isEqualNode(l??null));u!==-1?delete i[u]:(l==null||l.remove(),delete r[c])}),i.forEach(l=>l&&document.head.appendChild(l)),r=[...r,...i].filter(Boolean)};Ur(()=>{const o=e.data,i=t.value,l=o&&o.description,c=o&&o.frontmatter.head||[],u=Si(i,o);u!==document.title&&(document.title=u);const f=l||i.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==f&&h.setAttribute("content",f):ir(["meta",{name:"description",content:f}]),s(xi(i.head,nu(c)))})}function ir([e,t,n]){const r=document.createElement(e);for(const s in t)r.setAttribute(s,t[s]);return n&&(r.innerHTML=n),e==="script"&&!t.async&&(r.async=!1),r}function tu(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function nu(e){return e.filter(t=>!tu(t))}const lr=new Set,Ri=()=>document.createElement("link"),ru=e=>{const t=Ri();t.rel="prefetch",t.href=e,document.head.appendChild(t)},su=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let un;const ou=he&&(un=Ri())&&un.relList&&un.relList.supports&&un.relList.supports("prefetch")?ru:su;function Wu(){if(!he||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const r=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!lr.has(c)){lr.add(c);const u=Ya(c);u&&ou(u)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{hostname:i,pathname:l}=new URL(o.href instanceof SVGAnimatedString?o.href.animVal:o.href,o.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||o.target!=="_blank"&&i===location.hostname&&(l!==location.pathname?n.observe(o):lr.add(l))})})};Tt(r);const s=Ai();Fe(()=>s.path,r),Fn(()=>{n&&n.disconnect()})}export{Cu as $,yu as A,Hl as B,za as C,uu as D,du as E,_e as F,Fr as G,ju as H,le as I,fu as J,Ei as K,Ai as L,Tc as M,Ct as N,Fu as O,xr as P,Lu as Q,Mn as R,Nu as S,ci as T,he as U,Ln as V,au as W,Au as X,Iu as Y,Jl as Z,Tu as _,si as a,pu as a0,Ro as a1,Eu as a2,gu as a3,On as a4,wl as a5,vr as a6,bu as a7,Ku as a8,Ja as a9,Hu as aa,qa as ab,Du as ac,Uu as ad,ft as ae,xu as af,Vu as ag,Ya as ah,Wu as ai,ku as aj,Bu as ak,yi as al,kr as am,Ou as an,Pu as ao,Mu as ap,Ru as aq,Za as ar,xt as as,cu as at,wu as au,de as av,mu as aw,hn as ax,Su as ay,$u as az,ti as b,_u as c,Hr as d,vu as e,Wa as f,Ks as g,se as h,ja as i,ri as j,_o as k,lu as l,Ha as m,Tr as n,Zo as o,iu as p,_i as q,hu as r,oe as s,ki as t,Ga as u,Fe as v,Rl as w,Ur as x,Tt as y,Fn as z}; diff --git a/previews/PR195/assets/chunks/theme.Czc396Vw.js b/previews/PR195/assets/chunks/theme.Czc396Vw.js new file mode 100644 index 000000000..7f30f1310 --- /dev/null +++ b/previews/PR195/assets/chunks/theme.Czc396Vw.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.DO9T_jde.js","assets/chunks/framework.BjTE4JnT.js"])))=>i.map(i=>d[i]); +import{d as _,o as a,c as u,r as c,n as N,a as j,t as I,b as $,w as f,e as h,T as pe,_ as g,u as Je,i as Ye,f as Xe,g as fe,h as y,j as p,k as r,p as B,l as H,m as q,q as le,s as T,v as O,x as ee,y as R,z as he,A as _e,B as Qe,C as Ze,D as W,F as M,E,G as Te,H as te,I as k,J as D,K as we,L as ne,M as K,N as Y,O as xe,P as Ie,Q as ce,R as Ne,S as Me,U as oe,V as et,W as tt,X as nt,Y as Ae,Z as me,$ as ot,a0 as st,a1 as at,a2 as rt,a3 as Ce,a4 as it,a5 as lt,a6 as ct}from"./framework.BjTE4JnT.js";const ut=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(n){return(e,t)=>(a(),u("span",{class:N(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[j(I(e.text),1)])],2))}}),dt={key:0,class:"VPBackdrop"},vt=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(n){return(e,t)=>(a(),$(pe,{name:"fade"},{default:f(()=>[e.show?(a(),u("div",dt)):h("",!0)]),_:1}))}}),pt=g(vt,[["__scopeId","data-v-b06cdb19"]]),V=Je;function ft(n,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(n,e):(n(),(s=!0)&&setTimeout(()=>s=!1,e))}}function ue(n){return/^\//.test(n)?n:`/${n}`}function be(n){const{pathname:e,search:t,hash:s,protocol:o}=new URL(n,"http://a.com");if(Ye(n)||n.startsWith("#")||!o.startsWith("http")||!Xe(e))return n;const{site:i}=V(),l=e.endsWith("/")||e.endsWith(".html")?n:n.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${s}`);return fe(l)}function Q({correspondingLink:n=!1}={}){const{site:e,localeIndex:t,page:s,theme:o,hash:i}=V(),l=y(()=>{var v,m;return{label:(v=e.value.locales[t.value])==null?void 0:v.label,link:((m=e.value.locales[t.value])==null?void 0:m.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([v,m])=>l.value.label===m.label?[]:{text:m.label,link:ht(m.link||(v==="root"?"/":`/${v}/`),o.value.i18nRouting!==!1&&n,s.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:l}}function ht(n,e,t,s){return e?n.replace(/\/$/,"")+ue(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):n}const _t=n=>(B("data-v-951cab6c"),n=n(),H(),n),mt={class:"NotFound"},bt={class:"code"},kt={class:"title"},$t=_t(()=>p("div",{class:"divider"},null,-1)),gt={class:"quote"},yt={class:"action"},Pt=["href","aria-label"],St=_({__name:"NotFound",setup(n){const{theme:e}=V(),{currentLang:t}=Q();return(s,o)=>{var i,l,d,v,m;return a(),u("div",mt,[p("p",bt,I(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),p("h1",kt,I(((l=r(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),$t,p("blockquote",gt,I(((d=r(e).notFound)==null?void 0:d.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",yt,[p("a",{class:"link",href:r(fe)(r(t).link),"aria-label":((v=r(e).notFound)==null?void 0:v.linkLabel)??"go to home"},I(((m=r(e).notFound)==null?void 0:m.linkText)??"Take me home"),9,Pt)])])}}}),Vt=g(St,[["__scopeId","data-v-951cab6c"]]);function Be(n,e){if(Array.isArray(n))return Z(n);if(n==null)return[];e=ue(e);const t=Object.keys(n).sort((o,i)=>i.split("/").length-o.split("/").length).find(o=>e.startsWith(ue(o))),s=t?n[t]:[];return Array.isArray(s)?Z(s):Z(s.items,s.base)}function Lt(n){const e=[];let t=0;for(const s in n){const o=n[s];if(o.items){t=e.push(o);continue}e[t]||e.push({items:[]}),e[t].items.push(o)}return e}function Tt(n){const e=[];function t(s){for(const o of s)o.text&&o.link&&e.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&t(o.items)}return t(n),e}function de(n,e){return Array.isArray(e)?e.some(t=>de(n,t)):q(n,e.link)?!0:e.items?de(n,e.items):!1}function Z(n,e){return[...n].map(t=>{const s={...t},o=s.base||e;return o&&s.link&&(s.link=o+s.link),s.items&&(s.items=Z(s.items,o)),s})}function U(){const{frontmatter:n,page:e,theme:t}=V(),s=le("(min-width: 960px)"),o=T(!1),i=y(()=>{const C=t.value.sidebar,w=e.value.relativePath;return C?Be(C,w):[]}),l=T(i.value);O(i,(C,w)=>{JSON.stringify(C)!==JSON.stringify(w)&&(l.value=i.value)});const d=y(()=>n.value.sidebar!==!1&&l.value.length>0&&n.value.layout!=="home"),v=y(()=>m?n.value.aside==null?t.value.aside==="left":n.value.aside==="left":!1),m=y(()=>n.value.layout==="home"?!1:n.value.aside!=null?!!n.value.aside:t.value.aside!==!1),L=y(()=>d.value&&s.value),b=y(()=>d.value?Lt(l.value):[]);function P(){o.value=!0}function S(){o.value=!1}function A(){o.value?S():P()}return{isOpen:o,sidebar:l,sidebarGroups:b,hasSidebar:d,hasAside:m,leftAside:v,isSidebarEnabled:L,open:P,close:S,toggle:A}}function wt(n,e){let t;ee(()=>{t=n.value?document.activeElement:void 0}),R(()=>{window.addEventListener("keyup",s)}),he(()=>{window.removeEventListener("keyup",s)});function s(o){o.key==="Escape"&&n.value&&(e(),t==null||t.focus())}}function It(n){const{page:e,hash:t}=V(),s=T(!1),o=y(()=>n.value.collapsed!=null),i=y(()=>!!n.value.link),l=T(!1),d=()=>{l.value=q(e.value.relativePath,n.value.link)};O([e,n,t],d),R(d);const v=y(()=>l.value?!0:n.value.items?de(e.value.relativePath,n.value.items):!1),m=y(()=>!!(n.value.items&&n.value.items.length));ee(()=>{s.value=!!(o.value&&n.value.collapsed)}),_e(()=>{(l.value||v.value)&&(s.value=!1)});function L(){o.value&&(s.value=!s.value)}return{collapsed:s,collapsible:o,isLink:i,isActiveLink:l,hasActiveLink:v,hasChildren:m,toggle:L}}function Nt(){const{hasSidebar:n}=U(),e=le("(min-width: 960px)"),t=le("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:n.value?t.value:e.value)}}const ve=[];function He(n){return typeof n.outline=="object"&&!Array.isArray(n.outline)&&n.outline.label||n.outlineTitle||"On this page"}function ke(n){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:Mt(t),link:"#"+t.id,level:s}});return At(e,n)}function Mt(n){let e="";for(const t of n.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function At(n,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,o]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;n=n.filter(l=>l.level>=s&&l.level<=o),ve.length=0;for(const{element:l,link:d}of n)ve.push({element:l,link:d});const i=[];e:for(let l=0;l=0;v--){const m=n[v];if(m.level{requestAnimationFrame(i),window.addEventListener("scroll",s)}),Qe(()=>{l(location.hash)}),he(()=>{window.removeEventListener("scroll",s)});function i(){if(!t.value)return;const d=window.scrollY,v=window.innerHeight,m=document.body.offsetHeight,L=Math.abs(d+v-m)<1,b=ve.map(({element:S,link:A})=>({link:A,top:Bt(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,A)=>S.top-A.top);if(!b.length){l(null);return}if(d<1){l(null);return}if(L){l(b[b.length-1].link);return}let P=null;for(const{link:S,top:A}of b){if(A>d+Ze()+4)break;P=S}l(P)}function l(d){o&&o.classList.remove("active"),d==null?o=null:o=n.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const v=o;v?(v.classList.add("active"),e.value.style.top=v.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Bt(n){let e=0;for(;n!==document.body;){if(n===null)return NaN;e+=n.offsetTop,n=n.offsetParent}return e}const Ht=["href","title"],Et=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(n){function e({target:t}){const s=t.href.split("#")[1],o=document.getElementById(decodeURIComponent(s));o==null||o.focus({preventScroll:!0})}return(t,s)=>{const o=W("VPDocOutlineItem",!0);return a(),u("ul",{class:N(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(M,null,E(t.headers,({children:i,link:l,title:d})=>(a(),u("li",null,[p("a",{class:"outline-link",href:l,onClick:e,title:d},I(d),9,Ht),i!=null&&i.length?(a(),$(o,{key:0,headers:i},null,8,["headers"])):h("",!0)]))),256))],2)}}}),Ee=g(Et,[["__scopeId","data-v-3f927ebe"]]),Dt={class:"content"},Ft={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Ot=_({__name:"VPDocAsideOutline",setup(n){const{frontmatter:e,theme:t}=V(),s=Te([]);te(()=>{s.value=ke(e.value.outline??t.value.outline)});const o=T(),i=T();return Ct(o,i),(l,d)=>(a(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:N(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:o},[p("div",Dt,[p("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),p("div",Ft,I(r(He)(r(t))),1),k(Ee,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),jt=g(Ot,[["__scopeId","data-v-b38bf2ff"]]),Ut={class:"VPDocAsideCarbonAds"},Gt=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(n){const e=()=>null;return(t,s)=>(a(),u("div",Ut,[k(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),zt=n=>(B("data-v-6d7b3c46"),n=n(),H(),n),Kt={class:"VPDocAside"},Rt=zt(()=>p("div",{class:"spacer"},null,-1)),qt=_({__name:"VPDocAside",setup(n){const{theme:e}=V();return(t,s)=>(a(),u("div",Kt,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),k(jt),c(t.$slots,"aside-outline-after",{},void 0,!0),Rt,c(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),$(Gt,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):h("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Wt=g(qt,[["__scopeId","data-v-6d7b3c46"]]);function Jt(){const{theme:n,page:e}=V();return y(()=>{const{text:t="Edit this page",pattern:s=""}=n.value.editLink||{};let o;return typeof s=="function"?o=s(e.value):o=s.replace(/:path/g,e.value.filePath),{url:o,text:t}})}function Yt(){const{page:n,theme:e,frontmatter:t}=V();return y(()=>{var m,L,b,P,S,A,C,w;const s=Be(e.value.sidebar,n.value.relativePath),o=Tt(s),i=Xt(o,G=>G.link.replace(/[?#].*$/,"")),l=i.findIndex(G=>q(n.value.relativePath,G.link)),d=((m=e.value.docFooter)==null?void 0:m.prev)===!1&&!t.value.prev||t.value.prev===!1,v=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((b=i[l-1])==null?void 0:b.docFooterText)??((P=i[l-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((S=i[l-1])==null?void 0:S.link)},next:v?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=i[l+1])==null?void 0:A.docFooterText)??((C=i[l+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((w=i[l+1])==null?void 0:w.link)}}})}function Xt(n,e){const t=new Set;return n.filter(s=>{const o=e(s);return t.has(o)?!1:t.add(o)})}const F=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(n){const e=n,t=y(()=>e.tag??(e.href?"a":"span")),s=y(()=>e.href&&we.test(e.href)||e.target==="_blank");return(o,i)=>(a(),$(D(t.value),{class:N(["VPLink",{link:o.href,"vp-external-link-icon":s.value,"no-icon":o.noIcon}]),href:o.href?r(be)(o.href):void 0,target:o.target??(s.value?"_blank":void 0),rel:o.rel??(s.value?"noreferrer":void 0)},{default:f(()=>[c(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Qt={class:"VPLastUpdated"},Zt=["datetime"],xt=_({__name:"VPDocFooterLastUpdated",setup(n){const{theme:e,page:t,lang:s}=V(),o=y(()=>new Date(t.value.lastUpdated)),i=y(()=>o.value.toISOString()),l=T("");return R(()=>{ee(()=>{var d,v,m;l.value=new Intl.DateTimeFormat((v=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&v.forceLocale?s.value:void 0,((m=e.value.lastUpdated)==null?void 0:m.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(o.value)})}),(d,v)=>{var m;return a(),u("p",Qt,[j(I(((m=r(e).lastUpdated)==null?void 0:m.text)||r(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:i.value},I(l.value),9,Zt)])}}}),en=g(xt,[["__scopeId","data-v-475f71b8"]]),De=n=>(B("data-v-4f9813fa"),n=n(),H(),n),tn={key:0,class:"VPDocFooter"},nn={key:0,class:"edit-info"},on={key:0,class:"edit-link"},sn=De(()=>p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),an={key:1,class:"last-updated"},rn={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},ln=De(()=>p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),cn={class:"pager"},un=["innerHTML"],dn=["innerHTML"],vn={class:"pager"},pn=["innerHTML"],fn=["innerHTML"],hn=_({__name:"VPDocFooter",setup(n){const{theme:e,page:t,frontmatter:s}=V(),o=Jt(),i=Yt(),l=y(()=>e.value.editLink&&s.value.editLink!==!1),d=y(()=>t.value.lastUpdated),v=y(()=>l.value||d.value||i.value.prev||i.value.next);return(m,L)=>{var b,P,S,A;return v.value?(a(),u("footer",tn,[c(m.$slots,"doc-footer-before",{},void 0,!0),l.value||d.value?(a(),u("div",nn,[l.value?(a(),u("div",on,[k(F,{class:"edit-link-button",href:r(o).url,"no-icon":!0},{default:f(()=>[sn,j(" "+I(r(o).text),1)]),_:1},8,["href"])])):h("",!0),d.value?(a(),u("div",an,[k(en)])):h("",!0)])):h("",!0),(b=r(i).prev)!=null&&b.link||(P=r(i).next)!=null&&P.link?(a(),u("nav",rn,[ln,p("div",cn,[(S=r(i).prev)!=null&&S.link?(a(),$(F,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,un),p("span",{class:"title",innerHTML:r(i).prev.text},null,8,dn)]}),_:1},8,["href"])):h("",!0)]),p("div",vn,[(A=r(i).next)!=null&&A.link?(a(),$(F,{key:0,class:"pager-link next",href:r(i).next.link},{default:f(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,pn),p("span",{class:"title",innerHTML:r(i).next.text},null,8,fn)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),_n=g(hn,[["__scopeId","data-v-4f9813fa"]]),mn=n=>(B("data-v-83890dd9"),n=n(),H(),n),bn={class:"container"},kn=mn(()=>p("div",{class:"aside-curtain"},null,-1)),$n={class:"aside-container"},gn={class:"aside-content"},yn={class:"content"},Pn={class:"content-container"},Sn={class:"main"},Vn=_({__name:"VPDoc",setup(n){const{theme:e}=V(),t=ne(),{hasSidebar:s,hasAside:o,leftAside:i}=U(),l=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,v)=>{const m=W("Content");return a(),u("div",{class:N(["VPDoc",{"has-sidebar":r(s),"has-aside":r(o)}])},[c(d.$slots,"doc-top",{},void 0,!0),p("div",bn,[r(o)?(a(),u("div",{key:0,class:N(["aside",{"left-aside":r(i)}])},[kn,p("div",$n,[p("div",gn,[k(Wt,null,{"aside-top":f(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),p("div",yn,[p("div",Pn,[c(d.$slots,"doc-before",{},void 0,!0),p("main",Sn,[k(m,{class:N(["vp-doc",[l.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(_n,null,{"doc-footer-before":f(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(d.$slots,"doc-after",{},void 0,!0)])])]),c(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),Ln=g(Vn,[["__scopeId","data-v-83890dd9"]]),Tn=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(n){const e=n,t=y(()=>e.href&&we.test(e.href)),s=y(()=>e.tag||e.href?"a":"button");return(o,i)=>(a(),$(D(s.value),{class:N(["VPButton",[o.size,o.theme]]),href:o.href?r(be)(o.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[j(I(o.text),1)]),_:1},8,["class","href","target","rel"]))}}),wn=g(Tn,[["__scopeId","data-v-14206e74"]]),In=["src","alt"],Nn=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(n){return(e,t)=>{const s=W("VPImage",!0);return e.image?(a(),u(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),u("img",K({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(fe)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,In)):(a(),u(M,{key:1},[k(s,K({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),k(s,K({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),x=g(Nn,[["__scopeId","data-v-35a7d0b8"]]),Mn=n=>(B("data-v-955009fc"),n=n(),H(),n),An={class:"container"},Cn={class:"main"},Bn={key:0,class:"name"},Hn=["innerHTML"],En=["innerHTML"],Dn=["innerHTML"],Fn={key:0,class:"actions"},On={key:0,class:"image"},jn={class:"image-container"},Un=Mn(()=>p("div",{class:"image-bg"},null,-1)),Gn=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(n){const e=Y("hero-image-slot-exists");return(t,s)=>(a(),u("div",{class:N(["VPHero",{"has-image":t.image||r(e)}])},[p("div",An,[p("div",Cn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",Bn,[p("span",{innerHTML:t.name,class:"clip"},null,8,Hn)])):h("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,En)):h("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Dn)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",Fn,[(a(!0),u(M,null,E(t.actions,o=>(a(),u("div",{key:o.link,class:"action"},[k(wn,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link,target:o.target,rel:o.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),u("div",On,[p("div",jn,[Un,c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),$(x,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),zn=g(Gn,[["__scopeId","data-v-955009fc"]]),Kn=_({__name:"VPHomeHero",setup(n){const{frontmatter:e}=V();return(t,s)=>r(e).hero?(a(),$(zn,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),Rn=n=>(B("data-v-f5e9645b"),n=n(),H(),n),qn={class:"box"},Wn={key:0,class:"icon"},Jn=["innerHTML"],Yn=["innerHTML"],Xn=["innerHTML"],Qn={key:4,class:"link-text"},Zn={class:"link-text-value"},xn=Rn(()=>p("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),eo=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(n){return(e,t)=>(a(),$(F,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[p("article",qn,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",Wn,[k(x,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),$(x,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Jn)):h("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,Yn),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Xn)):h("",!0),e.linkText?(a(),u("div",Qn,[p("p",Zn,[j(I(e.linkText)+" ",1),xn])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),to=g(eo,[["__scopeId","data-v-f5e9645b"]]),no={key:0,class:"VPFeatures"},oo={class:"container"},so={class:"items"},ao=_({__name:"VPFeatures",props:{features:{}},setup(n){const e=n,t=y(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,o)=>s.features?(a(),u("div",no,[p("div",oo,[p("div",so,[(a(!0),u(M,null,E(s.features,i=>(a(),u("div",{key:i.title,class:N(["item",[t.value]])},[k(to,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),ro=g(ao,[["__scopeId","data-v-d0a190d7"]]),io=_({__name:"VPHomeFeatures",setup(n){const{frontmatter:e}=V();return(t,s)=>r(e).features?(a(),$(ro,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):h("",!0)}}),lo=_({__name:"VPHomeContent",setup(n){const{width:e}=xe({initialWidth:0,includeScrollbar:!1});return(t,s)=>(a(),u("div",{class:"vp-doc container",style:Ie(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),co=g(lo,[["__scopeId","data-v-7a48a447"]]),uo={class:"VPHome"},vo=_({__name:"VPHome",setup(n){const{frontmatter:e}=V();return(t,s)=>{const o=W("Content");return a(),u("div",uo,[c(t.$slots,"home-hero-before",{},void 0,!0),k(Kn,null,{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),k(io),c(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),$(co,{key:0},{default:f(()=>[k(o)]),_:1})):(a(),$(o,{key:1}))])}}}),po=g(vo,[["__scopeId","data-v-cbb6ec48"]]),fo={},ho={class:"VPPage"};function _o(n,e){const t=W("Content");return a(),u("div",ho,[c(n.$slots,"page-top"),k(t),c(n.$slots,"page-bottom")])}const mo=g(fo,[["render",_o]]),bo=_({__name:"VPContent",setup(n){const{page:e,frontmatter:t}=V(),{hasSidebar:s}=U();return(o,i)=>(a(),u("div",{class:N(["VPContent",{"has-sidebar":r(s),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?c(o.$slots,"not-found",{key:0},()=>[k(Vt)],!0):r(t).layout==="page"?(a(),$(mo,{key:1},{"page-top":f(()=>[c(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),$(po,{key:2},{"home-hero-before":f(()=>[c(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(o.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(o.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(o.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),$(D(r(t).layout),{key:3})):(a(),$(Ln,{key:4},{"doc-top":f(()=>[c(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[c(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[c(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[c(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[c(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),ko=g(bo,[["__scopeId","data-v-91765379"]]),$o={class:"container"},go=["innerHTML"],yo=["innerHTML"],Po=_({__name:"VPFooter",setup(n){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=U();return(o,i)=>r(e).footer&&r(t).footer!==!1?(a(),u("footer",{key:0,class:N(["VPFooter",{"has-sidebar":r(s)}])},[p("div",$o,[r(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,go)):h("",!0),r(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,yo)):h("",!0)])],2)):h("",!0)}}),So=g(Po,[["__scopeId","data-v-c970a860"]]);function Vo(){const{theme:n,frontmatter:e}=V(),t=Te([]),s=y(()=>t.value.length>0);return te(()=>{t.value=ke(e.value.outline??n.value.outline)}),{headers:t,hasLocalNav:s}}const Lo=n=>(B("data-v-bc9dc845"),n=n(),H(),n),To={class:"menu-text"},wo=Lo(()=>p("span",{class:"vpi-chevron-right icon"},null,-1)),Io={class:"header"},No={class:"outline"},Mo=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(n){const e=n,{theme:t}=V(),s=T(!1),o=T(0),i=T(),l=T();function d(b){var P;(P=i.value)!=null&&P.contains(b.target)||(s.value=!1)}O(s,b=>{if(b){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),ce("Escape",()=>{s.value=!1}),te(()=>{s.value=!1});function v(){s.value=!s.value,o.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function m(b){b.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Ne(()=>{s.value=!1}))}function L(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,P)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:Ie({"--vp-vh":o.value+"px"}),ref_key:"main",ref:i},[b.headers.length>0?(a(),u("button",{key:0,onClick:v,class:N({open:s.value})},[p("span",To,I(r(He)(r(t))),1),wo],2)):(a(),u("button",{key:1,onClick:L},I(r(t).returnToTopLabel||"Return to top"),1)),k(pe,{name:"flyout"},{default:f(()=>[s.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:m},[p("div",Io,[p("a",{class:"top-link",href:"#",onClick:L},I(r(t).returnToTopLabel||"Return to top"),1)]),p("div",No,[k(Ee,{headers:b.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),Ao=g(Mo,[["__scopeId","data-v-bc9dc845"]]),Co=n=>(B("data-v-070ab83d"),n=n(),H(),n),Bo={class:"container"},Ho=["aria-expanded"],Eo=Co(()=>p("span",{class:"vpi-align-left menu-icon"},null,-1)),Do={class:"menu-text"},Fo=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(n){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=U(),{headers:o}=Vo(),{y:i}=Me(),l=T(0);R(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),te(()=>{o.value=ke(t.value.outline??e.value.outline)});const d=y(()=>o.value.length===0),v=y(()=>d.value&&!s.value),m=y(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:d.value,fixed:v.value}));return(L,b)=>r(t).layout!=="home"&&(!v.value||r(i)>=l.value)?(a(),u("div",{key:0,class:N(m.value)},[p("div",Bo,[r(s)?(a(),u("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:b[0]||(b[0]=P=>L.$emit("open-menu"))},[Eo,p("span",Do,I(r(e).sidebarMenuLabel||"Menu"),1)],8,Ho)):h("",!0),k(Ao,{headers:r(o),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),Oo=g(Fo,[["__scopeId","data-v-070ab83d"]]);function jo(){const n=T(!1);function e(){n.value=!0,window.addEventListener("resize",o)}function t(){n.value=!1,window.removeEventListener("resize",o)}function s(){n.value?t():e()}function o(){window.outerWidth>=768&&t()}const i=ne();return O(()=>i.path,t),{isScreenOpen:n,openScreen:e,closeScreen:t,toggleScreen:s}}const Uo={},Go={class:"VPSwitch",type:"button",role:"switch"},zo={class:"check"},Ko={key:0,class:"icon"};function Ro(n,e){return a(),u("button",Go,[p("span",zo,[n.$slots.default?(a(),u("span",Ko,[c(n.$slots,"default",{},void 0,!0)])):h("",!0)])])}const qo=g(Uo,[["render",Ro],["__scopeId","data-v-4a1c76db"]]),Fe=n=>(B("data-v-e40a8bb6"),n=n(),H(),n),Wo=Fe(()=>p("span",{class:"vpi-sun sun"},null,-1)),Jo=Fe(()=>p("span",{class:"vpi-moon moon"},null,-1)),Yo=_({__name:"VPSwitchAppearance",setup(n){const{isDark:e,theme:t}=V(),s=Y("toggle-appearance",()=>{e.value=!e.value}),o=T("");return _e(()=>{o.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,l)=>(a(),$(qo,{title:o.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(s)},{default:f(()=>[Wo,Jo]),_:1},8,["title","aria-checked","onClick"]))}}),$e=g(Yo,[["__scopeId","data-v-e40a8bb6"]]),Xo={key:0,class:"VPNavBarAppearance"},Qo=_({__name:"VPNavBarAppearance",setup(n){const{site:e}=V();return(t,s)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",Xo,[k($e)])):h("",!0)}}),Zo=g(Qo,[["__scopeId","data-v-af096f4a"]]),ge=T();let Oe=!1,ie=0;function xo(n){const e=T(!1);if(oe){!Oe&&es(),ie++;const t=O(ge,s=>{var o,i,l;s===n.el.value||(o=n.el.value)!=null&&o.contains(s)?(e.value=!0,(i=n.onFocus)==null||i.call(n)):(e.value=!1,(l=n.onBlur)==null||l.call(n))});he(()=>{t(),ie--,ie||ts()})}return et(e)}function es(){document.addEventListener("focusin",je),Oe=!0,ge.value=document.activeElement}function ts(){document.removeEventListener("focusin",je)}function je(){ge.value=document.activeElement}const ns={class:"VPMenuLink"},os=_({__name:"VPMenuLink",props:{item:{}},setup(n){const{page:e}=V();return(t,s)=>(a(),u("div",ns,[k(F,{class:N({active:r(q)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:f(()=>[j(I(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),se=g(os,[["__scopeId","data-v-8b74d055"]]),ss={class:"VPMenuGroup"},as={key:0,class:"title"},rs=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(n){return(e,t)=>(a(),u("div",ss,[e.text?(a(),u("p",as,I(e.text),1)):h("",!0),(a(!0),u(M,null,E(e.items,s=>(a(),u(M,null,["link"in s?(a(),$(se,{key:0,item:s},null,8,["item"])):h("",!0)],64))),256))]))}}),is=g(rs,[["__scopeId","data-v-48c802d0"]]),ls={class:"VPMenu"},cs={key:0,class:"items"},us=_({__name:"VPMenu",props:{items:{}},setup(n){return(e,t)=>(a(),u("div",ls,[e.items?(a(),u("div",cs,[(a(!0),u(M,null,E(e.items,s=>(a(),u(M,{key:JSON.stringify(s)},["link"in s?(a(),$(se,{key:0,item:s},null,8,["item"])):"component"in s?(a(),$(D(s.component),K({key:1,ref_for:!0},s.props),null,16)):(a(),$(is,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),ds=g(us,[["__scopeId","data-v-7dd3104a"]]),vs=n=>(B("data-v-e5380155"),n=n(),H(),n),ps=["aria-expanded","aria-label"],fs={key:0,class:"text"},hs=["innerHTML"],_s=vs(()=>p("span",{class:"vpi-chevron-down text-icon"},null,-1)),ms={key:1,class:"vpi-more-horizontal icon"},bs={class:"menu"},ks=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(n){const e=T(!1),t=T();xo({el:t,onBlur:s});function s(){e.value=!1}return(o,i)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=l=>e.value=!0),onMouseleave:i[2]||(i[2]=l=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":o.label,onClick:i[0]||(i[0]=l=>e.value=!e.value)},[o.button||o.icon?(a(),u("span",fs,[o.icon?(a(),u("span",{key:0,class:N([o.icon,"option-icon"])},null,2)):h("",!0),o.button?(a(),u("span",{key:1,innerHTML:o.button},null,8,hs)):h("",!0),_s])):(a(),u("span",ms))],8,ps),p("div",bs,[k(ds,{items:o.items},{default:f(()=>[c(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ye=g(ks,[["__scopeId","data-v-e5380155"]]),$s=["href","aria-label","innerHTML"],gs=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(n){const e=n,t=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(s,o)=>(a(),u("a",{class:"VPSocialLink no-icon",href:s.link,"aria-label":s.ariaLabel??(typeof s.icon=="string"?s.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,$s))}}),ys=g(gs,[["__scopeId","data-v-717b8b75"]]),Ps={class:"VPSocialLinks"},Ss=_({__name:"VPSocialLinks",props:{links:{}},setup(n){return(e,t)=>(a(),u("div",Ps,[(a(!0),u(M,null,E(e.links,({link:s,icon:o,ariaLabel:i})=>(a(),$(ys,{key:s,icon:o,link:s,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),Pe=g(Ss,[["__scopeId","data-v-ee7a9424"]]),Vs={key:0,class:"group translations"},Ls={class:"trans-title"},Ts={key:1,class:"group"},ws={class:"item appearance"},Is={class:"label"},Ns={class:"appearance-action"},Ms={key:2,class:"group"},As={class:"item social-links"},Cs=_({__name:"VPNavBarExtra",setup(n){const{site:e,theme:t}=V(),{localeLinks:s,currentLang:o}=Q({correspondingLink:!0}),i=y(()=>s.value.length&&o.value.label||e.value.appearance||t.value.socialLinks);return(l,d)=>i.value?(a(),$(ye,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[r(s).length&&r(o).label?(a(),u("div",Vs,[p("p",Ls,I(r(o).label),1),(a(!0),u(M,null,E(r(s),v=>(a(),$(se,{key:v.link,item:v},null,8,["item"]))),128))])):h("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",Ts,[p("div",ws,[p("p",Is,I(r(t).darkModeSwitchLabel||"Appearance"),1),p("div",Ns,[k($e)])])])):h("",!0),r(t).socialLinks?(a(),u("div",Ms,[p("div",As,[k(Pe,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),Bs=g(Cs,[["__scopeId","data-v-925effce"]]),Hs=n=>(B("data-v-5dea55bf"),n=n(),H(),n),Es=["aria-expanded"],Ds=Hs(()=>p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)),Fs=[Ds],Os=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(n){return(e,t)=>(a(),u("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},Fs,10,Es))}}),js=g(Os,[["__scopeId","data-v-5dea55bf"]]),Us=["innerHTML"],Gs=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(n){const{page:e}=V();return(t,s)=>(a(),$(F,{class:N({VPNavBarMenuLink:!0,active:r(q)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:f(()=>[p("span",{innerHTML:t.item.text},null,8,Us)]),_:1},8,["class","href","noIcon","target","rel"]))}}),zs=g(Gs,[["__scopeId","data-v-ed5ac1f6"]]),Ks=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(n){const e=n,{page:t}=V(),s=i=>"component"in i?!1:"link"in i?q(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(s),o=y(()=>s(e.item));return(i,l)=>(a(),$(ye,{class:N({VPNavBarMenuGroup:!0,active:r(q)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||o.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),Rs=n=>(B("data-v-e6d46098"),n=n(),H(),n),qs={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Ws=Rs(()=>p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),Js=_({__name:"VPNavBarMenu",setup(n){const{theme:e}=V();return(t,s)=>r(e).nav?(a(),u("nav",qs,[Ws,(a(!0),u(M,null,E(r(e).nav,o=>(a(),u(M,{key:JSON.stringify(o)},["link"in o?(a(),$(zs,{key:0,item:o},null,8,["item"])):"component"in o?(a(),$(D(o.component),K({key:1,ref_for:!0},o.props),null,16)):(a(),$(Ks,{key:2,item:o},null,8,["item"]))],64))),128))])):h("",!0)}}),Ys=g(Js,[["__scopeId","data-v-e6d46098"]]);function Xs(n){const{localeIndex:e,theme:t}=V();function s(o){var A,C,w;const i=o.split("."),l=(A=t.value.search)==null?void 0:A.options,d=l&&typeof l=="object",v=d&&((w=(C=l.locales)==null?void 0:C[e.value])==null?void 0:w.translations)||null,m=d&&l.translations||null;let L=v,b=m,P=n;const S=i.pop();for(const G of i){let z=null;const J=P==null?void 0:P[G];J&&(z=P=J);const ae=b==null?void 0:b[G];ae&&(z=b=ae);const re=L==null?void 0:L[G];re&&(z=L=re),J||(P=z),ae||(b=z),re||(L=z)}return(L==null?void 0:L[S])??(b==null?void 0:b[S])??(P==null?void 0:P[S])??""}return s}const Qs=["aria-label"],Zs={class:"DocSearch-Button-Container"},xs=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),ea={class:"DocSearch-Button-Placeholder"},ta=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Se=_({__name:"VPNavBarSearchButton",setup(n){const t=Xs({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,o)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[p("span",Zs,[xs,p("span",ea,I(r(t)("button.buttonText")),1)]),ta],8,Qs))}}),na={class:"VPNavBarSearch"},oa={id:"local-search"},sa={key:1,id:"docsearch"},aa=_({__name:"VPNavBarSearch",setup(n){const e=tt(()=>nt(()=>import("./VPLocalSearchBox.DO9T_jde.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=V(),o=T(!1),i=T(!1);R(()=>{});function l(){o.value||(o.value=!0,setTimeout(d,16))}function d(){const b=new Event("keydown");b.key="k",b.metaKey=!0,window.dispatchEvent(b),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function v(b){const P=b.target,S=P.tagName;return P.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const m=T(!1);ce("k",b=>{(b.ctrlKey||b.metaKey)&&(b.preventDefault(),m.value=!0)}),ce("/",b=>{v(b)||(b.preventDefault(),m.value=!0)});const L="local";return(b,P)=>{var S;return a(),u("div",na,[r(L)==="local"?(a(),u(M,{key:0},[m.value?(a(),$(r(e),{key:0,onClose:P[0]||(P[0]=A=>m.value=!1)})):h("",!0),p("div",oa,[k(Se,{onClick:P[1]||(P[1]=A=>m.value=!0)})])],64)):r(L)==="algolia"?(a(),u(M,{key:1},[o.value?(a(),$(r(t),{key:0,algolia:((S=r(s).search)==null?void 0:S.options)??r(s).algolia,onVnodeBeforeMount:P[2]||(P[2]=A=>i.value=!0)},null,8,["algolia"])):h("",!0),i.value?h("",!0):(a(),u("div",sa,[k(Se,{onClick:l})]))],64)):h("",!0)])}}}),ra=_({__name:"VPNavBarSocialLinks",setup(n){const{theme:e}=V();return(t,s)=>r(e).socialLinks?(a(),$(Pe,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),ia=g(ra,[["__scopeId","data-v-164c457f"]]),la=["href","rel","target"],ca={key:1},ua={key:2},da=_({__name:"VPNavBarTitle",setup(n){const{site:e,theme:t}=V(),{hasSidebar:s}=U(),{currentLang:o}=Q(),i=y(()=>{var v;return typeof t.value.logoLink=="string"?t.value.logoLink:(v=t.value.logoLink)==null?void 0:v.link}),l=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.rel}),d=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.target});return(v,m)=>(a(),u("div",{class:N(["VPNavBarTitle",{"has-sidebar":r(s)}])},[p("a",{class:"title",href:i.value??r(be)(r(o).link),rel:l.value,target:d.value},[c(v.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),$(x,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):h("",!0),r(t).siteTitle?(a(),u("span",ca,I(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),u("span",ua,I(r(e).title),1)):h("",!0),c(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,la)],2))}}),va=g(da,[["__scopeId","data-v-28a961f9"]]),pa={class:"items"},fa={class:"title"},ha=_({__name:"VPNavBarTranslations",setup(n){const{theme:e}=V(),{localeLinks:t,currentLang:s}=Q({correspondingLink:!0});return(o,i)=>r(t).length&&r(s).label?(a(),$(ye,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:f(()=>[p("div",pa,[p("p",fa,I(r(s).label),1),(a(!0),u(M,null,E(r(t),l=>(a(),$(se,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),_a=g(ha,[["__scopeId","data-v-c80d9ad0"]]),ma=n=>(B("data-v-822684d1"),n=n(),H(),n),ba={class:"wrapper"},ka={class:"container"},$a={class:"title"},ga={class:"content"},ya={class:"content-body"},Pa=ma(()=>p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1)),Sa=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(n){const e=n,{y:t}=Me(),{hasSidebar:s}=U(),{frontmatter:o}=V(),i=T({});return _e(()=>{i.value={"has-sidebar":s.value,home:o.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,d)=>(a(),u("div",{class:N(["VPNavBar",i.value])},[p("div",ba,[p("div",ka,[p("div",$a,[k(va,null,{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",ga,[p("div",ya,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),k(aa,{class:"search"}),k(Ys,{class:"menu"}),k(_a,{class:"translations"}),k(Zo,{class:"appearance"}),k(ia,{class:"social-links"}),k(Bs,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),k(js,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=v=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),Pa],2))}}),Va=g(Sa,[["__scopeId","data-v-822684d1"]]),La={key:0,class:"VPNavScreenAppearance"},Ta={class:"text"},wa=_({__name:"VPNavScreenAppearance",setup(n){const{site:e,theme:t}=V();return(s,o)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),u("div",La,[p("p",Ta,I(r(t).darkModeSwitchLabel||"Appearance"),1),k($e)])):h("",!0)}}),Ia=g(wa,[["__scopeId","data-v-ffb44008"]]),Na=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(n){const e=Y("close-screen");return(t,s)=>(a(),$(F,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),Ma=g(Na,[["__scopeId","data-v-27d04aeb"]]),Aa=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(n){const e=Y("close-screen");return(t,s)=>(a(),$(F,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:f(()=>[j(I(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Ue=g(Aa,[["__scopeId","data-v-7179dbb7"]]),Ca={class:"VPNavScreenMenuGroupSection"},Ba={key:0,class:"title"},Ha=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(n){return(e,t)=>(a(),u("div",Ca,[e.text?(a(),u("p",Ba,I(e.text),1)):h("",!0),(a(!0),u(M,null,E(e.items,s=>(a(),$(Ue,{key:s.text,item:s},null,8,["item"]))),128))]))}}),Ea=g(Ha,[["__scopeId","data-v-4b8941ac"]]),Da=n=>(B("data-v-875057a5"),n=n(),H(),n),Fa=["aria-controls","aria-expanded"],Oa=["innerHTML"],ja=Da(()=>p("span",{class:"vpi-plus button-icon"},null,-1)),Ua=["id"],Ga={key:0,class:"item"},za={key:1,class:"item"},Ka={key:2,class:"group"},Ra=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(n){const e=n,t=T(!1),s=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function o(){t.value=!t.value}return(i,l)=>(a(),u("div",{class:N(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:o},[p("span",{class:"button-text",innerHTML:i.text},null,8,Oa),ja],8,Fa),p("div",{id:s.value,class:"items"},[(a(!0),u(M,null,E(i.items,d=>(a(),u(M,{key:JSON.stringify(d)},["link"in d?(a(),u("div",Ga,[k(Ue,{item:d},null,8,["item"])])):"component"in d?(a(),u("div",za,[(a(),$(D(d.component),K({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(a(),u("div",Ka,[k(Ea,{text:d.text,items:d.items},null,8,["text","items"])]))],64))),128))],8,Ua)],2))}}),qa=g(Ra,[["__scopeId","data-v-875057a5"]]),Wa={key:0,class:"VPNavScreenMenu"},Ja=_({__name:"VPNavScreenMenu",setup(n){const{theme:e}=V();return(t,s)=>r(e).nav?(a(),u("nav",Wa,[(a(!0),u(M,null,E(r(e).nav,o=>(a(),u(M,{key:JSON.stringify(o)},["link"in o?(a(),$(Ma,{key:0,item:o},null,8,["item"])):"component"in o?(a(),$(D(o.component),K({key:1,ref_for:!0},o.props,{"screen-menu":""}),null,16)):(a(),$(qa,{key:2,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),Ya=_({__name:"VPNavScreenSocialLinks",setup(n){const{theme:e}=V();return(t,s)=>r(e).socialLinks?(a(),$(Pe,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):h("",!0)}}),Ge=n=>(B("data-v-362991c2"),n=n(),H(),n),Xa=Ge(()=>p("span",{class:"vpi-languages icon lang"},null,-1)),Qa=Ge(()=>p("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Za={class:"list"},xa=_({__name:"VPNavScreenTranslations",setup(n){const{localeLinks:e,currentLang:t}=Q({correspondingLink:!0}),s=T(!1);function o(){s.value=!s.value}return(i,l)=>r(e).length&&r(t).label?(a(),u("div",{key:0,class:N(["VPNavScreenTranslations",{open:s.value}])},[p("button",{class:"title",onClick:o},[Xa,j(" "+I(r(t).label)+" ",1),Qa]),p("ul",Za,[(a(!0),u(M,null,E(r(e),d=>(a(),u("li",{key:d.link,class:"item"},[k(F,{class:"link",href:d.link},{default:f(()=>[j(I(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),er=g(xa,[["__scopeId","data-v-362991c2"]]),tr={class:"container"},nr=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(n){const e=T(null),t=Ae(oe?document.body:null);return(s,o)=>(a(),$(pe,{name:"fade",onEnter:o[0]||(o[0]=i=>t.value=!0),onAfterLeave:o[1]||(o[1]=i=>t.value=!1)},{default:f(()=>[s.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",tr,[c(s.$slots,"nav-screen-content-before",{},void 0,!0),k(Ja,{class:"menu"}),k(er,{class:"translations"}),k(Ia,{class:"appearance"}),k(Ya,{class:"social-links"}),c(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),or=g(nr,[["__scopeId","data-v-833aabba"]]),sr={key:0,class:"VPNav"},ar=_({__name:"VPNav",setup(n){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=jo(),{frontmatter:o}=V(),i=y(()=>o.value.navbar!==!1);return me("close-screen",t),ee(()=>{oe&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(l,d)=>i.value?(a(),u("header",sr,[k(Va,{"is-screen-open":r(e),onToggleScreen:r(s)},{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k(or,{open:r(e)},{"nav-screen-content-before":f(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),rr=g(ar,[["__scopeId","data-v-f1e365da"]]),ze=n=>(B("data-v-196b2e5f"),n=n(),H(),n),ir=["role","tabindex"],lr=ze(()=>p("div",{class:"indicator"},null,-1)),cr=ze(()=>p("span",{class:"vpi-chevron-right caret-icon"},null,-1)),ur=[cr],dr={key:1,class:"items"},vr=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(n){const e=n,{collapsed:t,collapsible:s,isLink:o,isActiveLink:i,hasActiveLink:l,hasChildren:d,toggle:v}=It(y(()=>e.item)),m=y(()=>d.value?"section":"div"),L=y(()=>o.value?"a":"div"),b=y(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>o.value?void 0:"button"),S=y(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":o.value},{"is-active":i.value},{"has-active":l.value}]);function A(w){"key"in w&&w.key!=="Enter"||!e.item.link&&v()}function C(){e.item.link&&v()}return(w,G)=>{const z=W("VPSidebarItem",!0);return a(),$(D(m.value),{class:N(["VPSidebarItem",S.value])},{default:f(()=>[w.item.text?(a(),u("div",K({key:0,class:"item",role:P.value},st(w.item.items?{click:A,keydown:A}:{},!0),{tabindex:w.item.items&&0}),[lr,w.item.link?(a(),$(F,{key:0,tag:L.value,class:"link",href:w.item.link,rel:w.item.rel,target:w.item.target},{default:f(()=>[(a(),$(D(b.value),{class:"text",innerHTML:w.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),$(D(b.value),{key:1,class:"text",innerHTML:w.item.text},null,8,["innerHTML"])),w.item.collapsed!=null&&w.item.items&&w.item.items.length?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:ot(C,["enter"]),tabindex:"0"},ur,32)):h("",!0)],16,ir)):h("",!0),w.item.items&&w.item.items.length?(a(),u("div",dr,[w.depth<5?(a(!0),u(M,{key:0},E(w.item.items,J=>(a(),$(z,{key:J.text,item:J,depth:w.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),pr=g(vr,[["__scopeId","data-v-196b2e5f"]]),fr=_({__name:"VPSidebarGroup",props:{items:{}},setup(n){const e=T(!0);let t=null;return R(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),at(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,o)=>(a(!0),u(M,null,E(s.items,i=>(a(),u("div",{key:i.text,class:N(["group",{"no-transition":e.value}])},[k(pr,{item:i,depth:0},null,8,["item"])],2))),128))}}),hr=g(fr,[["__scopeId","data-v-9e426adc"]]),Ke=n=>(B("data-v-18756405"),n=n(),H(),n),_r=Ke(()=>p("div",{class:"curtain"},null,-1)),mr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},br=Ke(()=>p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),kr=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(n){const{sidebarGroups:e,hasSidebar:t}=U(),s=n,o=T(null),i=Ae(oe?document.body:null);O([s,o],()=>{var d;s.open?(i.value=!0,(d=o.value)==null||d.focus()):i.value=!1},{immediate:!0,flush:"post"});const l=T(0);return O(e,()=>{l.value+=1},{deep:!0}),(d,v)=>r(t)?(a(),u("aside",{key:0,class:N(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:o,onClick:v[0]||(v[0]=rt(()=>{},["stop"]))},[_r,p("nav",mr,[br,c(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(),$(hr,{items:r(e),key:l.value},null,8,["items"])),c(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),$r=g(kr,[["__scopeId","data-v-18756405"]]),gr=_({__name:"VPSkipLink",setup(n){const e=ne(),t=T();O(()=>e.path,()=>t.value.focus());function s({target:o}){const i=document.getElementById(decodeURIComponent(o.hash).slice(1));if(i){const l=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",l)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",l),i.focus(),window.scrollTo(0,0)}}return(o,i)=>(a(),u(M,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),yr=g(gr,[["__scopeId","data-v-c3508ec8"]]),Pr=_({__name:"Layout",setup(n){const{isOpen:e,open:t,close:s}=U(),o=ne();O(()=>o.path,s),wt(e,s);const{frontmatter:i}=V(),l=Ce(),d=y(()=>!!l["home-hero-image"]);return me("hero-image-slot-exists",d),(v,m)=>{const L=W("Content");return r(i).layout!==!1?(a(),u("div",{key:0,class:N(["Layout",r(i).pageClass])},[c(v.$slots,"layout-top",{},void 0,!0),k(yr),k(pt,{class:"backdrop",show:r(e),onClick:r(s)},null,8,["show","onClick"]),k(rr,null,{"nav-bar-title-before":f(()=>[c(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[c(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(Oo,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),k($r,{open:r(e)},{"sidebar-nav-before":f(()=>[c(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[c(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(ko,null,{"page-top":f(()=>[c(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[c(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[c(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(v.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(v.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(v.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[c(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(So),c(v.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),$(L,{key:1}))}}}),Sr=g(Pr,[["__scopeId","data-v-a9a9e638"]]),Ve={Layout:Sr,enhanceApp:({app:n})=>{n.component("Badge",ut)}},Vr=n=>{if(typeof document>"u")return{stabilizeScrollPosition:o=>async(...i)=>o(...i)};const e=document.documentElement;return{stabilizeScrollPosition:s=>async(...o)=>{const i=s(...o),l=n.value;if(!l)return i;const d=l.offsetTop-e.scrollTop;return await Ne(),e.scrollTop=l.offsetTop-d,i}}},Re="vitepress:tabSharedState",X=typeof localStorage<"u"?localStorage:null,qe="vitepress:tabsSharedState",Lr=()=>{const n=X==null?void 0:X.getItem(qe);if(n)try{return JSON.parse(n)}catch{}return{}},Tr=n=>{X&&X.setItem(qe,JSON.stringify(n))},wr=n=>{const e=it({});O(()=>e.content,(t,s)=>{t&&s&&Tr(t)},{deep:!0}),n.provide(Re,e)},Ir=(n,e)=>{const t=Y(Re);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");R(()=>{t.content||(t.content=Lr())});const s=T(),o=y({get(){var v;const l=e.value,d=n.value;if(l){const m=(v=t.content)==null?void 0:v[l];if(m&&d.includes(m))return m}else{const m=s.value;if(m)return m}return d[0]},set(l){const d=e.value;d?t.content&&(t.content[d]=l):s.value=l}});return{selected:o,select:l=>{o.value=l}}};let Le=0;const Nr=()=>(Le++,""+Le);function Mr(){const n=Ce();return y(()=>{var s;const t=(s=n.default)==null?void 0:s.call(n);return t?t.filter(o=>typeof o.type=="object"&&"__name"in o.type&&o.type.__name==="PluginTabsTab"&&o.props).map(o=>{var i;return(i=o.props)==null?void 0:i.label}):[]})}const We="vitepress:tabSingleState",Ar=n=>{me(We,n)},Cr=()=>{const n=Y(We);if(!n)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return n},Br={class:"plugin-tabs"},Hr=["id","aria-selected","aria-controls","tabindex","onClick"],Er=_({__name:"PluginTabs",props:{sharedStateKey:{}},setup(n){const e=n,t=Mr(),{selected:s,select:o}=Ir(t,lt(e,"sharedStateKey")),i=T(),{stabilizeScrollPosition:l}=Vr(i),d=l(o),v=T([]),m=b=>{var A;const P=t.value.indexOf(s.value);let S;b.key==="ArrowLeft"?S=P>=1?P-1:t.value.length-1:b.key==="ArrowRight"&&(S=P(a(),u("div",Br,[p("div",{ref_key:"tablist",ref:i,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:m},[(a(!0),u(M,null,E(r(t),S=>(a(),u("button",{id:`tab-${S}-${r(L)}`,ref_for:!0,ref_key:"buttonRefs",ref:v,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===r(s),"aria-controls":`panel-${S}-${r(L)}`,tabindex:S===r(s)?0:-1,onClick:()=>r(d)(S)},I(S),9,Hr))),128))],544),c(b.$slots,"default")]))}}),Dr=["id","aria-labelledby"],Fr=_({__name:"PluginTabsTab",props:{label:{}},setup(n){const{uid:e,selected:t}=Cr();return(s,o)=>r(t)===s.label?(a(),u("div",{key:0,id:`panel-${s.label}-${r(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${s.label}-${r(e)}`},[c(s.$slots,"default",{},void 0,!0)],8,Dr)):h("",!0)}}),Or=g(Fr,[["__scopeId","data-v-9b0d03d2"]]),jr=n=>{wr(n),n.component("PluginTabs",Er),n.component("PluginTabsTab",Or)},Gr={extends:Ve,Layout(){return ct(Ve.Layout,null,{})},enhanceApp({app:n,router:e,siteData:t}){jr(n)}};export{Gr as R,Xs as c,V as u}; diff --git a/previews/PR195/assets/ckvmmvu.B94PsR1K.png b/previews/PR195/assets/ckvmmvu.B94PsR1K.png new file mode 100644 index 0000000000000000000000000000000000000000..65bec08ee041bea3fbc09c0e72a8aeb6f7387ae9 GIT binary patch literal 34578 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

YFW2AiB=HTn1h&?i|(pqpV5oy)_f{FIlqa6 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 F{U7^&kc$8S literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/ethucql.Cx40vhB3.png b/previews/PR195/assets/ethucql.Cx40vhB3.png new file mode 100644 index 0000000000000000000000000000000000000000..f60db5413a1e287580ee1d0bc1c479ecb43276c4 GIT binary patch literal 15689 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 literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/eveaplj._0R9BbFk.png b/previews/PR195/assets/eveaplj._0R9BbFk.png new file mode 100644 index 0000000000000000000000000000000000000000..6752dc80d3da3267f2b9254ee93cfb56f90c9876 GIT binary patch literal 30821 zcmdqK^+T51@;-dq7{s;(DFqb}P$>ZkK}A49x=~S5LZtI?i=rZ;geXXND}o?xp@N9C z^rL`u*F%42-8Z^*f6o2`-q-Vk`<%7!^{kk=X6Blib#5yw%202h-+*Blwe0B=Dj2r< zDTb}`qFM?6i#V-e8vM2Pg1pQLYzh4*vM?b4!&orc6UWt@o(!})+Nn*4O^;S4l1>a) zY&F_)=b0}X+gUb|o!3{?gpOW(?s3__BK?$Wrttl--M*iH3`qI6ntu2wetU~`^oOsc z!|&FvIwhz;y6?rmQ?rEnDaVVR!3NXRkPePy%_l#fatW9>@|?V9iX{rxBV8}jwi8w@=QW&D^Nue=@@81NIH zP0Y%wjo7gUJ|WR{j7w4a4VRj9Ke7`(0{ncSR*li z-Q3)2zVG&y5FsUd`^5?b0xVxCPwAM%T(UAVRaA!C3Nt*j;oQ%jJ?l?DWgPavXVy^T zVOhELnoSS() zjn7T2UDHIaPLp3;e(4_2UeL(ra9PrAkQ$TJT&zDtaa@Oy>-&mc*==7MJ;8dvf#zdbNW;H)vG>CZ2QyAkd4$1gA6b`nwN_%tOV_s^KaK^Blu7&;O zx2W1ZT$nMNhO+YV$}rI#3=Fzw&z=|YS%OVzXlm*<+{znOFL+}syxraTbi`MI~)pWy}-s6VG7?svvfBhvG%DrdLp43I%!8cM)lT7;R>UGrZ zWXnr!x(+Y}pULMIn8L76Ki{D+^cHoLChxZGZ9l|lC0b%F8W`I5t-&Y}jw?Qr+Zi#E zF5rgG?c3`UyXj`H(dG}=nP6=LAFs7_w7aRDyKhjt6z(=QHM~B7p%o4l8@frm@jM85 zp+w8bbBAr)wzcKkXtr-J*fCk`IkTg+NB(M2SMj1epK(u%aPewnXz0A$w5W7*tXiKL z$;b{DjDMcYU^?dXWlp--W8v?G=*5QU8-kaW^BsgdCi|v)Q?+Aqk9Kv>aqmD^ctgo>dF#T-hp|09Js^ADB_|hnS&y%y>1i~nOKr@)uAguIadX(ws4V{e z58V+K6dP`RPFkf%mE@!6hqa^p)qo#&_8GUN)~w0(A1^r^Lu`Pia)y%^iK zzXnVaAN#P^e>;z!6J_N5@Ti?Phd%RA*r2f}xf(V_g*? z0-`PxrV--q0BidcpL_*NP`of`?SJIR5&wXI;+e&bJ9wUm0DvW_PLCb@AX;cj)n6qo z>d3iQx@~{bZqfJ$d%NtC(}x_EU8JM9YM<`yWZ+J zkin(OrFo@Or%oNv=Rb7v6GjZ{!9zUj+FxamYqPP|&Dd7)&Z)hku_E~he zV7ko}FBm~HFJZ0Loejy<;%;;nqb9QW;LOO-Cqw^L}U~kvl#e# zR#=!`=(E!L6&T=iP;H^BW6g2EI}P}wqeHJu8$T^QJYvYYiT#xp6?^koP4TA@B7Mm z751-!1)p1a~n?>EA2a+0EXpjd_edrEI)$s3qGv!52 zBTYr)A-#Zq?8Y7Zj_CsqLBXNK<*Ym4McF<)+Y>IdKPZOV${2$yUK})zkE61mHTWv_rzFv*=LP_eg1Z%(c2H+Z%xlUQu7gg z%ulz0)#{y<=J}}E>73FhyTOQ%j}u$PhdQFX10yolY)l<}LmTwuU~swVKJ*#&HK|+8 z7WHR@g<;y7cz-qRqzSu3d)UEu( zMmOc;_)YH%r0XW+9vy78;NJq@l0;9izSYlL@)-OIu+ezg-)t0?#$;S;b=mXjwItW3LAswHKAgqrN_n>5*_4ThR}PsYaX;dG}$)e?%^pz_v z9n{3#xvjcECth1rC};@+6&=Ig+n*s|=D(XpU6T+f5`6l+vD4;&kmhvjepx2Jhuo^> z$>K9_@snm5I7{`7_KkP>VEq;)Eu-^Mn>SCCah>8rx^do5ib}$)K{2B^J@ue~Ih$;E zrNz``ZoR~0PW+@vHYZuVmYf=7#>XZ~R@FZMApR01V*A$gAbiZC2NPS%$^t+RG}deB zrFyL{oX@N}14EKp(R8m#+qtuB<1(LbW8jkA!E3(g);P$?D}?(mRQtC|?KH~a;#F#& z3m5p&d4NN9xQMuXI>iHChd5Y|g90qNS-35^v+wV(^b`zP57SaHz-RRZFCX%1I=l$s ze-L|TgV^+w0SEoOi})4M^&Rk{qH@T;b7$hi-ug!YF>g;W9zBQO5I(eZVb+WgR2gQo zk#jHgh*MzomAZv(X5b2z_gu;k5eSGalZ#8RDBTn$YC=qV2c|u$B#{O;zw?~0Mg0MB zgP9rP+b9rY$=U?JvGI&FKaZ)$r|t!ov-`a#4k$~R>aR##2P){Zt+;>bz|~UXX4GK( zOT2=r?CrI*FG?r-x9v!1T~;iqH8<$4rOVI`HpQLvx%gbR`k4{Eu!>?rU*8!VF#q0t zgYGyBr=0vl(^ipev%Rtc0%f0SDWf9J)x_M7&QkrwAAjaSb6Vh5i%%8mdQVo2c?&LN)(h z4eLI51a@M3wJy$w&H0$li!*O-_CBxNv=g8(5{}Y%>9FuEq;&-v$!KrAd!FvG|Ze`9qy-Ic;t8+SC3#dS6;zW;UyXFNn+l z-8s1a<86~wVy+Y9>-7(w?2e1=895*G48}+poW%$Fqss5zg@`uL%ggcGL_XvdBG$_W z>&^UcxF%tetS5S&H>)d0E-s`U-Y+97E8_HpI7SSPar^AFrbp5CgHKCo#lJ)zw|z+f z*qIo*J$n2W@lSSNGD$I0l}%1mcF7C(&em+mmEExGm+ ztv5x{?HQODOmUwJd}!?JO=I?f4hKHEd$2>9!-s8OX1QeRWcw2eFl!ekW`UmoSq65J zv5POuI^ugr+Lb|_ckeBR4G3_Oh^E_vxAO|P1M7!GWtVUWWi zdZCBqaRL^#dD(1rwFmfARTGl4YH>L&d4Ir*#HJ9&nWHQ1t<%w;!6k0s>`dsE_$k)a z2V3(k-qT#Vcwmo|KSUvkXH)&a#@|rT$HQileI#xNQemSL#qWtGbZBB3SJHyAC zd%heG73AQOud4E&m~05)m!u5I`!lUyZPR}V?%J2X8#PRQuzh=wP^|F|kP-3Po% z!ba2mesuL-TNlgKA0zGE_u(%>U%{NN9y+Dsf5%6_^@YGtd&ad@*%xl$KwZKZO}El9 z>5_b!UXsLutS^In^^J`X;5p=%l@mwO=PgCm63`u9gL^CVS8W3WV;$QGBuQk3!_3&c zSxqn1c|3J=VLIqZs>Bk31d&V!yd+ndw(0Q}#tvK-Fxw-$ZJW!GFxUVtKH@lpH?V#= zHvqv(?>BEG{gJxk?7b-&{8yrP)94pn#uffGXwaemMrp|pa6c=~|Ax{k{(@G7f<@hvqFR0DHt5$|r2TfK5Zgn5KjiUwC$*oc>WVZb&Pn84qX&aq= z@Vz73HV&6me26aFGNr*l^$)jNT@BZI5*=)JWuT+G-L#b$CDNX4zf4k+h}&1(5_^GT zO!sB;7InQ;;j5|7ax&D<#X>SMl5XX-^phLYw4w+(-NDhx&iP-CLv{&E7g>1)+aF;TA35w)Da{B5nj0OCtnEdXu>{XwQ zny_me%(MGQOv?(>y5ZvgKqeIz|7Dn#qywEio@8yfEd8^mrEfkJ2PTaqD$Tn3Z}l^G z^>_-$?&!P-{5MV`<4R@4XObK#dF4udu0z`Qj-Uu@T$u17mqJ%AiKV959tgz09)du8 z*-=@24A!y%2kC5!Ivk|IcU1^W<}<;)4M_~{JIbg}?PV+dk+<}Qu3+)Y%K318Tmk#^ z3Iu=pYQnNVeb1~Ge23%|LLaXIet3l-Z$c+W(Xv?%_thuA8vS%sR_}!04%w&lusN+( z&BCppn|f#DPq1DA67H3nuAgn$oIP1plOS;Z@9n%AmT82nYyw#cbZ(Hzu~P5;?60Po z08s6a`V*>GV=(XRDL;H)>o+=%s{&wH~{!tOonm%SreCxVZ3Ili@Y>Y7|MA9TH z>oP2cFNutX{2@O5exV}N#CNzj|zU95UU0e z&O|#X2W5M{{*4o#>{}ZLDK`O}cNczo6FblUybvVLyaeTdBY+y}RaZ1cx-CPL#=g#as^`XoE zy%GO*aJcBfKP<6)`){CDYG{0p12wr#nQBFC`9v>7CFEE2xmID{zh{~F;j2Oh7@M?T zT4*ZLH#5s@Wb5rY>${URLDk-#_%^*1xkHSN_I+yj_o9p0Wh2Yx?4V7O0od zXZjpVRdCiXAI8;d5=7A^L&Tx>r$Zekp0<8Vr%lh;CHz|(AR91h7UWRBuu>1^@$Vcp zZ9D=|DsK@%6${C*uKsfFl&^nt+I!}l(lAkQhI|?D=)I%@*32I}H8@$yP*$d5m&NA3 zkPVvnCaTYzn4A&zyVm&m$8TTKQ9O<)5InH7IRsbXw(bTUNof;(Z1f(5kc+-IZrt%} zNLD9K1HxU*EzVN6a4IA-vo`Son|^Mj@YO7vsN`fEQAlhXSh0w)bibjtv~|o`_l_+U z+@z^{u=kV^gr$<3VPa;seaX36SAS?3U3mr(YqdN+F@(A$5;|F+7XYf4Q`z(j5);Dx zf2jeowxp%6gH46H%Yo(Lv&(^{4LMFK6k;ei!#?{rSqcMK` zPKWwq;A|G*+Rmw5PW?YfO@x$^J3+4wS^qc#5YO|Oz9AjLv$1jfQm9tJg|3Klv>t4A zwRE2tuM}|0eaI6;h`;1%*aX#9+*3F9)ya7nTOJJVYrJCJvY&#iE2-p&WeCJM7jFp^ zO@)B?yXN4FWxXRs#X_Fwi3$@9dJuJsN>;?-%wCzYU#@!84H&0eCKb(_HT=!Z10N^7 zXR7%aK%4>?QBsM3GsIAVA?Ci;g>gWDw3;LHB1shm>oRT4gCrMntN#cnStuZ8t3`nD zs!!`{(e^jD2zs3K%xJPJ7@ro|R}%S2ggsaM)p+FMqW-u_O@|FW@+>ub~e*@ z8*pjDhrR$!DNx(qiQRgy2BXX58FnR&0X^MJ7SaG?ppH_3Bo$Be7i znJ;Uy@@OZ)Md_8*u@FR9(w#z|>8J%hQM7D~zQ>4eyQ8#s8KK>PC&TDPHBO$S7jL0&_s|8# zBl8_@2HWAnNNhm;<+N)MzVw8d!Xp-M>0n-*c_8z_Z$3S7s;sw`5dULL+`92sIws!j zzz-LhQLN}v?E%K4kqDp}MYlq<+J;jeB|@;M5&gmDeqW)$AYiDkSZ!j5=ohaAke!{i zPzYi3maePAC*lXy$683pYsq)$U7SNZNJ^UR-16oXvYT}9GgjtbSOCLr?@xv3a{c!_Cs)}apGW@)iY_DD z(8SX}AsctEMQlpYjgeeny(MD34N7xU9LT|#J$-#$IT2k(dZ5oTP;}Wl?5X+Oc$o`- z6m_*5w_CaFup$1t2@x6)n|x2bQbGUj9fw3aKCdp|iRAU(8X4DV16}5Y`K#2->2dO1 zqdR>eqiwSVj?nbxX3%5Z5P>E?P98uE2nqUzCb!+%WasuNbu5~7OS{;9V4rBFbei5_(A%^ zhRN#?a0?P7i(*){*LsLwb#dy4${LnE;{BgwAZ}GjOaEkUEJI;#=jUi{mb;*-B^fvw zsFQi(!2|z^I?a%yXMZswUO*pU6x|bE+qqS&((~*d04rYpkV8N{!owVep;Sn94jKIn zGdFGk>VcX8kJ^yo#Y(gOD|JH!BtLfOD8VKzElMI%wQ1OG=s| zKN~olW#|^w{KbYu`M}R!d;L3f3#fb3GN2ol+5yw9EHAm%RBU*)TgM1UU7FglE~Ez} zI;fQ)k!qrE7hNaf6xJr(Y!)xj5SB=R-?%^=xGSn>#t|ft$l&{tSkC#x^3oH=>_?7%}>-K~4xVn_O`4tPU-iF5GenK}8;y7vj z3%Xa+qVZ?@BLbV#qNLMCCmX<5EjWhX3^K-&HvMh-q7Dc4O8@njzukQ9Dc=jo)YPIA z`rF`tLpN?vC2#G-v0LyHf!)As!lmWl*5>Qyu7nHR8SITCY zV4>QHzSYKai$DH}FlDQjBg~bM@xi28M!wnRPrlt!ucehpae|N^*Q!J4(kHSl5+JQb z5Fz8;!0T=2QBw~>wzUM=0k1W~v!({&Oim>tWAo$mB5E@Ca2UFaFlwhP?zU9EDE)qc zovo)U7&H`bMn;B&(u>E=j0UYBbF{B=K=-1m{-P+3UFdFpV!6SW>Z(|dD;DoULo&5 z-#Y%0vnd?Ehjv=R3%`g>_9qZ@HM2(|xE;2*A;<0U{n)QsFZCb}_`fhMjsR1yL!X)P zPzilQ>RGpfW$zjvaFhRy1Qb^JNdl5+;RLYuZCmyR%UjeZ+FSgK1SG9R6>lwH@sa=( zTY3}%Jw-Uzk;eh+Frm5_Z-=4U=#$H_LpFF71dkRya+bgUMR(Sf0ON({HYl7)8t@q^9Fj=Q~_p9D{WYIZiR=J{w{wVFr) z3TNU)?EPb#bS@d2w;Xk!iNohcmK1X|{s1Qn|F2TiCcyi#E z|1t!QE@mUN2Z|Ipg*5f^PUEyS|K&&GbDvNcsO$+BSklTMtU@H%;j#i_mjld6An>u4 zfd3=|ZA8(xg_$UK$*UyhDyLa5qpC77`X1jFvZomRssEL;u|fvT^bohMc^xOgv*g(v zzuH}9rFjz1r;?F3N4nXm&)oW4hF08^@#Dv{a(8H$1?i#csRcM1?90en8nr9Wetga@ z_1_E?QOh~@20%Z|E&Aj}$Yc`Y3K8a-jlaaz2GVjESsH+PLoET+9J0$mjf^nnmg4Ez z)ot-=rNumX6*WB@kz&W~@5puIiok%FpWcd`QgCa!d@%AVSPIbHdtCU5(@=YHRGGkO zFCn;|63^MGx*~Tu`RAq5-uxG-P=vV?NjL@P0@DoAG}73TGF5teL&Wt>DiKE|NkJRg z^ysiOI62~ND8h6rAYhs_f&~tF zu}1It&9|b(QXpB0(b4^puW=tZ9CpkM89&^pQn7TDCMBMJb5pxR*BUq>5M+b_UOe!7 zEKlu_dtLNG++{Y4$y3i~N6HJlia-iEu5>m)r|IS-Uo}CcA9hKlcdLR8@iQ<*XRxxi zr^+^8z@tE5=xfx9Ras^M_`KWEyf*edks$WSvqs+Z?~x@dZ+s@@4CtcdmH6_ot^$mxY8g@|!+$MS0CC z+S4HP-iZ4^LQnSujj;p-#sXUxa>*C6;AF`(t@8*BV632ypp;yVgMGIvr3!K4= zFt9=gc^m?Gj7pCPhnCigV@b zU%G@ZY6LAx8TTV-B`*643j^;ZI=mA?D#;Qsp_tT(Vh_#(U#?bagL?uo29a2&`-(pM z@)tu2WR}3|sXyb-$rTiy{+Q2x=m`?0)rbUQsfF@_b(@}+Y8oOD9Ym}$i3Axd%qvpd z9m-X*_$}rK_<*MimS^%qMKXvn##s3OGg(7-2w$$CdtQqbHPdC^{szb?x=spHi!Q~ z>CIcREpX0rCjw!w2mdAjf2C`-pf5)@qjZh#i$vA^vdL-c#_^@THMh5*GsbPGFmfhs4sWdHx2uAu<0 ziIFV)1Jtz=Wdl;5C7vD~)yXbHVBm)Q^OBsbKhrfP;64!P8cAuirxAU~)3xSLE@#!_ z`-rT%sVUq7W_9rJS;(sMy{Gr_5wM9gaQTQPrr(NwGt|6Fic8~wsIEfD>FRerE`1z7 zYfDJDp(P7K@ z?-Wn)P3oGZ83{-!1O-7c)jdX+Z)>uxEJb#Mmt;KdbgZbTG|#?2-1*02s5EsOCqJ(g z&%fN5`RLIjm+;Po>GlXw$Dvo&o(Z~ga%J+og;3QuJzOxeqnPr}bN;<&%YfRdwVQ0( zn{EA2*|WDqo(m^8H#ZlT1r)BU4tMJSt7+SF|Hr47FOD?Dcx$A7A-@uG>aL2BVb@=B z+>WtG1_lKMJ$wkYidj$q9sgWw{)?zv(UH7M99n#}Xu)N$WAgrR$?!YYWmV4Y2YJjX#9j&{% z4T<=gAwEui+o2_65VbUl!=;bN|{ll}X9$GXaE5|rAXo_~|9 zp7NtIVyQDgscq_5Z*MPDefnp)&5X^Ace~Q^XlHhsNX#`xNqZmRUFj&jy=A|FmR+txii_2A4+=U9_A2$RV1a#qy=-4|&ahB(WGoye6sXEqw-ve;&-SJ0Ms#L37=Wk< zh7KAoO&S)DSJQfotOD|68JDCmz}kGr;hPkoni7Nm%Oc-vwz|5y)+w5AaAoXb6JMmmL>(7D%R@JWRefq>-Lw;q@!6i3 z(6CrISLhh%aa8=ifSsS48r-{Q&*Hem($ycI9w#LwNl;$VdcYkrN_flIpUK$8 zm#uON*`+yc)ua_oFP|3~rcz_1cFKtSrF)E`KNg}a8qynzn-b5)K>GqLvT5$|o#ycF zoBLn7%!lqD-ToR1h}SVWk^7$WKxr=b$6h-g{XDyGuWz*RY`{o<;G$SIPox<3wlC@1 z+e7^yNVfNljlA=V(|7LjGtyurE-1L>)z9l(c$Hu0jKn+){fKjM=%~}NuCA^e@!PT1 z;cxSgxGc`kl=?DMK03UYgM)*Uv#;dZDlX0R0%*7J^O%TfYHDI$qP)+cF^nj6YUb=0 zGN}wtOH70o1MBM8+r0+?krzjq>vF8`zNwm;=>3okI_OwW)Fhl7@@n@5BO@pPK4UV<%$$B#Lru-e)3hab6iU{`h6Y`QRJFBx7gWM#Bi_1tKZP3U z8#iu13xh$HX%)0`1QahV48ME#Zo1vGI5uKoz(jM{U?oOYmG;)KYIC!tjK~c?ieTnD zFV#KRY*Z1y5-Tb9cBC@8kV-4Brm5LJLJhqa{`3Ooc0K`mgV!b{K5pbKP=@kv5SL-M z^$JUi3ri#3630g0ZUKRG8-2IKbLx3S>-W5zMRU#Jg*PQLeIw9tGxl{oRNh04(451< ze0R6Uc&J8pHYc|)#oN<#iFYZweNm&TD*nw1Ed2lg8DOuZn8RyYHz)5AbK#eb+zqJG}|$Dcir++SNY=pp>n3WRVprN9)tWpi*DsVL^obQ6k&?ML~S$3XEhu zGxcgh8hp#3_cfmH>#ny=w@As!-HBbbjz(|EJ=U9+S=@Q7vu^sd%VeDx3dYD*P4D0S_p;i0MGf+_sni1uaE%uD`k5u zxD4Ovz0WE=G@r8qi+sh#o)mlHU%Btse%2emO@pw3R?5$QqxIC%)^?txzzj0O0pC4m zYa%?x7d#jG4Z8t$9EV!KY8Z%7U?&QX4juQe>7Ab+ugqZL<=~iU9roDY3z%$H6Yo2H z4)$AUy;zswkqwP9*5Pgq>H13(N=s~JwTWk;$H;N-h*(+CI%fVPtcD8Jty;bvPxTH!i1(D?K`IAV=ptqrxbzNYKv zr&x<$`F`TUh3IK{Qxz4JwKTi6bam&TX=$kCWlhIu78v-aPe)wa=h_PARoXrkEyko2 zS68briLSs_4E0pSeyyw)=G4bRhN=u9C+AORCDF;s}pEz+%j%q!f z#-)vOG@P||OD?rwP}Pj%O>Dx4!qtp_2>8}4xP)&lw#s|w(YPgM&n>!(Ti(#D$dr`Y zd+Xqa4>afZvtCT<_S;>uMvBDd$Q?0lI1?`Nvj6o9+Ly;1`{rjV+pVsvJI(ec0N{uj zmEHwdC>sAPn&St?_@vKv_k3zODB&9flWyR-FbVBrsi~=Dx(|X*`O0M8(%EVOc* z<~-vzDG3yiA4}}pDkVENWj1T)zW7qWVKDi|MgT+0gjLvTQ`Xd0+MpE}MjNXu)YaKj zrZI-kAtY3i;OZ}m{ahG4Rmj0@e5o&AS+}A71gToJ=N?8o;*-$fh1&mG%z?J zTnx%#{D4=TcS95?F%<0bV;7{v-kz{HW+Ul7S2p;tVV*`5E9pi)?})+q^FTw6zBg}D z^M}-LAaq(m;{gghiV>+*(yR~?JMY%&;Q+N{0}htW#t^KQ@FE^zWCf$BdB-XCePs}6 z0UKa?Uyq0I|3@w%7vD{KVb(T3+b$_YC^$CrNL;LG=jkwEBZy^7Oz@v(?|9E8VK_Qk z|LAejqn$*x{qoS^2M?NZ&wl*4VS|5c$9sW`RL#I%)1pY0G`xO2u-5_>&`RR3W{@7Z zm6|bGH32a#l&ugtVnyaX%G8MbQJc&J*CIGNCi~nq z#E)d4Cf|}u0jpG62{oON*KgQ+`_zFG+fB1=8w!*UK`kXFDQR;Q2#$n^7o`(+@80%| zS0W4c2$6m)%8-rfRs=>wz+?0V&1PzdyfoCXokJM)^f-b=G4(C{G)3u+Ymq;gIhzfRd}rLwP*ctMRxJne z^;0xa8h?4rGflU@MhQ&C-`ClDTZDa?xD!<4;t)H*v;v}IOwFev9@4^AVNKbH4!hc& z?CA*=L&zWSM(hVhd+rMhWOC2OpbE4?R|}#bf)*vsFs3t5VgF1jDQN?BQ0!|dUxxh& zszTO?r*o1-w>wgTi$9cIi^zibm%i^GIggHm7LgYi6V%d-jYEr%z>h8{)nN881&|>h zNAgng#-jSf#vPmj>XUu4)j?b?z3jrfIXMwsqfCv@d>W3#su?PT)AsiE-tnz#D@0{R z$%x^@%q24nfD7U?*6L_0>}%E>E=Ki|WRwTSB8~a2QrBz@d>Fr$nhoT?;t7YhbVCM8 z>*pdK6ibBaZriJq^W*i8!qXq^T$s#2oXQX}u~v>%*~hAs3>~QCyW zZg@j;OI#cW6t!EmD69BG0Z&&sI_M%q;bG=Jcn?F*d0(F$T!I>F)}U#Zht4*nL(1bq zv_QbBT{J&y0ho>gSN0WZMBDJwGS}34)MCYLkQ%RmJStgP$hz*}MQ6PNm+QXQogd38 zp(#qh_~HkvhN(fApJ4JxBGq_R@P+8hf~Y=d)w;4S6`WJ2OT?ExRGYyIIuV@gd{vf{ zOI7a9zB9__qd)}c?&IU>zRVf(Zj=2czU9GCK=qItO)ZJ=4O_KmZ?;(gK&pG9+&n{R0Lu}fwY~)T+h?k`x1(nURa{+UCT>)!81gYfCv7w z1@G>&LaEqZ8J&)Jh0Nw`^B}-Jas%2(iBFb!oO()NNb(nDRK#gi`k}YBA{6e31RW2s zo8b%3q5HBa+q~T%FWWr}G+`2@-^h;m*9?$S_sRzYoV(l+3!citjdn0Pz6MuK14Tzwb znGo?-ddESi*xP;(Vc9$sMS|@jmHJM8^OloWb;@PaFH8cHFo^#UT7o)ON#xh;rQ|ylQF? z5RgeM`PKC7kdcP;h{n17vT5HMkPZqlbzi3!uyojw$H&mY|3X zare|KjYoc>_VQ3Dp!P%V5HVfB&_7YTq#WNV^M>_RPlTbfY5a%3nnrx!R^OdbH3`U< zw8r=3VbOAw;2rhyHGZNtF|;@UohIk66XI|3`2g#2o?xQKf){yFmc5b^iv!LQ7tp*!68XV2-B>^PN8i{mh3vFwPuan>8GUwm*2f5 z>exzFBL$;6k)~tTB^MXZ$*<BiF{YeDPgD@uVrKq4)SFa1?sgt^hLld`lJu2m&+tuZ`rnrN37n`@7{rW zNpd4*7}IK&$+4_aRnnHJu7Mto>+5_=SCVv)Yk@tT=!?_O=Qp}3@S{6LleciG2u+Kd zUCi-65t}f(Bknk2w_GIyuck%+%}wwx zbV4BNhVpCxR1tNezDoc)DIf{D&0E^pxv%OC{SICzOWm*mid0DSxJcysrRzgJec893 zed@lIB!Q9;Sc~C*fwUj)At>ty><8x;3i%&Bh)O(Q*=_|(Jw_~bRnOP6&}MY_EXXON zSn{=1UA9Tli0gN(X-B*mVjMzY9?c<4dz0W6sprP8ot1^4Ojrh7ocLNPFjf1lTd=Ozo(jz>?1R@bo+nCJ3+YZpjXk8G67p{|0 znHG%hMP7A%I@Do6{c=x*5Y(p=vQOAqNd@{NC)TW?Km3|r$Wo;;oJcY(k5OA7;pY-i zkBaiQTP!HO`(W7ykn@SjD~$tclAy1lsE}~kM@J#o2dGHa#mBQRktHD-AUtceK=IiR za26DlAH*cN%^Ow9gJEvuT6C3%2r59QY^V@YczoP4rA0gsAl0o}|{-pG;%Ev z%tTsE45iJxDTEsPiaI81@^WiIBPxjm6*=HH?Db`^_$CFfCiFD~$8u>xLpNkx)S!u# zB#ApxiK-ce@s`cCFP{sN}=x#8jMG1Cwet08=Gq3%wU-&Ys2H>t*BX6ob3h1W+@I#)A!5RsauNAIWi2(%{E} zdtLC7aIg2C>iM(_E}gOw|7}eMA;mRo?m!P;w#BwBF%_ZUUX$^96Rd3rfci?zZ+=Rr zZBjuCD3>@YI>gAUq@+4+p<(r(@RA`uU_YEOxg1}&c*naP(9;R6hgaUL1wEKhMF(;O z|6N|Qnp1cg)~i?kc0*5~EPq*8DJ=N7-+CGd6hK(h!w6wrwYKNOUr@nG*^Q4Y(f@wOrm0fRU3cUCXyeno|HqO3V4%1f?{>rU<_zM z9~U|h98pM>KECjRPW+i?r3J@Mo;3R=h1N_ANtjlj@YxP!d4zu*a#)(i`;HIV?>qd5 zJ)&*rOf?=t2b73^csj+2@t7&ph4SK9J;DVJK{mWQqGjY!FX5XjNacxy!bMRn{WF(INtMA}GMS&K|H{!lZER;u8flS=Qb!TNc zIMg2>v|9Pf2Xk`DHRqsRLb*IZNJ($?Nl}NEMsb&k#I-bmC<=s*!&)eMhe4KPLqn^a zhdk=2gbDc*3XdXj6;SrZkM^3y>(!tFh7uNfMS2eTcn7y6YS~0V?T6ErO|jtmu92-4 zYKNN97k(?R;SMBS50X%hz0%w|I7~CA<35TqA)fbRpBaI8BA9L!nH)%}6o-`ivehlA zj=El-QT*I}VnEw>cal(>GG6>;4xJuw=#FYu%oU&1euA`sU7}(*$d@EHE??w11E=H5 zAZ-=cnvV0?${X>0$N2-aKl0#Lcw3zC$+gL)W9;NHwo-V zF|^G}Qsd*1oY&VTMM}n;(l%1O7ag7D^bGFI9M$n)*mM6-o@=-k;Ee;bT z@4pz+^z)%{r9Ky@9bJbZ1|Y8>KD^^v!e=J~d<)0icw{aQQu!Y}E>dL=6VdOBd$0?bx4#D3UtdiIk+KqHWN%=74#B zI@N(3gi}3@>!YOamETyvWw36+{bo!6$nh*A@6B7%MnC)owM#j=c)i6CO66lD`t67e zVfOqZrsRRBW!cOoZVT84SL8mc)scDW&YkKPmY}T^RK5f8Z21-?XyK>`=SB^(j5Vm4 zT@CN9m&JEf3qe-JvFI@uP_tsw`_#+9#@HOb=Mx7fL;8g>j;Fb5ph%Znf zrM?8s!YGl>D!q)=EF}D#m1U47m{rh2X9-(SFc;7)H+xa%?XsPf3OGf*R0QZ^rk0cNgxm2v^e!SwCz| z$B}yFdR$`nW&askzK7lbJhWVaJAT-kWhUfLB5(xt@d3|!WcS}q?Ys6CD1m@T=T{~5fU%qQ;4ge*Ku$v z&yy0xU)h8tE7xSky@zj zi`V)*n^$&6N@Q?_B{u^Ra{SutRCcM7_=8q>P6cp;84uaPw%)D%pIqQDu9GAQoc*}F zDch8lkp7WxBJR*FUE)LRR-*KtI!p~u`alc$^8}m=EPzfoxN?uUfBb4-Kg#29w|bb6 z&|-AmIQj7h73hSz*}(kPY~)Rhlzii@3y(qp`QegXb%qp-!)=LmwpE&vMBNkN4Kxp9 zuXgjhWIa&~dI$uP6V7{K^N)WrfjPl{FoC2UIINZ|QPV@GkuUuvC>8@S`2G&SzyOzS z66wn_UQ0={_l{js2;H|#1fs56u!)gR8$0cwaf;vpr}`7#c!RG2Pgj7^V|hwA)nVq~ zRC6x#fT-sd_Ol{Eb_=&oY)+fX!Yq=00~cWD?%V-?vJa;*uoZpT4Oy04}gK(FLr={Q`FSiFS8)8b)?=dCH*P!-5{a;%)E^$;KuxZ~wSZ*4O9Gz8L4Nh8Gr%O2Z-*l$%rKVB zbwq_h2$~m;A4kReH#eQ1JK#o0u@lD13U7}X`!czn@h>Y6@{d0M#;z~0_hQL)-2K96 zFZU<|=#eEY^ok9ZGd4u1i;>Sm7szBkygWfZCoAHru^u(A=s^F7vL&wZWY#s%-J@b0 z-}E8~7gb39;7>X&TT}9bO}nCj5x0#MuxdL9jJO6IhZ;OE1>1E}1NNhilVCrfJMhtA zTM_&5_}+_>c;W?|(&{!RjV5C)?5&ZC`>)a?zTb#yc}}Vxop% zK=8;C@5TidV;#6wKmt0yqc5gNJ$n{{8k?4X(H8>CHrM~l0n(M=LMPb@eg)0}KC_*J zF0oU5tb_$7fs6T^Agn!R;$|lvARc_#!X{dvxDp=VH2QT!rYY8q*7@u)P z_2;n6=CmsxHv>!Y3?5p+i$CGLxHG{#O+^czr=V;MiUZr+RFSVj@Woh3>~9R9SrU{s zZrRuKdQHto)c6laKyu!)A9yMEIh~IE5g)9ei=yfb6^7qg3D>bvFF|V!+swcJX6p^L z=68C!oU&ZPfdVTydHR+f&!vlrCpQxO_f6V{-kSJ;S4#NBV#7xqAW?yuc+z$E=j%Uy ze2VYqP{uf=qv`24STmnV;C+^0`K~Vbu9(=Wwc1PfiQi*N#$*&zUT4N}4{Pgxw*y)Y zZqmYA9t@Xq@aG1|GQ@5)fdGl{fGUKokhARm&ABeZ$$rd9G*scai3L0pWq}?C`|(+Q zX%S~Ymdz~5dME#Bg8qB58-mJhTz8HC_9GNeJm#OEQssP9sV`6|i2t~5O-NhOTSTs; z>B5_SK-`&8MpF^?x6rdY?IcNDYdKX_O zA*B==+&Ga_{zuN{l_POh?e!_a&}MOWSADKy29(C*K_y{pF*k$%2r5UchznK%2BZSs zB_J3O{AqxnL!LkYKH0r6*p8=ce1njvF5B4=u5aI5<}Ckj%I4J^u_g(kg~3IuW9%4H)@GwZmAM_t# zeX*7D7h|DmiI9KF73y8Dr>ZbQ^j9h((NEKcS7Q*@>rGvgq#7R(g%`$RBn-mAu`zgK zMj+h~-U_s+-&x^B7*}kirZ){dTm-p#@Ft#{1l?yL@`_Q4_}P(2+jm2|!Q;oM=lmE` zMOX@;|97w6i;3>|ZZIJKAgBJ8%AzGp7INxokY*+Fvrw6=lU?0c2Oh6!A{#WV9yaQ< z>-(Wl^HG`LM6iR1o(AH3YA_C#JU88-Y4}+2=CXwyfj(;}+WiU8lT|XO_@W$$`*bt> zk1Wkidg3%}b^z)1JaeKmp#H(kcpV;A(r*+%8E%w?y>J0a*Uf5D{{d*_tGK#i$<^?N zBhUX$s^65sy+O>zlg9gnRb7n|l2C|FyCWDXyq3q5xvQ!mTgh8|*%$gc1U0OSK}4CT zabTCU7ch^VZU>T@o*(fZ@btp6JI%BK{})QG)^muk(*xmhBz{0eDP{AOMN9EQa}U9y|l= z$HB9R{rHUllqRezW?uUCHsPq`UVc2_aOu*n3NKCqW@{h)N2bO`h>#fp4mRjUhE~Cf zP#uf(}FjI`_7v$D#DKzM^HI02rk(lg~(MehQ@cZcF}$GTRnE@i*0 zX1ZzVCdjYz2!Ggl{e_IJFj1@@z z2UIWO1p|FnPux+A_NZ@L*w3~1H|KC@ERY^eLSvQUhb~R zet4SGpB?qbl$F7IaFCkOf~l7+?8xCQ`yfnPnAPqW>w-|KKJ66W%syPuu=Xv>shW`e zXR0x5#}xYi2!OQB><F-Affi_-oHFaJr~6fohyK&srhOjhH?P|#FcNQp*_;HP{-Nh!BkrGdBkYj5h6 znti}Ds;9urgc-&bW9%(}UHQdU^PM76mg927FMGWE-&vairPHki3TMy4gG}X9L#?`M zYFl^h5;p$y2&z9NdiFpedw+deGrVbi{``6PC#dIb8J>zcU@@qGM3oYKZ542z%nPTv zH07Y@JUV(}su{>XyCc>YpejClfoa#ST@o`Nm3Z`WM+UEF6wUUvyuAA6_3Px9ABx=P z;AfsewY4?#T|d7i@^#uhd-q!ODh$6felDAQ-P5j4O-svZVRjM<_Tf$QN9g|xAm8Zy zJ=whec5OffRcF@`!zFbgYdQal_=qJvc<#NgZf@~0^oQ^sJb3rkEz_##ldataDIz_L z*+rM&1zrKw_%knUzDdD*?3XVOKr;lrkk!H7!JPKR(Bhd;a~{+;vBSVADwEn_sKpsx zm>z7-35G5Vfy-Z?$_Mk*m4+hy9kB;Xm19*0)w(&e=Zif=>>wH#R?ffiG&Z(#zr>8J zv$Hc)yh<$1k3$_LbZdl3czS$#bl4yEfyzt!QUd}5?S6dPB|BWavBZUxmTCkISm9wmV{7_m6rBy8|CAhO}4u#Set=4Ajn8a?Y08ZH3lyJ&E|M z+Ide^FEyNzSuvCWZ`?G+AsgAPIN2AsX5-Kk@+iEA71`1<>pHzwvrT>zU3UJZi7>}D zxDk&%W?f}LF{ga<+~=X%Qp{z7GTWcg(a`}fNubG9W%k6Gr_3bc4kT* zb~V=%V;&Sj~4ee;u>i~Bw@%L)d(BFU6KJWJW=N3(R&a9%@mN_X95R&xot)+Ol* z7kcWoYUT4Ya%bShVS&#f>^Zugl$Q(ad=hDo6yf~Pe0u_RUG4T=gwsYh?y5hze;~B zE)8W3tUFLMZa+nr%;l$!qS)`ZAgI>AVSuJWt6$XRXjVypL%$D_L{G zzUXogvi_da2^I+Ww$;$8%kcNluN46_`2eI3?I9gX9Q?aKZ*0~FH-D8fG}!_wgpVEt z;MFy4^?6>y+qcLLXS5d%zm1A7rv~}HUD+^(&rlmxsV^QDRYv{f@tV}aWoV%1PeGRK zo(QBDAYZIdJIFVl!MZ5FKU-q#juT)dGHIhEaf*oNMUbKEmoILg{tW^+r>PbUwW9A3 zl$2m~ylW_yB9Szgy+MMU!KPTxwEUpTxN9 zM`;yu@O|!mxv|OFLp^I3#HBTKV3BxFj&073x`~B53T~w0L66d9 zq~<|LJ4rEOXJI*Oc-T7U6V7_LPC&M2;>0!n>`)pvwO5_p?uXujY zSP_`dkoaK`$#xcP5$;vgtwIZ|Gbm2vAESS9iCa0({!)FeztZ;`JU;Np3D}{EhH#xL zSFR|)9gw4p?yZ*LPFfuHRHoNF61A?dd%&M}D!;)rxO3;r2xV0((|A{X{epub=kb>} z8k4DCezAA!$(*IKYhIR5{LgnXG!lyiZ`-rSo# zN>(oAEUm&j-!2aqqj_@y`!!;wimGi1?wbcwoa}p!6}|bWA4+!Ttm=F0o!_Gqfz~5) z(p6;>Gqdd#t7jj#axHJ9C~lGMa3#9cJ>e#U{8W=1muYZlCz9=GzNQWpVSvsa*V=Pt9|_@u%~s zQ%5UOQa7$Axc1NCPYYEveR<0mF3*-Ybm*IJul4>5xMH-;$djDldv&V^w0*O@)#d;L zv|rY4*I8<%NXGfjk5+qPEG#`4liI!@9Beq}g)eqIcjCrD=>VZI`>$fxV;}0f>u8NmTm%Tob&T(T6+)VCOUP(%ZBbI^W&q} zb@=Yf{LA9R^|tCiwg;^c)qS5EO7Dx>hAL6~l>hjiO&{K>F`!skoslaLy_}52Yv^x) z$`fwt+UJ*VM@Lx)VxzlY>DJi}^IYvaIU8c_cB-Bu6$qFVkCdaKy!PJYuC_NfM@2?9 zQD}nQtMK8FPrLQU6@fj}@T;fKJ;b8Oapxptezwjn@bcfEI) z!i>!H=U0nj2ncwIo`0eJgA)Wu_E{h&?Jc4%AQz1Vg2zr7)lbPiuw?VH+qNUHbSAd-a_Z#$|n0)|P zgiNIb+>BcaqK}X@Uk13dOf!1_-O9X!*DRnFkmLFdNTeVh-qs2D8dTYM2nc zsK_1efEq=;`kY@&#>dBFVq)L|9ZT-Ng~B}-9*db=zARkYXY66ay(+imZ+rvj4biem{$an?4!24fQnx) z+ro?|@1O1L>H-jV_-292tG{E}<`Bh=LQ#~HimvYP*!|Wdb>=WAL8oNQ-T&uUgw00I z@qgX__-^DBs8eD86v=w?BLhSKzxRee3mI59H#aXXEt#e23_vUcp+qIv_O9YKDQqxk zMPs)K2?fwQC!3UrxdVTo(4*Iq&qCmXg<;m{(j{QCx?BogUE2y#{Zna8NlD3TsXA+8 zmBSbeM-VxbMCLN?6DE*@3lkD!05{k2|x1eIFMWM_v2u=@hy)iTh{{$qvLGuQfeKm;^SP z4aCv@#vLdDa(a3?m@E{Xg1-6i3oC>zS_xJdL`qLrC?0fN^K1F@1jeBR4wolE$J5f% z>X{*!{(1bBwjXX%Qv=rx)wb9$pvN=%$W&n9I2?{$^ez;SH9uAhAQZr!@rH(m2%)(! zUf-OE@L;@gDQZ^RA-GyPux@*ljspN&LlB8gl|;=``CO_#Zy^>qT-i_P-o|Y-_v^xx z4gj<+#mb%_VX2`At5+7l3I)9N!P0j{B_&g!EXU&&P3OuRq2d!Uh(Q83Q+Rj48@eu_ z=s;}R7vg%r-$g}74;H!uq&Ak9muJVXMTHUJqn4&7ksUjdpj{A{9r*5wiV6VDp^DL| zqeuS@l%0S1W@Ypp7nhxKdJdh^o)x%S8o+(@?e5Uw_K)4G)*kA)BLRM?~P{)hU z-QOmT5^!E-^d$6k0uLC><$xDYI^%Z84RH6Ko30R?#RD>CdG55p!7otjhy~^bLqBtN zU1Im{1p}4tZfLNDWAB`%fZ0Q6N*SpQZ7x#zS5Mi44S>5GW}=l{vQpe*r>z zz1z~vq-kbaVG(TY3j*=iJER>KyZE*wv z0I1wV!Si_$PH*3zBV5T72OQ;2kugsk%$z~nj>MdRr`nvL5ZcihpKMu{{DV2c&ICd-DKE`h=|DQi5)<-l1QSJn(xp-DQRhG zd@6-2`e7k<0>#s%*7w_-e5^fiaWPZubJ`i4_j#M=qEfeCs^CrE8bv#zO9zIN?lZBC zj}*KjW()}y!BxvH^V zJ83R(zNR~i&@Un914{iG;QuZa;H@C(1oIS@KXc|x%;)ohr-Gb&=6zmak9zkFh3LF!&*(S$sou)~c|jmnJtTj@@^w_`!h0=5=y$YOm*tA4AE*o9wb zlPDD39TBLQf_xmOv{j}iS%UH~ub@DUIRl8ap>X8Iw33p*x{PV$9EeN`v`K!QcNJbb5fLluN znkvEE(o!ur?wIBKT!&Is_c(Y~VE+Vkc1}*g-1!|;RbHI)=xlTb@Bon>RtSQZ6%j zNhIRg(;X0r4nuV`T4hLwV>Lv!F)S^C4R@%Gx4)1EQRWD&4lgWRhVIiL9R*)PQU{|&JFW-z>cehgOCcz3OCd)HcCTg+R%o#ZjG6XLMgkw zg*0gLRXI89T0T>lpv3?$6;9lJMd2rLadAPLoqL44=)SJ5t|0F)nuCJj6v5^LQ+8BQ zNn|p)sL20*Y>JxeHGBKPu=<;Vx3p7uAT9u7^j}W-&|f#9+n!BDSLx4X3XWy%=V6t| z`T3`rGEOUOnx98|>HY!DR{WilA? zO?RMqwNp->Jn58w+sN5@0%}wWQIpYO*G&|D0%OX}%9^IrO)@N?TR;^5m5S#BSRLQ= zZFJdZs_kjeGMnC|hU7CKg3ywPVKJF1M~^nPw5VV(WD-fsYrGD|h&190!BaM%rU7~q z>fH$?=o;|!X-+a8C-?93sO6U{bkf;Gz3mWE@=&jvVORIU0AA6dEw{kC8iSujkOcv! i6_FPm|D}K63u4kOJ9iLJ?r`~LtTevA_U literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/experiments_accurate_accumulators.md.GjJQmUUF.js b/previews/PR195/assets/experiments_accurate_accumulators.md.GjJQmUUF.js new file mode 100644 index 000000000..3ec49a49b --- /dev/null +++ b/previews/PR195/assets/experiments_accurate_accumulators.md.GjJQmUUF.js @@ -0,0 +1,6 @@ +import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.BjTE4JnT.js";const o=JSON.parse('{"title":"Accurate accumulation","description":"","frontmatter":{},"headers":[],"relativePath":"experiments/accurate_accumulators.md","filePath":"experiments/accurate_accumulators.md","lastUpdated":null}'),e={name:"experiments/accurate_accumulators.md"},n=t(`

Accurate accumulation

Accurate arithmetic is a technique which allows you to calculate using more precision than the provided numeric type.

We will use the accurate sum routines from AccurateArithmetic.jl to show the difference!

julia
import GeometryOps as GO, GeoInterface as GI
+using GeoJSON
+using AccurateArithmetic
+using NaturalEarth
+
+all_adm0 = naturalearth("admin_0_countries", 10)
FeatureCollection with 258 Features
julia
GO.area(all_adm0)
21427.909318372607
julia
AccurateArithmetic.sum_oro(GO.area.(all_adm0.geometry))
21427.909318372607
julia
AccurateArithmetic.sum_kbn(GO.area.(all_adm0.geometry))
21427.909318372607
julia
GI.Polygon.(GO.flatten(Union{GI.LineStringTrait, GI.LinearRingTrait}, all_adm0) |> collect .|> x -> [x]) .|> GO.signed_area |> sum
-21427.90063612163
julia
GI.Polygon.(GO.flatten(Union{GI.LineStringTrait, GI.LinearRingTrait}, all_adm0) |> collect .|> x -> [x]) .|> GO.signed_area |> sum_oro
-21427.90063612163

@example accurate GI.Polygon.(GO.flatten(Union{GI.LineStringTrait, GI.LinearRingTrait}, all_adm0) |> collect .|> x -> [x]) .|> GO.signed_area |> sum_kbn \`\`\`

`,16),l=[n];function h(p,k,d,r,c,g){return a(),i("div",null,l)}const u=s(e,[["render",h]]);export{o as __pageData,u as default}; diff --git a/previews/PR195/assets/experiments_accurate_accumulators.md.GjJQmUUF.lean.js b/previews/PR195/assets/experiments_accurate_accumulators.md.GjJQmUUF.lean.js new file mode 100644 index 000000000..de4dd7aae --- /dev/null +++ b/previews/PR195/assets/experiments_accurate_accumulators.md.GjJQmUUF.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.BjTE4JnT.js";const o=JSON.parse('{"title":"Accurate accumulation","description":"","frontmatter":{},"headers":[],"relativePath":"experiments/accurate_accumulators.md","filePath":"experiments/accurate_accumulators.md","lastUpdated":null}'),e={name:"experiments/accurate_accumulators.md"},n=t("",16),l=[n];function h(p,k,d,r,c,g){return a(),i("div",null,l)}const u=s(e,[["render",h]]);export{o as __pageData,u as default}; diff --git a/previews/PR195/assets/experiments_predicates.md.Dg71Bfw3.js b/previews/PR195/assets/experiments_predicates.md.Dg71Bfw3.js new file mode 100644 index 000000000..d5c723240 --- /dev/null +++ b/previews/PR195/assets/experiments_predicates.md.Dg71Bfw3.js @@ -0,0 +1,98 @@ +import{_ as s,c as i,o as a,a7 as h}from"./chunks/framework.BjTE4JnT.js";const k="/GeometryOps.jl/previews/PR195/assets/hafetpp.DnFcy9Dp.png",C=JSON.parse('{"title":"Predicates","description":"","frontmatter":{},"headers":[],"relativePath":"experiments/predicates.md","filePath":"experiments/predicates.md","lastUpdated":null}'),n={name:"experiments/predicates.md"},p=h(`

Predicates

Exact vs fast predicates

Orient

julia
using CairoMakie
+import GeometryOps as GO, GeoInterface as GI, LibGEOS as LG
+import ExactPredicates
+using MultiFloats
+using Chairmarks: @be
+using BenchmarkTools: prettytime
+using Statistics
+
+function orient_f64(p, q, r)
+    return sign((GI.x(p) - GI.x(r))*(GI.y(q) - GI.y(r)) - (GI.y(p) - GI.y(r))*(GI.x(q) - GI.x(r)))
+end
+
+function orient_adaptive(p, q, r)
+    px, py = Float64x2(GI.x(p)), Float64x2(GI.y(p))
+    qx, qy = Float64x2(GI.x(q)), Float64x2(GI.y(q))
+    rx, ry = Float64x2(GI.x(r)), Float64x2(GI.y(r))
+    return sign((px - rx)*(qy - ry) - (py - ry)*(qx - rx))
+end
+# Create an interactive Makie dashboard which can show what is done here
+labels = ["Float64", "Adaptive", "Exact"]
+funcs = [orient_f64, orient_adaptive, ExactPredicates.orient]
+fig = Figure()
+axs = [Axis(fig[1, i]; aspect = DataAspect(), xticklabelrotation = pi/4, title) for (i, title) in enumerate(labels)]
+w, r, q, p = 42.0, 0.95, 18.0, 16.8
+function generate_heatmap_args(func, w, r, q, p, heatmap_size = 1000)
+    w_range = LinRange(0, 0+2.0^(-w), heatmap_size)
+    orient_field = [func((p, p), (q, q), (r+x, r+y)) for x in w_range, y in w_range]
+    return (w_range, w_range, orient_field)
+end
+for (i, (ax, func)) in enumerate(zip(axs, funcs))
+    heatmap!(ax, generate_heatmap_args(func, w, r, q, p)...)
+    # now get timing
+    w_range = LinRange(0, 0+2.0^(-w), 5) # for timing - we want to sample stable + unstable points
+    @time timings = [@be $(func)($((p, p)), $((q, q)), $((r+x, r+y))) for x in w_range, y in w_range]
+    median_timings = map.(x -> getproperty(x, :time), getproperty.(timings, :samples)) |> Iterators.flatten |> collect
+    ax.subtitle = prettytime(Statistics.median(median_timings)*10^9)
+    # create time histogram plot
+    # hist(fig[2, i], median_timings; axis = (; xticklabelrotation = pi/4))
+    display(fig)
+end
+resize!(fig, 1000, 450)
+fig

Dashboard

julia
using WGLMakie
+import GeometryOps as GO, GeoInterface as GI, LibGEOS as LG
+import ExactPredicates
+using MultiFloats
+
+function orient_f64(p, q, r)
+    return sign((GI.x(p) - GI.x(r))*(GI.y(q) - GI.y(r)) - (GI.y(p) - GI.y(r))*(GI.x(q) - GI.x(r)))
+end
+
+function orient_adaptive(p, q, r)
+    px, py = Float64x2(GI.x(p)), Float64x2(GI.y(p))
+    qx, qy = Float64x2(GI.x(q)), Float64x2(GI.y(q))
+    rx, ry = Float64x2(GI.x(r)), Float64x2(GI.y(r))
+    return sign((px - rx)*(qy - ry) - (py - ry)*(qx - rx))
+end
+# Create an interactive Makie dashboard which can show what is done here
+fig = Figure()
+ax = Axis(fig[1, 1]; aspect = DataAspect())
+sliders = SliderGrid(fig[2, 1],
+        (label = L"w = 2^{-v} (zoom)", range = LinRange(40, 44, 100), startvalue = 42),
+        (label = L"r = (x, y),~ x, y ∈ v + [0..w)", range = 0:0.01:3, startvalue = 0.95),
+        (label = L"q = (k, k),~ k = v", range = LinRange(0, 30, 100), startvalue = 18),
+        (label = L"p = (k, k),~ k = v", range = LinRange(0, 30, 100), startvalue = 16.8),
+)
+orient_funcs = [orient_f64, orient_adaptive, ExactPredicates.orient]
+menu = Menu(fig[3, 1], options = zip(string.(orient_funcs), orient_funcs))
+w_obs, r_obs, q_obs, p_obs = getproperty.(sliders.sliders, :value)
+orient_obs = menu.selection
+
+heatmap_size = @lift maximum(widths($(ax.scene.viewport)))*4
+
+matrix_observable = lift(orient_obs, w_obs, r_obs, q_obs, p_obs, heatmap_size) do orient, w, r, q, p, heatmap_size
+    return [orient((p, p), (q, q), (r+x, r+y)) for x in LinRange(0, 0+2.0^(-w), heatmap_size), y in LinRange(0, 0+2.0^(-w), heatmap_size)]
+end
+heatmap!(ax, matrix_observable; colormap = [:red, :green, :blue])
+resize!(fig, 500, 700)
+fig

Testing robust vs regular predicates

julia

+import GeoInterface as GI, GeometryOps as GO, LibGEOS as LG
+using MultiFloats
+c1 = [[-28083.868447876892, -58059.13401805979], [-9833.052704767595, -48001.726711609794], [-16111.439295815226, -2.856614689791036e-11], [-76085.95770326033, -2.856614689791036e-11], [-28083.868447876892, -58059.13401805979]]
+c2 = [[-53333.333333333336, 0.0], [0.0, 0.0], [0.0, -80000.0], [-60000.0, -80000.0], [-53333.333333333336, 0.0]]
+
+p1 = GI.Polygon([c1])
+p2 = GI.Polygon([c2])
+GO.intersection(p1, p2; target = GI.PolygonTrait(), fix_multipoly = nothing)
+
+p1_m, p2_m = GO.transform(x -> (Float64x2.(x)), [p1, p2])
+GO.intersection(p1_m, p2_m; target = GI.PolygonTrait(), fix_multipoly = nothing)
+
+p1 = GI.Polygon([[[-57725.80869813739, -52709.704377648755], [-53333.333333333336, 0.0], [-41878.01362848005, 0.0], [-36022.23699059147, -43787.61366192682], [-48268.44121252392, -52521.18593721105], [-57725.80869813739, -52709.704377648755]]])
+p2 = GI.Polygon([[[-60000.0, 80000.0], [0.0, 80000.0], [0.0, 0.0], [-53333.33333333333, 0.0], [-50000.0, 40000.0], [-60000.0, 80000.0]]])
+p1_m, p2_m = GO.transform(x -> (Float64x2.(x)), [p1, p2])
+f, a, p__1 = poly(p1; label = "p1")
+p__2 = poly!(a, p2; label = "p2")
+
+GO.intersection(p1_m, p2_m; target = GI.PolygonTrait(), fix_multipoly = nothing)
+LG.intersection(p1_m, p2_m)

Incircle

`,10),l=[p];function t(E,e,r,d,g,y){return a(),i("div",null,l)}const A=s(n,[["render",t]]);export{C as __pageData,A as default}; diff --git a/previews/PR195/assets/experiments_predicates.md.Dg71Bfw3.lean.js b/previews/PR195/assets/experiments_predicates.md.Dg71Bfw3.lean.js new file mode 100644 index 000000000..d724e815d --- /dev/null +++ b/previews/PR195/assets/experiments_predicates.md.Dg71Bfw3.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as h}from"./chunks/framework.BjTE4JnT.js";const k="/GeometryOps.jl/previews/PR195/assets/hafetpp.DnFcy9Dp.png",C=JSON.parse('{"title":"Predicates","description":"","frontmatter":{},"headers":[],"relativePath":"experiments/predicates.md","filePath":"experiments/predicates.md","lastUpdated":null}'),n={name:"experiments/predicates.md"},p=h("",10),l=[p];function t(E,e,r,d,g,y){return a(),i("div",null,l)}const A=s(n,[["render",t]]);export{C as __pageData,A as default}; diff --git a/previews/PR195/assets/explanations_crs.md.rB2P2tWO.js b/previews/PR195/assets/explanations_crs.md.rB2P2tWO.js new file mode 100644 index 000000000..8e41541c0 --- /dev/null +++ b/previews/PR195/assets/explanations_crs.md.rB2P2tWO.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.BjTE4JnT.js";const _=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"explanations/crs.md","filePath":"explanations/crs.md","lastUpdated":null}'),s={name:"explanations/crs.md"};function n(r,o,c,p,i,l){return a(),t("div")}const m=e(s,[["render",n]]);export{_ as __pageData,m as default}; diff --git a/previews/PR195/assets/explanations_crs.md.rB2P2tWO.lean.js b/previews/PR195/assets/explanations_crs.md.rB2P2tWO.lean.js new file mode 100644 index 000000000..8e41541c0 --- /dev/null +++ b/previews/PR195/assets/explanations_crs.md.rB2P2tWO.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./chunks/framework.BjTE4JnT.js";const _=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"explanations/crs.md","filePath":"explanations/crs.md","lastUpdated":null}'),s={name:"explanations/crs.md"};function n(r,o,c,p,i,l){return a(),t("div")}const m=e(s,[["render",n]]);export{_ as __pageData,m as default}; diff --git a/previews/PR195/assets/explanations_paradigms.md.DI9tAELo.js b/previews/PR195/assets/explanations_paradigms.md.DI9tAELo.js new file mode 100644 index 000000000..5a8e40cea --- /dev/null +++ b/previews/PR195/assets/explanations_paradigms.md.DI9tAELo.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,a7 as o}from"./chunks/framework.BjTE4JnT.js";const y=JSON.parse('{"title":"Paradigms","description":"","frontmatter":{},"headers":[],"relativePath":"explanations/paradigms.md","filePath":"explanations/paradigms.md","lastUpdated":null}'),i={name:"explanations/paradigms.md"},s=o('

Paradigms

GeometryOps exposes functions like apply and applyreduce, as well as the fix and prepare APIs, that represent paradigms of programming, by which we mean the ability to program in a certain way, and in so doing, fit neatly into the tools we've built without needing to re-implement the wheel.

Below, we'll describe some of the foundational paradigms of GeometryOps, and why you should care!

apply

The apply function allows you to decompose a given collection of geometries down to a certain level, operate on it, and reconstruct it back to the same nested form as the original. In general, its invocation is:

julia
apply(f, trait::Trait, geom)

Functionally, it's similar to map in the way you apply it to geometries - except that you tell it at which level it should stop, by passing a trait to it.

apply will start by decomposing the geometry, feature, featurecollection, iterable, or table that you pass to it, and stop when it encounters a geometry for which GI.trait(geom) isa Trait. This encompasses unions of traits especially, but beware that any geometry which is not explicitly handled, and hits GI.PointTrait, will cause an error.

apply is unlike map in that it returns reconstructed geometries, instead of the raw output of the function. If you want a purely map-like behaviour, like calculating the length of each linestring in your feature collection, then call GO.flatten(f, trait, geom), which will decompose each geometry to the given trait and apply f to it, returning the decomposition as a flattened vector.

applyreduce

applyreduce is like the previous map-based approach that we mentioned, except that it reduces the result of f by op. Note that applyreduce does not guarantee associativity, so it's best to have typeof(init) == returntype(op).

fix and prepare

The fix and prepare paradigms are different from apply, though they are built on top of it. They involve the use of structs as "actions", where a constructed object indicates an action that should be taken. A trait like interface prescribes the level (polygon, linestring, point, etc) at which each action should be applied.

In general, the idea here is to be able to invoke several actions efficiently and simultaneously, for example when correcting invalid geometries, or instantiating a Prepared geometry with several preparations (sorted edge lists, rtrees, monotone chains, etc.)

',14),n=[s];function r(c,d,p,l,h,u){return t(),a("div",null,n)}const g=e(i,[["render",r]]);export{y as __pageData,g as default}; diff --git a/previews/PR195/assets/explanations_paradigms.md.DI9tAELo.lean.js b/previews/PR195/assets/explanations_paradigms.md.DI9tAELo.lean.js new file mode 100644 index 000000000..dd625f3cf --- /dev/null +++ b/previews/PR195/assets/explanations_paradigms.md.DI9tAELo.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,a7 as o}from"./chunks/framework.BjTE4JnT.js";const y=JSON.parse('{"title":"Paradigms","description":"","frontmatter":{},"headers":[],"relativePath":"explanations/paradigms.md","filePath":"explanations/paradigms.md","lastUpdated":null}'),i={name:"explanations/paradigms.md"},s=o("",14),n=[s];function r(c,d,p,l,h,u){return t(),a("div",null,n)}const g=e(i,[["render",r]]);export{y as __pageData,g as default}; diff --git a/previews/PR195/assets/explanations_peculiarities.md.FHOVDDB1.js b/previews/PR195/assets/explanations_peculiarities.md.FHOVDDB1.js new file mode 100644 index 000000000..a4ea9b11f --- /dev/null +++ b/previews/PR195/assets/explanations_peculiarities.md.FHOVDDB1.js @@ -0,0 +1 @@ +import{_ as e,c as o,o as t,a7 as a}from"./chunks/framework.BjTE4JnT.js";const m=JSON.parse('{"title":"Peculiarities","description":"","frontmatter":{},"headers":[],"relativePath":"explanations/peculiarities.md","filePath":"explanations/peculiarities.md","lastUpdated":null}'),r={name:"explanations/peculiarities.md"},n=a('

Peculiarities

What does apply return and why?

apply returns the target geometries returned by f, whatever type/package they are from, but geometries, features or feature collections that wrapped the target are replaced with GeoInterace.jl wrappers with matching GeoInterface.trait to the originals. All non-geointerface iterables become Arrays. Tables.jl compatible tables are converted either back to the original type if a Tables.materializer is defined, and if not then returned as generic NamedTuple column tables (i.e., a NamedTuple of vectors).

It is recommended for consistency that f returns GeoInterface geometries unless there is a performance/conversion overhead to doing that.

Why do you want me to provide a target in set operations?

In polygon set operations like intersection, difference, and union, many different geometry types may be obtained - depending on the relationship between the polygons. For example, when performing an union on two nonintersecting polygons, one would technically have two disjoint polygons as an output.

We use the target keyword to allow the user to control which kinds of geometry they want back. For example, setting target to PolygonTrait will cause a vector of polygons to be returned (this is the only currently supported behaviour). In future, we may implement MultiPolygonTrait or GeometryCollectionTrait targets which will return a single geometry, as LibGEOS and ArchGDAL do.

This also allows for a lot more type stability - when you ask for polygons, we won't return a geometrycollection with line segments. Especially in simulation workflows, this is excellent for simplified data processing.

_True and _False (or BoolsAsTypes)

Warning

These are internals and explicitly not public API, meaning they may change at any time!

When dispatch can be controlled by the value of a boolean variable, this introduces type instability. Instead of introducing type instability, we chose to encode our boolean decision variables, like threaded and calc_extent in apply, as types. This allows the compiler to reason about what will happen, and call the correct compiled method, in a stable way without worrying about

',11),i=[n];function s(l,c,d,p,h,u){return t(),o("div",null,i)}const g=e(r,[["render",s]]);export{m as __pageData,g as default}; diff --git a/previews/PR195/assets/explanations_peculiarities.md.FHOVDDB1.lean.js b/previews/PR195/assets/explanations_peculiarities.md.FHOVDDB1.lean.js new file mode 100644 index 000000000..d9aec8724 --- /dev/null +++ b/previews/PR195/assets/explanations_peculiarities.md.FHOVDDB1.lean.js @@ -0,0 +1 @@ +import{_ as e,c as o,o as t,a7 as a}from"./chunks/framework.BjTE4JnT.js";const m=JSON.parse('{"title":"Peculiarities","description":"","frontmatter":{},"headers":[],"relativePath":"explanations/peculiarities.md","filePath":"explanations/peculiarities.md","lastUpdated":null}'),r={name:"explanations/peculiarities.md"},n=a("",11),i=[n];function s(l,c,d,p,h,u){return t(),o("div",null,i)}const g=e(r,[["render",s]]);export{m as __pageData,g as default}; diff --git a/previews/PR195/assets/explanations_winding_order.md.Bm0h6HnC.js b/previews/PR195/assets/explanations_winding_order.md.Bm0h6HnC.js new file mode 100644 index 000000000..af634878a --- /dev/null +++ b/previews/PR195/assets/explanations_winding_order.md.Bm0h6HnC.js @@ -0,0 +1 @@ +import{_ as e,c as n,o as t}from"./chunks/framework.BjTE4JnT.js";const l=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"explanations/winding_order.md","filePath":"explanations/winding_order.md","lastUpdated":null}'),a={name:"explanations/winding_order.md"};function r(o,i,d,s,c,p){return t(),n("div")}const m=e(a,[["render",r]]);export{l as __pageData,m as default}; diff --git a/previews/PR195/assets/explanations_winding_order.md.Bm0h6HnC.lean.js b/previews/PR195/assets/explanations_winding_order.md.Bm0h6HnC.lean.js new file mode 100644 index 000000000..af634878a --- /dev/null +++ b/previews/PR195/assets/explanations_winding_order.md.Bm0h6HnC.lean.js @@ -0,0 +1 @@ +import{_ as e,c as n,o as t}from"./chunks/framework.BjTE4JnT.js";const l=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"explanations/winding_order.md","filePath":"explanations/winding_order.md","lastUpdated":null}'),a={name:"explanations/winding_order.md"};function r(o,i,d,s,c,p){return t(),n("div")}const m=e(a,[["render",r]]);export{l as __pageData,m as default}; diff --git a/previews/PR195/assets/ghbensl.DHcwB147.png b/previews/PR195/assets/ghbensl.DHcwB147.png new file mode 100644 index 0000000000000000000000000000000000000000..9595a3cd4e3b4a4ea13d9563f5624714017a6fa0 GIT binary patch literal 11197 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�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%0D9PZ!K$l4UFg?nPJ>C?za5M2nx7W@VC^TVLtVI}b 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

KBt&Ru8Iq>V%*=hNpSB9^n| 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 literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/index.md.BWJsEQ2o.js b/previews/PR195/assets/index.md.BWJsEQ2o.js new file mode 100644 index 000000000..ae1d29c33 --- /dev/null +++ b/previews/PR195/assets/index.md.BWJsEQ2o.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a7 as o}from"./chunks/framework.BjTE4JnT.js";const g=JSON.parse('{"title":"What is GeometryOps.jl?","description":"","frontmatter":{"layout":"home","hero":{"name":"GeometryOps.jl","text":"","tagline":"Blazing fast geometry operations in pure Julia","image":{"src":"/logo.png","alt":"GeometryOps"},"actions":[{"theme":"brand","text":"Introduction","link":"/introduction"},{"theme":"alt","text":"View on Github","link":"https://github.com/JuliaGeo/GeometryOps.jl"},{"theme":"alt","text":"API Reference","link":"/api"}]},"features":[{"icon":"\\"Julia","title":"Pure Julia code","details":"Fast, understandable, extensible functions","link":"/introduction"},{"icon":"","title":"Literate programming","details":"Documented source code with examples!","link":"/source/methods/clipping/cut"},{"icon":"","title":"Full integration with GeoInterface","details":"Use any GeoInterface.jl-compatible geometry","link":"https://juliageo.org/GeoInterface.jl/stable"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),i={name:"index.md"},n=o('

What is GeometryOps.jl?

GeometryOps.jl is a package for geometric calculations on (primarily 2D) geometries.

The driving idea behind this package is to unify all the disparate packages for geometric calculations in Julia, and make them GeoInterface.jl-compatible. We seem to be focusing primarily on 2/2.5D geometries for now.

Most of the usecases are driven by GIS and similar Earth data workflows, so this might be a bit specialized towards that, but methods should always be general to any coordinate space.

We welcome contributions, either as pull requests or discussion on issues!

How to navigate the docs

GeometryOps' docs are divided into three main sections: tutorials, explanations and source code.
Documentation and examples for many functions can be found in the source code section, since we use literate programming in GeometryOps.

  • Tutorials are meant to teach the fundamental concepts behind GeometryOps, and how to perform certain operations.
  • Explanations usually contain little code, and explain in more detail how GeometryOps works.
  • Source code usually contains explanations and examples at the top of the page, followed by annotated source code from that file.
',2),s=[n];function r(l,c,d,h,p,m){return a(),t("div",null,s)}const f=e(i,[["render",r]]);export{g as __pageData,f as default}; diff --git a/previews/PR195/assets/index.md.BWJsEQ2o.lean.js b/previews/PR195/assets/index.md.BWJsEQ2o.lean.js new file mode 100644 index 000000000..9a963f22b --- /dev/null +++ b/previews/PR195/assets/index.md.BWJsEQ2o.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a7 as o}from"./chunks/framework.BjTE4JnT.js";const g=JSON.parse('{"title":"What is GeometryOps.jl?","description":"","frontmatter":{"layout":"home","hero":{"name":"GeometryOps.jl","text":"","tagline":"Blazing fast geometry operations in pure Julia","image":{"src":"/logo.png","alt":"GeometryOps"},"actions":[{"theme":"brand","text":"Introduction","link":"/introduction"},{"theme":"alt","text":"View on Github","link":"https://github.com/JuliaGeo/GeometryOps.jl"},{"theme":"alt","text":"API Reference","link":"/api"}]},"features":[{"icon":"\\"Julia","title":"Pure Julia code","details":"Fast, understandable, extensible functions","link":"/introduction"},{"icon":"","title":"Literate programming","details":"Documented source code with examples!","link":"/source/methods/clipping/cut"},{"icon":"","title":"Full integration with GeoInterface","details":"Use any GeoInterface.jl-compatible geometry","link":"https://juliageo.org/GeoInterface.jl/stable"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),i={name:"index.md"},n=o("",2),s=[n];function r(l,c,d,h,p,m){return a(),t("div",null,s)}const f=e(i,[["render",r]]);export{g as __pageData,f as default}; diff --git a/previews/PR195/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 b/previews/PR195/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b6b603d596933f026dfecf98550bbe4d0876276b GIT binary patch literal 43112 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 literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/inter-italic-cyrillic.By2_1cv3.woff2 b/previews/PR195/assets/inter-italic-cyrillic.By2_1cv3.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..def40a4f658cf8a9f7029c98931f5c9ff5a00910 GIT binary patch literal 31300 zcmV(?K-a%_Pew8T0RR910D43K6951J0MIl50C~{>1ONa400000000000000000000 z0000QiY*(lQXGM7KS)+VQipCoO;$ltfhY!GKT}jeRDoP4GysAeFM&1+$3VOuFoE-2 z0X7081B6ryf-C?8AO(zc2Ot|B$ThMl7Its6bF^)RdoO{!7jRCz<#xbd(%Y+!Ln4c{r_hq9YZwW9|EY>ue)I=RfV)Y7czVA?iOgI5E>yc4!f(c@@!3(c5Y;vHqWGq zO4XG~LRu!wbC=WT$2-A*j*xr~OGAH&wLT_)U7KkNH^zblJw^`pUVwe%*n7Oops*pSz=~i zWlX%ffnZ}K2q>k5R7jKwMjZ1zSL`MPN34g5Q z37P-%bN%PJ$qfuF5Va17gsCvBNL6Jrzh$>_TcKME>=ya)Kn6mWkf2<+OYZXDP74Mq z5EfxnGGBy5IGg2p{_p?ybM5c#_oYzcH2YGR-!l@9I1cjwpFZBh|8ML6moYjO&Z$V9 z6R)Db+rb;zZ!#?e!ObpqR1*RMq72}v3!1df>}ir|`2)afM%AYJulu+b=y+gBfhD+qon@;z)E&?2 z7_{A9(Loi24!hJSjU-FsZ<%D)vO~LU?-AHu2Z8MXQ%yygm!c@rl_{Z&|KIYRzH_r@ zQ`-EYYPwQg;>2cme#oB7%cS&yu1YO?P~dVf3S$rkghOcCeR@;V_PRkjBzZW?3iQ6zLz4#+*Wg0Z70e z(eOBUvJL}*j1w6S{==r#e^rDDR(D~wM`kbv3|cnD!+HHSGCxnrr8H9(IYbs&1{sX_ z2k~0-m%cx?{sR3Gf%&*eIAru4V``jA?3l|p4kT0&DFFn+XI%tK6(fH_;n&b;2Dd0U z?S=snCM1|6kCjBMrg0qz(TEUj2+^T|T_WsL<_QpD3L)-9h`TlLUj6uxVVq{fMf|u$ z1h>oJK_xt)f~VE^BDFSi#ejkv9>#zVp%oWhy=4vpJOSXPz#HJ5@M-uu{9O8fOcs>R zunDe6uNY^1scW1o!kwEfViO*eyVU_784I9n+?jpl+y_Mt5X@^o^+dHNq${s$o7>J~ z^HtvdQCFH;J|a!E%V>}_Iz-0!Ljn~)+Hb7k^-E^rw$8K3*twy@j&MA z6kTa+C}$4o7k3-k6Q-Q>#mje!Oy!{`9|I5ofEI@P%{}_z9{|d|3fkEHV!Zb3vl_TK zd@HcbMPS_1AVwvm=F7%QnMaPibnn6x4f!pVe|C&9I!9NM$1;y5plH?z_;-5$KNgwa z6FfElqrz_R`{Cp17e4*rpnq0h=>J#i5baQ|H0lxc@#2%x)T)8rxBZ94ZtqC9=pO&_ z7Oxj_g^PaM&C#uo|Mb~~W_a9Ogil1y9N&J7k@Z0|F<%f4J-K}57ubVrC_U`8%|6TBM zSLfrs@l#Lyern;Zi>36@(+~cUdi(b;{3*Tj-2MOb@3{QfKcD^S;}`yY;|THw8UOn4 z_Wt)rzp7;4y8cOMm07+j$loTX^J{P1{QR$OIb^^59PiSd{_WJE_?6?g9ZH`#cJ$ED zkXbH#Yt*TE;piiaU;6psNBFm%KcMKl&-3kiuN^)7=-O-lxcyPm7XBdu4v* zA7*UxhX;6Z>WFgB*+WN+ z`;H$zVs{U5kM!ljo+I}h8Ir%i{{A16i$m2&T_7Ir^6MOS{kcsQxg-1+?2*?(`>9slU|{Aaz*`Am1Vw?03-cuaOH7pE@n zp6{bSqW@i)bo_67Uw+|*mBXuBLEPW{>5G3KPtgC!15g_^?}V!pzl(NXoOXVYe0X>F z*x^p+dd!1|Z5+&6F*-$Wy~X8Jd?D!w1Rw|=#xFmJ<5AzcJNJNxep+9jgQ>q0B9Hf0 z*tGM(g&*WlSl;t9g3V^dtwtz-m_AcB&0ApiV&Add4H^4z02)a;6&>AQlW`;qx8u}% z$vj->6}&}+bcG=uLkm?J8)B+J)A08sgG+%_7$SZJsZTBX^6!FWHsJ^eiAcy%L7qx7 zg-TliBV)W%~Hy$&Gq^ zy4(%N6xDyWGlLCd`(hJ-$+x!70~P?l!q7ng5K{DQ3IQ841R%g60PTSP!S-5wk=y)t zxBnA6xieirbpwkyoPq$Ra<_jK-9m893Djht+c!anH0qa!xp0D9&hmk4lMjI{(B-se zk)JW0ZlrR3+6S(49=|?*C3sg5_#~bs#wT#EqjnO57w{btlY-+Rc)N>rkPNCrUx~$E zoPH5|7+7%N061k4UCxMKIDZj+IRXmP_8nws<8lW_aa*C~zs)k=$xZ;EZN~$t} zTS^PqtZf6&)9XH|x&>=_)rMmW_jayRTaab)r1oUQ>D*_1@@v$Dk z-1w@s)Xb(R23EPb3}dAXahaW_|B?dU%cvD2E~yDdWTYV^f~VMz_!YeND1cDid`h~x zN@*AOP9MwnTMUP%5O3i@!C|GFoomqeZJ~?>8ok@%tMZ4Z>mM)&hudn>&Oxs9J!kygP=tF- z_%eI`*|TK&YX!nVmJf6FR{KK~w!!0SXocxCpmWJQE6llB6o(@9)HADyb!$~uvk70V zslxa%yk|KyVYF7K{!XLj(E`8WT(T@R%s+M1B`?^g-0yE&drr2~&;AKqmzF+lO;YDr9i#4^|umgbK0w$PamRyGu+#5RZ)kVuXAP9--gZO z=1VgsbC~UVvQU-V=|8;;UWTm<$t-nyg+YgD>0q)F_H<$1QI18Oiq&79pEuk+gxUAm z&)Td-Bk#bQ{v#33{Y;pbCI9d|SMuGf)XmtG!L5DszMHp6I%vept%J|sqxt2SKqL|b zt}YoGz-^by88r0hlOj!yJOzr7LWRmW6ZGico-|~eD`(NB=Ix%;YWtriSaH29gS-Z_ zo_oUGSA$A{;nBo_3XJ?~V%0YYN@Q=C2QU&O=^CW)wXLtk-99ukvB)R{|)B-cV- zuho#j^Ehh54ngTF7Y2x@O;@fXUoTJE;B-WMl-t@{2&iN=^N^5`LzHvOcd!{4;Xd=A zPGC!jad;qu0hTh!0YL;LrwEmv7JxgD_z2g7us^U$1%QxH)SyFbNdc(HIR-R_ESP|V z2*bJ9BpaePRT`3l2>J-kmjh0LDgvbDi%5&8mxulUmwgNs_!vJ}j1r(2KoEz7N+dbP zYHSwVaPnir*$=71;_9jp7PV7$$n3xu#&7u4w2Jg=f`_o@u`PH93_2u2rJMVsZzyD*mfAu*(XP?@cf0H|I z4Sq0LrTGI__f6aj-2F#_KQ!U>s-HEL43+t7J|4`?F>_0Zo#Qjgj4vqXDvEv#45AYpt;Ct8u#lVmL zzagcdtIN3)KjXJ^aO>D2in{$ZiTh&rp2vL&d-yzk<@C{(_N^fOM{6(j@U`JOSvaPj ztF8Pl@T0=YBN>C|Z?;rV`F9_&+2s#!qz|5b;Aap0@Zq(R`t0KqmyCArkCtia-v4Zp zstcTMJofIjGvlN0T02V~f9I>^Ki}pKt^EG{%`gCP5fHn0^?!JCzfy;DZ&%jS;6quN>GA_lPQy9h4C$x9p)17NDbV@7 zJ^eU%?P!Cc!uU{@_Il`qZBCqIeRV{KnnIlh0s zZOSqy0Cj->0C$UV-Y~Ph0W|k34|L7sx39{++Kp&EM)b+LPfVZL?b+pq;$!CdZgf!p z!u;^f(f@xaWqnv4Q3@bH8l`3OOQxv)@v9W^0sc$k$<~a!KHTA`7CzYBeGNY{TI^ zBvDCM*uzD%7e9xaDKW!*h|Pu`h$MS73_LMXMD~YxO#SCD9RO0G-f7OCNc(It(0u7o z?pO>&q{Df;Y^lGZLn;{jn4YNbwZH6s@_xR zZ*}o4-%!YdemU$t_!6GY-cX>>?v0 zX-=CDgxf~*D`t)r%IU|aXHHZNoU9dSF@e2L7kfp6l|CGJZ<&5EsjUC#aT@n}scE)8 z_KHe^0V|4mkwsL(_m&c3a8}$-*Wwo1HSK~g!9B&z`?qs2-jAPR7RP)>3fMMcgFc_r zop_@Q^4_fmj+*6V6AwbUg4oV9T0-l&uYXvKI&bcyQwOE+K3^8L%SYw#9Nav-F4!$3 zEb2;6KJviL7n^atIY~EAyU~)H6cm+6WaZwAsP}1xW*x+_@C^W>(wFJF;eJ(#Z|?nl z#$QL}vKP5L9y+opF12agcF+I?n2ssT>{!lw_(-vgLiyr$_fs^s2` zCknC^ori8lgn2`nP&rdGL)qFq#F+<(AxKZE9E2C)jU_&%WBSNEHl62HJ<4|7|DGEQJ`3c+j=I|Hnzkxy=BvOB!cLr#m9XAlaodeQ$0$B znfF?*dv8$MM5V}I=9InjI^lo)-h*B*tCf;9Um{@s_?(#2XjUeQUFjcfWo_i#!4k+w}!=GEBaAcXLS& zzv*cSP#@&c-?XuGk+Ne*DapBPQucy&hx}U8qg9k-l2aOk&j_Ar=FM}4s)czpuZMGy z5DCAI(Gd*0qnK;ah%-d_C>9^2VTbNQd?}{+Bc5Y)HU6hA3SA%#RW-^@h88KJ|IzMf ze&tB`Lp}%*Xrg7U<3-o&LnTjjWG&9rH-xrnYKf}U1leMnRSapD6nV#WUp5Ll{c3TpHm3hKA-8DThStva6(PCOjNWi+@}IXME-PEoG^DL~ zZqBP^nG9?mEwZd{o5CoD#_=pqSz5C%j>J1Ih|ApsDK1q}Qttzxo*BQbfH4%fk1OB( z-jq#Ev{GXx7Ut=UZ_=pAOlJBVk!np$sJc=PUA2m6aRmLC5*(yaY=B<))YqM%#2S+h zTG1!c&35UAWRKdE&y!Mubda^C42DEZiA+D2v7J$N9`(k}hXgp>|HHzSOw|wLLn-KV zztI0S$WbLZ>jW~hp-&pjc@LCn^R1V3FzORv1?)j|JZrC4%9o(0z0w;fP|@O2!8~mV z8uz*&dk%xNTIpP6PJSb8?oUw$R%eGk^dwfGK{S->sRKhBT$7fXy9j&R1LAV|Ft?^x zt>^q;HYE+YgLix0a^D)0``OqwJf%h}C_~XQrIrFRDlQK!)?1(Y*__mqahtl#V_`S8 zh#s+bHLbA8`u47307>En=%!WS58-XFzFw;F@ZhVX8=4pM5H%8Zo%?FGT9RkW6bpb8 zO>w!os3=uQ>{5U|q#i$S_@oqK>N(BJSQ`i8t#@%OtP{-7{jV$po5(2}QW^VCWekvc z+!LApb-M2|G7EZzQc&dYEhpn8R(QpIT#k#(E}i``Q6)Ewgvr8;b(@fE^JHuw_RF73llczv1;h z3z4aHCS01DS{cSGtni78*8RIXIgh0yTwZt^I%r(3Cxkj5Y+ z(g3zsV;dQdDv&Ejl_9V4>h2uyyHM&hl%`UH+fZa_QF%qv(FOMnTZ2EsxhLDw<*h8m za?NgqFpO1bN*kHIXm=>J4sjIL;Y{#(gx8fH8;uRk=R0U8dCFt}D0oNEge7=a<> z;WJwHhHT+&2~rTf(VCJx<<8831j+iiQ3@Q03R9Ltru-G9K2*`*)=#M|EzfCLi!kPz zc*gasRq;KS zk3#gy1OFt&D{C_jp1#-qvURIMHo=LR-0no+zW>VTXN;tH@LsWQtC1j%omX8L0pHct z(b?YCSKh+0ivrp9m^sX}d`UR9&f8*`)}N8Gg(^T7=&$C}Xc@yWZg*)qO!IDc)g#ZZhbtuHoxz-BX=WL?b+jB=!@huOOl zjK>@_{ZiPa!5xM`Q>?v{k@m2mEn4)`JFl~O^dWz8O>|6L#V*MO_ePhl{Dy9}a3Q(6 zr4z`^L3-k(sgM+EQ;|=kWsFk|gT_rSm&+bQ>FIfpCDv{B@;6#z)s5ZW_XHxKVkQu)0&zpD+3v#bWYFW(SKrQ_={IT8U#h!rSyjU+{jq8N zHXGD%n`&kdmDY!0qx+TOyeS~|Quyz{+Po;u47*Z?PcK-?h`(P~M)GuPif z_5k@)Qng`HcYNxwwJ^FQ_mk4(u9&0&%kB8eyg_hF@z3L~33<}wOAyH!tYj23C_aQ| z5fsAUxOxZ5EgH3G7Z0HF;8b42tw7H88)YiV2A(pbs=GU*QoXn)1R}G?4N4re%np4uFl;`?ivu;tt$JpRwTkxcX=TD{R=n4XNFaPh75UYAM zw^%DTYCS&W;BS!M?$akmr$R#g^#V<)aCFjUNhgXXx5vbK7{`Y1+5VE+xo?b0n2}km zD!X7~Pbk>beu6dZ5#Pu;R&*}HlTTt`0QTPu(a7>Kz}mwpqvUA&fQV+kTY*nL!4*j3AAEsq*ZcYdpIf9fSn{PtYsUYrIWug{ zQAo|_pB&%5aHJzIvqpea!??arjDydBP8;l(X!o0`{TIF|gsrbpPP~;-)P6Yyj5XXy z^-ebWOBav6^VU208=AQWd+`V&(Z(t%b}M7oGwI?fmPc{jQ&Sm*!ze&%NqD9qjg`gRjG||aF0I7>is6I?Lethu`_u8 zeu^~{>0Ktwp9s)6*mW3BKF0J1JQM~zK>p69y3RGe_$yK>UTrPK@rMo5M(I8&9_t;dT?EY_EbmTK?dcXyhNeC>)`wBJ_BriLAh)4v$!swgmM@K z7GYITwxRRT<}F#(~L_o669z%Ft1Z6W&a=nd9}$ zk1H^;<@Wnf%3xRI%ZfV>3NSZ1=60|89iYkiqU!d3<1YLU=bl)ve)8qhK`>jr4beu8 z?jMP`b9R`U?sY{(K43>h2@ah2K%Smo<#&}666)LP!cfVZRaO4=digx+tpiF75^E=LW9{{`FHF_#VHY|Jc%qyCE4bmMb=u z#=Nan5A&lvNy;tX%n$uu)rOt@^uOP0I(r^96O}Y}rN22Q*|othT@kGp&46kDMoAb< zpf96}{L%E3z7Ag@um?H)j&TwMrBM?`fN3`d(6dSjNy|uSCW^@ z;D>%rWx0@SIo2Z>CS7nWy|g;rI07p-GYfI&b0kAdj^hJ2o`{nIj=FuE&J%BWPvA?w z{K%UxpP~1~*}n)@cMxCmwZ6k|y$0QB){J*#i7a`Qa+P?+gKp{*!iI+CCNlldm3|5J z39^AQeiUkWSR)DQIfsZWsoL^S&*}`p*TKk$#OC}cgk(O7UW-hFN0&D}2mv<*Qi(XI zK{;-!IL(kE89)q13?@sJMBrKWo3nF;ZHaE@n1zoLPl0b!U*FPK&mqBT9&?TM)3XC| z0_n5W*3eqqM#k@bdHKLmt`svyzYgWSu5}q+hF}c%RL1;I9nHYaJe2Jfp;CecEN5PF z_d!#*7-kAPH!b$RtjkvRSFy^ln$(Dg8e@!;ER@SaX6kM6SW?5*n@hFsJ!mFLU}rFs zlcN7M6%R8<*|be$hFrFuu$arlp193GC;HZ%JD?Xf@2(om_Pu zvMgGkLHIi^G1&W&+PaD1B>+rMx>t@zc?=q2U>s$sR!B z>3fRJHP=^K?f;p#?t0^xb5bD@5&$D5h9j zuPhMO7S2*B!=lLo$*4kFLgGkD_9nV`2w}BWniTKPwF#k+1nTK6LkE=Hp53-kam>WY z>M`+u+rIl#`MQLgPRvYZ7x%_eciXFj{M$K(DAOhVOMJGaF%=dwe1@`PYy6cu$uHK| zl==|q`NKz))-C%xS02{=^$79Wf!($sF_m%5#0`mm+j?^6$uUD>83Jn?N}{!2{74dG z1zm*ZSqMv067eikGPzEmmfSeJN3GTN^GO@k@-!i15yst-@W#_hZNsAbT~jy^A~e{! zpwTNk4>Ot<(QrAM0U<*CO*84vA;d=8BpS?TMUgu&|5;*L?OIl-0GWm^{$wsk6B7;N zCYW@>si^$x!k;ri*iHEg2QLOA#M8pU-m|=}V6VKtn`1`?WIWL|)WcIK;P8KJ(tWr` z7wqOGpDe51xeF%C&t8RBp72%MY4B<9XkIsODs~hobwU;BP2r9`2pS>|k&@YSBRq}X zxMwLyX&Sv}JUq08l#~vSgvCM0ZmHqq{meJpIDGOo=#augr?a-ApKH@&_J4CnrzA%w_aEo>J;i z?(JLb9(cT^G7|Y&SpCguPD9_*(%8?G+J?!g_aa4oVnL<5(!Q4am29+Bgn=4Xhipi- zN|ugGQ`!^?;(RL6Ty(BHw*%cQqkB_8lNBY*XRyOZo{VikHcLe+)xy~b7Lwf?=L7Vm z&sG^KW34Jq&F-U;Uxe_TH=0)}3Gmh9pc$~`7m4}d;o?HX{b8U)`2NLN=LUx5lB z>H~^TZ9=6aHNi8zewPuR45#$ z65b};(kZeACg>xDo+fG)-1n-@;Rgez_j}Kaeepag1LS7Xz7*;?EjAaZ%zg6OJ#OTo z=x3>q6Ifh$NC{D`P<>#NJ?O=rP1cJ9m0msOyC>ftl3Cz|_myP>8%DYj+#DFXPA9)3 zCi3W=gWeV7+x`1;RjnKD5$zhdb)=5s?Y-QjR*!3z=G%)$JQ|4PKz?oUanWte)9=AS zn#APLZL&6uldBNFm4Nr+`ubSUz4^7_bl9#Eqbk> z#i}sb_Z_C$g-5}=xdedjM*wImd-E}g_UxD)lO`V;@tOqoJ`$MWPk>DX$id6r%fH31 zOA_M{o3W;S;kw1Q*}r!j2cOG7&ycIezr>a z$`jiRigcAc`Miu*i9<&JZz@X?_XfD{NyQE%5qzJo&EZF^x5dBSUc3I99|WdDZ|9Ie z?vUWZ(0^z+Klk9*l_gr=3WqTXOF|PCV))YkZUEj&w{}98XoqRU=wdpA9D|$=--iE> zy*Q50-OxLcv>h)@!2G$1=O; zFK=LEP;PLZ`=Md3;q5$RgfaFsPBbnx5jBZ6DKwQdT{Jx@Ju&MyFR-|3DQEeIwZ8RH zxBpJG7mt9lR|0)`q8i~z)F{-;7fu4=k$2d-z-SF%uOHeRX% zkHsA2IEGMo8wYUc5|5)Co2}bkK#2z48qzzH)p3iyIR&~c7D^5p06)?o3k|E}$o?NZ z@|(i1KOCa}Gb0>$YVwhH>jP^k;7BxI)4|(t>=uG*tpcB{VnK!v$MU>oRcCZ5!~c)3 zqlR(&j;;bj*o*i;iE0|_HE_FS0*6zIIfnDiB;wyU!Ou}w+!0tz|7Hv08XzXx5~}@q z2{7n*mglv}ce+wG*KlCKfCB^8H``481KsAb6bbMc2qz0ZkFD5-Td@_}BFR>6eZ4Cv zb(EMMP-v}!ohwDwIHis7Aj=>pO?}t2?EB!d6xT1rB2lPordd3$C@PZePEKRKgz;8S z#j1N{xAKyjk_wB#;3y8m*vb{JCrJ3}!FRK`4-bqir?hV<%6nNThC4~#53WgZF;}zD zO1fU#gc~hg$p@6QT?Zu_$e)w;4(_wvbvG_}YS|H4q2)qS2(hzP%Mz(n(ndIf=jQj< z&C!v*b~b(RbwL@Amb1@(-9sBH3RU@qR5BNAlj2BimXj$h6~U60geb6QZN6U(?SQ=G zTBqm>!dfEaa83zvy{vWU|p@CzJdqN7*6&SCQI~R)ciK(j7H~@1mmoqTdy_I2yWvaMfcl$a^fIpH!M2QM$y+nSPVC2> z*om#~%&{@_-OYNK2osuSUY5idiN>u-2t5IGE0xjtl$Hcen`Q@vtxPScw6HixsY;Z| zTb98!ZdFU4YpqD)-W`2Y4I(4cu`KZ#MgGNZ!E<9JDgUTZE7Cu0?H<^fNPIzVq5$e1 zK&U>cbxTAYqmLnUzx^~wTwa$ld+x7&?Qhor=hQ82x%R=FaWDsi7Kwe}-F9?)-zMHb zO$y{83*H}kyI8d0g8f##HsFf<+>K`Ok4_G%1p6gWKDCE*ri9wI@D)$@DXoieqGrWZ zT-iM|fg0?{S5HG-V6(;TR}Pl_r4$Vr9xWD@hKBqByVKo_gQ3y{gE&07JtJgae zPJkwtz|^OT3+1E*VOo}qCF3bqhKISWNb%>=BkIwbdZ@IQu7z=w>L!^Y^Q`PfU7{^q zbhK4fQ!@iyWx$%VsFfKm%);jS+Nx8MfulM)>|BC1IAimC*t=oFMjAHkHrQqF!Qd(N zPUji@X2sAA_ssaL3LY%K55nI&#VvlgydqbaJ z|3(9NvdT0Cr|ZB$=n_l-iL6|z|LLB`3Uw6!fNUUVmksChFYPUwkD|i#JQ_w|JTZvm z8QY$9qx89EDI5I*5inqK^Brx7=D;2e&?hv9j>k7K3P6DY1scL~;xDE-hSD^{aa|i|OtNeJY%>#7Y`8rRb<9yj znoXc6L6-}c>RQWB}vwF+0$JaV-DKA(#%SqysJkvfeB zHK{w>ocz=6RT!@zB(JDv!1r4jUU$iFz^*KRQez2T-L9cb`kE)IL3u$yZSt?Mc)HU_ zNPFL8V?;H&F7o-Df4m)!BX9KQVGqIf>!x&__@LPF*}GP59cfk= z=+x@68;?8sxM4#i-(2ff@}fZSggu~d_dVsM>_{ws;`C$18KuIQF*ka8S@LB3u} zm}n`g8BgcQjHby7k+P|~86b>hRhbdIfSIOc%A6vLq9}vJ&z>Pa=Ctb9XafR2ZYQiT zd0yruFcO8c76w#9AJN~_%kiD87hHoI(2L#&VD~vMiY!Gf&S0p@dY(*kyc+hZ21jcc z7%;(9S^|@&3@_OBsB9-#&u(_wg1o(Wq@R|sZq9-U9jb7=*j*FGYROdN<&>^jJ1d@k zeR8z3XUdHim!Al?b-XA>Ct|!gj8hEW8xbi*`IFJ>BBL6udx1t$0!g&U0~F_sj5oltMdwNa1g79$vougdtQx zI^+WDKR`O;BaBC;6>X<#X@i~< zgWbH4inq|o+a-y&tjk`_NTTlxf}Qe<)j(j24gwUIUpmtj&#_yrO`^%vitM-bwbZlo z;LTEp9`ohSUf5s3*VY8PbLAVj@W!EF3g-SD-|pzJg|=rAYul(Nn*zIV6Q;1i4F}S| z4?b)A!lhIb(tf>ZQiI37;GJ)_@ar(=UUpD8F+=eEM!mk-l*Tbei8PxrO{gVDKC45r zE(gWSR45MYss?6Fvo}6C#gjA3_PnaGfg%c4B~YM0?APK#md}e6j7YCL4*6Km$zCDZ z^7EImE&hjm&sF4%FB8rS?gnS+y*62X?b)!i5$siC)+wfeKlr zZL%c{3|hx;!3QR-m+Z`imoKioudPY#>GRpSx@&mEGv1#osG9S96|GhZE1C+$Q4~^` z=aXoa;5EljV}aUxVd@WDXyeqVOmmjv)HE$ya?LQLxH7RwJ(^L+MS^N{&5CPF6E!=0 z+-f3kCiQM2^(YNs0cp#?nY0T-mgP;3L72~5g7n$I<;@HrVL3vEUZtya6II8rqlOxW zQ9~^fv+_DiDOmsCMuR)Pg_-rl&;d=S6p)h2mt`0}Sc0TETU1Sv(3Cf;8w(3cbpY*H z_o=fF?a^GRZbHWWIuNe*D8_=^@D|87xnNh=$#&&8cuy@y!#W|a<2K_g9(wj1F4BsU zd|tRW#s0nwvVpx)Jo*wkQ>1mwYNTf?m&8I9aWwDEgaLAA_OzX)qC4&L6R4V{TeP{0 zKtd{?>4nU1AT_QNaKf}+y#!3SG^Gnr3gK2*& z2=I@q@llVP;m-WP@LKx1PGE6_QF`#34s>zRaaN{K2McpFX(v;r7ag@aQ*rhuDi zshE@$+SdnEwGZoLjLAjUB>w7uoql|4a%^??)z4+(-`^V_FUMa*(OMklEWea6cX18G zOT<;y-jxE$dq%)())p z1EZzP4Ah7ALMcW{8x?!?^(7&Mh%g$PMwF(@gIU5ry*^6Qbd*+7Z~XhvpuvR(t%iDs zNm502RSXBvUC2}4f_Th0_X`0_S7}%9JHc6@OO?|6~F z-dQ(xYO3tnaiA&VflCvb2t39i7Q0OPhLj$4m{cmLASkRTq$70`bh{!i!;<+{&)?lH zLfqA<$;CzC$~u2QzoM(k?V`g{+=qQ{PQIF7DzY3BObe)S6O+b=%QZ~w#?$QQU#e*V z&KmM#O)Dta!W>+#ksmJ^XqYeYnw#m-jv4`#iw(-ZA7heHG6(sL9w$1DZ+$`(8C4>f zZjxtc5U(BYYMttOb#!ADBr+ca&C(Sbsr;~iiig*(C&ti9>1U2Pj9_RAF2j<}GnA?WrFk%gvws;F z3b~;Df3Z-QEi|sb<%};ovN2VT)GB)QIo2I`nfC5=qn1u}d!><6V#N=3Yz%7$7mO9E zo44ZPC11JT*<9D{0ud8ziB3k5NCy6QyqzjsQkp{H9hcT?TZ7Y0t?S^$75PL1wd;L~ zp;%Ex&ULgKbPCnk%g^pHYFZShYX5&y+he_Pc#?$-A0ZOhVgm$XQlmGbVeJ5{RMlDz zk?E$KZif(BEHcL~9b%-okhg zrqjMjHTOx@bir1+FzpcJPysTpmclSssIU%Aqozs1R3)P#=sU!67_T%^=Q1LzhpX$= zh7q{Qq@NI?wdSLSDgCJ}UBR%GQDYKnat$QWXeAlVT9^A|=aBYsE*ljCa}r7WfVa_@ zAuA|UNh4H1x5kfQJ9gp@Y{w2a`&v*90%$S?lROLEj3nSHUa7KzjihN%vq5I$v8n$rKIDg99tDc&31KJ;Y7)>5~+liO6jZxgVI@N1G3Xp zX&Y+qxIPz*J$x(9WL9CXdWQ**ftR#H{X11qH$6c&$3Ge0iyN^Ad&dipMO*TAaTLX> zrXncsBn(C1WQ>tDU5=?hWVM3Q3Q(GW3`3P_VGEiDVJHma1i>y=d0#i)*raVAj35(7 zrVbu#7*R~|GHYe%)|D2yY#%;tyZgc|oa2gpa#1cBzO4IGm2aqGVA^uARB_vbcvQYP zXW?R`QhAueiR{QkQG7kGT)_UnQ)INo{hf2$ePgSvct-AI!d(L`zyCs2NkYCf-R~E+ zv8cs@C7YL~%rY;W{r%-2j!SF=xk>~Rv@x6$i$f_{ezxpEub=4_>Hw;qwZ`S`@jV0T zc;?nA4<2lhIaQp@l4=lXZGmDKPSQ+{A_!KsBC^BU7z^|$3dbZ+v4Lk9|M-q-jMK6{ zLcSgwT_^hDPb=y^(48u?_mnnq@L(vs+AZWKc})li_zR(yM?&&}n*{-i(VtJV({H zG!tIn6Dn>o9Q^Z0`3R0H|G>=*b8bV`<}qsSCl|4r7`VX)4K%O`4K$X=e5-h#!YoIE zfq=`OC?Fh$(*(t^z+f<$m^tLyDinMLp2ad~JS4~EHowr6;-Bpw8nlO_@m085`SnfF zJ7jh39C%t!zU=xY7=Y2l*X=!vC2edKGp@1upq@d=&@a)0977(KQZs$xH1uP}hONsj zFWo;O;5~f{;vb15vGKAkCT@V?eY{tH2U@;x;8)f}+v3bTL7Y zH=>PmdWz$he+m^U+2ENE>NJk zri%hFm?cpZR$Fv8kP8D+Q6Bl zah6eRnt{NA0t*V%iXa$Zf|tmvIHUpS-kHy8KuRf;49#G`(7+#+qNX9!{K8>^VStR8 z#pzAygWo^NmQ5}6FZBgmt~``gkg1~L3`{?Nz=1k2r5tz_ckovQfjj&3kIp4Q=>Zam zBaJxXA-GAR%9veq+1aX}YQSqmQ&?E;l+d;ab;{*(V!o_U_m9`{mhRr;gMUlVo=>F5 zk%J1{Yo);WX7mhVSYCA>TCiDB72y>RR-TQx}ibBX` zQM?v`{Pk0j?L$s=jeF&rV|}w~o1M(w%tArnbc}4^9l0@pN^7P}l`xw0wRVg@02wo= zGH(iB`k_#Q^cJOCooIC$&v>69vW)1in^7ywRW}w6+}ZvNusp2 z3CoiQbPQ8_kyhH>kcu0{(VdjbebX9LY+gR39W+DVq4(nNVJEiX4cLyY;%q5V0$~j= zynw7O;}&vPLX#VF%MM6i!}vB*;s|dS4hdMhgiJ8bvh8%WTj{U zDJkB{+HF^7@ywSyS`166Ok5w3pT!lc$k2%am*!es?@|^=_YU|aZS6RSNpjA$&r(?~ zPOPj*mI?*^16ed&>eK!7(5q=4nL+E%eujdQp${1_XAT>2k8WLAo0n|51vu^WA=hAM zwPS$Su#D5M|3G53$;r}94C+x~sh9_$B-~n?h?TgQMvbNnnhIatEP+wgaYt%%)`fG+ zxJ&AN-6yH(|U8INiX$J~8 z-B!8bw3|$Od@sh>Pde4cU?}l*iQM3hPJ*DxBYfZOQ*ORVV)M1#cD>!MvTLGO#{aVbXOa&==+AaI#J=7a*3&ffn_YvlC zs-8%AeuWgVlb(|9*USBBTjD7YbDgF+x*HTZXJ`@|JWMQk!1}nj%B0~XdLm?)bS-XO z$G{9uAghfoV)R^7vmBLWXeya*sG-a2iCj|ZW@J)MDX$dDjb_2jyLMCzZLgdkZ3l*% z&w;9S5B^k794t-b_+Th;X*L^ybN;%0$ex$x{xNM}sb~A&!+tVAaZHoVi`h8hYjKU( zZqReGyA=#F#(D-A`6=ALswP%xm|-;4<%BB3ik=yo2FDY+0_?_lB}SounBB;$3#3p8 z{8_sB3|d`<^mZ9xj@#WYsPOu>-ei3GqDQ^^MTe&U1i9WefBosGF|FbR8skvv3$yeq z!JDntdR{?5ogbN{uXA7I>|M4tH{e3%`oc7ZVQJFO-^}*a=HJ7PjwF_$@~$vb+UlmP z1p3B@G!9LCB|#rzI*s$;HMVu=)h}k~??O*0RsY8i#M`BOZS$}rszj=gqjRdP;JYad z%hLVJ!yqmW=p}k^Y~8Y=J>e{5(-n~x9&}yd1!Qi!cxyy-m<)ol^n3_=2bLPXT~GO> zHM;l|IPDDd?1wY-;P_-XY&sXtLgQXQ(7r@v0`2H@Su`ki=hWWTNV=o5=jt_f-OZ)#C z)DDBLVs1bFQ0X({C4!tparbL)Y*+i2*NKKFq@x$MitE+AZ)S-@y;G`+eZPjF<+;66 z$;!KjChf}Zqc^AV4{IgA-C%J#e*Qjj?s1n{WI1|y8BEY=khcY`)KG;qmeX4a0o^p@ zDuba)K}NS}z4Y+|0Q0sP4u}j9%^Po7^$wM1K@*vy!paC)7hLdMg34GfX6<`vmOyL& zyWmLFg-i2US^u@;d10??+DCcGxgPePwW9XsNUWb9vYA{3luK`&6xG;3|JhjrZM`JR z)pg<0xD)3%cs~Ie*xg>S)8{Zta@;0R`2@NP2k->{L>@BN-8fX_aPAlbDDdE+fCoQD z%$TYZRwI*f2o|;SebK=Gd6V}q;>LcCJtE^Z($lk^w)X4``0H27O*M(SacOU z_pD40Lt0(7hX@e{M2M5rj249DC;^j`%r8Tq-H{)4Qqpu%8>z*wOEV7BFv-*hnwl%) zl9LoF8^`=OU9#6syYVP7Y{NvxuyoV1OhdN(D2g3d1%7uJs7QhZlyDie8h}yT+vGvN zJ9=I5@;^W7H^trU^G{Az8vP!78(69?Z0df-cuda*E_qOmE90YmV+Tfd&n$_@6h-D?V-PP#&B!L1XIK68=q)F#64+%WPS-*p_< ziyd82WXlY}j3k57NDL>5ibPZlFV}i?a7@r--R7+URdK?|)kKWZ0ZjvW6`Ipsq`^|6 z#!eo47!Epg1dyRm#payAWdWFrPRcB8rr1kE-^p0vM{z;$SK-w-yX!%LIuz>NaJASe zU%rOhTX*YWk12MoYnm*g%qgCVK`P6#$uqUY$Z>QTPz`kqVF&7{Pg-v&f;@4cwNm-E zP^D5L=?YXXmq3$o#9GOR8lv=)ShYgH%cHs$JjnoCDN7IkNH;X~yBnU?&eu?{-1lmc zuIZ@DPjFuxJ0MktrU_^kdbh>&9Qy3#Po6dzC`MkkpVzF<*q8CMzz56*LVN&&9TTv? z%kQIMf*DqMe2{M*8Wy5v+m2jgJi0vVq}nICv=?#KyuZEqY68`GOKW}JJP94eszQ=I zzcckHPSXrbh$E=r6nhXV%5>@5Vqj8uTLLpnJta5+Li!F-Dm`7q)--?##^Chvq`&WJ zH1qdWfB#uyDCg4^AsTaAb}d)_$eZTpcDs|jp|0RnjSNI!v=}@U;(T@G5wWsBg<+}3 zGcx(=$~&iiURypIm8>7X>kskvK$9O$zWVFQb5_Wamu#fdmX8n){ZaaFI{k}Wqg_7W z`}#TZpOG(tPC0?w0xcaZJ%qlIZ2 zF4sUpT;l4+=jF?J;W zk2W&M6qUEsi7&}u7%yNI7$s;147k=X&nyEOYXlWN`)k^h^vgXvM*4T@f0xlb(E-1*4Ud&`fTz@giDNL3MH`#29c>JSxBuCu zB}t~MsJt3C8Y3Uqfha4QZUDD&)M|rPTif|vi}iXTDMSymK3*dT?A)9Xb?k{r?-sP^ zO{PWYYWFGa$Bvw@NH)s85m0R$-A9m4&%~@KlZK3b$FRxeA{~s@-o>3UOZytLKSFn^ z?@U@2;!7V03P-t379ZL=$EqG4|NDCaz!~18GuHIL=l%B1`cCg$2fauvpq8pS%U7>^ z;}l40O&fU)J9(?ICAjy3SOfj8z_Lwmy}BJatt8Z(K{XS35gOF_QyN2QwLV6J3HnY~ zmpVzNCI0R_Jz}GcCk`#dhlP<{Zy>1Cwjn`%EWG;7UY!AU;`)Pj?%#T&^*ldrw3rAf zLIj6|s8lK?aO8QT>zWY`FYOvIWeIR{D0Ddo7@=M_6A%?rKoQ2Vy7T$qHtrDJM%u9q zwsoSGPiwS#*Oa+1DelM>D*=ZaSJ&H`8#^rJ!5@%=uuGJ7mPgI5iKcCY*XKC<>~7wN zBie@g%9szs^}oF%x2=BTT#=$mqgYjFrN!a~kJDkk!|onH_Xu@3J_ts~Qa`xoW(Iv0 z5HsSg@5>EmE@8WQrj~GsY0F%LgjUXrUjjcZUz>apn*V>o?qL1p(eO$Fd|u|T;%mAQ zf{oXv!&Zx4l`d}kI%CC2W)#oyxHjsEB0DtuGChwC4)pbVGue&JI;E z&qTcOF9-YO&!s+`?;->jKV19PJvw9Ch32mJ|L|@Bj%~i*^c&A_TaLo6%)&|=cy}+q z9XS+Gg2F0!vRg{*e)k@~J6b)yZd>MliSjJ;xKa(K5&(S0usBp~pLAo;ul2uhY(FT) zilBrBD}rJ{?+Co$x^grWd5$$b--~@;opQM_h$;1=;B69Rgan_uksTQ==Q1Cbcgi$l z=1#qkgijp$rWITh={nG#VO*B1_vVTkSG~VoroA7vwrpvwGR}tAVFF(p<6d02Flf2_ zP5GZsVVg)ALb)B6_U=Rl8m(xn735`tRqMvXiHKRU-^w4F>3d^Fvkj?D|0%#a)G|D5|E- zM4HAjnhyL%I;PC!fQ0dwjuCWoHUo*=lR|DQ!Y*nI{U1*39h;_WFXd0UhUwGYWnHW8 zw~}DyT=H+JqO=`Lxo^k3v-ZaZqa*)9c9|1X4Hi|~kcdPdoC_LN=dPV6lXqS>9ErLS z5VZE+%tMR6dp`(7eBu__teEuwub2AunHJ&$srWky(0JnRi9#<}KHE*9lkxks5Ox&kP!=KXzmf$vwy6fH0*FF*}+)Trn|_85E6gEso-u2HLH z-M6$XbEaizs%luKqEMuuSZ)X`Rpf!+6rGmFI_Kk(X7rH+3lWvKJ;t$$KcVUKXY8(2 zT_4`~eDfP-pZ=kaCZqfv%nAM~WA%rnSsWGPL76_p^^M8#ZT%}U$NRYO7Ypv3yL~F3 zPSJaAoiYm`P^{R_FSW^PdsEgFs7&#VbNf7F(+k{Enk$Rw#$LP|uMby4d~@4dvQEd1 z17VzZK{$B;HM%54P;YAs??}-RoqCP9m`8^ZGway@Pck`{TG1V^4G}lQZ!u`C|bsJ6oKR8@{x4g1yQ&3?*`L7GAM*` zy0-a%5anzh_l;I@Rsyp07S009#v|JS?!g3hl(Z#445>~QU-jJk=l@4*x++VmE{av0 z)h*vf=a?%vMzE*Fnp#8;xm8p!*?YuHr5fKZtrihy(D<~s=!MBxc3hIa2R}a{G}_%p zirWfk7e|lVw^Mjsc?MlwJ7+MoMejU%Uai*Yy5gRbIwZu;aG~6tcH*((&VRM{9Vfc@ z^M#K|e{k`u3o?kYys+|uG^s#lJhA;Q9#gx5kRCt-?ttS%A6)%Y5 z*wOSP>2w>%vUQbsajgL_*+iFY&LJd1S@2z>(rlK3L@H5;^Fqpj_Kss(q2j9~f^L(g zZD5L{9`>DZ8DE)2NpFaUjB;!MOw8S`RUPuHM8ZtcI1GX~O?+QfY(K5*Drp190!gJS zd3y!w#y9mz_L{YIb>*AV+6G<9-Or6VKO;(yd2dWLEEV4RDKMMlBtviX0ScLaq5dwd zr%xsM8LFw@1fI_x9PDlB^Yb|V%~PMdQZ3Sgw1j48*xSrNTt?1RxG&ON=7r+O1LyYnFhMrJ`WQf;>cs~0Mu01?V5aFYeReRX7|ATVlgo5 zU0C{LOWR)8m83!X8(t9o{@eLS`oURe>8`oNiiY0$iO=(PrC1!M_gK1}e#%Y6*82<- z9A{E0WDJ_OL&x`^ey5-kZyY0ppRTgpsMdca)UKMsP(40ija4bg(XXeJF>}JpPDVq1 z_6|BWGAVISP%ME4Zj9M%aTX*>EVxN-Q+6MIRfoLD62~<*`aGU-ccVnf%$RVv0%&v@OmU<*H;FWj3n)tQ zmR5nXEK|U8bcM!UgTs`BbzZh>)@AjG<;FFtyHAqLG+H>7S2RK>E%`(W&Zsx`dJ`@> zyQP7*cVOC)6>(@E*{C8;8(nLqvI|P0aXBCSsods){kRKn#eVEA75}-e6Y_d#gbL+g zE?yLMz|dHl)?Mm+MbzMFQ6?_a-oC`kz-? zzu)H43?wrAwMRCnCc|~fs`HyI>cE>6dN=sf22|051+7%Atf_ksJ#m9Zx1QKoGQz@* zK)@J0PJ1Zgl^7oS{>bMa8DLa<=tzpJ8)2yH0hW639FE}7N?rqzEJ?yEH~9pDS2@)_ zoyq`}vI)Nkyl|ru%U%#fpW|2hTtDn62Lt}Xp6q>eHjwl%5Z{2d*I8lB*CN&A+p|aY z3%jCC5cY%B0p7L=ffvQ|P$i{OG$us_!bXNEYp48;fY#9n{h3xdUy*Cx?X4P>b$-Ve zTXy+(+-Q4((R0=&OU7sI3nel=I^#Pg`;3Y*{IcW3QWiZp@e*QSW$v~|W8?~ik!=hA zKcwqdxi`ZQ?goyDhZK1}tNaU{itqxfYDOt0nYK3j(8P-w+CQ zxVX@8aeNaKof71@KZN;kF%b6BX?W}QO^#*awQaArCWt@ZB?hOk`oBLYt5J`NW9=P@ zc&hFw`NEa0G2jf_A&7v*@i-I5kbU-TS7u#XrN5OO{nTgENu*q)cYb)8(bPu}z*)9)~y=BeD>SJCWwAv(*qP1PCgb;9Vsc3@I=i zJq85_5hAn^A^T&KKU*wA@O*vEAm_~~jzdwTHC03RHI(zt1S!&+GkMq;th_h$&8Q;9f(4`1UWGtk)~6S7=E zDrk%h=;j3m-pyJ~`mR|=dbIm13jvyfbqTa`O{?`in4AUc6;d*pGOUa>@3kPBfho}@ zh{6M|{)#M<&5PhB@Mg4s;AY&4x8r8qT&MosG%Q2X3_T99)PklP7u&H@F~~GkQ*3*_ zA9|Ll$&w^GuK=&N0+I+$a*Qcv1naa0DE5G}b9sPoT#PtmJ#m5wicDQEJ{4T-k1Rna zw0(M4e8J~-`(~mh%ZjWyz>-Z_kovpzbxbNwR2CIAwNm9Un6m=-RJhXXHuXpTe_)JP z__a|dK|sw{&Rd@?0YY=G%y_=NZC7L6nfG6}OW&7K@GNh1jiBLRtr(3*gWUYqOerr( z!b$>}XBbR;zYNLRW;wSUd;GIfyeqpqcQuPftau2cjrkA>o^MlsSY=+O&v}17ltj^r zVqK!uiLn?(=EcJ}tPpRauDwLgIx>Irq>da!14t!HxJR!cs2jh77rLGs)RN_Uq_wW- z<22Sdnc^+e(#0qY14|HeU2&2qtq*-Ib;PEFDYpuLYG@(QRkY<6IMD z%Sg2Y1~UF5#Sw+=q6meGGd}p3ro|ODVjXs1Bi4C>QijV=Bn8i4u=WU=mMN8IS)$7G zoJ5f%h0yB?ZLWqEEF);Tp7diMDv?$~kSn68B3p$jbNlejrBsp1qm9^nVWq@4U!NPD zusd$sKhU9J*W_igD*~=cu{^^xjr-gd47+)UQD?XEL*$UUzqYN_&Nw$2@(*@&oy#k4 zTp3Ho%*PkpF``9vr}V1Gtr==*llgzgw6CdJ+WG(DkQ7Vim%cC~DFRiA>rsP?><)53 zT`l|&=c#=}w3+y1tGkU}7*5E3eKo7sxahK4yxwBe5ZEcs?XDJ!&lfUD-&b%LfoDZr z37T_BQcdTpZU4DI5d1KcNe|bH%4(EeZOe)QtS4fOV_I4~5qARz&`UIv!B!^}SPJ5g zII9WHI)POpCK_oT2nqZ=)t2AL^z{x)%B~EqNz>S=rY91;IKHAO#r^e!8#@m|1E)tI z!;m|9aKfIS=;7a_xFbG(bJ8qf|WJy_7;LWe#Tn^aY~wC(SSX(*~t;uL#w;5%BW z_+PPYs7iiM^mNBpSCmeUp9gtZvlW=X$=yCfw54fsnc(Wbd@LjJa>|m2II|I z%kvz|FhWxH(bv={j7;4Pq5!0&3%SpPQrv|Rp2XA*OzvPO#^h;HkUy)ef@vzOE_}O+ zBqn1T7RV+;TK05QF@ZIxqS~(h*AmO5!edmajG$a*)4Zuh{;!*{wOds6{4{+QssBbC*5Dv1fL7~GOpRkaHC(u5yfR~zggd{Gs#W9M$WJ&5B@Hu#$CQkKSX;F zWH)QummpEB+w}TdWVnKY99Rk8#+w}BSER`lm)aLPm^rA@v^XfT%9>!L`7c3Of_S5p z8%3Ql3tG}K9K9=E)EFZv@edPd5F%itdCr6Gfl(laeL|&qYfx6CrN;GXigN`ov>GYzaDi5gw&>xv-RT5Eh&8BccB zH@N~=R-g4xAKC1WPEm6=J;xK`aJS(%S|bHPOUYu1Z@~K==C?D;G~fCXNz=47Q6rD3 zgW}*V+%!rtrt4nkEtf$w9tY(^jYgiAgKUNX-tC2Y=b6iP)8i+&VlVUfy!Y1r<_H>T z?^0lCv@ls?P){B8P+HewKvGQ&HM!P?AB(Z>iL0B<0gX27S>4P{(XT-ssCd5oeWBLC z`~5M$ei8y?Z&hDwox3+smt#~|AZd<+h-cNEU^u`TQ(FOuMm z0B3HjA+C`l||9k&ktJ~Ln1X#tmIHm;YnX$6y5a_ zBNEI2?O$-=&x>puEq1tO?6@*X!vq05s%lPWQB8s8bCVqX(a|xHSCrzPRq9Gv{uMB1 zx3JC+Y7*$J#Xgdct>*sN^3%^i?_*$*DcJC>X5Fx}3^gZ^?Je)+HX1Tx8b(y_9Ac0r zU!l$;(O1VjElU|L$|T*kK_14~ApmK`kwAbvT(}ExOESsuQnf0&5-0mXyO^e+X}Q9j zg=(C+fReJVvE-PN;ilT_^wV*$r=#pjK`B?lFdg4t^c}`|H!_ z!qE6AjxlwE+#Y;xb)V2Cp_w!)h8JaKUND#vi1DEnCK#?FI)Ni_g9fOIxfvb2bmfsl z2EE82Q=HimB&q+QsSrc_GzkQI^FkllZ;3h-$PI z5p&Kzn;Y{Q^w%feM+(_3?_{x-22)?BN}?#jN*r@hYAE5%A+)*AplkLF5u>&eV}#l^ zV_G{#SOsx(f}vUXj`~~0dz}lZxg$f>G;`2q#GxS$6*|GB zNK+8E2bnT8Re9V#u<6D>x?AN z{wM)AkK@q@Ux%3X({++>0I~!go@HoZas6Ja9B=9jP3k_zVx>Z{ zf?xHo3y5LMAn}KgvYTju(tH;8l`0 z5}ZU;Ypmu8EdQTfIdny>HY-jlJ`O4PHy-Rr zrutj`Dp2uca!(|C2I4b;xN||^ZqF_dpT`q4`Q&ts261cLzt+;LGnY^fnBa8#wq@2u zeB~#iPw3PgSCC$#ex~WR>xWhA_d2L$j@M|gjn=IxAUHJ2SmJb_CVk?o(KhQ{n2hpP zy4Eli5PeZ=3sztdvvOmi8kjt`VVO@k-dZ0c=BirQhF9WwK@^qAM>Q=;L@CqpBqko; zj3mrNVGspDHE-)mGV9nW69njy!dPb=a9-lFcj(8$$Bef#mcBe#2qKa=mEWP;(sE?* zirzYBUsiM=t$^@ZJf&BZ8u0QBmqRlAE2dS};fC@J{8%AD>KGM7D5HQT3MhPV?USPG zQk7+Sj+bOrQ3i%omn*1>u0p}mm4a&94;E-c&uyT__6;+iQOk{2amnpYQ|{}%-*tjz z;n)gYtFHF**S%>d`EsdPxgVMKuY4gKFM?hMmY3HwG_Bs2@B5xhKod<3d|NmZC#6|d z>E7+MWn|trhT$LEptp6yh@;RCe8<8z;^=zdVh-l5tD<>CT@v{a>h{D<5k;?V>mhRU5b`aTHY(M;lCCGG^zc0bFJv zDr&TuepFhr5>_v{JyW)QP%z9B^d+0cmYM{AmGzfN!tk>`IK2y^OpnZlUQA&F8tBO? z1&``oux>%zG~tImm*cIkgU=jqr11FpG=_fyI_Sd&bkHZ0xRdV$)+){ZU+g#AEbB&X z1t}|vZd@C)w(T4`)Cjzf9K?-|T~L|=c;1<;gS9ocGvh{laO{Zb#FJvVQoiO7EHM7n zp3zJDlBW391I~-*9CX!nV_%*8tdy0kkH8jyn|^?^Xl+(_n5c9Hp~3R4G&Csb%1LLu zvZv~(+$H9Is)65%cbdC0U8}wn%gT^>4eV=(OpAITCI1S;jkH-aTBJoIr`|2A2_zEVWy?93@xe>M^$m2 z7X^VrDlmd^qU1VYz{DQdFiqjZ(Z-ZnIzhpCRz@SFR5$Lz@;}GR71s@=lKjppXQp=l zq=i?@FJ~)XZ`tgrEc<*Zzan4qr>&I(uq?5M-Z18c&xmv19hxhfTg9dYA;uK7Plc2b z=($^bbq+~nXQXrn3(D2`#uNYec1N@I!ELRp`vm05?}fR^`gEn=>lQf*V(RjGC-|Z; zOviQ`Iv`scHvHJKGXE+x{oS=O$U3pueC;?BVk8Dy+0RvSdqn|b19y|y0vAFkL*PE! z*PAv~jwFhj6f=?vJU0+a!8m7aw-ifK<9i$RVGv4$*r5b@5>tw8&P8gqhvO6Rf_9fM zbyeU*-OChAC+QoaVw;4a>H!$(892a=>_F`lrD3UL8>rhyoB8l^EUuCzCIDT0?PK%^ z`>|*4Yb@8|LMh9xVH650WsEeQK#Mm$mVS-V7Dz1lJucp6ABvTswGkXh6u}(0#x8q- ziwk(>>z3)8p;!V*C4jwwyBgYA96E84;q+64;uAnjwCSO z+mmAGMv<#8WpL(KC!WwQOiJXZIFX1=qNFHEcp;iusLIN1xw0$%Sa8bFJBpg?>-QH6 z`4FG|7P-yyUXYaFt&mDx!d@q@-)WVkL6#v9dweAM`_$%HG}P#^tZZ4)Q64;pQ_%>r z9TI#hwWkR+@I?usR=e$ zSaD4`BrD#%uwY3@C{e=^Dm}sDIKJ#(ZeSbJN*R62AC%nLNyft(dH(TOMEhFi! z<~Rsk_=%vYa~BeeB0fU{E!xcXpquN<)FSwz7)%jhf|gL-NwK(=SoJy8>h^9o8qL#W zJyIm+bQ8}FdBqY_sEzlH*8}5X;FL<|H5rkYVjpBlv!P6kjKQ45UNmd^#YXV`BZMqM zm5Y=4bkbrYe;PCJMWC-R^|`dFtAeeFZYeZlI21{7s;()TVY@bm6R@OdO1+lOfP$DL zQ_qLmrnGpRy3mvCVTNO?bv3l1C}B4=u1~W*?#3N>7w*RGKCLdt&NenJic8wWuuuu( zg0nEsh+-@n&sd(*HPz12O)1n|juI7OG$Tw}$qsHGiAL42CSA%0L`cjbN~qL)@Ls9J zwdm?8g%m7Lp(p_qySioBz0c6-8x5AU2g_8UEo~ZJW0T-RJV}7f`WvG?&tF2cz&`^LqQka zxmHXMSai^bhF+vG7Qd4~TzaSYB8x`U*ehM1xTHS43^_KYefIOr0`IA841-=AZ`2nBP@W58(QJ)+)+SR_!vev0x%H=p&Vgq^r;fB;`w?~VL3~NNTIU=K%B9fJ&{}b|T2hy2;QzV9B49AiL zNilR4ul_i{glC`T@z4ii^Uqzbk zOCW^dd64737~~uJi6RX-ejF>vdZRFzj!h|cXO%`HQZ#$1{-JVNd=C9uKz?_UHX7qT z2-7T0qPSMC%7<5m$UrxX9tdak2PSYXDCX1lQe-&ZI?1`V9wW^r$p+?Vm`cbX>E5^Q za9T9u9TJg6_k9oF1p@{=7{vUMI7nS1MJ&tbaGK(O3W5MhL=T4;G=V1moM7@cF@R@|HvPQ%bAh)--3$R26AV@e1CVi9JtO=Z?TIUiQ|9mFe^CkNAht-p*n~ucw z1dO1?)pBvkW3>+YJWiK>?x|*D=rVQkr1EHHD_T6kiliVz1~n&;PaL2#d%OLgc^f9o zabN6FMhWWf@8&Qb{NT_N=-(g8%%t1=4ShOTZa6t@`ts4W%a^xhpvJ+JTAEEU&@C-<2U}7f?tWnpgKHbV^b`0>KPU$D zrbRS$c_T;RjaW5b=+PHv^fbIAj|)PRMpJRCKZ8n0futKdUx zh-lIkGth%j)N|W`nevE@4L@zluzO9+zt1N=b-zvXujw=CSIvXdoCxEcm(vcX;ph7k z0S1PrwvyH+%(&Kj3=R$n-op3)@Y7FUgYz=>n^qk@A%!|x>=L_MSO!Z54Bka zjT_><1;v;8W}?2KV%CIGC%*x)YVnDY5}^_@m8koi8=)tqMTo*;PGq$R>%E#0F}1+m zR=+`0IEIh4^Y#eWr|cxMk{BNR(~rm0C)0)K%h=Cm74#t48oq0~JS6Ev=kwS*Qf|BF zM4Z&?LpFcU*!YdzF}bx%Yg<+^3OpryWxS2z4-R}JVZ)J#O&YG_=#og1l$c|eh+Gi5 zK(WFs1U<7}5Sjm9lMA(?p&Rxwd!YF&IC`DXSB8m2V{C|$vNGc-1|(Wk$oXAje+gb0 z3=PUrU$*9vsn$eE(j7NV6E_EOet|~RfWdV zkrg7e$}l2^LWm9qDJ7IJIAfGhfYoD>P$(F3|8NxKezj|@=AS+in3B78dPO)w=W>}% z(Rv>7Gwk5`5>dL*uL0*Pi%ds-V{tf@k?S=Y!z9r0_mo?qMx%mYd)RTE8hAs^F)6OS zS_C$R$&lqZ2{(_~X3SWQL4jQTR5Fq+ zIBE`wsb0dFabvqXQMoPj zrsXuowT<9olnDsDvj&LE;&Z8qb28y7XuO08;mz_ItV`00=>aHnIRL>j&l`cD`xTRf zxB{=iL)e2|t6nT+Na7elvlUh0;5=6*WQwKm3dB%wxgr>v%EK#om1J020cPVoO<`fK z<)kZ>fT_Q{FcZ(RGIjR4QlW6fA);}zE3229hipx7Uc%=fJkyz^e*cF;2*vrH$rUdA z=Z%AvQ-eIa+>C0SQ0*PNKMzC2{27NYGK%~NWF$q|Al|Pb`l+&76(Vipoy`XID6g1d zpe$QRB&KN8F~J*0dBck|mXYTZ{dd#Qv&^f*P%`wM>;|8v18P{E@EZ-`YEPmkgUFJd zMNcbE3lU6aF?SkcVZML9(;=YhjzO(d*eI?sQ$Ugw$!8Q_QXuf248-}iG1SWr`ph!$ zSd?|cen{&#v#z&SBGmJlvfZmjd-rNsu;)d8b(9c@$20_ivuqRYu-M)uZnA)vaGq0u8faarmJ*!m`;n}veB?0{S98_ z5w)gOE@Cc)%Czog%QRW)4--QN&W|c6pRoxl`=uv zn?Dy>X%nq)$~QId`N8!@L>%jy?_8<=V(UkSyazmfx+RBds^B@Vwfwh?uJWY$XYgD~ zKsVh}W<9SN4#C6`8x>}`+qRZ1@IxRASpeX`K?DbGu~<)20&~JFreTd?;Pc;r+wg{Z z1yFN;0y5U&PiDr?bUHzPA%m2yYh=4sn-5TGgUToVZ{2vrugcC&Et2MN(C}p%~pfUI3 z1(rnTJ`=y(4V?V>t;DdGLyV0mHh~up^5yeGb9_QK+UH9S+`$W!=^#cd%>c8oWICWg zIs><@Llx(tgYKt*e%=u1tUBJ}XZ>mhDi-FT*0dDUe(usD#?Mp1-~Ypy=sxE{qx)9^ zB7lR(eC3y7_dEYD(-454?nzI~>VKMM{ITLAsW;HDnNFGoO#ZWM(bC6`EWU9Eu`e-D zTR*eA@rqul&)yYhyN>J`b?u06P3%9*1?M$_HC?U+Zxx-65Oz5v8`Qil*0JY&4I5C~ z*x}CA@AfP{-@cj~P}+!DTi=Wg+*SFB(fX0>to*3`$c?8bU;F$}DPJh7e8Qj-qd%R= z)8Dz*%aDvny~b$K(>bfJ+mB55xUEGO4Bn^fbV*)0hRE%=Y1+%tRB(7s@Z2sKwVY3c zITjS`zJ?L1cRk@pJGJtzacjOm<1b^AkB!GunvkGYg-1op(!_h{()x^1pg*m@kZPNF zG>W?Vbafa4n=Gi=c7upsNkF^r4{FyL938~Q5>lS3>)X>mQ_U3p{4{o29XgGj;#B=i ztAbF*>y8-d1Mm_+?%QoaDbpz1jVnEbtufVt$_&(la-W1SOxAAgeKDrDaTm0=x_}9 zFONGdw@*(jhZGs1C}HH38d?g~s-#t&WNxW9kaG=;qM=c(*gs8q{nDIL3#+7S)hHF( z#LKF7?ebIyt-^GwR2^Ns8m3!c<>+D5S-ooY-u7+fPyI+&Fo1J)HJBbllxAue?dI%A zZI&6uxGlyAjbhw7u6>}qDCk%U}E%4TNCAYy)Ortm-QE& zY`_jG#3E7zjKoBHFsICzC`WjZ_S2VKiKVKRm!cYxo-)&F->289FIWVnpeUqBiG$?$ zOP0*6m{~~~wt=?}6Wk6scGx-=in3K^_3b{0vELGdwI?F)!4#3Fkg15N?-7NM;4Q35LP2l&Ew ziCo}q$)b=YgDkNnSvnEhGRkq5|6SA8<`)3eWM7pS<(ey#h3!;rYv%|RN+3v+5&V3f z-=C{o&e=aUaUQm?SOPBAA)A>13Bzm2uKdzvF!j-QHCp` z_R6#=s#H}{)M?7p`TMC#^)-4@^s_up>9$!4P-)e%(7P+4y<+J-*Uw3$Y^7r^EUCl# z?M4nu2np<%Xag1kN)Xu)$xZv!b`T|&;9vEMkpz}NTS1g$ngt)V*V)bOzNAxJ2B%Vu zp&1W~KNm_@jE`eHjxUoKg#w=M_nOjszs}Wv?%KEUjMDmdkR|}B_@M+Y1G40@<-639 z(lvo=t-CfAz@T8m6xmCZzA@6KYSZd^%mQ#}fPy3g8W4j_IFKfid7$<~#W1&XaL^Bn zB1s9QQTR{u{q;ESv#Ll{+-PKt!rC*QRkN*4p zkZvFFxi->Sf!6v^?k|7{r1rVWxjoj8=a-taM6bekdhQPlkU4 zqQ_AJb)poCP#R@`k#@u2GL!@w#tw%dDt@|3me)Rm9rOo(@ov3*<@Fb@ z1;qZ}x0ZAOKs&$y!N33@5GcQ%-@3jD7Q72%zlO1!>UYjTofk1N^6ZZx``6w(3trzN zJP3jh@3rjjgV}$UuJcg&FUi){ECckLq$A@R`^!we?rYk;t*h5H1>#i(-d7!|wzl2Z zfZ-~c_y000-|_p~X|MBh`)8%{$S!YbeUl}ZEbElLTH7YS|NG}Y0)Cs^TRyu0vkou{ zZ!t|xsl$M0sb27^(SLyp7khT%X1*_D`uJ&Htnlr@PoTWS{teIab<2e-xP^1qeEEgb zLNDAELRiy^@oD*YU4OE#bM5n+oAHQzzfGS5A|Q@x9{=$iV|(n#{3Vs+zux%CjPoEn z6sI!5+k6vF=PXaN{c$GKoH#{}vpLD+5H}4z#k*u*n~F&5#JNmzauri~Io>9ca6TGt z!aOY4ar-#+3zINDe)` zQao(N9iPZ4)?o)ZVTWf*fW;`vQ+cjwP=YhQ9g2%=U|_U4O9d>)OHcY79q=9QaEu|$ z9!&TWBn&=`4222%3|Cey_eR!8`1NtEs6)PL>l=m5JvDZ(>foUC;2H+KPWNc36GnXgcwHXqC-`2OAET z3XH_y>pC3Q(_@$eu*>E@F!W2EH2e5?m)_0deZJq{?{4HRxD8Pc!yrwWfDDfRp_#yl z9_{)x>AH+%WF*H-y&~T^pUnB$@q6MKbov6wz)j?YbiaLCkDUW@OWwM%%K{{_E>@rb zRC}oywoUoGrlbl>(ss{M^;=w)PoF4GKf~@t@g`8sR$rg#0Q&W)2LgaHygmaqqX7a4 z(0~YFITXNd2zfWOulKls+b=J4dIXTalzz>62mpqXSCv3(x7&$&$DH$-=0hRGZ1FWAwOegCm@bs zv>TtDUomg)8WF`XTsF3RIo+~npdwLEP>=F{5`i?Z2h7jFdN?Xuz|aiG=or}^3`dn) zPmH!cN{pLmz>LETF(VAm5R+@qV#M#}np!+;HDOoN`sUAjzeQhw&$j>{uiU>W_w(jY z%TKcmKKid|@6uba6W@qv0=EN0M#LOat zHy^(I`0FD;qK6)-@YoYi{qLEPMj364H0d&A`cI8j)@-rvv<*Z3bjvT#)nWk~IJkKD zoC$0tBd4IGqNZ_`I}c`_EUau^cMEu#Slh7Tv|>{lfXk;Jo8J(@b6zf)M(sbVw9pL%dj#gwzT5 zsx0JUMO6_>(OOXj=A=PYb!f!piZ*mk#;W=-h|+@bJAr<>VIMM{)iqmLFcGv)msOMS zwN=7&j&twHN`LDG@@*N{cc`_@LRN){U-rta(7F*9xAKJLhNQLvvRXgj*Pz%#pPIJ9BS#X9pi#y`Kwscil&CRCTC5V)cR?Ue zOq+xjN@`+Kd2ytAhrP+$@9+Q6?Y+u6|MC;+a{exFGln{pzQ{V$J6EIZ62yZvMGB&P zCrWtCRJ4@IQ3w+i&@fLCTCsYEF?pLPhfkui?n17BgBt1gQX~m6nhcoB$Gi>%q9lwF zE?n`~mw~YotD;Yl3-IwyUIj7TVQ)m%vS?2L97l;cRz=EkM=**}HffEa=}*O%#rudy zWYM57MnA^+T)V%~(Rx6w^K`z!_-fn(H*O-rk;V8tdi4_Mk@YsojNT|JckFSeIq8`~0j* zE+mU0P*uF4s4m=8K%@%fjH9fc*5K>yZcO%xm>TG}4G)d_IoqXsdtzQlU3b#6 zC9-{w6TWS|PPZ+&?e!M>UQS-kDPdXY>XUi%_p$;hjRN9L<^^Xnvf!>FrAMjih{+p8Zb zihe05buL{|*~T?w%l3_!wk3JsQsw~WK-YzH5~q4I%iQ2^T3VvbfBfo`Hqo(4m>1ip zAbm}r*h!y$x{b+C8wKo`oE!OB6^rI3cWv=}n7CyA%{+M5?v$=={T~YF?a16RB72M1 zrJ)17<`*Ok&DhL~u+{7Gu$j{iLl1xHxwNQq;nE40&J>(tk8~-@4H%d@J0Phj@$#ab zDZC_Hyx?YKI$)CR*=S6jdj4+rTG3MRhWYqsCz8HuRdxE>3%qUj?0_m3PsUve=se%^?pq%2cd^5TO= z-LN?euSAEt%~)fOif0d>#m$_zvLbfo^v&VPMfCos&Gh)R)SUc{BNz$v@Z9*qdE9(R zyJq~>Gfr!UA9Z6%(zB))t?*7M*fBKnqG+kpnXEFWHG>6n(w0w5SQ(K~3Vor#eTIHw zjf`Jy%HEcjd5t%jH_>om>e!r&tr;2ToTob%xn7%|1H0Fqyst34Ms`@TaZ>YQ-SG$g z!q=WC{32Q|J2d1%!MOQHrQ2Ovj;FRrw}&6ipR)dvY`B2E!oe8XnViVw3qT-ltLR`cw9vi`<8J@~DCE?R2( z`4bu}>1utbcts~)PWX2w@88iA5{y;BT@vZH3;*#(W{ii`zohgX&Kjb;vP*d>i!Wny zm7I(=0k8z$nNEF~c796y2fLn|qo0x$gT|r>a}r+9lsSK&oSlH)>SIe{CZmykW_-#` z`zKBRGEndVD4 zhE}RY^tn+rB>GR%))t~+q?H<{%SqZU+Q2v~o2T}@9fqQGc{+;AM;~=>@T4|#DprirL;>muqi+KBp+KB8i^ z!SMJ@%uQ?+Ti9WT9d_7Z$JNoz&an#c!;#}~xOrqc>|_zft)+MeNO!t3L|j!EA}I_h z17JwWg(2l%7*a+b48dDde;kG|*%__5Rc6Ji#&D;+t-x?Mqi4&khRs-4SDCS{&`PWd zwU?36&4kOwfGc%v14yu;+hLOjFu(&t){9a3c&v%Az~T5hhfCC9I9!-Fy!?yHSRu&R zD3CY{Vn&xHfgunV!=d;p5a9DGO9Tt*zCwnfMx#2K!(uq?>WzX}P%jWg)XRmjqUwt{ zFFaUdc)ePT0L8*_`3wDp{z8ADS(q-vmiB>d?MtI1NO4BFA~^*V$^pf4U_pjOb9iXv zXK^O40dK&Q`4s*=Z%=lMCNF6$Tjs!%QEG%5?0<-rWM)@5%U%#!s)Y zNxP7Ct^qq41pgbNaxebzg=sPFSQm^J;$dZDoi%LTt+2@$4CsI%5B(8rX)SDP9gLOr z2F%Z)@b9^AphFwrzg6WPvXKW1td|1VC}+W@o`!)QhM`_5MhUh`7Pd>yi`Bs2Rn>_i zTtJ~5P%H-)WLPwZhem!B&w(3YvKuj}*{L%rC;4{ppX^*H7M_yvV#7GfTHSuz{L5r> zES87EvN#~d8rFW(BqaabEWv`|xG^I?1_Y(I%*wxV&G)WX@YjBv9eh4~?eT-D@Z@0u z8bH<6?!51v8mEPds(7$vMTrD$?y0(~Yw6<;Ze?lhi_E@B6Gpb4;q)#wyODrKjSwP) z2q6Lxg0N@0chqNog637bRYn5UD$u7TeT8Ms67#fu6Lp!1il{9@cDw8Wa+;D%%aS!i zE470^-e22PaPxkCY>H+_cC{8c(}fUnrVAlLh!8@~wh?`Nsng_2HJLMI&X?tIQpzps zWON=`oPvN+H-Ieei>M>izEK!0QSHjcWg}>xLu$Y3H#N?r7gce9Ww~iKJLr>bYeazE zc2dv9T2W=5Pv$Uk4N%3IQnbf*ebFF96UZLv^t^>QeEcZm8U``|+6@|^g_IfOZ$lA= z#6vABMoT8Fz0qF9iM9b8orz!+f*=TjAP8aZC5AAtmkTjw{HSpa%eT`9+fC@qbej#s zg<+7SKF1WwlFJ^mEwr6)9YG;bFtw1uLZPz+nQ-^0k|}5R!6P|f>4FfwcWJuoq)G;( z5Cmal$!#i5);1_Vn>sqv3?bY^gxDtB#6B?~{%FN_y$9O+;AD0ziyKY2Bx{H2^PvxF z9<4+FHS%(8O!M{Sw5oj!OwP3YF=hgP2#aa|{I^=Cg_vQ)gP3(&~ft;bIr=MOQW)GWQez=0=Z43X`+1=s8 zEB9B$^25%JJGUXCYt`oJpp2LE(DREUU6Gq>Vgw-<#$H$$Est)GUR?WTok-*mB~$s- zvY6(W(RF+4Lkgba#G!(rRk2o;;{U}B5{|?yNsx?_ER$ZAzL9pygffRLS(YzbCO65W zpMAb^waaD!t zH%7-&uyAZNHXGZ9UB^CP-5ou5yxQ@6Cr@M1#E<2UExOon(X(@P7d~CB4bl!DpM6Ps z$$fck4>?n-4`WBO#YxJfu04F z!?qzk$vy-S48Zk2EUU5TVs?K4L%jsTmc$YUNcJCvNc!7Y5p~D3U~Na_@=5SF4$4Xp z#F|1zsK1j1cs|vYAl9Vff-|#Z1(upcQSkr9_}la=FKjFUM=X?wbJ4G#2t%OAzLiL< zto)*3e|~&ZDEu+1zLy>lC4ehCGWrDLL~D}>a-#rP_$*)#rRlJ#%BLFsW;TY>*R0$Y z#n_DBZV|_BIxt*Gzo_qy!T0axQlM@@Q1hF~5x(O0F}w+mZNzbJo0M#rfX2M#;NZ_J z4^U?r!*TM&*aSguF~lzD_Tu} z;DHV8PpKFw{u>Kj)Prrr!RKKbaG$pw#? z1WQsN?m|V|RJVY#ifOJ4Uo@QA4Cu=A*c13(pP`)2Z1{t?J zx`~9B>C|93{i_C|KDO%_T*p06LgROhMQJ?B$RrPl7U6_ZMw$s64~;P@I3%bp-cccp z{hWGUU@sR?zX+qiMCEsYL24%PD6XY?aOo3lOo@Q&vfhV2 zrc!mGRf0!!GmzCnW!7u(WFyuI>{B-a~UiIMW%!VtQGA5qbUo0szJyE*1B?T zxHkEJVm3>}j7=(uzv0^|Xzm)BF(+Wcf)h-e{<=16fozf$63`f;V>bcWWcMBdvPnLV zfYhQ81knN4J$i>=F`>61NPylZq(!D?R5lPeaN&XjLAJyb*Fc0Fk46K{0DqsLCW07< zu;T_bkWFGLa$ZYGFb?-|{)|Vafe1U!to><;-q09G)#>8u)b^e0IWlZK-?i(>A&y^Yb}RZD$s60h6_ru_Dm^x>zmf^Qqw%b>GO#>8uWc8iv$@Ft_J(+6h>|VOW-SA8s6je!$xgue2WYUVZk=h_q zw2dSYiqQj5Id*GyfIYC&uQyo?d4$(9mAUcgY$xLi$3w*Wc7507_ti~_AH@yv@WedY z{zKVz4<80Q9OdjQQTvpsqHP@B9nYXCQ$Dn1WX#VIkVkai*guP)I8y^B6G+?02wX9b zon(?zv9a&%Y~K0x^S(;m~&ySfy2=#Fulouxp`S2ShxT2 z(PZ*U-f^LHq4X%IiRA8CC|P!g5O-r?_aq|fArx|7SrdpqAZ8tmA4;B?2W$FXIRhKJ z41eOz?JKDV;(g<&A+hkh?Ht=>>oe4Xb7K=+R-{&>)d$+oL|LBXRB4;AZe(Z2{?NDB*>)@QdymD@GREs;8mZyX2(is%yIQaIGi1Jup$QLmeUN@Fl zXvUz6e5c)S1Ve#*Us^2NftQv)KmIGV7nnYey@le@tW=L{n)88d+J|;`Hu|z$VD|3V z3O-diBq(AUB-O=G%8(?-k>!@GO5g(1Vm-OV$c)?EC*d6Pq3uh{Uuog+kd^l&0|H91 zN5|Okl#DhO{^-P)oZRNG@H&JnvG{oFglP_0o+rv%o$G;ng%OGMH_o6o4aSyajR@Gz zWDvtp&DX=1q77B}0COT$Q+Td$VBv~8QY|O|%!%AK^eBi(t}6UIESHKhad&5ki0Gs9U_X-h9HvT!Em*29UEa@d zVIl+>PJ((qIGki~Hk@YMyehaS)y^*`=lYBKK8}4L+p? zc#synzl24?jdE1eUILev>vs{fIZz|d92O36gMcPU6zC{B(0UyF0azGHHCqC zx=mWIiGq@Rdf)cUXaUBkYC7eg_$0a7t^X}6p1imdmW(J!!iTu)Q}LDTESC;ja@#L6 z-Zb#WbsZ*xmpp!);YY6dF0b|;iHf3ZpRgovcCc%Wx{S`MQo+?bCs{SoXw`$)`9Ts& zS(7PbX9&a^QSg;qnS|+63GryyP2gbCL^Ul-+dlkG)VPw)g{k#R^q>&rF`bj9_^M2j z!wWcy3>TmzOOkoy?_}>NUgl(@lgxnab%~@sZY+kRw_M|~ENM`!En7+?)E8>@{^2cuCuc&vGTH2DMHt%x-B6D@K%dZnTT@*uXSf8yMX6*cK;==6Vfv z0Bo`4mRu~CtUI$()ww2X@@0reK5Mn=sq9u&%1Ym4OP8CHEPL5Qok4PdB^NNkjYw`HA#HI zIj?_3o$#(;RDjyFq?^>HB`J2_-WCFUVf6aX7^!WzR++JC{#XJJ%nuJtp+>=6#h8$B z1rjc`U@Y#gqxK)E{6nY*UcYyLZ)K**Y?mPFWev2SdQ|Wvohc{@`I2xJ=!0|DCjT(> zi0)QeaMkh$_wTQV2O> z&fCCYnUg$SGzQS=QExh_X*@%w5;cV1sCE-8TM<9->^xW*Vsa-_;)tYlB8!+RA)2e| zb&f7mz0SN6?;Fb$WKnY+)iE4V62V#9X)z67Sy44Mn`xGpm$GsW$Cqux&v>|f-h0O^`Pi=BR@C+*^7NCl^Ybb8T~;{vtX$HT)< zuYS45ef(GaY+N02cpy~T#9U5ZsxtvQzA_xC)kSsuMmY*CVTMGV&)dX|v+Ed9z^Q0f z8sVr+CQTUHdD2!#>ddEOpKRS)d|a9@R!*^=Fbd(jv0d5kIzB$D#kTT0dPq5&yOWg5}Svd1pQmYj*SO zjK}lm;j7uh?>>QdZ<;F&mLtVpV zmgg=lgLQ?@pSGDJkp*=k1ugEun;F^Znk7?eE1JG*q?OBSsZ-RVQX!@FcH-Y;-;5S4 z_6Se%#Gd;9enqzv@Y3i!Nk;*5jq!k1S{8@fAC$cZ^W27Z)i!UY@w-L*sASsqc_n2J z@OF!jUMB3?va!ApadML;8m*b2xn@Zab0$;Zbx1djM5QN`@aaDFk7RLcxMCkD(Pj9f zbPHvhij!{AX;h+FqIw6TT827$L9eq*ZX1u`6(C>uX@0r@{|j0(Sore)%r=Omp_! zf{qMkEUrXOeI|yVl(izL8H9NL=SC|eMd#UljJ+JQ(+uQ3&ktug!7 zTT>$pu8%jyiY90_sY2NO>OjEl?rX(^b(0@;fOxz)O)8=EQP!34+}miGI5bUWrOx-L zLiueBY^;hi75-|HVq}e`V(gzR3Dp|%tG_z3{wXF*dS^-{X3vDG4!zL#!>HC2iU&&B z!GaNvujCa6@aaql!DPA^<59Q91W{(Y?7T?8lBO*XA*N+!gdjKBZna-g4j{%hg#6^D zOpsz@V|3?U^;EsVMOHm=yR#13_i=`V-^bp*t{PU(P_3DW4B(#*2XnlKzsW?!koSw% z8Kp9rlut?cYcik5UP`iAxxLYq@gV%vac;j>fd6s}tIBoW1@P5e`m$p0qT42DSmw}i zsz~P(Gcj&NAxC@mXGxQ41$qwG;vJnwYCr^wn2)K0W(@4@2SpV&)Z@p8ou@R?t z^Q%v#6p|k+l?%ri6%N=gG10w{!-x*k-I6Bw(LDE2(KYCUa;=h64W(zgZR^S)!WC>% zrs63VggJ2z(VG&@u444|QtvyAU^s`gj|5n;_nmp8A3;o0q-5wZP(vAI2(YZia&wc*`1esv5sPI!l=>8sm6D0Yr4h0s&yia)JCn_dh*lf+YT2Q&$@Q_Q z4OQN7Ubtk64o_k+HyKZgm-+IPV`5~6Xjc7*j~+a5GBxA-?2@B#V=LxyLl2Vo$~6~( zborA}jLH~nA~VLKza>cUOVW>j0qnBk&aE7y&T5PsRVW@Se#Fg~-+YIP;4!k~7= zXqN`rYxU8%`p<`S@LZ0Ig|--sw!(}CM~tL%G5F@O@;pbSb9o~emQeW7?3z@j>ZV@{ zP%b9fx1q6-pr$rYX1A50x;JZ_cidGno$e~0i;XNYS8~dcUQaro-P1*mIpbSqI87Qq zoH?~DM}t?d`!f}*8LxH;E%k9HAg&4|R~jnWaH88e0cl9?&2P-~D+xeVpBv-W6mKYl zXldGah?C^6iwZ4AL1}QmnmP;BvN1lb#XE?(L9|r9ZzDSxv5p^Hj)KJwt(J}PYl=6N zY+71F-%2)+QKhb9(6Wvdo>9g!UzDjEYTG8;h{5iR(OGsxI+xv> zH9PMGnaYC0jG6UqBn9TeSd{OA9`6L({B!X3RCsgYAHX$TFVO2XM=$yg7k^`D8k9MT zx?QOmT3|(#!bY%;`fuq-FSiF=K1@6gaVqz6&o$_<}!4XvFJ+}cfimXF8F%@--97n#reRkhvL{yqnv-Iaq#?eD`Tr+Cu5>YhgnO90%~o1wtpfja*K9L?GD2rd?SL#WV5 zp_hFjBixyO61gM!szABIFOuXI3GA2f>Hy{Wp0dvy{DnjO;2TMOs0#O(Ycg| zn4vTkDwGz9t*vA5!R-EqU^YB*!_FH}aKlFrsLO}^0LKM`i2Y$)yJe?gR9j;yc52!% zlC8CYwr-ZbbLH+*cuyd56#*d3j1KVwOMzV-Tp9&o!EP%O?o2t zk@9k}>tiZ%;?k-19JzoWCa#7yGji0&#{IQdr6q>*bP&u=KDHDR2xcw8q=vQB>i}I4 z@uDN>x1kX&!(J8r)x9t5O$1{)}ju5yb=wYSeBLLgVKl%)?zU?%2Qc2%nzo z>wOyT8aR$%ew+0gdl2a}UBGPonz{ezJ;aqqzd@3Gn~;LMyX~3D5Y;@AkXK!Kbn+IU z)<~wNl(Z7u_>_KFMBetqFPkBZN+uOWoo`P(=-eV{Y3Q8KdA04z)G|z~;Jkd%GW=MQ zgDK=pF?lHEe7x(uZOahoyRVhG?90K`7Ol+zjS03nz53 z1=+23S?@9nPBOX>Sda*~iFDm2M6TInac9xYi2#r5`J&wNLx^13ZjbUC`)SJs<58-A z3dO!1db|nZd@YbY0ZwYpo)dK9jxIz^E&lxBQHYW{{^1LiAxvs8@rT+FCACEGhN=() z?@8x0hFGWGx?B%ehc2J4;+vu=(#&AHtF_hQ=5%NoMNg^ta`0v z-4EEvY2)7D$5ay163LcBL_w>Wk#X|OGq@FTJC~rg!`}@L8qp+P+86PrX=X8YrRaWQ zG=2N%&v9EGgtj#`0K5nqhsasv_^xe(w}zLE-XtOglIUmDHr8A-1n0Vl7IQeRDl}{I z@d?p5DHCHfXo${&OmcX%_O-MqNtDc}xRoz^^!?j^fxVsuP45mna(g(K z;e?>{l1w+}L+IcPpoUu^owO55HrTA9NyROz-ru^ci%$H!N#wRA zA8ejyh|71|YCl`)EoYmIxyvpU=jf4XNlzNWoKSw|-g)Il`%8HuoWQ%$zzkQ4**0E##_3@_p7{+_1hRmR40Uu4Ow#Sn(_%#|jEfvvU zu2QO_)|;>eDd}jO4nACY?fN#K-|ZaI<8#tusKzsBdWOHhpAHqj52=m4-tstur`bbE zA6n&|p>;6M=mMR_B-UooB&=vZ%gVGsuca7;&L8@2!b&!5bR~(&NaarQEh4rIyUCl z{eW%J+g<`;z80ju6+Y6OJ@+6ZLl?sLzhR%}L$mjTN&X4E8TeO_^AG`jpoWm3k_w&U zAqX^v(8Q&XMsWH<=Sc_xmC^j>`) z%Ib~*3W44sbG0bJVj79&WE7+CW>Fy% z#pK`1?J*tmUH?@Et-}IUs$!KxyMVrEypTk0Rs1@~pR_#jbdi=(SLKb+}&U7*P zb+KXX6N-Z5sqqh?j1e}xFv(FctNoQdKtbxeGil6+FC7e@yyysTNa*i)N&-|>k>QoT z3)l5!V(gi%rL(=$q!s7q=9USorAkpnWt|S8qP5r6(xO-Eft9Wir63GTm(odTJ1&>Yb|o@QtJMklEEtX#8C_*!FLOn*TosL>HTs5M!%e;aN=aB?w?><)0=%Au?cKGjUN?~Y9cR_lTn`5u} z>`0L`=fQSlO!qBd_g1j5#HpOX=s3=?WZR!R8 zSXGI<(q~g}CHq?0C%FVIVt57i8$7LGxxW4`$pSpE0Z8)>el9vGYN1b_G3y zvYAOHpI{|@-0IAJ(iyfemEB(6e%+MSq(esfOR>cC=6AR`t!_(Jd-=s{ozbJFr&oKJ z)#HN;xW~sc#gorbTeM;m*M;BKkX2ZF?86z;=?PEjv(+szeburRm^z*-BIhGJk@}3D zKH0}bjntF(Llx88$KtV~hU(ou)orfMy-u{M5*-_GVF=%AKnP*`1J78>F)Z`UhYp2K zN`J-M-cI~4P1SCKjv0m^Oc24zFtV-vtn(AE$mWC@`o(MUf_UlY#b=|%x1!C2Sk{Z6 zYyMvSv^xG!eZ3n*mQ+s=uHh@dm&W@=RP%CYF?IJ*DLbVxhoW6E$8Nw{d7JkwooJ>; zLjX|Bq#o6hvTx}+E^3%)0d0yid~pr@eR?ro|Mynk5NmZ^cld90JKN4#zqB34cGF<( zuv`9g|0+uv%7(wis#a9>rO2&Dvx!fXIUIJiYnPJ6kqq(l)~%-@|I+hUects6ejpzd z7#NgSt5oW|(V){G{JrJ+Mm26lbt|fBWZJs**rPgxn?uAA-01u`$8&;E6~iF=Xe23i z*@Gc8m$PkSW8-7h3k(CIzvCX~op*oRNCFO{XMP<|bN?ionV2|<&Kgi}bI9eST{(r! z^@`H8ez62%N^Ps&9xaympUR6EnvYK=-ISB60?jYfl(T|0}7L9)aq>d*QBs1I6AO%Kb+8vNr;G;9?j=E%9uIA42qhLFofwx8Du_ z-$8R=VD|-ZE8Tsn%T~rjr$uL-wP;1ToB1gghJF+`x{l!8zZu#K0ey7aDXEeEmx(HX)D8on-`1mj6@i z|70tZ-~J25PmC}!E(dThPxZp=K_FwyWws*Htia2v&JabW0&Y5#$D?~coEg1QJqdA- zGp~e6FQ5*!i(&<%C}Nt#f$1jP-Mzx@(Zd71bi&)mF1q?l zPkW$m!Yzpi(vFi6I_Hj(p1B#9Fp&&HsF{bgntY;|FFU(Mam?EYD#461!!RWRu|CzH z4hS=klTP_C>8#4^kYUoxMY7zkH*LEXchT1Z&`k8sWq73!hCZW;fc^y>P_8P_-Z^Gw zCg|&)hzkV7kb<*F_ByT3pp&#YJG#;7lqZ^njJlp8R~Wn3)ZpswLqSE76w+aUPSRDv z?x54D8?s)2E%OfFR%r|d7Z0n|41q~9)Os2^TZjqx0(twf~*0^$NAq8u||*xDlL z646#Va`Zf}a~NSb3q=6WqHq;PUAdA$oQO8ceJMtx>Tm@c)?hhoSdt?@ws+#DsZ$N5 z6*azm!(X0EhB?OK*AQ&?^o`MXtk8}c?i<19<9HiAR?MEqrg1sj8TA2U`JzT)p9g}-Dh?@JWiMd337(r+q=$jEY#0vO2dI|30Ptn#dC zLCJe6{cm@j9jdtHe0XwbjACzQEBUwFCw%8XaD01kh&`=xF zIXN{B(mOHP4!${D{HefE52-z<(qGzzjgTjyKn+1sB<3LZg+fAsiQzjTkn%8{LMc(n z1N#gz;iiBR8PPbq6JC=YO94Z03NFMDoRVX{2}S3e-dZ3HwTZ^j4^KD7^CQsiG@nX| zL_%RLM2MOb?AV)T-kT@3V|TNKlKRLH{Z##mZ{>9px=>iC|!AgP0#ENHV+xw@|F?Ye21ajP0x zj%gSk#mlT0%6HmD+0kW6v5#T zKf;r#tySw!UgOFy?AHEKoK6%o$RU2l{K&cF@ETA$sCxsENGzGnrV_=BbBHg|!zBQ>6 zFL{N4@jq8oLj}jKPDri9@8%#R067Ec4|_Zi5pG7Ix_P4ePZlr^uDl^T-Ie&>$geEU zx3^7pp<=jzD#fjTQ}MzC+*J1rh#yY$9&b`7-W=XQ-~m4zUh6&I`^9i@AvR@gB3I|e zN8wAc#QJSmcIlAl5{#iEb2ol*OXwuawF=$+3^EKDAcM_YCM^MC#qyvF4hx=UWLw%H zfL&PGr4@mEZxbiVTi=x+ahGL9Vl{XI)3KFQE|1I9R^dLu*;ypuO&$H!0>M{r4i9y7 zb*HJU!JyZtL{n39defVXMgZ$?ODt}NHtto8L^%b@=^Y=+&XJpX%gT;bAJSBL)co!Z zc1hjRoV2KYO-kUpZ+^}+4Al?R^R0mLh^MLDzN`Ww(6Ni2rxqGk&cee&Xnls8MYSz`L`Xw`m;nZoY`Ww7X5c*u22&FJ|iR5xsKyO zD@Ap46Lme~mOlzTaIS7X)%=t@Iv?-#+SAm^aA&ccfkHlC`bh@oqmtFgz|lfjlkVOY2Dro zWGhr0u7kpCJsGiu`jGZX_x|8fj@ILZRz6m>P{w8hL<}+)Hgtr5eXiYrdiRJs`@EU2 zZ}VbEbt_!PR3QlU7|sA0Y(?hx=(6DLJs0NkgwGWaVm1~)NM?AD&t?)tH z{?d_=WVY6BiRh!8J^s?dmaE=O4o8MjqZH9j!k*;}y~|(-F~!omwkVa$Rf^UilQ^lv zW?{r5Rw0}0E5*k!?XGJ()Yck{-nIfAR$&u#Wa(Bs4iH4D@m0i}#{HAtuG^-M^|zOI zt@o3s)NYZ~LNJOTWK7c6?)-xRzym-0Z`qkX3>sTb`!o3A5i1EX_i@^&{a(X09X67O zK(oH;6}gWgAf!yBXHOino8w;rOX<4XZ%I3#W7maZ5kBtXkzdhXUP5leKqeb-o_K$| zZkKbizbj0*P9K=;*#$PMnF#44C0I>Ag)Z%Fv%mis+jWG+S^gby z7f$?C!0&5_Gyr^jcgoVd?Ylii&oz+`Xzvk#*u*j>0RFw1niaP$u=aN^OZ;JE!J;I$0x-Uj8ln)XXotLpK|wwsIa2?GA6?&&~zDz&-!*&M3+cr|@qk4dB`Pc5ab zzg5)cHP+);AIPSa(dhtKPqx+drr@``i`zHFrp|;4uZYV?2C2CimKU*dJ6hiLc!*~~ zJ*?<^Bt!mfQJ6ziG^NGea*lOBHcgC9iw)CBaR*y%&?${7s$6Q@X}*s4xF?&jr;$zd zy)L-6;4|Oug`m@+qEr}uY40U}Xc(+@s^~#}_9#_TiPitqdn_a?>UwqX?P_t`9glq? z?r&Wa#iadTVp#W#%Qz#8F87?5;3XAAz%4u=&yflndKdk-^ex{;e^0;U4}Z&+FZ8mr zIwm%QNDYtdwd`kAJK>nQ38>7M^dpUv7VoLkCUbJ%CFdZGOS)5zehdng4AVcQsUO(Gy_G%0byG#Oj+t(NOa zmRHo)l%y#~Q*oqH4WmrwH8tP#O4AT#mZoLNI!y=5{WU%RJW(?c=VO|YE#EO*W}Z&X z6^+EvOjsl_+&l)&opUj39vGxh!+gdQt9e36Lo^Fc$=>jK?#q*J znnKw!Wtj+LV`1eD(|?HcbU))w+!=-0NbC}Ma*8=-Mr$-qr z*Ao3qOvs&n3=n-?$!`0Pp-7ktU=2#1qk$V8Aht2IJb^mql_{3JrI$7 zMm;I$FDe`1qtO%O?`iq8c?)dHBuh6Z?Q3!2zyi7BCO literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/inter-italic-greek.DJ8dCoTZ.woff2 b/previews/PR195/assets/inter-italic-greek.DJ8dCoTZ.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a3c16ca40b2a8f454c34cfa91996ec99ae2e4aa0 GIT binary patch literal 32564 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 b6r&82^QQ+ZZ1?Zre-i}g|91_a`#}W>14e7b literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/inter-italic-latin-ext.CN1xVJS-.woff2 b/previews/PR195/assets/inter-italic-latin-ext.CN1xVJS-.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2210a899edaeb06655f7bc50e7f94444da140b94 GIT binary patch literal 120840 zcmV)DK*7IvPew8T0RR910oVut6951J1HHHa0oRcL1ONa400000000000000000000 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̍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�&m_s)7i%W&AOTQj!RY?DD%Lgp-S*pOmro??aDv7GjXilW-I&L zM{?Tg*MeHpd9p-xZuY_~Z0*T=e{U@vj7*)Cm7UvhAu&L3-+1QU@635F0f~X4VrgpS zK&gC#@Ni;+M@M6{vSc{ZK6Y3*xt+QUgu$ZhU84@V&5p;^MVC6KC;Tov{op^{Gfz|$ zB)d-hU3}`nzh(>-_T{MhJPu|id(5ni%~baC4}*S>k*t=6jj;FT4@S*)86gwTz#JGB z=7)yZ{j*%6;;nqrkLclod0#K;Wm#Y;1336VB2!c1Le!N}Al21>?7T28QIPVz-hW#*Dg zjzr>;sZ~`oyy6_iIsj)`Go0Lmeb~ze=RWQVoX$^ktFwni)ZEF z+hyqDBT=j4#V#)1;`!*}BschT2*xK2J^VvkTN6V)TtvZDRViX%y|y-%5q0AcDr;xO z7Vxk9FTOU)vy~RpK@~?NON7w^cS%`C=RSYx+(5s%nI(vtjZS=w65OoXq6GK?O)Jj=E0k;eSTJ>hkn)d zr@a?!0YEIEg|Q~2VXG^){|Y^_weR^O7t4jTN?YR|w1HNoS=){qt##aFjeB*p=S(r1 zQu`T!o=kkXQZnqAgmD>r$1P?ith+>HeXi?-0NXmPF9Ka zQlV=REkz z_$o1?n+S&K&gwmM6-Jl-KXd=YOZD(;#gCFdM@B~0OaPEK0UuL4XWUiOF~*y@Y`isg zQ-EJ8=Uux~N+lG8O3&X=XnP~?pcJXh+(~1G0Vx$!sPs79BBW6AAH;TQ6zPaEZOTp) z!)pabBaYEE2Vyk6z&#|CF}0zSZ*ptIcS;q>zLQZ@1;QT9N*4Bh+%D0=<>Pi5i*{m@ zH9M%3ut#3WWgtE#yIigs*U}gYWmH6Is;|vPz(r14O8K7ha}*T;2OsXKDS13_Y*;L% zK-qml9%G>Hv|h_ry_MIJ&0Dp*O?;=Ub(QmkA_g1 zW)`O80mv`~(~z`c3|2v;^J5wNBfahQfc;$A%$GiKWmS z+iIis*%;<;qd`zYioCRkRpCT<8gYW7$9tvEkK5ARd^SHXL@nzosfs$iY$=z^hcP-? z*haPY##fFXAAdMLA-D7c`#JsAe%~Zr+i4IzC?Cw7svORp+B|iA>gz~<Y3h^_a>|FVwZbwQZ`QsSZzdPw$VCuOH!7=r(=o%~PLe3{E?0@Sds7 zT$mZAR4Ci0+c@1h=1W7O(UUV=G|tvErE`{>wVHL3^|tmeZPi}Eg)GDQy&Ly|7IDU0 z;|})gUKjW2U0i1RocAw2JbQw3et)OQ>*wL_<9^^DZTXb<@*M}ywg{{`0w4n5=#Mvo zdIk~wG&t*%0Ro=CHvyo)2?$W%Nj1szY)8+g5}zOBSG&-qNJnzN$YHIybbv$JEgZ?b zFu}Ks6!gw$p|N{HE$&cX&q1Cd1v#@G@S9DI2!>|ESu%|0+_K%|qtRm*JC0BrpI(?U zVM-8)%&<*Hrd{KMbCJp34CERvp7}>a4YQF@sGU z%Q=vM475P9NHD~Z&3}e+z!?ufo}xrVtQ1*t)Hpod6_o&wff|beh(QXZtc*jp5g$Yc zAmSC`0nj~t78n^I^4rQifHr7_B8VHf^E>>QFN^Qy$LuHmKmWH+!l(U(Pu*%d8Dju2 zAV3?i&_YMx7l}nWuZS;h9}NOlvb9nQi#7t}T3s9oJ?LH@L;_mBU&M{UPx0M8DUWjW zZf~uz=;u^_YJYy3_xq$g(nz^a_?M_2`An!&jRF#)(YQ}P1`4MDq(DBnL5g?AW+ENg zuIDX#e$^agfoa*gD9ermgCca$L!|LAs=bWR5JSR8-d9aR9BfX{Rm%Jvk+(|eG>Z;+ z@zu)Xse|hFk20iubJccb;|tP8!$cSlCf9>4-Ma2IW=2eniLul*+~|Z`F50)E zkZ22EHv(2j1X|Ua<2Gh!{9z&Eo|uA)6wYJsp)o6oY)w`1FZyqoG$WhH2u4Am>o6oT zx&p~-IK<^;h>qA!7YDs3nX*Q^-KbLo-}8MKw9@0kV40HzPKp9igxDWnxknHDZ##{O z!lg$T0Rs#OU<%Aa5N*z(e66xCTQBWx1f`N#`5Y!mUF>yAO+C+k?$%$Xg8O`8(Di$pNTQv+&6&>wOoU{BhDCi22NJV7emy*mg7zh+bC(Ic13 zj`Xc)N(NyLgNO!pL^KSdQrmB!D4U6ML_4{dv_#;>gX^_*^+Y|`T10~oHvwY6d1=~n zZ#wkB-YSj9n;_ba!o#ydNs0X2C;`;Wr*6RBN__BD)WEIR#R(`7fynPDD(J-l3aplk!a&V5OlL!iNX4Z~DFaV$848H}iTMn>mBAnt>!(dVqL_PmJ8P**E1o3G z=IyDQB~2+1m}Iele|Lmb$mdb|`fPrh7*g3;eC!POfR+#@QgLGp#E=4RM3y^({JHbe zu*Gud_+_?MMTkW_XJ_j`55%#ph1}&8)oiZY>Nbi6PlIGhvRVAb9%*$6PPK}u43sDc zE!R^*h17Usy+n45B=1Aw4R2sXB3#<)SWx}Kp0hEM#e>i`;RyzmWK*hO8&Sqw?Y@>8 za8raCN(p9aNQ=!@v?T)Ns^}=*#3?q$5|AWh?4LRS9iu0ymbP!5^;)P}mDOXMn^AZ> zU%BGgbmm*`i1BSk;K+&t9EZyM+bDEz?Jl0~%T1%Kl)W4+KD$UqTVfwyA8>i-6G6%j z_z^Z`X1*?Ec6zc8{MqhNtkS8qlDn_Ab+$+Bm2Mb$*IPd67op*T?j4{PvTZ-K>QYzb zBnHX$E~Ty34{fzg{bF2S-}uB0Ssn9_JwFpX1@puxL)sMf{DUExf60}DX?t~pBy4;bDP|7_o>9^7#s(X2KnF$$)hlA&8ilwV z8#2lQk1vJ*;SsK5RCa?tMM}hL8Gt$Q!-_yq-AjXTgqy#y^ApGBo%D z9WHq=y6(qKSfF%nNjGHo8VWJE3_Z@^lHV>YLxVri;g^KK0Q`V3s7KxX+f}+Y_jw{F zHYi_oz|HjbB9$Khl^pE+z2fyjS4~wiQV^{y*999t|ep4b9;nY%E&0GJEwApz#PaINzy(qyXHc)4bd!)sp-uMbeJywSGQCTNPp ztGK9fG^uD%Bo~w*Fh=Joci#BEP%N$~`_Wx%vvHkI8VcL<*P4@!F!s{d_3_T2Q7>bO z+@Hh5mcE*;iOS>$hYRFvF59deo|3=JQ9ZwF`A)ECnl@#S8FeY+&syBhEGcm&z}(&P z&{}*d`mGJbH7;gHWY<5$9?vZ8<|3uJ;zjdbrb(k5frr$ ziX=}Ad%agGNOa>|vDw+lsm{qcK{`q^?+^s5L56}T8F*kyoKX6kJDE(<&5erhV@jfP zQ9#?Cw@M~vcnp$BDP*{>i`A2}ltimPX__xh^Cp|kYN4D{!VPHy9#5LqYea4+Yq2^c z6Q@A#I<^sQMxaLhM3k5A%i8*<=ZH$)W|%z{QXsLUhuLTRSLmmKsO8mJauW=q z2Ta3kkgV0i59q@cn38$N$F?QM|9ba2fxx2~+yeian>ZMZUJ00%*$;!{gEXPip-wnK zuZJJY_k#74jobJSmoe*P_G4G3qRf>trDY~1wjH)<{57)NbTv2e#&aC|FJHfyl?*?e ztQ-&*FpeN3Ne9iNxkqgvyxbb6dsJ2E;V)NBQT0x#+^&noS6f!v%`Sxz^*n;+OARQN z6G}1d3!T+En6fv$W%ljTr#*sf$0N_xbM2G)imH|yGCZ8kAeOzBqm4?p_THt-k_J*u5Tl%kz(RCW4XoLa?qGVt-q)BVg=yIBx8Ru?xb%0Tz%&r(`FT?84c_H|*s zZs-oOnLyq(S%^XCj!0V_dW*J-G9RBu_r(oXsQ{yF0`ELnkg+G6xmAVY^!+H~z6Mr$ zo2fVm*!~{%+K^)47WOcv4Y<<1_#}qQ8qORJD_IIu@4Y1Wj zr!2=~-sY#RqwludKV_>GYsGYbmmkr5RdaVs{HAyi=CxN^H=Sq>UpR`Et448cATjYi z+aZ!&ClFDIwL2|_e*)kKOZ-ygE&23gq77nY6 ztgmUr0``-JvOPp{l;gAfEk*kUxIdfcFe%25=j~Q_9lQZ=yR=G&YVCGGurri+c1+?r zJ98dU7Ff9*(UBT#|i|+#+B0-HFln|ql45 ziwJb{{fvT(uqMKz|#YF1O?CRmW`xaI;^N+Xkmm| z(R!L1)`qufg3zST?9inM=6HsJZQupY9F^utaB|Uhn-FKa%v#1|(0#2HOcEQ?Lb)N; zBN|bqEx6FVw9}U@&5E(fdZ$;zDEN#H&~AE^%4uIHa<$ca+mNlX>HH^bSXWm$U^?kB z*KJ!Yw?Ah)offWT2o;O9`J}(LXKj3PEQuY3Wp*-B?^aZ|Pm1c)!b^8V&%LM#z{;nC6Fx)C=(wX z6F)rYc`cX}RO_Jze(I9UzU6AT zbGT(+4x~czp513Zd(n@Fp=nCJnDf9;B-PC0WY_f*sFLfbRFa=4j>C~pGS`urQi3~*lQof^TjM|X_axKv9a)( zdu<%A)h~r=wy}@7X=6C;DokhuS;-o6=C=KNAhAaVeM z_7{rmM;uG0=PZm$_~%4KqB)2uovRl=2s%v&h)$H@qMsU+K}e8juRM|@A_xic0;zJ_ z_QASBse6^G$Ad4I!7uTL$>TJEGHE_}Q}#cM{dD;-a?to{2eC9Eim8XFZyLI+Q;a>W z!yEGIkNQQserLzy#rd3wtgHy;$cdskt!k|szR%dDa@$@MyM!N1R*2q~1pN2fZ&@Y1 zTf>rrYO#_h8Ig%4rSAy)MCqKOv|o%P)IEECfUDa-XOdJHIlq1p^o|`UOOZ+<;$mNf z!w?U+&mt*do=+$m{%6%ULI(dZoteHXm`DudF+1#)NGgLMh2^3=0p_zn^7;gNsw^?> zpLbD45qs(l96v~f9lp)m@X}*PDx!*YP7Zsl`QjWUPP0Uu_tt$(RCx^*dC zzqJ7c<7h>@S-mh@WDR76Y|obZT5NuHz+)x9uS!yPSgTRt$JPe;<3k__4c>q`(IJ)a zQvLvn_U;qje2VL&Sh|x_I*43~dSF}zldvM>)+jac0Aq=T&?YbVDG)#a0Xje|kO<~V zLf8|LSdKEKXg3H--v&8S-$Bjr_N{>w`s1JUgp3zV z__&;5I4n3t3>U~4idHfjb8bN@>W16)qT9B`sCfB@A8}CheQbAn2d>j~6@xA-@WAKw z6&1$sCR1+?Nb(oTnVM+Y&{*07HLO5E7G!{*8e<#qub{nv`#CL{7Z$?!0!RrS__n33 z)x|G8JzcUst5M!=V)*t+iMJUjt3Fv1h$`(K9mvhe$qiU77HdFo@{Va;z8_8%Y&eZ4 zV?6+TK-Yj!3VIk9Pj&DDDdpaK>8K)pSDkrv+Q zEYP{(xxuv+eXq+}8FJ8@x>q-0J(^hN_EW%=Zh(zB2fH4aWv0i$Y1%Hx;t2n7*8caw z^8DQV>iXK!;*!JdCunx8w(GlJnK5t`q1{wjt6i>-id0H!WkKmb;)+m@w?La#>( zm_wz&ie8Pz_`(BQlFie{?|+dmWJT1(254;#Q^L(a%N2RPw#j^>cExm|tWz$?3jv8$ z4A4VKbNFlE+H&D!7}~MXZ|J636+}_9>^P2W428{*0-+0H9pgJ-*eq;y)p8bA$%2v& zD;oi)*$Um6D(FB53>bkfCv6VAdyNJ#5yt&%={A|Vvu6DXJCnKefK9lq=N)35is(4( zq8BeZ*dLk)8NB1MCB?UMZH~DY-Atx1yrfwEa+jr>op73FG#ZAcZQ)fp!r1KHaqYte z!%PYxnNIy_V1XYI%jX?D(lq~>a*db^qpTEyH~}nsV=*W%jRxrB}BBWGW*{;!NWLb;pnPUuCa~!P<)gs$p$+|`;jp8|P{$&DFN~qw}1mK7P z1OU)H0*Fy_Zvi;Gh=&!v)9<}zlU1HRvyhYyKiK!r<92R`7MT2pwGA-U>dw8U5=|J! z`h*UPwA{tLeIwjhe8Au=@Iz)^>gD421I77m~^vA%48FR>uMLAI6 zIE~UV0}AeF1v6~=z9TfB#&8-10-imBJeUc=keAjf;iogFtsRMB)e(0HkRX>#P|8T- zZT@@9Y_is&Yxe5%s#p|D1}Fm6&v9{Hg_2?Zb#CvhIPGMA4vdmtdxVzT^v|XC)y7wC zowA?htYENkqEGCVxUw-LHch20DG!E7x@or~&F#K*YM9ekvR2nE^xO>z)kEzPJVCS? z_Al=5^$RjIlyOf&3S+d4oQ>u0D9aF*K*NQftYMu8N^$UE&KN2C^jc(`P3yF@S36^2 zWcUkN8Y4ZLPTd3vSx8k>HdOR7rAkHUNjf8?d6-YnOmnnkT0*#QD(;vBK!OtJK)MqJ z1mD8VvlOP7~F#14A; zcP@~a;6h=MWHlHMgiE{~BLDYs4Gb9R*YPtL60F^m!_R}?IWgf5Ceo2I188AO)|85K zT3v@xd>m|@sY4?dk*bSd*dU6MtoDq8 z9Za9CgQKn19znNO%188#gaffoM@5iQ^=nzX{$lS8yCtvM=2tu3lMTW(dD!~w0ftA_ z?w!)#C)Iy+@0D&naqbpzc>pKycmfZcj`2Lw@qn^Z94X{Zy|hva0tglaI>+N_Lpt+L zkq{`4W(&nYY~{C|9B;uMxsz__`5^2{-g-MDPgzl;iHTxjxwAx2a3525!H&9|7mmi5 zJqTg6$gYvWb`NiWOXLuE~%L zOJP5_q9u5NJ_WJ3cVcs^2zz8rYlcpBrKB;(lnA>JDwZ1;znc%Hq$DSgZ3zj9dM*=E zQvvL621CxiD;s956&7<1Cl%jHmpbG=tb6~K^|Q#*o#}jwGC~Bauu4T%YfNWR12O~8 zOWZA6EYTTx2>RM=@ry6)BYp5qvsXA%OJ;Ph}w$$)UuY z2K-}_L{S(Fl6aV9SxlpZp&`d8x^$E; zxh7je-!UY`GAXLnfopOs&VOmK^yc{s7$LIkyiMSsOZ$8T0*K>ypy<0ByLX>ja`wqHyGU7}r)R)m80b=g7UJKa?TCx{^^7Oa~zM&~|NzQ1v=-fT3QEs~c-5M`5$aI#|B zq%mT~;M@fZQjev}hgJ^t_4a*%npN1!vnzxHfDgg}>}f+Vqo`_Px~EKINhz|3=H~?& z9uXdvG7YiWLUW*#bp=AyNh;}fK8%lw-kZ+CLVx^|`2#o{9YY3%IGD{p^v`Q+M0kLj zT&|sGkOh4#EGQpDi))`P@472oXrDw8%=QLNvk0b@`pUdaCRg4R3Ekw9Lpm8$&`L9J zA%=}im*nAW#_{lXVL|sh{+a~q-?mHoEe-E4PJo!EtI2dRX z@bBWQr~mE5|M>Vk{1wB{<$qZcu{KTbcP|Qgiqsh`Sc0MPhD%pwWtW=;YpC> z*Q`E_vz*JbKE5U@{F3ZKA@3!7ihM>$$Tu~9scxTUb}wahIygcFzE|8I4C8Fg$77V? zeh_e%rB$)x_Iv4LACE`%H<|A&{R08!2;&uqcWS{8UKmeD~ z0gXypAi5I%NEXZ;aF9~~*a{?#;E2;0G)gs&OuZ&xZ%h;MG(M1oAg&`JCak1sLugWK zBaG6ljd9Kb&4Qof+64bR(`;D9)26tVw}(^KvB=C*b75DpHpjg>G!Jg=(-wHw4b8`> z>Dm(Kw$fJcI!RmO+Zru^)myX;u6^3Jtr@?x9c0(j_RyUL2ScD8VUAEwg6hGxu+@-i zCulCy&ghL&yFm6@?FwUBUfd0;&m%+ywFXsG3Kh}daplZ~=W13<`T#{fLOBh!s;I@~ zwhG1fm|U0-QbW^n)(Tas_p&MSEPLk3S4ts5THdOuzMADu$a$9cQ%F_SCdFb8u3Wf{ zeh)qk{Uk^fy(d3Y>)pLff_?YB^7djW0qT0G+b{1ONa400000000000000000000 z0000QhAA7ER2(WlNLE2oiYGr!RzXsMC44B1XFg6ARu zHUcCAhIk8uJ^%zD1&KfhAX{+)ae&Qf!aGg35dlv&ZBDE1U$cVg=7{IEf!B8jPm0mJ%i*sY;dE5#W*ERs0Y5Hd&$6A>AhrVx5e zdg*$OaS9ss;+n>l5h_ur-@R9T@ci(fCyAH7@@KJF-#KaDm>85KEK>*(xv*dNd0HEa zda%TIJA}ga$XC#&*=alz7OB}UE{6@nYTTrg{mB{FHnvYPnY{iJ&Dr}SYY7k_hz9XO zm7`*zoSI~lP&K8ZP%%G)8te>@Tly~{Kms9VB#;FBFg=BnRYY#`C*tLL0(T^%5(o(jXh3V7oaIkkTZY?e6OHb7*H45Y~B%7BWD zGE%+H^t8th1V;uE#Peg!dx&K+RF9BFHCb|R5{hhzN}6e8%`|PL|NHs>Is0FsSn0I1 zW9IZe6aN)$8s>^==Z@8ErqDuwh@Iq^?z4|+3w5zc8YUrfq4Kt~RR9{l&L zy}tQLT#A~eXiR{GDjbg%SpK^cP?c5a5O@Q`P~Q*d-YdT}=o-bu%BUC}|9QRm?w#>H z;a^ZCz{Ep*A<1hd?fiDP1S`2S2P^Qzd*jjg3l8UYZ_yEkQJ$FP)0e7s{SPF^UzA-7 zVM@DAZE9-M=fozxd!LX`8!wm5$BzcR`e;ycqe)qfhFsHxBySV6Tpyt1ZGzG$tUNa1Cn=|qyx-JT5D4Xrx4;bAFg{$$4iQb^J)K2RbB7n01FUP2o;wqrOGK& zUiMN)XUf~NEWkfd$HU=7sx&~wMw;kK(XElR_#P-bt(2|QI`%cg)TUC0CF7oT@RYng z!!`$=YCpBNn+?%R*r}x8>nso%0YcIJ63NchRmhG97S5N4cNZrRSPukS`wJ+*xCMcQ zsUICYVtf5wN5arH&8?^bLmbC|!)kW3p7%Y*(sHyUyMMg&E^Tw^Z}N+Zia)}DgvQ(+ z`xtYjEx1*d;E9AF5+nq#_OEx#*z|#q3POAIQ2#dw95EIT(!fx_%|Vbof{{B55u)G` zgW)AeqVmyY^EVF=3PC6ap-Iq8PD`yisu0>K^=D*rdG!y_#Sx;F<`(62J_x`7L}kGD4gwtT{vq0i{lcuM ztJ^(Zv;3L@5bv~ielvEQde&)#m~QD?qHEU@fom$?%CK)|OMht5e^f99RQ<8gQPs1h z{b$6}3qJ383E$)j+`m&Ea{pPp78dTfbL&r(7TP~wO*a1r-K-r6c@O8uc?0NJ2!BYc&O#IbdAcbes=T6C75pZ-H@yY;y`ptL^xJqR=TBqZOZ)To zz8&=U#pp4Ds7`T|+dU=l5*633QBm z04(IlfbZ9u9Z>%~T#}&<0RR=K|Cv}|s_fng@DT`@CWD2TeA*0nuNw9dH{c7?>Y8F|abQ zKCm%xE{e~%3lRYT!e7gKK!qX8X6>wjCuH*b6&@??$&rVsK_W-#)8TYmS?1Tk87j|= zz+bs{ic`K>_9`^W)#g#H$_3O@7o_%7?T}~g9k*53Xj6wqH-NGh@s)GUNlM>S|>4GvGO z;%X=yop77}7QM)mGp1p+eTb7UOT8+s(WVA0+-ZeXJwb?8G7wr;Ob`kQ7d#5mSH|k^ zt8|%nu1ptH@5QCT1yOIe*lu!Hnoktsnis52hw^Lz6{I|Ctyex$TV4Gjw<&v7olvV0mAREy3TL~+-*IJvdnRivLtbB`PfgIcjU>!Q4|8WsbDBn((^!Hoz+!Gpo!31kX4mCna6C?Y0VUx@6mqNt?Y{Cf5*LP80I zg%=^RndS7KCP9*9DX7w<%aA2o4w_u_hLz31wF?yC45}yBs#CA={(7z2wCiwGmu`La z(YuovHD=tbc?+Z#Es@nw(HeOz^>mqBp_HD)(#|13!A#`XKEOIIs5jpsFLlB;W4-xjV_~ zVNO?Rw0n;tsXGXwzISp;t*~rYg3b7LK*^qw*9fw?HBs=|p(&^uMfvh1`DC>|6VCOh z)N}z$0Lo2WmCGoaO-Zu185^9zCWZXRl`hG7r2`~;9Zi+MA^;FD5wMyYK~h&k2F+-& zZ5R>MCJ=RZNGEx_LN^kMs-xrpln6pbi%bT!DZnU7MjpYCQOiXt1(GJn=yD~vxQWf9 z6Phv`Af=_?$jX#8K@s>BGMYNclVH*wrB+kXfGRs|A#%VIcwU36;y9p)28y?`9>uA@ zej3WE1%W&-?E8iEN3r+~{<@@=o%{FUt6K`X3W$zR7whZnoPoYU_ASD74~yS9zi=M> zE&K6-!M|T_d}i1*bj4@nIsAd=$RE51Mv|oC4kXj?W* zS3I^{m+m@lc`PqdFW4?Wh`wMgI~%UCJNvBBrj6`3^-cXXPwbhe1!$);P8%D<4U>(n zoih2`zc+Sn{6pE^i9JRB_4JsxT=Tp%CGFl%6c+zHb>UmFf6Kz3J#So<{OY5m>I=Vn z_xP8_fBkRqHUBTKJk83DzD5?u6^q(KPkV-*WYt~W4GhI4gB~I4{vO7Z+v~- z-~GdPJlXk`fBtjW%|8GCYxkvhU3*1+<+JP))4$(1h*X~{gD7|emiSL+0fMWaSj0=< z$!%}ifES+AZZQU5pG)7(gE!AjU%m<4c%gXlDUk7!{__3c{L8I7C!yk^YV_R{FSV>L zf?uzx33~AIYyQzEfci?;8~dT_x6EL9)Et}7DPV(=HWr$fBwB|Z^!)2U$5Q=2H$*i=`awy z$$zjFDCwMEYl4ZPFS^M#1eTRt*af_*YNjt=Il9ierruIq1*+cyqWFK4Y{b4*%{z1L z?wIThT_NB8g?v_K5tJJ?3jA&+mZW_jA6g0 zs!(gS`Rf#{{?zebVMbjA=YJ=;)Vn(W7xfZg@T~l8!bU4*AmoH8uoqI(`VTEEv zUsT0+jtCb6hua}VC`(US0hDS~8Q?YDQJU8zppKN3fr$NU47Avw`nM=VtHp;aR9S*{ zPE#O25rV$ZCq|=gOrrF5@d*SaD8}puIkq7<4CeeCmr4qiIMDg~c!_ys0b(w>z8u#( zUUvL-7`x&-kEBOYmYHevQfS+!Omk3=z{}f0N)%T19qiPGpU09)A^_mPZdWitO{wqRB+ zw~q4p#X-Qr5&)EcI$zJ-@6!3}x_7!RB|T3dvOb)>y2Xst15pC=+=wioVj~m?J*eiN zE`Ay66Nvnn@j?mmx-riXka&BjRJ^TO-s)cKU#lebN0Co{32_5j5&YAyc3cgvT4U;r zt2aSpQiCatrZt%n$c0OZX0uwjd5v=_txivnYK_}MMsOJ0rzWT}3MUUjyjF8GL?NZv zhiZ>3YO>+wBPh^jUb_Vyq>fs2P)@KyXiOL^SoZ9SbXwA-+cK0SJ<{x!V=tOsG8CzB zG$$~!S&+kuJSYk+b%IfnNhh|v+x?$K-kXYAl(Z_lR{@_*t1hTm zCQdY@8w9`u27?!d$n7+t&d!h#g5ow6w+y$4ZNe&0JQ)eFIhsf&9JaJ1lbJ=ut*K-I zeOuGX3jS}&ARCLl+?qvpu(BnG94wyEnn#WhwhI8r3AcxpZT|rgjZE*e-4fPUjBGK5 z*STPz&f2?s2TTk(PE5+5W<=Gm%9GJ}MwJED2u7o0H>t2CLe<5V-$5TjLy5>~^Q*5jSA$Mi z(~$WoB4^Mz(MoE+-d$?%gA%gaLL+1$ThFko zmO3@-Ar;!W$f<=4_ZH}#&Ou5M^1AJSLMqwDdRVcO#B5SIe+(G~b62&LEL7=o z_Z#Qwe;hTw$(2n^mi!CNVf`f>n|!SJwToMo|d@icW22ORD{CK&Tj^{SU?rPVCIAINV(;nA>mWj;_^V>71O7n0@$hMPbpH+(W$cnN4hS?^| zf6J?>T{$r?i9+WMR#202{vk#kHLc*OdBQv(5_z#uDQg{6AiT)WQ@p8*r8NI?J8Jbm7$3dzghdo$M!NT7mlQ*v3@SHn zny4A3<{XpkMl)jqt#;{_!6ft}GL5y;oDGhd)P%Qo-sUTqQ0EhweHL%~%FY^p86>{` zq~{u6&sZ`2G{qj8U_RZ^CW177}dfjgemUrI^8TZR1 z`mn`p-P6JWia?09+U#5uJ>pKZMu_Uof3AYHHbeYW=*PE&_nNwbX>b)Koa9SdJu)lo64s0GeP#@&pM^J3~TecdQk+en?x zS0^ICHawol~J z9Qw|4e4YYqPWKy8t`8c>h}(P&CEWpkkAE%iU{wZOoWmmOw$W1Xkjd?-z^{O(Sm2(pgJQd;HNM}Dzy@ou%JmTbzlzCqWux2HYXnn~{U zj=2#{crWDa_*7rYv$_J5xUP3aRv-O+-ajQRdH-)Bt=FXdTuwt;vAXG1jcw8@Z8j^SH^pU? z!WgAz!s0=oFEn+Ta+;+f{MY6E9}YFWwcTlp+TLWIVH@KyUp&?<+}A^Y7@)P>*r)-? zzY+koKerup{L-(lkN5v}=ZgraM8#Xbj1mm=Pxk}okJ{@H*?8oyAHGFGPOLLF;R7X^ zQZ1%@9|pssg$b;Kg?FloRo62ms&|BfV1W%S6vN(!mTNLH7Y6v72p|P2+x5q#>U0q(OUYR-lI+UnOfVa!wfa23V#3xX5xm{6fMWacj^HT|p$m6vY7w`v;SZ=?b z(tDDRK478F>`@eN6AaH%bN%JjSCH$7|6kI!d&8N2Pf*wWJh@?#WWh3JZa^NH(kDXXjX`ORJ`v!4D$DFurnQ33{)TAGzsi$}js)Pz$ zh#-Ou)(JMsHz+3&nt4DmWjwej#`FyC*=V&bjtUpZy_5(eD+0C|$x5+&e&Px60w7`{ z^IcxIJux2n;n%3LmC0uWw}mCD@|^Hg7YOfEl|U&}_z4!^O1;EDY~qjMlih~o4p#*c z@vFf^=^#+q{?GTMB>R>?kbUQu#OaLD1a2b^R!<_qYMa7%9zewos9HjfryjonFc7(< z1BWbFaFJQ^frqyjIH7zfuCf1{)`RPt@c7kp-}{akQMcYgE9il8e%~RI3+aRHeOJ=q z7`bXbAO)HE(;r$ralv6)Y;rL+3~ZYt#`4L7+V_Gaa9hrt45N0@641O7WS1#+SMuIs zwNtjL%iR*v+(K~-mw*u6NiPVsnK|PW>D6FZ85Y@F@pP_puN9FX@bv3Xslf&oA$ul+ zwaNQPyIas5bSwW5*kNyMnl-p1XHF%ojo{aXjG7R_iN0z_;Zq{2|2euj3ELk_EsB`v zil+K!S%zYQrtJ;F3rm-S*aaK-!e(vC0jLF@&FhDyL{A*9D<|CQL7xm0+7O7asB%(D zN;Nj12uVS?CZ^``doBE^S$XEcOtVpK^-TnpZ;d%fG3tEL$XA;5^OavTcH$dtxuFqE z-JnV56_>yOXsod(y^)Ptqtj5UjV!uX{Qe*h7xe0cvrb4Pn@4Dd0G83{} zs!v=XrWdpw z{A2imIrTT|@)YMnJf)kW`pmK*RGg#w22V&vJv~6qVWU>+b28KF(gI{fMS*MenE;+$ z4r;_H+qHMyiJ{H5{$z-MK(hx?boWY9wm{0cKJ*t9kEyqTQEXtSdUyQDU!bAQp~oU8 zdT$`wFzjHQp)}>(hsTy_ZWoOy2xAKLl11w89cK?Ls+f|<%wmr)XOtQs4tSL^M4f_n z5j$SA%`O|m|1~7}LKqSbPC5zUudy;2cP;M4<^AK;6B3VovBu`efXcRY_B!W!W%7#Z zfc-MS*l}O6BowFC;r4ZVr`E3AzSoKER>keFR<;f(;qHrCvzuDu<0Dtgfi|~eUB{qZ zZ@w*c$Ax!2u6i~2?$(j=j0&(iFnniKtxm4INQG#PncC3-s&RzKR%K%W> zUaJ}Xr}~5KbJx#eko4ImAl%cbcTWf5bG9=t-#+XdlJSY!+(RbZ6#obYmY8xz@J9)_j`fz_>7_Hiu2~;gz#boh*jw?lw^Sq>A zF^bljFth}K0dUu@=a*#O_Q;m}!qCa4=E4W~1k?(}`&q~?JC7Z(TO}03*CpANrj}0) zmk@An=4WAh_mixG^VOpK%TG@9m^?qP4oS_&2dX15`E`iIc5s1ZUGN_$NtbHT<@?YW zHZ4qO9W1;pELK_16{{v!7+mm59K+g&k!vwCrER-6;Y?48_g@z$@Ul_qD4q-CGqN8z+no9%8Tv4?5@5p@9{Kv95G>2EAjI=*h1Nby)uUnrO zjrw(tVlaFD%P-qc?VE0dZVk~Sztwh-->wQoHTSAYROH#>9k+z#xC%%*9?j4VJgb$J zIWI1~6o5GEK8FoDc-7BN;xN!RA^}g?4GsQJ`k|nm{BBK9U;CL*y;W5aRvBCl;AVbF zRHq~S>~I2C${R|EINK4#>6d(`adtrjcI=i$6>vwAC5o~L89>&( z8si$O*WV-I#a=5Gw{q`CKaf6%%DI0h$3pIPkNGg-k@Qgn`yrU#n=1>Tl_^HbyehHL zDaEN+f{@A%76wy_DPibza%6ZJQ2{xv5S=NU4auYr5lM9sDTRg68aorU%IebNGn-Bl z!2U%mH5+rQ39{5y&Bot$+@Ga-K^HxLQDA%q_9Fd8&rM)*qu+qb`WkrHp=5f}@?<_u z%e5s$lZA(Kf+Awdj)i2j-C$W*`~0rl{Qp1t_C~(lGx~yp_k~MjBXHNK){~UuWJA9m!_7~aWb-I ztfLM{+L#B6ep-#ke69N>c;!-T{6HF&JhYfld9Tt*W|_=SCr0tJli^i;NAGB%G}Fdu zKQ(>#8TiXM`+Lbjy^^(f#xb?zMctUXw3L+QblfVx7=NOLnuN~wfRj!ys%7R4$Vqu! zFItP0C+r1EFWO)~22}>Zm8uvQTONvP&yM#lWx#PbI^4T7-mt`XtD2jeJ;%zpP~OCS zaxGD)6(QEVf46|osW)$RyTM0h&8;>s+xpm=*0c;ww;rKc08hU$2>&mAL63ajU^f{Z<&_1Q7GcyxqW{}FmSaXi_eNR z+Q=#HH1)&MpWG6qi%aX0{-lK5oc{+p3F>R|F!`M3bI#t^5{t~HudXcgKoH&-qfKN2 zn{$5QN%l@i^+3bRAauvX+4P~B_0W_q2EwBtbkfboBiaSeOYBu~8*nLG z5Z?T>HG^`;gu}#gN)fj$A?so(Te6J<1a0S zasJgwpmp=3f^E6kXW2Gtc>%aeKaM@}Pxrw?I6oBN^zz1SNCWVfZwKn+U(GN%tVB>4 zm0Dg{a`iC4jrC%c-=aKrFIZL7CW*!8;f!^NY%KEE4__ORcawV_Hc*r;jroJp`!4UEwN+C*a|`aM$?)o5e5V;Fp8 z9Jn^HHvFb)`~SsgYhNRolVsKGS*1&U^S%GEv6g|6n9X-hll$7!K4B-i7hgERVHZw4 zrgXHHH1<{1re+IDM0WN!1zPWEpF4G>P=1eE?-l~{b%A;YggC4c1PG&|n9%a5av8r5 z5|t14l< z7ncs^4%$B=OUYhPZvTt60;N%RiSqN-F5Y@n-hf)x;v9mM?TJZjrQ&5JeB4?~T5^gg zO($kijmi|S#(_@F1+CPOKBG!<`d5^907|ik$#ydhH4A0A!F!O3N05PE(~VNdJsBaI zEGBWjCg8^gFH6!5sg* zd}jiRP~e2jqYcKw7vQH)KkVM7a{YaF?V;c6?Y{QC?c)$AzMB_%ERR|a&D7HOQ5sjg z`JydpVYaEz$-h%8SxOF&NyuVTxe)RIDdbObms};kr#g2peGo+|i;j*g8$jiRWHAXC zY@E&dNBrvp!S;dAN*AZ+PX|+~;>oG(St$Ki=YQz4uv9+9|G2hp8l4{!oq+K5O+myv zig!lI8mC3m3%lO$p18Do7of|9OyObEZ$B7^j9l_@;bV}vPhk^_RbI4o=Eb8Q|#JuefynM8VeViGf*$lST*2|c;8p9R8BW|a98EzBJ!UvqtM-jfB{ zicBKS`mwwFZ!n~Wgp-*GH;&KPu|~9Rq5X~hP)<)Gfk@xEh^;M z=!gG}FAu?%hE*a-kq2DAsUj=GF#K{f=suRg^_;Y{obV*biQH(F(XB2=TkPFl%3h+<- z>OXfu!-xGXNr3M^o7J;4-Enkzp}Ti+Z8&Ri z=2XL2UDD)%Zk3r7KxOo^K8J&g7z8BEG2YSEE7Ela=W!^a zAU*1StK%FYF0qFJ|D$kF2*iG5Ke)uI=_QEkx_o8&mM#K5FgS5glB(9N@HaRTgpNwb z4*&gaR6Os!1#li906J>Ihr$}nqik3EX{-u?zHT>d5KwG`qwNg`|H!!e}>fo^KwYYNcYdRvT^*o48V z(tO`8=cAdS9jdSG?YsIxZwzzI0cKGX1cw|_b-g;GL)(la=pKDrsvR_rp$YZJ3_M1j zK%LA<&?gybLl>5>&=K-SZv!#7 z)LM&FQ9Yb>C@HD;5a62Sab`3P}EO$gOoU{N!-NSJdLJaPFl!3B;rhQ6ii z=fZUcVGSX>E{7^+7_JYqJ6KQoc;}fJk7C|c$Ix&8iCTsXaDi)k>!8BODwzg z-kx-U@+-4*D0v+lb5-kBrnV-O0&@0%2+ZgPz!^FI^9i&y55^ zaz(=M(!{@(-{uGNXiyF!d&o?A#Z`N&>^}0hmY+AFW~f0=)1~5bq%XgW<<*J10Fl;& z$)smlQXyRt(%k;>j-T-%>tXXn@bHa&?@>IuE^>g_tFJI3*1nFaovk9qM7mh7;wH1E z!j#c$DqL6@Sw4%pVj1D>|6P6?ahp<|=Xv-L8Sv(A?G~hep6J#L#n}S1RUzPx=x;LC zb)}1$nt{Q8SmpqN+KYFhM3InE>MI-7IKV`;C6n7Cfc7E_&HvKvNjrX4+VHDOLwf}e zx3IU!^z4u57nPz!n}VkD+8o6p7JWKUn&S=Ki&N$dO z-T2jh#sTJmrUTO^KBf(30<(T|9rHR14~sa94vQ7bNK3Aj(CUHJKi2U!CN_RHGFvy> zDcg&-?;yKed?2xqF}py!6niK8Q2VR)zd7u2Z+9d*{p9q~dC6tJYlrIxs5aCI+UfqQ zr?KZ}FF!AV*NE4a*PBDC^X?t`zs2n>@qr(4@eS}J`|c6Va~8nST;-m z8-<;Ry?`sjE#W9Q6)u2JAR7Fu{HOdc`oBlsL0t==2L=Wqg7ZRdgnU5nK||2N=nQlP z`WX5Y`Y8rrOfa69C=3VFhMB`$#eBr7VePQEP~Fh&Fil(xZVUH2J`!JtUm@ra-V*(Y zN5j=4tRe;?rIBx<_Cz^GO-5ZMDU%M75=oB%zy$zM{P!qrFkl0mwe^8jk}S8^0;|jZ;$peI`oam%N|;sr$62&7dB~&veJ0#8VIu z%qX+)nCZ+;iT?v*aYmKXIE30Ul2}tZ%aF3=cwk6bReTf$Z5Xvp*kK=G_rP@1xy7&p z!nsAlmU3A^O<+u5=h~l;{Sv?>a~O`JR$lIonB3~7<2cv>13TE?8B7Qze?CX;U_%*z zFJxtaTwu#tW7dG|Ntyw8EqdMP+h)Xc`!Oa=x4;7_a1(dhSzy^GWiMwpFT|bN{mIm4 zKiI*vDp?DqdJZ>#gRKKp=g2mr1Fe{o(&RVq_cmX!X)zyOcp0BPA8)P#+Bb$rWc)>fkL*Q_y1BM7Vl+fyJ9 z4=CP%H^N%S>RWS<9owOIIe7Om48B+atY8HzSc$a=YN`oOT9$TPDzECV@mQ@BU$)lji{3fQGSD9E2bzCA<2Ov~lTY@MzWj?5H?Q)Af?sTj4&#Px6L1D@ z-|6YY`_V3`7rjQKoJ?%ND`4AGo$Q3$@If8c+oRIP2+ZvhJ65X?F}`xUi>H(logCf^ zl%H}wjRm-nJzFsK)M;4CMExj?0%+0bXLuJc(KMM;7*kyG8BtA_qz zXDUjH5?N%41`)Oxsi5U0iegkL&2cVF;KR5V9^&!@=NC9niZVfhgane1JEhR#NNnEr z?X}}NwjJWA4Cb*d_s)^6N2--W{G9y4n=w7HxUR{XTJ#ui(8~>TGeururg!!yBjd(c zgD95jo$>{nf~h4h=l|x)-8JXCm-dZ&be09W_>y}Aw&Zl6%DR9pCxas2d%i7;dCXqK zz!N|e>48tZeDwCl6Dh3lZGh)YIOXP{7v*r22EgY);E&|1uIiT{2zkWPf&-JodnHmb zeTgZZFEnE=n$aB7ehU1yw~w9hEs~~a2(j!nk37X7o)}37kg)*SRuH`um_Ry{5Qb;k zGL4S6>5M|&-Eu2Xnz5gIpnbrNTNzxt=HIza>8`WL#dQ|t<%5N-8}(A|UKc+YGmDk{ zsA=Yx!goEMvUr?+&tu^xc?P96fbK^F5y2)F(S@E2S{(2cqDSkwKBYgys~vLO{N?dg zA#RJM8#+S1f6XILG3Wy$p`dOoAaF!8p|4RCqZ%cv1}Sej9Z1yT@qDzO3I?xv zVIT*RHDd$%{`5|n5b_!&+ufu7tnz?6F8bCt6an~@oHYUM5r*2GUv``uhKVd5%wu`) z*`Dizco2_k$6O1P=DMKoN*x%_L8FG#h=U^3ydlBL)-!U`a4tTH`wjwOknZ)qx8*&W zWE?{$_+~SThD%(vT;+(= z54ckTAuiKOe$-PaJY>80%C)Gu-q_NUT~MG+3_4xtQ)MX&HXz@QjYK2yTlScj2^Tjw zTMv?UMcJr+{BgmI5=pGgdv@AnWr=0J#H*0?W?_t5dz3eP2CuC$7$bo|QV&gJUDtRr zIeBw%?0yB-yoMMwXunNq6d^tKRADUl3bUK&Op%bh+3cC{HfX#C>j4s9sSh+N#~!)~ zy#dydbvF&kvurjsqOq1(4;mq5nOM69p48U1QENc0R;y{`+V`N4ltI_dAhmm=QQ0z{ z`8k&>kc%qmnj>OOdM1 zOCjicZ;PjcG;P5|G#v1IB?Y*aLALi}l8>X6^_KFe+-9v@m$ly?`^gA{*hn5R4HoUj z15KG^VZXj}Tf*ZYEn6$;a_ILLrsSDu7`tY)?9>}|i>5D95OpNeQVK9EIJjYW%F^fs|kOBt$2O2I9Szbr@ck%Ei#$!NZCkCwX_BU2 zsbe# zyGYcge7(8>k5f2^H94Blx@+6#ePndRup_r=;1T_aA{8^s8qNZDTT&N_kn|f?P$oH# zEI^*zr;s#wNUjKu%MHTnW(#;wrfWsl3T09bL3>VWD^aUm-d0#)i15Mr@)D76N_3Mi z!soP2!m`T$bKIrf6#GImI=hM<%OraXQ!Sl@3T0xg6l76Kz2QI3m4<}tSG6mg%_K5I zTt>5l`LD7PU9V6mqp7ccz%=bo65r`l7-@`3nwva*NbI@LBS9yk2$XTyrZ$-~ z0G)x#@RBA{Yfa12pGh@sH#g_e4_wShR+x?ka2?wmsEk)W!npJ>!BU1s?3VFXtFh@w zqarS<>OqgoYtmmrA<-8$G1GUW$^)5g!ax$4$QD#fyqIu3pHoT?N9b;3&pgbrzyTt_ z;BnA~6J&pG^Gvn}Y_ub!C3OOvK!E~X*M|C~0iQDfPW4+brxf8C4!kwMH(d;y)0TY- zv>6@quyryK^k4zj;UIJej(xB5t;SxmYI>}pSzFhfDT*vMC5;(_5TDi!2hBG$7D(c} z0*YBw6*mCQl^%oX(JILl_Zxi}$0W7MJVV;?)vfcGb7pV#N3zwK`(X*3fY&fO-jgZ@ z1Rbhv>uZH)2UM?Vbu)hBVDtk^y`~J>Zgz6BTlNLV)^}M($w6V**^Hgr*?y@S zyABN7*9%D&hDKmjsUARYTfuSwt(mu2>D58*ZFsRe77%||Ru>ZuXLhCFT$1~KHtgxG6!5JKP znP>WOMJ_qj z+=Zrt+DIcKubye7XRd?df zym9bbP7a+pK2+!W!IB$<^C$S`4s< zd%kM`13>LRQv=MFsL(qej8&{czRCDk1uJ4*d7X405C*;ye|zTKq*x6raY6X&ycn;E zV{6ANh;%df7T8;+6ewwbFtmfp36mM};(qSW${B9v+HpQ|zaewAwwusE9T|gt^Fa82 z;)5hlda4>h5~jzhk_b+T2FAX?g`ne~y4r!ui%5LjQ4q)|sqMaUKdx`82f zCaF)!01k#SPViZYgwl$Ca5?=VhT!?Knf{RWNSPahu@yS-e>G4>;nKcsVad+}QZU@P z*Tq734oZae&ixZp-E;ki74c^*#=+=8&p!u7swf)8mumtq%U-Bpmg5**aZOPYMWV*j z5KRoy1~H~yr0{|2YETndLKU%zoiZ_US1S^lH_QoFudZ{I(jrZJuKfR<60c zX^QG0c3~Q;7Dn36Rkai{Uwn+yf4-VdkAk*7v%QgQg+Ub+wc7zdw=w{&f1OQ@se7o) zOZs-b(WA`Aj@jj|e6~frOjG^gTj7>B>(c&;`^1e|Lf}PY#NJ=p#xmL;)L~71Br&LXiiSo*EAZ?PB~gHtAI!>hEa^i%K>9b zLS6JJjmJ5-6zAZasHNR+Qy*K5ZO2tfEzuwaQ4Pbwj{~y`T`ouqL2#VzWBb)c%H5DV zL4wA`V9Oe!rn7SH7-BI^tXo2>sc4lx!ckkBWs9UdWi7Bc9^Q6RGX|4WLoZH3PgGG` zB9^v{Z?;=9c6XVcIG}fHC+PgrDXpRk{r^JIl+H?JaXDQ?cW{GVCFWSo7L8B7Bq6mq z13GdyL@Sz~IG4YnNoE^ARtXk_Eywv4Z0VhkZGEiTi(hSA#OV94?I5pqJ8e8?qGzDR z+6g(gs-n=~Wo+eAM>gSU?Hyb1mX4z!qUwTq`^15j-Lyao3srmPB+|aN;8EG7$(qno zG!Ml)PN!jn^fl3hk4eI-n$S`=+qAPGxXgw3MBIM1p100q;oMfM#)`dO^h!yM z&Hu3W1VOe)zPB&4OzO8q;NhvpZfHnD52DprY8)Zo?JjH1i+FcN7Dpn1h-wqqI*R$J z$tdZ}JyNd)z_1(M7KHkut_XKh{@08;!d^Zbn5|GQEoq>J>ZCN**7(7Syfd0bsQsQ| zg{Y-1OqSF#Ht0w^tA(|(R3aEn`t^=p=N@D0C8SjpS;po1tov12uw#>_U8HU)fWvNi zUpfbn*`*RvFf5c5R`{*R%pD|tGDH40TdiDYErP`mr(5z++$zpf4FEJVP9WYR8~!wfRCV6z7I^f4Zb%q0#@2So-McdTg%U_Ni(E$h8}KOq@=vAqS3!VqEq0_avi% zk(C|cu_v!DY-!ifU(d~r1`911Cha^xA(MS#+--ezVxyY!s@MRVNCVApZHlpApqXX95D~4STEJ$SxK{H zjdUq0wG}O)E0&Mxiw8@8C&T3ve5MkCdzzpBZ;^}f%1=XGZxy3`94S}cm_8==HSD@; zb!cuX4=BK)L8l9fN zAeAraBMyv?9r9)3)Fj~DK`Yyuk{PIsI%513wZ~hBblMH-9SiLEk=uJU-SW?~PQ!y? zapO_~Y>dQ2c@ZA--Sd{EdCG?Ct>K{8W$9okH3})k_`($w?D*X`Mr3s1#xOZCq^tE` zcDODpMp>YIwAcTMy5)vFOia8Ahjx8Xhp0Rb3@jPC_yq+Zd_CNxKOYpz&)d)6$HUI? z2m%qof`b;&=Ew~6HZ`#I5#zh5rP`>Gp_ab+c1UTF<_HO8lz{in-sK%H6b|V+tffGz z069R$zqPhKWS(|Nr(w_7Z0q3ewyzi0Z5?Vqrqjs0adyvOkFl18NrI#^?Y4Wyaendr_Ft|y;ul~M z8X9@%N$Q>uH;#z;0uI|IWw>r#lJUt9!W!Ztd9z6z3wU-9Ecd~ z@WAM9>VXSAr5o781O70*i$`EcoF%zJCB?ez9sTuf2Q$z<t1I#f-LXBkFx*tVPx+;&+}^Qysso25ZBVoGyq1D?1;zb&X_Rb|3x#&ECV zI^59FP8fEWt|hP(OA%W<)*zy0J1b3p)uejdKwigZQkKhF5#GA`O}baK#iA-^Kn&g+ zu^;Y_loofr#&JSl<-&u|{9uU4BC^pmY>@0DO$LYUF2;B4_8nSB!wXG*>)M9#fpV36 z=dy_uE`jeS_@c6<-Zfv5tGnlyk%L>~h1uvvk+|4km9=1V!J3e8Bi|J4-2BnVwFBK6 z@VQ72?k*g9j5y`^&X|4?uoLpY(u5KdjR)<&*PlSXR$dKHE={uRCA~PNPEq2;_^Ck6_cv7T`6p|wfn{5h98f$4k z?6k{dKKr~hvc_untdvf==~42O%k`p{G@1U=bXOu;q1+o*hL@KgPdIi?i-iq6Eq))r zc#87!VyTLonvG_a76`(cw%o%^la>BpWTy&kXxu%H9^L&upL2L`c}s_MNeFv0=T60| z>9d?`rG79#9@l@C$*uS8!0Jb?KRkLgD9OXa=k*>@p>kCR+^Hz0L-*fce9*;HI~W+6 zv}3My;g@fvhQGrAG3C0a5fBUI;WfV9GMrb)M8b0Dq&vWevK<^P%-{jx@EsoNu&Tf% z^L{G9CTx>+c`g#+bR>1>e$VZV z_+uVVw2(?=k7Wjb2QvXr6_*cBOVg1WRB$z0Ur?{gx7jkD$D_Pc_fYetlU$y~f#<{G zTiJVIl#PTHJl5p%o-qq@TT~QfnzTDnXbCulP+2(Jkbqe`xeH#2|FEVgNE2b}510MtnWiPAC>xh36X&w~PhNHhG|1N!14{#^p%nc$|gb?{J< z1e|J>a$@WcfNH>aP5v8L#u7M9^%ArWZ6No%M|Burnd&L(a1iw5jM{prI3M>8>Eh{y zxx&C)uF75wn#61C=@)MZcH4kzd`GdADtmk95yW4b;=>#2U{Ig{r6da7}wrVTSxBN?5T`>TUXAA68o~6iLgel zVG}M4nM<{@K}|K$$x1mR2wJWx>yAr7YP&5`J?nq~PSOIp8p_$$kg7*gTOzv52MSnP zzN916Ml#`Xs-i?M1Z`I_u_I=BSt}TJ+hp3qLI+P_f>x9;6A@g12;F`WO>HvkHf&Nq zPUyn+#Z!RJ?##=r5L|=iOOhFe#oAJQmL{+ptI>xwSXGVeyqORod z-6$1nb)NOYEHiDO8>{Io2M_&Gq6OZ0BnYeH5>sK#9zyj6ri(#4HDqx*Y)NWP#ZFfz z#j=a;mACYJEKP>uYGv`5Nz~r_31Q`XO*-BAVlgBPc`#tk8r;x?s^MqU0p$ zi^=eD2@y@U2Tl!OY2b#rn1z%J`jM24pxAKG`!5_rw2e$8Q)Gf0s_;lOiA{=@fvSv5 zY)9rm_d%AKwxRkCj_o92+#IPziID5|S1wP4=<$-M4Tt>u+)Od?$GKo!sv+K1*EI1M zIgm%Wmp$Sww>Fe%_^^LCsNbA-Ik52>(rI2W-bQrk*)-Ox+)oLDPn!tGJ&~ZOL#q9H zxZji{UosgGCYADeJ^DVc0j#$y#W+XoivVWF0xAuaP5-dyxtSuo<*vzosy)u6!0-V{aGIq?s-M4&h`}IkpzVeX6VSlg5Zu6flP7WV4Hqn|GRQ+^~{NnZ1sv2I>AUc{>Kds+$}F@8sj=Q-?7)rAqp_OAn$V1OL7 zJ2A325oz}4d-o^F|AQ^+2&3zjfE&-2})@B|9k30?Jnn~!raVAYLzMli4&R& zr=p$R7t~$|x8^o!)B)<1F#1zf2UlvhAOM4-N$poj4)TGDz-qsdc{(I&h|?d=1kkSd*4 zK3mpCSB+#~YP&rKlvKR-Vb@m^ZlkMe*g);gqgfrdpFb5W1O z2CfrL9q1EHk)`JLg%<%puW2Ul4p{n`N8B5)&bnY!zM_uVMJlB)(GmS#3`B-o!DgBvFveemHy z)E&GBp?j<)fCB^^%N+72;~$tsypIKu+}XFK;zPZWP|&kmIFU^7syVFss3ab2CVqG? zB|X+k!iUg?8E8YB<3*7qkOaxAhHW6UzCc16$BHw%mDPyTQJz-Z4^i4B-w?B4Y>v4ep?v^@p!#7wyAZE)-#}%~t`~Lk25IP$X zQLK*hTF>_Ardk6*Qx#~J z9}=@iQ#x*?Dx~nUK^!t5BsS!iJhPlBTI_kdCU>!<5Zp#5Y!v*xrTjlgV9|Sw1NOwa zy3-sf#jiuBL_bq8Nh+wy{5;Y%)3=kXv4mCdJv0ElEOp=kl@|?$W>s zzJe)mCJ)?%bSCyB49}`Y#@pI&m5pbsubO&~9X=}O4BZp_!S(#peLDTRE|A-_l_huS zM&6Cr=?{5X>~FWIU*fF9VF-Rlapu#^!$2JlAl~5nhAC{JJvasvk#qKE{MVqI+`FrD-ro)R-;EwpzXVj z9uH4n&+bD#f`usJ2qIW#e)7C#*+k2g^@mX3w>tpA=`|r z;>OuE#i~aaw6q!jxZfF|?IJ0sf#FoE0s+HYX8vbyelv@#9!=!FTD*loRs1nR#n(-y zI|agSd2%zaV#sx!OBrkHQ55TrSZy&dywDVlB_yTnj=Uq{vt)tRG!HGVPXN$9vaOa! zE9RjUt)cdv<9`L~Atx!ygO4093iRyD1|MV&B3X{5PKZa@;6OdKqj4Lq+K34&Qan-n zLUyf2<6l9I*70x>`SQ^4upNB*(6%}1rTpMuU4wjgEZ5%tK~e2JdsJM*i6jf9gliF5 z4JGR|@FYyVd%&&1{+Z*+?z<0u%gn#7-^)@m`kI9GXN@=xYVF#Jsu@B1+F6Tbx6OZZ zs@BW=iG12>kI^}8#B+az@1bWI#)FRpE(-MQn~ED`4<;yAZ#!}JNO-eHBZZyVP_8y& zNG*L6S^5=&lVZ94CxWO`sH3-&jPE9!ULaS)HLKh3%L zI^If3RcKNlerxPH{Lfl65_bRbpNl}E`T^$9I%qWXP(RCXT=ug4;f*)EA}t3&jCabB z+apz(Jv6`s7!jum6Qov^h_H4|!W!z9x@fVOAT+l$Cw;0HEJWDgH`+e(Cey7=I3(h6 z=xkvI7NdaHy7FIBL+XG2vSC(&>Os@!WO$r8Qb|-VS#qW@;si7_|-8>3XeT zY7Isxi84A*w}SLDn?|GZSY1Ki7;I}xr;a2cj`%hSZp?^Spewanuv-D zjkc?_2gq6v?+?Xhp;aheN_F?ZLk1S{?zRv9*=63*r~HSXzUN7N_F)YC2?!FtdI>-d zJbu>u{3uG&V=5Lh{}6vh6_y`!GU4Or9uzzM+3IwaAlNH}OtIpoSs!!kE1Ts~H^bb) z8ek95yfO+Ou87gJ(1fPF!e3QuMzx5djC37qdL9wP6M>u|35IB;G7g+=2vZxo!$NN9 zqh*2Za=XRx*V~`+fwK@6ww42UjFI*iMb)zZuJin2BFtAy5*)-tbh|C0R{lKd>A3I( z?e7<{{k&OIZQ@nmVsS)ILp@!uR6kMOhxOJ_i*1`o(^OqwBZ58{=5=LUZ-S6VjKH)# z89wA;DM&EEGot(nG6I3ZO;JMyP>`<83`!10FnUozNgaU!{3s?JHdgX%C$jB7$7`3e)LoH zGQ%mi@sX2HwUGB-CW^(HuPb5G+bmlyialSx)S*#Qxh>pHXyI#HLO?5RvUHmlJI|k( z75A#`pe8>-b8}Wc<#G6Z$4wSxE_uZ~;eh415H&EcS*n+u;mDKw(tgl}y4`Kb2)slJ z)sy9zsG0HboZd-)`!adq@Io48q>-MJe%r3y2bN1hI;gOEc2VhaM;H#HCG<;Z)#!tjr`k0``Rln zY@4kZZ}r=#b$rZbbQ8!R&(hX}Y!vlQ<6V7QztG0lew_XrIJ_Yocdc49?IzfwQvHMC# z&-sR|m#wvJ-|~T!v(5c%3Lj(>TNYJq=ij}l-o&F?sMBq-W{sk%ieJ?e`@o5IbNwb$ zfYll!4|J&UTcEniHV*H!Q99XjkZ833^s{$MH8;Uq$$I0M(qyq^@|di8?((?a6&tbR zwA#er4X9ZtC~F93GnwA%OwN(12S`g!h*UtX@O=Y=o05)R)cd~ktu2jnfW}i_La&|Yrh(nq$rH{Pvzn0QV2~U-WJiiprWB1o z=6e`sV3>gj#R9zp@Ea8HBdmb~Nq&RUDRn(!L_UBy12bS=?K9}1J6wg^@gAqr9yU^yanUdpfG$kZEc8ZqgfZk~M=eD1iKwDr zTB@SVnFb#L&RVM|OfkQrtm+$wbUaKeB^af|sI*rok~URfm0X;bBl-hjvYAvO7Co?i zS=hR-&vTDEW+sAGMJRoY>>MlBQ3 zCZ)&JahIvO5(MkP=y=Q-4r<%RK;Lmzk3GCDaz-6l(KM@Te5Cm!u~^1QQ7?Wx%5~z0 zw@bW#X8$hDq{CoIO9!h3-65x$)~LGjPh56hP&i+pZ#|bm7-HCp6YetXd#podZHtFV zQS)#fm$a;TjmeEmA*X30VMyO22B=oSD`;jU7LsW#S>~)+A7cbnJVE3YkX>=7BD$sK zz3^fsI0ZkZ+%05-`RfC@c6Oa^%hj9~b)*cSH)$`ZDereYE5IN+A$rD0rID>`=*7(7 zRoEvn>*0!oG$P7!XqYmfW6;3v>Xz}WYbEFy2oZcDyeP>EE-1$)n1;40aQ-6}0#DYS z;EdFa2cL84X>AOP6cuU5JptBr)D?PVjA8nN;V2sk`E<1K*zvfFxo_CESC1$B5~CXa za6C=(<)3~jpPPnksTM#bD^K7oxpIIoat_doR-hOtia9m5h$I}nkkE4b4Vmz8wRZ>{vn z-~QTEFr~oop)x{r2zCmmx^lrEwhi>bNeRwM&jx|vQta6342=`ta^5lvLZx5l|N%xCd=uh4EAlx;eH3Ht}$ktu=(B0+D+xRfMprhc;bGRQ4+r zuqtsPR);jalR0@{(`!EOuN2@boZM#mj~oU6KBwCT_h=9`c+T}%IPF}OlUJ3V@e7?e zD@jvgrO}8=DxRl$%A$KACGD)dtS~ai2$77HaHSwGa>5QnjT365X<6yUZ%c5|`1}xk zz$(@GubRZzKG)~xRN6$+hEr#<%)8J* z%e%C>-N`!^s&m7n*y$J{*5~yY8f9yDPqyxy9T?F>Opy2sG#+?Bwpr29$V3#|$l8U#L|(g9`p=is(P$`S<=}{Ga$vq48Ih<*dK~}cb$Kf@ zo=d$JA!Ea$YAvLsrR_QP0zpCM)jeGQFRVl_PQpqoi=vZkf@rtb^>;zA`^uMGw2K{6 zXjEI8rkjqFDkQJ26dX1vxWFOT2O83x=~)>UwIq5tFs`KP4VL}`BlHDxxHDDPp79HA z|CNbm=eu)tmueA3PWqB-EkLkqR9aK>yGyUMG=t=3!^gXKz}EFC_ikDVxhzMAiE05@ z12a3Kx2o!$3BN5G$BFIu+NAh7maddp|Hb^OPMLz7d5@ZBx+if`m>^|0XC%%vvT^@j+r?@FzK(jG zZnUv}K|Z>+s+zW4JoU?~3&-N1k;8d*$UM;8+Q^x1_(fYvqi85QsM&qJ$tK9{XkdtbK7w7P!XZsoo1@snlO<6Z%K_!EUM9T1PKty%M+1 zoNkhn4#yvP>x>t?9(RL9!*$EG2WF=MccgybqdICI7wgHJFO3@Y_8Af)(I(6cOo;iL z$V%;Uu&k_}AX!LP0ow1alyX)yaC|H311YtkAD#lF;29FPbD^y*cBNhe&stVWRe{$~ zjQ`>_*U&&jYk>w_5$5o`B(*wMTSV|+EM2hxRV+af#l6};+v>H4f~?Y$kesx_T8&oo zZZrfFuT<;Be4cRD1wP*)GIdek=#hY*EvFs{g(3H`iHqG!o?OP&cbFlPOuY+{9>J9iAHro8HuyUs+`iIDOI3vk1#-fng69Yd%r$LA(y7?HK^TC-{oo@$^^-wY@zhUHvL$sZg8D}rGkeM!T&O=bmj87`&p z1Ou1-t3Ru;YYP;F9QyI$fAEh4AER}|8-K#ai4S%@1siFhp+xauFbSxk0|))MoJ&=> z1^{#EN_G>8wQ%ema<}|m{QkYtI-e0p?12Us-A~cq-tH%O=C^9_Q-@@ zPUyB;tGaGI9Zr46gjfcWMVe_WEiISpeNYk#UF?QIN~B4e45eXLxkl2tzR)f#^uKBH zf1_o!ZS$huxWmkPU9Hc>#Ow?NtUg704)UCUw`*4DpTA;sZB1s#55|t(@n~iTK}xYt z*OgVAU{z+T+9tw%gyE$bY+Cl(usHCpuy?bfn8kj&maTi|QLtzoS}1v>sVmDsLMCua zSgB2eU$3W4_`af5%YD7&a*Ku%qFr|F;J-I=chj!&k69K#zH@s#-ai|q4_=X{q%t&Z zGIEk4NlH1QDU7=&3WXiJ83fW`S?#RpmLc%&2DJMgF{ftX{(wfYLp_drbdRak(zblK zQM@oX$zo=EnZaw)TITsQ-jW7Hx9T+MH)(_gp&N%uSnd{rnps{3J*QDf42?BH&7o3V zr!f+UI3D0WTdVcjVmJ*jDGk36Y#y~Zl1X|WvYHH>q@jM=0+o!u1;5?%9^bBSND}agDqr2 zFDo0~5|O{~@3`_NJ*D zmzXR%V>K#8@8)i;jC}J|;rzYm4t-=d)3!Q@WYtpT{GM%NS?zS`>xIjwV0TeB8y|&l zorJ70!MZBy^J*mC;4o82x4wU=AllX~_{raEf6;lOiaMf3+OXa}Z`jLK3j?sgz3# z8e+(G4y<+U?&lY|yD@whq%k8Q2{aw@VyS-3BLwwO~^1|9axzt+R% z-{OeP%y}Ro6`Z^PD(1DQJ=dGZhq$f>qhKT&`raDpQ-F<6UVp{-G?5HLqa|5&yH(&t zM;VO7ux(@u#_cjeBpi`DDKCW&CpUc-<3)jG79^Y1ItO*od44h!zJ&_<>48(1eyM?< z+~Nh*?(N)iH=+KG&Bp0>)&@WMJ*F_)BOKK$?9ZVxlR1meghc`0e*5Rz&6XL(m8kOa zm|_`KXf`n>UgNB&8@cq>IoJWh@ndpm6ocWVvAA=lS(pV zG3lF(HA;-Ft#C;=hbCN#n%eFjz+0>>dr_Ld2V>`hVu=r40 zDONn&?q@fNoPnW9BQEsLQI&5VpXf5F3O{rBUBp9xlfmwt~%^egJD*4B`-Qp?kM^C~w zb>Vog^e5gSyD2xnHlKZf!6C!TFsUay^7?-s`IV3U=v_>WFT?vIOZH=UfcbuAg5aXA z3RuQ42L}aoA&-Je`y*MJhQ`pzniG1DAj`rSWWX?}%07rj@DS<~{K4-2-)au?S%?=k zpb)i;U_P5Ic2o|MP9CYBKCHf()@?Z8QRnk)&=A$XxxAOUi%7Jk#aS}-y3XYiw`jU@aXOHvB-hDO!WCL%p8XmQ}@-WUJec@mm0 z5rLn61Q{W=E=x0VrIlyg<4nM1XwyssG_445HTnk6MlJ;ZUMsB58f zyBP+!LZkY!ey}*nkKN`{jbtkm=CEkJ6Bu6Qgb>Xg#dyvZL}o5;rU6&1z;Z0cO!TPC zznXk?P()yQ|iJ9rM>w)_nQvGttRaB zqo|+J6YL@YK1Ru#wxaRk5ACQif8_2SGivr7@75OX^iXXfPqU57UI*x`xT5sQ-k{R; z>GyY>d-TxT*XZ0Pvys0R%FYDW&pw*Y4>09eakr;%iFu>?gKO!ojdi@@Zxg6_strK%iR2eyA{+N}CQt zx!pbqSITdFfDfWL?(0QIY=^qhRKNuyrIzjOk$ZO!pr(3c=RD254-e*FLBa|o zq#};2Oe9By@a861Tka{zM{GmPcm7m{U|c~OxO<9>iJya5R`xQQ&toL}ieWqo2zzI% zr#6ROQbw-cw9@=)Re7oWd>AZ(uv3nM_}4vs(L1ENo=L=07ZXAW0gGb`6{`SotD%;6 zW;;*&Oyu}8_~ttXztIx?_PtB}3|i)Wn@=}BQ9WdcP+Z3vxVAG)O(V|ppbB1>(b!Rk zz-Og-Jn*B03n0o`B1P8gU6-XKN#r?(;mB^tAuQWh^%vS}6$$ln-$6=_0UzS2Ohax5 zG(8;=q;V9V3fRE-&js4v^~Rqv!+^q71PRckat8j`9fJCINCUwn+K@z268{)9!Ftf7 zjrcDqHk0^w1RY5pGdbzeO7tuf8yLdsa%__D&1+F>Jd5|Y@4a|CmL11jAe7|qmgLX{ zHk_qgH3AE;e`!BroSfTbU?Kakx^}B^98R9DKdEJJQUVd^fd_fWWd_Q6u2J8zOZ^O+ ztLe8ocrx87o55ay`s(GtyqC#xW0^!OL$O9(&SExK!`Kzl7lX-J(BAd`DxSqs99#`5 zA^(|gA}85=cR1Z>6`1TB(nZ2DEZot7jh>s_+%jx6u_rRJ&x&5g7vBh6oe&rpQpw;w z6Fi@%P$U)fC$o-9zpS-)xMl%AJUaBD;0s{~rGw>5=#Q=%cfK`-?+8lVlMTH`yrE-g zGr2xiqhM7lsHIYJ%1bobq1M8w`DaBBA(E3l{BvJ4;&;KZATm61o49S*rPVGoQ9NwG0vv^fSfCF6H4Q~(`KqD_v^gTq(WfZ+#hfHD zwX$kSK`>2lCcYP?tQ89xQ|=&{rD%157HTr7*x@=1p3>R5gTonK;I5VwN14Pdx~w&Z z|DI`-Rh!V0HoJ0Kzes-1_$~*ugYQ-Kr9AaHnD7OAaAA2tV3(q%?&QNeeFTC*@$u3N z{a7IXTjOV_UD;(Z8~X0e)K~M=f*Ph&@no0ptL$WMQMN&l=BQE8#Cpda*oXzeBg-{0 zZ?^{vrjH+YxIOswX#c$big0+wnZu@qV-3O1K4K@A=T8fqc2%1ZD%|1ShQ)@?QetYR zfr=+Rud-0Y{z#}4Bwz#}WS$|-QchEAR6$KqM4AToa5T;N^$^Q)g6LS9l{|qEC+fOL zac=QMu6Lq@hv;f8rn21WzyyX)(?r{?ANBBPfp0tX>}aRy5q86RSfrRsA)9U+2qv7h z@2<e zme*_0eF(uROd+*=yJqH2sdBI`x)w4lMXeT26y1$J&$n)_JS`XyM|j&~Tkt(ejj~ig zlIQzmX*ok9qIk_T!C;HP4HQ~+I@{rNoDz#+;61+CNts^Aj)9~CP#ryH<$Bu-cAHJt zqz}xMcYB%pq;j4|>J3)iE5{vn0>xCa-^!%t5I5Rg?pXX&o_BpXn@aUTQMJ3+6zt2a z9?Y@!Os3fW7LR3uG_p55n_;4%iQLypCp#8Hn$3P{xe4j^lFA#&5dO5px@!6DPi>so zyCqWSqW~>r!A2r!0c#BZrmi{(if7;r_~zOMxp8zsAKFiaRJPG{&6VWiq!OVn(sh#w zaAUQ!BaF&9r%XgeHhp(DXe+Q>V;WeBU+l+v&ynW7WY;d8`*-o%4;bK#@GV8^*^NUJ zsgWw_(voa$WZL%MQe~Ex7cZ~M)aNx!@R~|ciPN!;{ZJ09BjP2!l?|?(%d=TlvN~rV z?Y_xFwHmY80v_MC+^TN%LC#6ZIXwH}7p=XEyIJXw+%m6xnhs+UMAbq{%{HEz`ksW$ zin0}hE(RS|iQoCSnK>odwX?eJOerQ!s~=EEZK)k*#>!e$F>(2=T38$a%q#8f4ep35 z>~c-*U0$CJcC@yGTN8i7ofLu|S+;)c&b=Kigrw@ce2NrQ*w3%DTb2r4qXz^pItT>n zY7t30w)LcBE9sMw9Wb_w$Cnq@q$8MVw*nJkt2CaY+(4+vo)h&Ypo}NlDyz8-z)tM8 zI_!rsxm-N%rWL9jlxOp9#D&svg3Fu+5o&r8AXSS9$&mY;vXK>;WgX!iaSE0QS+-GY zkM#>XPR~BEe}olP?+T(xU%{(#SYOMuhaCPiX8AKYG7M}JVz)l!i6{jhgZ{+ z8=7siih=7WP0b?3YicGf#w)IiWbDOJ3e54kW135obWMQHB#W+TgAflNDwEUn(jTu? zDBkSc(2QE><^79C$GVTr)1XKMTSyKY22jrB8vJd*G6iq71(4QO4t1 zFudQsU>9494jsu<7tSgOkj^NbS=w=QC-*H93Qc$u5S><<&ReajYt|IBEP$^D<2l^6 zB+f>?6g@Y3=aw?zyisS-yx zQgn1f5oFEqs~ia64^?P*_J(tA69-mUm)o&1Pp6`w5c8)3@5UT<@F4>odS6tFD_OFR zIGX3HEs}v8SP3t`#?F`WPRi+t*)oU3ZR;CP#x`R!>RJwZ`ah+pPjelx_yJJ-#6(EtpZgd^W8bB@vhEJ^!vmJ>ua16KO2^^2(I~M-L?E%Ybnk>m? z29Yf42y0yv5E7P--28B5Wk+x(#N_KbKdeiDL{f0FtxFb$K*#CDf*=^dQOt$D$+fdm zu?JDg{~gI`Q10zyt*d;%7G1(Qrt$tZZBD}ak44Bs$Ry2=%gY-0PV~wB$L%5OyIT9t{k5-$h zBwxP0e!XnIk|Z}OeR`NixsFbwm*jW-O7eI8$-d_-(PrHH`-DEjD?oAre#7|2(O|V;Ef>rDVOZ8?M`Zg{C=vw5KKtIDzcG)f*y3iA$fODK|M* zlw=_!pA34#vtITG)exwLlyZ-|b&)1%o~;K)2m2bEHBK}% zmPKlk5jvaEj?hsI*D2L{Pu1r;b&iDLzO#~%icz%Gb;IU2R#v!PAS*g_plg=O3uL8} z!dkC$w0V8kiY>*>&BIMt9sjF8nflbeHmg$xr7Nv^(*axCC2sMkT^O}UBvBbP!7+#> zz6T_QUVC34jD31K9_t_=nR%xkD zB1@2Uhj|aP45NeEO+kj84x05sSq{8jaUj&*$0;`596?c*2Dp7?;>1n8jxegkl`zC( zxb|^D*zjyiO9U_0!)=!=KqD9}gokN?T=OO^r7z2TmR;jL&8%f)X3`@Z_+2+?ndD5U z8H#$=qxn3k!Y=G!XNHSawPL4pl#ik{Qf<|n z&W5p-#rlb{v4@h;L`>(9BFX9XcPYNB1=_;eh!H_MR#=&^zfu|%pYqk$ixfJM!c!1Q z{F0;!y?IOk6TKqtp5r(_zvjY==z7lx9eK*Fmj^sUyg}m&Vum)xJ>yJU#2?-hWd>eD zKwo=l{QL~cFtHqvWCnbi8?Dg>`~;g|Ugfw93poSG;xU+--Br}ugPn?GcidSeP1>_} zMso?>MKXW0$kmow0yZR4NmQGexO9M?*!bBTR=aU23$8^s<)M=JNL@KUapKx^Ntp5N zbWKl_Nj4BM#!pnK_7zn%E3eF1UZcTZ6zXZyD6Uz>r_S}Uc zl+|kE*E1k+6k`{zF^Pm$1b~#9u0aU6Ot1tIiAaGL-X2sLLTyLsjDXY0C7+V*OI(Pz zf5!eWfBTVsWq&UDc+}0Ef-@A}n~Qngw0}W#L;fYkHVd&yE5h*+e)+Or;yRWcYw7iq z|3tT4_G`N#u)%=#SXPFp{6Z{V3S})~+T<(7uF3GnQe7bgf>G<%kc|&=DS$?EL!gpJhQG_LUpc3MVN1#~Uyh#Uv~g{UTa}+1h)9 zl5WQbar*k2{=7!Xf``@?!#L0_arnOmClZ8OIg2~RvH~X>fxC3Y&qdJ;!*S?+j~cjh zSBiW2?mbXQLN*QSIx=BvVx+^WKck6AVcJa;Cio!9pfBgcM}1UvQ?z)~3-p`4$zb!PI(aZ&0=udg2jX)Ou$L2t_f|7tCc`P zuk!v)^U;&`FmdOXqd)^{`zg&2DJ3R?$&Gsy5p*@NXReRwC3*VD?u~w&(Dxnh3Pb+Q zaMjN>zZL|ZhuHmCK-V<={zp@jAPN!&3H#Hq7cmy^Q4~=YblvM!?PLIlqMzmP$K zy1)?kHp*29*JO)}P~-Xa7G9mx`9q87SPFScS4`oY73nlNuHxjbRgci}rR^b;+ogQH zQG~vD&ncPw@=S0^Qd*zv`Z|D6zJtb(4q67^94md7hxzC+r6C2v2e4;!RvvDZV z^thTNq}J%rENnLw?i3nU9I&nEE~?v>3BBj=(5RdkZ>4S`C-n2FXtHLfkc_c|uC^r4 z1gM!Lxr`lq6fT(fzD@j?gG)!{LD>E*2J8%fN)BDO5Y z3&OZVu$E~Uc#dVoTcaop{lfGH+hZMJC)w?48K(b3m`(Or@Pt^|Q&|4gD^yl)NS0JFk`M{FS_L8Kr+`K(wRah<{*KD<1Qc{0LG5vceXUgvmCRR zwWqSCQ50m88#52MYI6{S^Md6M(cG)Mxn{Mki^{w7{(;|*5A`>_%5~>d5QtJ7OP@vr zvTfERQIIwDu1?{>i{(LtZ}YbORpV~^8I{j`Y>>rO(O)YDn^DFP$JVFT&j0Cb&v?Je zqe$(F%9pi4wKrr$H8;@#8mQ=5A{lPPn6s*(zUFc{lhGp;{b6(EwA|JljHU_yv0A+O z(dBfk74G1NnL^Y#TL5+Yiw!McpZloV}MR0_Y12cGstIpeUbd8xwvQbU*EhfZ!dhxcRb*o z^G6p0u}cFmG%R5Rj0(%lk#Wg}jdkr)y{Y%7vV6pYKf*)vd4G>iReJbaXqA#wOrGdw z!R6s5?$Ac_RKEQf8ak*(zghaU8AtPfP?FEioT!}W5@#}cI%(f&+C%$Re zwx@dt)jWZs_>%$p0qWNz&e09aN>2>rQ~7ntP&}mylG;uCI-6AqHXjP)AIuBH|JMn- z9rBA#EcU53yZvK-erEFv)%F9eU9a4HK*l_MK}qgkH1?HG=+8-aG3=o;y&*<@$grW% z?JBK3xGcyxPPF|U;ZBt~Ai3Q`%3_>fY(~w_-PfF7+QFl=K<5k2Cu)1;yQ!6 zgBjdr?atDyhJ4>7l8H4*g@!%_6U#S>vOj?jgJdY=Y(V zk~O_;jf2QR4Os?62^$3lLIraWyAf5wwz<9LpV%%~8&Q#UNf9|tMj>fBLaMCEeAi5| zihcoOh)USf1dJ`=M3r9`hY2U>U4FWM8OLT7~`@qFLZi};63aYE_XD3rMrQOFq zUqL3d)Sc>?i}o^*hqCbCBbL+UlCm6Wvpo8{$oQiPVJryt#C#?DT!@CoL)E4>i}zRH zrvx`K+^&4$D0$(^De87qWS5Q90!4v0zjXwm8= zaR|mjkv0O$k!@CxWiC_jG#OG1M{`nlikiZbHsQPrkE2;^){*3^@}j@p#q5J0!5UXd zmtLX^3v^@2)8elPwN58uVyIKRg(AEkSCP4hFu$$B5@*Fu)?Z?d%{6oUo5C_g6XT58 zLtR49ZPnj^9wM8+K^Mvwz08A-mm+s}pFMglBgZ834{?;J;s?G01s-T{9He$HnuNAc z&Xd_|_vZluttX>-d@-T-TJy;ppvASG0WSzfJ1>#KE_VxNtQuXv+nfU zSTZdqAP}QhP}FHNn}K)!7q}A6Yw$Ystqfxv=1=Yj>#!QfVJ_yKYM=qDs_VWt2uW4r z3vl0ez1cDAt>t@w8$XAp>JvA{hmAYGH#lkVR`nln>Gz`I72^2&8$`n` zRUNMFcdEG*_jm64es2(xtZm0|jlU8I{IC{hU^&**qKn{bvb?kC!N4HKxsjYK2Dhi6 zGzOkj_D+pg4YC$+_0T;n6xN$1P6Q(1*|sDx_mhxi!x9deo2M+ zwjR^OpG`RyJNJatgpWS%Ult5(MVbmgEf|XRt$=m#7=7a*b#}iC{7f^E( zajm&*^THPc&{x|h2JE0rJER5Hku3ahygF~Sa^KfCfY%}K*{N(dIJ|*EIfbY@N+w>w z(zNmDhs@l@S61ju7grV+=2IQXbnbuhoufEL&_s=Hzugi_rc%H##?*gQq%eV1iRuaK zSu6w-`Z$M$xK}CFY>^6<#=f`kou+hI%mdF0(hZfBe4tqWmh2!Ip&3ck#;=0GCd+U#`w8O!QI|%?i+2$FkuOM$VEtz9Y1E@BB<(!FTt0?8xVo7710ziDGF^AB{2fjw$*T$ zUR>Uz(2{EH(~B^1y*u+eqWg&0o0hwlt(jy5Alu1^ur^BxwU+_yZtrHrY%`97!0ni( z!VcTEGR@0hsf3sA&MahJVR7NmL!gNR_QfOLvlxvmP9}T4g_Ir z!w7E~e~=+G%@7o_o$w=U$LgW;Gs|j!WJM7%RY=uV6H7Eh@mE4vXp5C)j-+f>_)e%- z!Jh;n#z?2AiCSf7D_o&rX6FzmYw0p>+V@e;*gX~ z_Bof_Nmr9oo+?ZKKW8{&9X&A?IKNZ6q~%;spt-lBh07Hq$yY4wk*6m3HauNe)XHS#;FUI=NT~T9)dL>qLoXPMz!9> zicv$Bqh09QB5hM42Qk-EJ-Q)h^mr@tg6)(>2*!&6aNAu5m%raxfu%cMp$%oWWF8`4GJv|5?4My;SvdC#!IXH&M6Xax% zkIt#%SfsxvWpJ*{t^|L-$T5${gTY8F==BGq$fNr9^q$!jG|%9(pww+j8>RW=#sq3W zp~oLr&0oj?^<6ufC{dMNY|El3=^`!MT~aicW1lMs!f%mBacV>cAw`cKnE2|p2qll| z1U217BfRB~Q^tk#;toV_M8zqd1|~)hMur$-M9~^U1WiY$j_`A=!73b$ZglJX-HB_M z2+?%C-e`ChL$2%SZtN}gc>KX(?CJ&#QBhP!7p8bz8mKu$q<~qslekLz=?#aS?y)Sd zU_9l%4hOeaPx#f9mBqc%Q#-(>1A#83i2`k%&Q74qj`{N=F;jW)L??WB4o0NHjvzBV zF*uG1pZ1HfIMBW+AykQq+YYyD4o}XXjUZKL7UaWLK5Hk&YrdzFx6}BMQe@x^i@Ny0m4xWd+$rO4!JBO7<8fV(JOk03Ka!K>La(aR=2R^M zk)my-wn4bKebKMB^HV&POs~1NDLXEQw7LfmOK}`d#ZoMn`}X!q&A7s2V9E%}+?bA$ zy+fSTMYj!ZaMbgo2+DYaUO$)UxaM|@)dyzZ-7+#kEhdnD!#v6-BJ14#>AqAK+wGf6 z_+0Lg5>G;V<9I^CHbFFG>`ryuY+$9U*4`r7Wh4Jlo?B1VhG>64Bmx>Ba{+QcyX50o zGfV9sjkdTEI9m2Nov%EHH8Nz?egy z!{C}M*WhYC_w1{bwZYgE>*Q)V}QJBuN=t_0>p=!3TW z9Q5YH7!-q3L1tKXl^~n*fQ2+xjHeaStL+*h>l*eg|8@_c+8f9c0J&2bz?3lMYLN-v zA1$6EB)l7ilV*;)6)2H1X@!{-{1uODE660Q2vOqSGmlwS}0>}z3VVoY9`AkJx9(_*1vP;~J zKmu&Pl$NuVk-!FbcVRODwXb*_PM#9$9c2(HZLeNg%-96 z|G03FuTBhj3tzZ4gCN2~

l(X_I+GK&R zpZv6rUCvOiOW)8SLV&5<(q6Z$bq3Ukwf8@wvq-m0Hwf)^lQ*A}1V}+(E_^gSwDcCS z>q|@HHjdVbrrBf4$OtpJ%3?#v>oQA`7KMO}Rssa^*hKGK<2>{Q9ba`_M#-@io>=yM z1n+qdbL;$CIUl?V^+K7dgtpI1X1f2(eXk?!9u>y5FW%H~I;)m3uh)K>MJ2ghkAN}1 z-jys|kk;-;^+p8sk!d_S-OuaOAFa|Wpx+4E5|*<>Ac9sr3$*FjUVe%2i2 z`L#Q=SO==azQdtV9kDaN`&FJ{6D&SAkqajSk8ybWq~D`hA=M z91emMl>snTEJ217m5CWJda50*meNPq$UY8FVmnzjT6CmLb1TK~u@JglXgrvim0~<_$*(n)_ z`wPj{qL=jf+4GOSOocmmiw;IH{NRBguA;? zdDDV9Tj83dXC#s9QKX_fQ^T?AGh9DaCI?GZ-y{fj8+^p5XnTYD1 zz<4%cuxY3@T&0LiI$`2_YuWb(Cr$NqymhisSzP|*)}@B@<_WncdloPVKyGOkSK>8; zN<(@$vz|6Xs&^voR^Tp_7Pbn!BK`+H0jG! zM`f=2kYcRqoC$-KZ(*0iVDsC3A{R=2kZe)sU%WwGdK!fHdCmf^B&`2)bMfk)u3x-u zF5dh5%QmbyP<#PZ7f`%eT}+f?iMCmXEpu!FAMgRDHq`{PrNi>Gg6?4$vu;F$-pQb6 z*C-@~o-bV}Imd`gnmXya;2IZ(WU_(CJ=D`rC;@UFM_%QNvWASCgXZ76KfypyFFd;l z(BUkU!%q+8&JE+xu${B0noi6*)KP-^EKjLhn*2w{xl=!if82Q1oCzdP&AZfbidx7s z>Xu|{1*N+tinepF_t1#lX1-WN;i%?aVnu#0dwL}>yz>p}kXsw9T_en$plnN-t{iID}<&2g~U9MShGQq4_KmUX@q#RDS3N_IgNDkV!$ zX~Mbpgx28JM_p_$1&1P>Dfn{`BAH54Rg=S6sTWArdS(`72{lp z-0QmFHpmn@ol>EYi5rwMX|vAM+G;WDbt*-JpiU%tV_q&1i~qipN`magQUmy0X;RIL z#d;?@R(PD;#y7N4^roWEcsb|5jCL#jq-7#1BqO2q1=AgOq6RZJlKQQwwvkES+ z4!6n|WtuW>4mIEQz5+9X!BWJ)5JnM_V5f{wB*9+rY%0inj?8k7diOQ|1vpk}_eVCZ zhnn<}uy$2=tZ7G+JL}KR{^j8M^>KL{^^j?XLgm18`-OfCJWaA#KcnzwGxtRkU+>>8 zyTirT?W4%_)#g(0AM$wt-E3al4-UPmG})%3=qa`HDBd1xmX*F$W7*mvg# zGAX>;)G{(Q3mL0PMut2bg)+8C*FDwmHt_2-mySn306+o@q=b7vi#*(H?3A7JnD$Q640?v7U&+zzd?ByGcvh**_^u{O%hz9Q2Jesc6`g}0g;h$U< z48vX2*IQu}ii%2U%QVsO^tsjDCrABwn>8T0w;#}e0l#nvG{?}#J;VX(+A(KL1XK#~ zM}MAG@&(MLVpu6)ZT1gYIVkYYlE>6QY>wKULu-CN8R_?ivgv?v6FM^;d7f-BqB-Kc zE!?X~*Bw&D0H2CG2%|5fX7d0Z`3cu>a-C_~7?6ktitz?G?^z*AB_(xyz&?thSf)&L z89IbK&x-a!aGb!r`*OUIG8*z8m~)Ggge`i=KhaHs;V5$A2ZrXBJtl|;zkbj6-k-kG zXZF2J_wuc?lyXLI`k+{oKu6OpB=(#S_zr*51o5287Vr2N2LH z^-jj)=GZ)1Kj8Pvx2wI$!er%_~=|TxDU* zT=*XM{++CSYk10oAiuhIKj&P7)A$d z+Wu+4_5MlMUtdCV*lMSv$|u+>EsAVS=`fVfis`Gu)D4+&YR#O3)(+fUb1Gv6yr9M` zuL?qh+7jc7xd0JdRRhT&Au0i_3#WM?bkL0^!(-n}u#^Snj397BLdr@(6KJ?AWzFb{ zZg>eVl}hXe*=kHh>Hm4Lm(z-@a2v{^AiE%nq6lyBWaX`@kh6707DG0mAVDmcx3P7k zHlPq-D}h@ys?cXlTOO;vAnI$al!$v6r$OGhWp(_rZsQ8jw{w_w58eIOmNX7Y>(SZf zL|{XpDhwCPwfB%le7ny_uiRs|iJ^tdmINVi;(Hqzi*@*-;7ma{rf*#-Avdn*r2soB@{-)5`GuBXd} z_5aM+%W1<@xb;li;yh^=ZRZW1X}s0b$=TF!8xSB#)NM-F;t?{`Ed#U_xJ2EdG`?s{ z%w?FR#)~|^oMt%$uERBJUCtu6NK z8dyp4x}JuQOAQn|>3%fLQV$(%=Q+Uivz#ELzB+OF40}@ZeAyn&=8m7OL3xafE7xFu z7@H*i=e$(kyv&n;)Zg)>Eg{Ca;-RTq)CC4RFK)XPMEr=}cm*$!^Km#U942FYBo_mA ztG;*o)suOXw2+i``-xz!gy9|OzwTze?CG+Zbjk=u%d_8+d9N)P>vY(y?QN1? zQZSuCcG9{uI4Z4Yw$I460nd%fdXi3j!!gcw=G^ODK%-v22X-fZU|ZvY<7STtb+HBa zY`U-Z&9HDC4f_HCkDk$*w5Od)M|aF}A0{%|%Q8}z=y@1hGzPFT5T{ldsYXhg(3!0b zr{u6BmJh@_Q@-mbV@i@*cd3x-@hKPKHRWl&-a;Dq~R>_b=XBLK$?3VZvdmO zM#0r(qeoH$PP<1jk~Q%C?jSyXHu+v!lJdO7Wg?g!L%A3O9{Gl z)B*{O0HMbIZPXl@POEN37I}hkPc4=?UQ`sr1jURa;Ee{Oo^Cpflt!ukNeM&rn}HoV zwZGXDZYTj@qj4F$?0wjYIn}V*`Co(&g2vkA)lcwYcf8tLS|;{2y4&+tt8tv^6yp>5 z7xZdZ`ef`OD1x#cemQNFxa*xUh%y7)ufS^SgN;t;CRiO3gV$fpWCUb;I+SdT8uI*h zpxcWAGT>`WHq@839UDLG+I`+aHh}*;_J1?;%0GdplrJOb^1BPQDyJZ)3jzVm;s0fx zID^+o0FVJyt!gEUvWfslNE)20qb$oKy*zD*+RBa&eHa)h%0-rt)a-#6n#l@bklSEX zFRQd|rmi}v2kJJWz{}L<(=2_Y@D)x1-?A*6lt13X+}6N(^ZI4F0juy$DFC`xr=k#n z>O}bQ1XO*pk~7YO@R9HGxJeIse@|#>>_V&#cIYlkGc~fDTXhM`w*I9@Il_he z?~OK->=u$KK%fqet~5Dt7{`pY07u3frs4A$6sP#|z#IGj#fJb0fB?$QjNa;f#HSX| z4FJID`MJxo_=DPL`l$CYql;zy;nhz5caUz}okw)^pnW(tKjewdC4z$sD4oy+ z_*c7%$i-bUGtdehd&`AYjAr6TT{1O4J*WZqsaoQkhOUhly33{g931MeaJR<+Z3&3E zc#OKc)`DNO@vT2;Ct-SknEa?#i(k;myxg8tUejK{8y_C{sE$KvVF5xcw|7|cQ8lLG zjj?r14}i39Lqwp(yJl^1dECNWH%vX-2A*$40^rTqr@FhpFx;LSxCzz=>x0!cekN5k8mlkEP%Swz~*euS$E zuBbMliUCLgD-b0_AUOx=pR@>b40wuRK91_s_+DQUH1`xuj#s-LzHEPFSUqd~f$0DS z1K8&ZJ123HH2iB?e~ou*;(PQDizsUM@aiy&#rkdhV4Mg&u-aK%0-eN7 zIlHc)Dr{U5okmx1bMTB+h3lNqB{I<8`|)%_{GzMld*E(DB*j+!%j9#b;axJ`s&7sP zn&h?c9vM+mA1T_R5)_*F81*&8^&VbqMTkcdu;Pn*BLuFIk^SK}70p2aPT(oQ*LFN@ zxmIUJTm}LXrsbyrgj5SLMB;NCuPeBPfJB*Zi-zPNZxjb9SP&1KI!FLYk4l6;HcJ8* z5t5OL>r&vL(m~vSj66L9U zIM^ly2$p(wd4gH*!l(!pO)`OGj<{r77p!zq$)JTM|aR4aD zUQF`;2}^Z|+R=17Apm9FS!`#bJi0NP#wt|JvAc2l=^8>^)py(;^SqQ-8;_=_B`vmR z;xT1;{Wh7tIilqgjel4Lp}d!N(y1`9VfqCokrf?Q^dmWb;Ofk14S!3wfkG$>-P>p z{oYznc>f=9cOlEHFdAV%7_tgk9~Om-Mp7PiP7@{j256gcNr-?b2sSDXBZnBpD(zU7 z%f>~f>vF!2v9c1QF#(11;C`OA^?&XJLy3W+y=&w~`JxBdeetVvhQUb8z`{ZWi%4y( z0&Anf7ykI0^?wp4K`J&Kxu*K{#N^ip=sZ{1yX#%?nn59&EIv^j#|xt=V|Wq&z(u$LUxOm zVr1o_^>dPfssd)&x+=mC1a|&UXZc5x?WH4tE(k@Rrbz`j)=^RCU741#V_x>!tkDoc zAh$S654`gnzYkj!(1!&cW*pVLdH(;WYPJ3Mi*&uSs*B@KuT&ukllvla3ECrq(@aW)h;KxQ;M39KPmU=FI5LfuJU1JyF*${$g7lh zG4Jz!pVpHX+ieeg-|uxcXE*K5O$CLHFpko0dQ}ql2mfDxrLFHi6KP~XXgcB!uxQMZ z##+rAEs;z#Mp~k8q=ZW%D3dNHMboEgQ-|S^!|FX5%-p(ZRx_x7_&T!ueRxaK8Epu1 zkYiZ{5sM>prBC`V+iF&Wnw;2rz>{F}KM;{=Nj9Um&C?Ll`G=h5Xnst({nAa0*GwXk ztN%TMCMSk(nm^}33$sEnIW9PO2toQHA|@+KUa75s(1cJ$=t!VT4>cq0I0%yn(+IN( z%v)gDGId1OQOtID>`2Pq*xhJb7}Q1_(~Ff*cdLX@7KHd$$dJ0xksH1|Gyy zcn4qLXZBA`)>iC_qi_xTPg7-0|GC*T9yLf|K|OB|c=aBDy8E_VI+;CJhyX#|cXYp@ z6{VV-tJ}EQYCK=we*N2I5I`_j^8ys0L)zbf+q1&XZ#oPB7SKmz~R`@3SfHKT3}r`Hf%rL>wPqIA6Q_E3eS3xnZzwZ2tQQ zt8LlfCEpGz#Ax3a80aE#6 z|MlHhQ2y$LS3chPT`d2#rpoz_=uACuw{RWZy`W3Jzq5smA z6Jl`k%E|5UQU6x$phx(8xArKX?e@-GUf5~zLwD~C)S**5+xX~xwSU}se&_IcEG@cVE*kps2ngK^Mgfc z^jjo`FLlzU0gYZ{K7=F^WW3x8Vk!v0r)FawYu=`@!S}#>Mm6|i08+P_qoxBM>DAzW zg&V`-rwijG1Q)9$6CykcmyRWqXQ{#`NA3sq@zc(wE2q&#Y$u@<+&o!hbNRmvgM*7l zKtzU^th|Dvl8Po(9lCVuQPZd2fI&lsjTkp++N}8tlqClS77iW(Q64gid{hM(SlEh{ z;we{wPe4dSOsZN9ITbZ69W#ptRyIwV*|lip;M9hx->@5KlLtQd9dW=aA|g9zQ6801 z8*Nb$x)_eh_#28Cj6s6(LAy*yOmb40joFcPsn6m5S59VScH~GE$_HXqa3vI`Fhwt6 zX{))H>O>WlwhZO2qN=T)!dk%=jcQb9c7F3(-j;6fnl`k%|F)t>21mFfVq^~*Pn9=H z%>*K54gqMjm+Ke_>zxD&>|BM(=4<;*(dBIVO10X;rrvC(we)0Kg;!udMQmThbmcGm z3hvi-JH5jwm$}wO7pHJbp#ktd3#fKT@-eKgWSb?h zi1!+59)+{zSLj~d3;tRj2y4wsI>aP6=ZL)I%@UcaEB>rb+N3W`h|;a~w6=Ji*%MMnUvHQeX6hJivRP}9 z(LdAYVV{K@GHX?2BiCA}Y*!UEg4yMu^>>;HZMhUp-$e|XTIo>GuTqGPM%CLY^%2^* zMYGlWUtY42Ib9LAF~~;cj|l* z%~IoXO@~S)$zD`dfdjJ#=|=2Gb3}ieggA@{3GdArzMXrrjph&fG;6>*lnAD1tCFzB zC)E)EO)hm}VM}uFSu1&y`8{MpIP1x6{fx>DkGZMQx7~j#2~D9QbPUC06qM97Hy>=c z$tdkX!8L$mlbh|_1353W$$+AG4}y2Al` z&Rx-dmiFkFlH}-0V0WwMt=cKwc%C~2@8u(sc`AhBfS6nrI`nphKb#sCq*3hCy73|{ z5I?4o7Q{8100Yv~$b`aXDHnTWQ2A8IXOjsMx~7v^yV4$x&MDtP|MU%FE0-F{oHby~ z_p~S0ZvLkoX$7+#;~TG&USR6{WP4*uo4AeK^eBJu0f@f=zbT=^aA{w50RKIn-mi$8 zzvsWuPu9JivFB^uR(AhD^pKOBnFV#Odt5gwF4;WW-3FbLN(}R;s5PSISEEQ{wqLb= zsBPEf4{_2#sz*B?nF_^uM6y3ETq|GX=~S00bcvPjQfW8ofqHd`>t~B?j7fx4v)lj2 zY)9QahRFC-n`?*<&--KRhj4u8|`iTFA3P#lU@uAmtZE&&4o39IYjPcf; znga`Kmwe$-=Ot0|-H490?VB4VKiA@2{2ik5y9u6`%{7^~>2!naY20@99Hu1AYPwk; z*4ize9Q$TGpI)~M9*Oq2>BIjeF($W&%KOH)iKNd-o8_dZ*qh|;`Poo@uALfzxI)vh z<@2Xwd^eh1O3_HAD9@dcB8zPD$fpd&lu#BqIjTsl)J9cmKfc3~&4oRQSDb0v;#<9ffxX1A$;Kkw*@c)5(0_@!gQSJ1y_lkL6AWyJwR8T zIHE~WgY3Z&Lz8K=>9j7QS+yk z6ovSP(ZCgm?MgfhJxEXh-uVV#|ay0|zTl>z(>F)9aR8;c1wj`ncjRMttB4q3`m43PmDcp+kq z96A6jmb?XS0JfDr3M(F90}6tJqlCy1p*2a<4hV#Yih&zXD94Eggn(k;`J4;H0U;A2 z=75FZ-~-~lwrOju78;Qj3RVbklw`y8wl6T=>BopU5gpAh?Vj~}R!gj!hG9ckFXS*Inq+!8P1V{-N<&(e?;0iD?aN=!X zN3)?aCtaq~qQV{zR9cu0o1^Dq@R@a@qYC|9gw|r80>Th+oM8YXirX~8R+Lt3Y`&5X zQ`f(-D)R6%MPQ3?^jh#_ak4hf*U)dM!o9;r+u>ZQ-eAy}ZSE&mrxA6B6C%1e=fs|D ze@$-GsI6 zhwju}j}D4&qK8k^Ub`}UO??eHd^_}k8h#XaEp_;v@LI(1$K+=z@7E^po-ZFaZ9m|7 zB#7U2?IF{>BOd>!otX9EQSRwI6N@$~e==DYhpI$>G=vMUc+mmj)$$hz|U$|=V? z(vPQHu5aFdVDw#H!T3Aav(BLW_Wc*;3Tr=*>;JU=toi%bRub|aoMC_Z)Cx)b+|#pb z(uo(}^5DiVFJBW^qRJ1R)6RIe+wcEs%Vi`U<1dSL^$(lw>dY5ckKQOeJA3#xe9^sd zFFE7t+gl(1b)_TA-!Z@w2LJ%qzE}1o-{0Bz8v>t8?EYcT-Hi}v4sExKaNhjbbl~Bo z9Pdl;{c_31i*WtQI(-uM+-!~+1h4K?5=_9}$-X~;V|R6Pk3+>h_C+6f?^WNMhl2b4 zcOy{suM7T}^e8;;s#1LO{ZIw!vS$1%H9 zo-zjYZbx2m6`3cr|C!7j03Zv)JT{$_v)U0f_SA2c@rr=mdg~5V|Ds{}0Y9k_${P9_b==~;CbQ!g1U2IZX zjaFK(4+22?WgwRWs*tW_dvbH-;ab*nfG;@tF~iTXa5`+-=7|p^PU%BdIV#`C%b03Znryy}R3Z zB~UjqfMhOhL-_v}#Qg8?-(;$JG?P}|V=ESHOMVDIZM6JwiUt8rMc}~_!*Oys)L{dc zw);=^6HsyDw!PYZ1 zH%(}98+0^f-n>bsK&M_7TQ$$97`J1^Wc)x3R0XX`fI3Dcu62=5zb3w_j=GL}=C&Pw za&6Dyu*rn3o*60Q~Q`GpV zs|?vShC|pCi<5J(iGxV{CNsi+EX*}>(yXl#QD4Zp2Cx|_pnfFOBgb&hb}K{N8wezk zX??ZpYy_D>moy7(B7G^xc5scZ#umB3R5m#?k_wyZHoK;7U#iz(yOmpWvsAQ}4la~; z;u$HDdROF(cc?uf6aLz8bJsCFaDgS#B|7f#?9Y8`$l>-Jq&$Q_0qf zb6mbVqJ!Ud88PjW?5MB9@fSpUn#NxH*o1}s zeKuK~`c44bmuVEJ*Ir|n28kgSV=y%L;k%zzk6{7^{ahm}#+QZR7Txl(>WF!mcCFvj z%r*#gC1WWiCn+YPs`#>NtykP6%M7_Gs|nLn7)4ia{604+V=@rQ$Y3hm3%5qotQtm| ziF0*T$dRO7QsRq=BzQ`g)49QP7p|uT&)L zC}vW>lq8oUI(qL?wUiTPlXmLuInveXe7oO7(k(BaZOZ-0yc2v_8nG{|tsz}zmx^{* zk$y}>V*h4oWt6d^^v0CgrqOIP>q#n?jG}0gL-|zWD4+KIv2T}H=jJYS>UQBqXKayE z-^&f74CLDOn3=EJ+ihAwQOhV*=sL_QJtJv-`eQiXl?P`Dm)gT5Ghl_@Rn1l>foyN> zpw4XLXucIZzdM*nx+$aw@%5b43ll(qY4<*&Yjs0&{v5~p?X)CbBHJT<@@!_OEcRGQ zZOc4yKf9zYo>CUJi{;-v6pwGAi62|H8X`_zkzOz^Wzc?29S=*HDExB~)i2pd+|mDE zKWPx;)Vyui*zr zDNdxikY=1qbU6Hj(xX2)bHE=>%)%kQkTQm;r!U#@7oWdiBrc?R6(%x z(jT20UvSY^u3BTz>yaywF64vXJIDPj_YM3-|2ELoP z?OjE6so)(AUE7`CRyoI}H(r>=5-EGoC9*zjMO_h@Uh2#!3OJdxeRMC6ueYr@^RcRH z-Rr8B6Q0_!*~+0>r?4xhNJ%Ob@*QaYdgMe`T5CCbO|`{#;ion5!cqGw_uU0=l&fTe zj06LA^=FcxXAjPPFsuA(2%-<^>MWDS5G_tFO3*Bw(>(ovdwBCwa!M^98xetGTS=m zT$In$WMNfuAzhb9$`3r0j*@ljkH&M-*DQ7vakjO-KHf7sg2i;E<@QQHFUV^oY&}Hr z=g;NNTuV>WM&R=?nOOx@ksw{r^RBbW^H5)t*SpRhMrTxQVX;1td?;ZoF^_~UTbicr zG!na zcc7dYp@WU>fp|u(A-cMaI_v*K1@#}m zgQtJ~v3Oono~q;Cs(O#({dJ!AR(HtlWMX-oZ+IH2rbA0|nT*7-4wbxWRTXKZu`zGF zLk{7gh7&kLtDoQiazUA+SZZpQ5HsmC=KRsH)(RDC$C!17K7zDYm9GkdL%L&bxG~{ZR_5usaIRN8w4`sjStHZZ#{NgQh#X z|3))t9Y~A-i6M5RF!ufphaY3NhN((t=TR3IEh}FHhj96NYidyfaSlYk&k<87UtCwG`1Ss@44k>f>3LpRKi;~c?$YyLZ!X@;+_GlO1x{i81XCg$J66dUpqKq6reIpqC?9;p=^~xMQ9KZkT8_2DFpI*GEwmo#czIn!)}1S=e_SXbkCkP-qIpgLS>R&H-H?Gp10W*W zRPh4iyS+Sn2c+`=cz9CZl|K2w4O?C*ER!o&n{U4Q{nlWZ-=4AJ?tME}7SqhDaH0($ zeU#bpPuU;!A@kU2aXquvlAix~uFdcopEhIH;c=#Q#qvtx$w^!`e#bKPefn3KtRa1R z=7y{I9k%L0Kdoynm1a~IwMA0e9<*7#C)`#a8?;e8+i#^A=F(h#dimh=-YZyr3&1zB zQO3x?-~gmu!t~W?Nw;@jw8TpvYKH$OAOEc|wYH0lZ7D6m+BylQj{O@BztStOJDtie zUj6OJ|0&L?XTR-zP?e2*=fk$)vlCWt`@k{bq)o52BLgP~;M#min4W=`SE6s&NB=@y zT7uReTYX^g0K6UIF1Zh08QDKg;;HxS`4RiVtaXyKs!55_aob}4{^-%h|6b;7dK-|N zYBaf9)#nKwt1-E6zz|omT0$LesHY9A;mRncM5Zui6>sF=bLefZ4nNqnLTu7W{4mpN zNwoSB4tK?#0)uq7j3Z)@I3fW@wrQD6$0C#Tg|Z+>InD3)7#ZY4+OLE24$Skp{0o#w ze=MJ$$P6_s+A~8RHgsp?z{iu=M6BV1-~5IJbD7_M*@HCUZ2DN(ea(~7r-M&RR8JmS z!d&T(_0Ni*4?Zt8K7&8zR*jI-o^x?0KlK*-QH9Np+<31>u6U-A0m2qauxW8^Zd~ z4)o^tV~4$t>YEz|@_63uTZ)5sE6#tIoB!EhrEQg|MsYNLRwkw@Q?cChLv!TyJ6zoQ&F|J(y$-fpJm0Oy{J9I+1r5yse&qAMp1$7Ss^+~k zU99WJ=JMaUe@|?$swlV0)=)QRd) z&2dy0GCR$;?T4fdd`s)Zdo_GEB_NSVOjJhTgr`L`|FkoM0)&qHtAtn2B|^Yoemwij zZp-=bh^X}%U(LuRBfD~5B{t;TriM*9fr@R#?9El8YSv~sLay9e%-nMS1K7f@>1MMO zr6TwmvxdWA)s%>MY&j@@o2sWzGnv$HXAcDMHw7e9Zb=e_kc`$KDX~>T*jN5xl;#&S z7dZ%A4w1->363IKQwtRusDCm3&poEtI(%f~rc)=kY#SQiQ+h=3?L^(0E#EY^z1z5< z?e%y6-Fo6DobUfXwLVm~xGa!+C}>LnXK_VnrRATR8vG%02Ivq5glU$4AUCQrc}*Di zm%L5C=d~(HUW4ii@}|VVcTxFzK8`n{#Awm=m;WJOFj@ z96+JL*7y_w^%xEtJg8ZYX_mJMld;8wREBr(f$<6Xk{<#Pp_|WzjX0a9&W@*bMg}nQ zlo^}mw<#Pdlyt8Xv@{%1t{sjBA2>#|N}Nh{D(D(*q`7HLn_NPQm${An0fTCvmU6EL7Tm1AGF>^EFW)mVp?b z<}^86o0ZLKM^ieL*Wh5vKAQq-i@!03?v|;1cg9u5+0mzg@!r8Hdb#S^Rgc}KsrOm} zyLpg2FfC(hRzn4k-CUD&rgCC5k6Ap4BNDZG@gQFOXG(2!waNTe>ZN8j@sw=7G9PPo zqvlK9bBq#7+|)@^*^T3a!M$5B9aG5No0eofVaEmWy#IZfgWA zt|sQVQmoCQH2Xg%Oq&%?(7Vf14BAvzJi_AL;!yxy`C=9sSae2(dDa`~EyYQ{B-4WV zXnN1@(V_A)`rBmLm4mYRf2mKgIaE=bTsqU6qg5|@)zq3Y)=c$uQYZVLy{pI+aOTFmL0(POsY~fHeIb3n?=O5m*|32OG&b*od7S{o!A}lh zwx8{?>+yjy7O>DGY+Bgo><#&O^x`qU+KsZpG&rnPFVQmi9082BKAbwjI`F@ zI=y#B#Vi$FMSk35X@5J`~Fk$Opi#^v39+nB17JVrRHV#$JgVi0@8_N;D*h%lm7uo$PupxW4>+sxgK> z5B+cS_32O3|9}4a3)od=&v4J_DgR8l<)!y8Gp;@%_3@W$Uiwn{Md`P`TJZ9XSH#zi zW?TXw1xVk&x51=w!wm71Q^f}+EwvR`|CNHkR9udhkSz0_X{$sKl*?d9wU|*2AtY95 z05hM(V#Y>0FYalNYqN+tgL^gQO>T7+RI65m1iA1oW>9co3AWGQ#3LTD-&lsQFD`@_ z8rolfdQ|2CRy^dehlM;wkJ7P_#lb@3RV~jSM!kjGHI2VuPBs>4ZNlT_VjQHy?l2dW zbKML56uN$#iok$s@$hiV+N9G0T`EnU%jRY+sspV9cj5D?*r@=0H%v1Od3D8aA)R#q z2oRt^fcU%nwRgDawiK~207ftC5Q%84LKLD^a2t6>62;OyjEfBUH5Hw%s?bvRSV6T0 z;g(c1d%wF4oRjmTxmGzwW(zl44I3=bV%BpN3e$+EH+ouH;#6^Cie5I;DZEl?Y%EdN zm7}c@tWj&CitcMYJ~bbcedhC5pheD)rLt=9gxBgDdfMxS(gT>5dvk?;_K|7Mh{swi ztC!40(!fzXezR+3 z>%8Y}EG+~ZRjMBF%K43OG}DEHxkHks2C%O4GQNIFKC<(g4St-!MU|)a5LY)8Qr#r3TH`VVaiNyjc*~#obdigdGvy zdxeyIwbXGP>6mSA(plSxYkbrPcH;73PTY6M8H0BXXhxnuQ_CZeKM^+cTQKRu^L=rK#u_l z!hN4Q_o*Fs&sbg(OvqjMTrC~>(FQpx7@IIxc%B7Mc4V&<3}R!HkZ(ju7#q@=pfO|mF5i1A22sv5zxw`YZcG?Qip9x(i}&YmFo;;h|ahO z1`MXU`e3og4Bu4qJa$*!hfZ0cb{Rr#B@3zZVg|JgS^%H7b)8WWkhBR=i#LoEWD$8< z1gFT7X4#$|^Te@V3Kt~eK5HWvaka49PKP7QN(PmTvOpE-4*ysE`$85%J3^^gJjRVkfm z9ea*3i7hNtJ5$PN_cp2cbVU2=po0G>jx81fl=Clw=rrGY`_s>Ox=%tC)ijrn^oG#i zYLu&|BPxDHbBvsy7m-SPwN+zoI^4MDHsr0dy})lxC9A?Op`f;)W>4N)TW2LfHU~61 z!tpyrf#s@B$JW@JC)I-W{d0T#*K5DjzG=6P=@_l6hH1 zV7Iv`4YK!5F+a`t=3PFfK*L_-dtMkMLo$iYUBlye7$?0?zu!QFC>bql`etX};H)YU zS7gJ3c{v=TDpE(Jsuc=qlFIrg3=a$zXR8H?w2EuTSV*OPuOu5wd(FtLUwAGZC0pZ@>_L z?;(F`sy7MkK%4#qgsdHpSb%Tm3C5`X{J);ZWcU&Fa7R zGMN0Pu>E(rf$hSyDIgrFn2N~}t?w#}a?Oo>&Y&-6EdEG;FHxJA%&l@<;`G_zO>f_7D{acCP_B2N6fLJ3)9bvI`V|56TL zBX5lXt~_|8kqc@G6BWN>WGMg&R;*VGEoPkpuf-v2evJLcNP>dQ;FbJpk$eSjuHPc# zO`H%-g-8Ic2PiUOK<5j(H(gMfsRAMh801|l0zkUZiB$~&lz@(nOpTa9yQgtPi`w%{ z_l4)sCQE1-&{Y&db3rA5Wv3p7R-$hW}-zBH?z9(1d%gcq zgRe^h^HjIcVg!3cym_}JGg}<~x%%Ux7QfeW!y?r7cNv8yLY3*>x`0Yrz>%CkzFPUH zp;3178ev1_Gp_Xf<7tMDNW(f;_O0QWNf>AZ#AM)sQ3OrgS@NDNCY?E_!q^Hdv}d10 zXk9nM_vFRZ(@f(TwSwz{6M`yiB|~1eLqJbEnq8(5mSYuUSc+u|@smO0e6zT+829H) zG82s9?^DIb2F403i%cEEYDFyntKINUr!hU1WrAr>g19<(Dvz*m35C_BN;4R7CICnw z%lXw+WvX9}@=Y3rK(oYq6U!lslNx%BZ0`E9I_vJR;Xo?Z+=M(`L3PFQ+m$s*BH{r4 zVI?wJ%YYr4iM-suGT-ci{6mUKmu0J0vQ;!rsqS=PV6c_$h+zz&oYG7Ft&*nWWN2SK zceS}?#P9~H33qb)%H(;tO*?rBnZQqSBz>z`B<0qow$_Hv(&E%jWTbG8^i0P=f|Lxn!Lr}n4zE-g zR}{Pe%(BOn>u>7p*C$YLDT*kBG#3O69@03yg$bGO(GyHRN6 zF|k3iRfaHNX)l%(&Hj3&);~PhlO7o9t718=Dm^t5AE>LEIY>8DI~XkI=639C@;CK> zupi(&&o_rKibCmU_xGDVgiH)QEj4+e(n3o@c%kNTInU=l{Cz$hbkM=p*kJTIMiE9r z|K%|15`$A91$g6u>eT!`*aEhrZNJ|e%Hr!+x^C{mehH9~(9ZpSq~KqG787>c5AMxw z;*B6rVCslM2Bu)jzXk%4B!y(lHI5ZUH;^>QFtjQ;1~2e@v&K?jNCx3WD8M!%at%{O zw2(nih6U(MnV!>|h-M3?p7aL*rLu?DM~BBpFP)zrGlV+2x-jng-jea_H>YNXPMth8 ziE-CBu+faTm}tki<#k2Hj*}<*Hmzvizk!Gxx6h~*atbpusVqUQ!}GVN6Xp>SGvFcG z(1dzaXG~63YSL{yjJ|!8&eum-%k#^`np!+$p&XTXRHU#T&4|K&`wWYji!Ca`m6|Pf z#PFx>9&Ooec(;LN^0QE@Etzddpbi+_w7Rgq%A<1=e{+gL2{?0v$KZX_$#c+Q1|caH zpaUX$PN$#n5a}DC0Gn}mMTogNy%sy%6)dIR87n1Yf_UdbEv(l{YbkAn0T~3-tBsx3 zuZNR#+amf{R#Y{vkU-p>no$eGD{sY#rZ|KcKZ ztg~KdCS~A`lx_V0i3A^?Y{Q-Hfx|5tZMvAa=EPfr{y~OYfQ9(J-p|kgKAv*?7#!HJ zMPN0H#XiRxAI>ATV+(Sy1zVD!M=zaKaox9UM<$fb2Ep-i5ETB`;N3!p3$!(x45NCQ z^_51_*-X2BjKa}?&QO}db2_$lEQX<}CWm7ZymXVLZLHd9GJeuF+7D%h-NY0jFy=dM z6bCM{FijDO-{{+ND-`c6Q&ao=R^eWOqhibKLY!15NA0qi`4KVv?&4u;W=S!V zUP#4-_>zT>in-wb3k`=pif3%Y6QhTAt>e^3-*hDwa#5ZijSoyM;u6}Z5KJPQjgF2V z*?kLwT1stP^_$#h8P=c z@V_{ktwQBqXQ^t_h~F^f8AWkWQ$*g#Dhrj8n=9Mq$XUh7T)0u9U6y%{@|wK<6;X=N zvdB_qu4oX-gPN{Q28gi($j0q-!n4pKnbDtm`!%l56?V31Au*X z&ZPN0{+3VY?0hI95QPO=1b(F9bZABjYJsdnMZz}<nqNY8YfVo zUN%mju5pbT);rx*#iNB9Mi!Z|CECNTE~3lJ396OcHzqvQg0DLq|Mi(R(Y>CDb?uwQ zu4TOzPG@RG=k5VtYXNUej)L!t+-F)(pxMJKam!CK5m91eRX(x_SVgE+ zERw2#Q-a8IoJ_b?E(Gb;dD%!}*U@|FDcj_*t*M}Sui$dZSqpi#7v z7t=PnKcN)-L1s|%Uh#+N<83`P1Rb_!xucX-T9TVcAiHo*+-h^#x%_tw}; zugMD*xNI^-8tG9c>9*nAEHf3(Wk!sO!9b5z+rDzVc6^QqlsMHPZz8CuWB+pQ)NZ+) zZ5ZiHI;kq5mz6I#mYpq>Gs$zMxX(!Dqm+{?;(e)efz@1E?KF3WU9;SL=tce9cbfPO z-ow3kTiy%gQ+A!xUC9=1bde)R=y}s0gO^?cE>{OrI?SHa=CE81h&?yPM;%jX$@ z?Oj~Ut=NZc6UDGqDS~DoXcJ0C{y%)96ll4U;r*f;Es)8E-D*w|DGuqJPWO6Q_Ko6# zDe*=#486r7thUJ@#@MVoH}pHQRzb#Wm7|-BLSFi6>UuxmGCADg5l?v*1Z}C|Wa)?} znOa(4qfj|wL-p^MuC6y3Z=)|7H9xIG?-$kYdw!>~Z@s^_joYhq?a2$>yirrR%S`7@W zwBt6s4tWAnLC$j>;ETb5iY&6p*5TsN59Gww5meX#Al&u)=@99%?Hi2iZZR zWDQXaBA!rS9J)Ka)ln$YaacLtk+P2uB7iMyFb+1b2^jn5jI`X52ehr8s)AvOyxj6u zKOzR}w)_vX63>S^+PkI`jK}&y8UD&*Pd(8k!jzEqa!|O`d{*J^Y&O#WKS~wLW$?SP zLoU8a+x)h!h)wE9nmo_fYD;J34MI`C%w3oq5sL^`1?k)qYnf=8UKy^?evv4$;1Xz= zs>kyMZXDd2^PE0smut+y9OyKAj-2bs>2lcThnh3!BKVtAl^l`<_r$RhpvSyz7a3#2_WJ%) zODB{-x#cR@kd3Bln%Yc7Y6|VZ(cNuZ6NNKPtWXgh+4h9FwZfo%uQeYL&m&xSZl4UFM4zfxy2_!du*=ej4t-t9T<_clR1+VD^l$vR-If zvIx&vF3i*vRrlsK16=P773?w=b{0JoGcL&>s8FWT+yp-{>nlvec8-C97>Dh(Lq#xfNqZg z_Z_GuhjA>7tl90XOp!d)QPa9;5#?(-K*cr4v^!0P)2i@+c$SI8T~9#nzTSdRgkk6NeW2E1OhaY&iKQ+EjE??C!9XtQPO9Ov_Qq<-}z+D%S(`g6s$uU z(xmQNh?7Wa6p88`P4hU#L3#DIso$M@ztd$Hw#;CbJ{=h7>p3_MN@Y{X&0-MqEm;_Q zwyvo%i`676jTwDYq=}O>BdQJ4Y_*OwMl%@Ssdb&-J{yx5#cg&^v=8OqZf*@{98qp_ z`q*83r&@XEG_c5~5Ze0Jr6MBxt?9q7Gb<@Aj!DqqtLLiv!Y)|BDupVgSlt#8rfn>i zE>O(Tby=)MUt#K_X@F$OazW|JV{hXQwsdsV3^hc z#4$V0YpsH++RT#5&lA=B${Zi>MpCU>Sz9h3`?x)yZ#IWoX;z%Z%;7%WbbPyy3ks$j z?y8d98xd#bZP&{d;?RxR3+hHz;Yz>=57AUbVJ@;IdL;~fek-Q-Q#Ykv;)G2Ynmy?S z(;+U-aU6w+k5~%4h`hWLa_g8WOqLY6;duS^Y{g49YhDVoP%GyhTJ*r1hjeBoVdki- zq*;j3O2KppBh4~i-29~+eU1p@suW9@2S3d}@U5JY_eKaNVJ3nxVO8rJS(Zqq)@*W| z$%!QWNSvXn3{z!DV36^zLAhL29pphTRlh!7tz%~>%|dB?y`*$o_?T4cUir&6db`{2 zd9nPOuA`&;BRWu{G`|Q)Gc}sjyYQK39 z)s9~Lw1j$Nf8aR7PlnXdG$~beVXmT)CC(-)qA0{J#S|^YNdG9>i9Z(6;L3Xv(tQWX1x(=GgHVT0nS=+)39}w}(?JhhY#i=*jm=C}HA29xpG* zX`|R3EcVHzkz3Dt)wpbGcSinv;1*YLn@xiVhCia=kD!m=Z}nTdM|7yLyx|CVsZtOa z4qN?X$Tm*M9S#?bP=zgEq<s=E|XHGWfUgU`j+;uDBZfzB=M<; zX15-$YcX%NxC?bscB*XB9DI*gl1cWn0~>$1ejYXzc^6GE4d2P zlNG8RsrnC4J!ArPlSo|zt~$$A1tk!SsnDQ-0or5GtRKd94I+DKiHMJ%+L7MBxEKS< z>e!}=T#0?p?2Wx6)BaBf+1Yy#GiQncSFX-{t zt*T+jHyDy^&1h1{FzYi4B)-;oroXlIlf!EtK;6df=P-VMH`V_+s8S`^Y`z{SAq86@ zUuL+r$Ht=8K-Q5Mp2i4Lg1+{p-WKaQYF<9)S3E`k&0?%QIv?1it;*4clZn7Ya*4c+ z^Z)JBeqgjM&ocF_>+@4YQEM)eI)o5LA&GKoJmh8&krqV#f}}}ecv2(`=fQ}n31)*vFv!{M#cVg?AbJNg19C(rJ){3WUA2hTnpwJ4Mm8OnUk9+_*Wy&l5Z69&Gq$s z?(cXy8vp)H6809(Tdf|zmRalGAe5!QTX$@8zZ4fGEYQVUXe=@c8bjN; zoJ|f~%E-6Ww<}kIni2E*(WW!ip@R|1K#u#fZH{X+db7SH*^c9SU_yo@3r>I-P#d%; zg~R}=MV%n4YBbKloN2=QY|>_M%j zD_jte+WPa0E$ImmXMJAaA?F|hBFsSm zx+7yD*PS?I>^U1aZw;8|G!|m$^ia(vA%Ytu5JBXd4OvxiZLL%&s#Gjh>ctQGGcf7f z;hugTO!X$W9c(be|Y~YfrIi7?l8nQeO24%?6d|zr)gnVrM zsfBvI4=-deJf8eOW_+}XW>Ym!fb75E?T;U0Wka5f zGXELH?fq<&ni_>oj7mO(eIC)@pv;8kP##Cphe80Qc$ue9d|M~sggQ4Rq23*ao^cTd@?*Od16+*H?owBa z?GcB0h(pu?OBaB=aa3?IGP>;Hk~Mc5$cUmrMkgd4lN)Y#N9JUwdsIAy5D+lL7Q-%M zQp$|ey%XSk*A1FbX1bu1KWeq~c@)O(REt!cvYE;|#p~#tc_{hDO89Cr!!I*1G;RgU zI0a^z_TOG)x&wk!1|`KG`W_Sn3?>^pA&kLqH7J$%{sjlq3*=}zJ^7}>Iud5xtwDO( zUvba|>zUe+cz@g9*FqEn)g9>pR-Pn^0xn0<{V<_rJ~;#w=UG;vI}c(r7+`j#S_Ds` zp#FsR%A(f^2hE#ZIIo8WdfgBmc3nrx59;X<%1tJVTmgk9!BR*V4J}b9@~40p(h?hh zWre*5S0S7F-Z#L~#a~O`=&8_Qqxa;bJ>u3{eR+6xlJ%xTd&hi104(B$m~6;^fQBIi zVdBZ66bl2NG0QE*ATW?!tAOcMU_`fo8`#GUdN zO+^luYRfW^qR6T&I}Vr@H%Ld=YEmV zZ_uB0Edtih)oYycLs4fR=cb7!0~Ha%d+{BZ)^XQ-A$?r7%%}344;9j;IJ9dRHh~JGec~s zYZIRe*})gLS;Os{*g-frtZa3ST1`{cKrw$WG>wbO@R4Y~9@ZBzGLQ$9`Kw`DTSeBHL%o9qA+$W6&6tt2k93+8N zj>32#=R-^_XRP1>ki}6p35?(0KlQ^BlKHlO^{NMS5|;y!XIk{{!HTd}{@U|cZcp;T zc1w_B+I`;1H`+V?mGDPrEm=R~9I42S9{8|Vj+%Y5Ew{7n(d5xigP63uMNt1?drd(` zmToDiCc-2u%kFk7%SI`K&csZDs6|+XQJ=&p>w%K6Ju^@$N1^yk<&Ihc1PT-gS-fUv zDvDJ~B7$&zl%Gkdl%TM3UQSqGLFka*v5O^m=Tpn!n{>|m=4ge3`m|`LQeTLCKv&Bu z!2pDBb8DCvA4uZax&h<`9?Y!*fj7Jn0B?Awyo=>nZn1USVmzU&d$k<4DhpuL;upex z&QE-I-O1T>^mr&1?XQrYB!3H*UOIiT3nKpb)bQ!CZ+W<_?!~i;TbV9r;}kjxKBTn} z*3PrMY$R~})hN^?=yGt1W&)?hEHwD89K}Y}z7wxWp%hB}KF8Ub3T#rv>&`F^iQ0-D z;}*yCfieds!q~^JKH9Ru(pQ)u2@Ed^bd_WkMTF!HhNP3dJUo)K>_D>fC76v>`;!P# z>9u@ryOu%nb%oS-?);S`-5q&YNb-rY_&G$GhnGiRUKGM1N-i^ zE95OJ`cm?o7xdp?kTTL$-8MAcZJ)FhMRWY(B1!qf7)AVt7{D22!K$JpG_7V27>+$H z&XhC;Px0eDPmShCkiUX~Lx!~Am+o9+Ekkx#qp)Nl)#MSVO#+b!MA)>QK!?rt3CJR% zRNQ!?cdoW4^;c_e7UflKv(|okWP9AZI-c-1nVYx%10Jao%S*4m4rSnKD_;IK8~N+2 z!rH#8+lPf@Eh;`};qS-bMaN-A zG5mA+sbesRS;{<@T(ma2ZPbH%Qk+n@bmjpTuWDdSP`%8OC>z#Lo zC-CPAJ=|+=;^WisWJ&FFll3A&;e zrSb_e&sB0^g}gl;idMCf9h_A{TW%T}@>u;yfMDqHWTpRM?$B?Hgl?juD8R;zE`6!H zObbwyWW;kUjW<^Mjhw@P%jujffMQc&igPW5MP&#n1qPpJ)yeTZ%>l2sG{!eumXoYJ z1T@lW#0I{vLA5NXs(H0bJl}QmkSw6d&?A$Z4oFTwDI3wl=#wE`-~~u91!L3^!es88 z+}~kaK-Hj8plkA^l_467un{qc4yN=>kt?po_(W{^ubjwKAWc`1WxA+m^RGShRzHwHo$FZe=aFOYRf|N2eBH03R6DSR7b@;>T~^Vkdc zkj1Bn<4ntnd+H6@BN^IFEB;z1R=Y6uRsK|cPk^9huUDcfUVlN@LK1gRSgE^p zZE1{|?y%`}sQ!Wct8nJd{DhA~I6bm|j6IBk8=W5AKd|>Q!%niy8S?w;L&-k=pOA%w zihB*(%Hip7{twldn-+Tb^uLgepMm$|0-Kqez~P==TEyzLDCKX4#cWE>P3qW~)^vpkAJnU!{IY||CMq5lT&=t7X{Fmzr@ z1`9aB3I1?`bKP`1gx0;77dfV}_Q@ncluG$}e(-N{!;0nXqD-undY5kAsAI%5;W4(i zA3m6vc<>->2Ye{`^VWyo-14@5ez0#B@MLH#8=Y2^Pt1LR1q%k{@nbodVDg1&s;#!L zf+lI028A1d){EaS-Ya0kp(Q86E*PzK^_&c#!ayj=$kf^dC3J-*` zs)yZs;(aO0&@=}u1_4rRb~Yi4F~JKpLR$zVaR8857ZDNC?1B+wYb`G8cZ=J z=ycvl>r2qGi-CC(`sBun8zo~ zsUT^(rpUS|$)+Uo97>pyD2NY)9OG&Co^by=pQ7rz4C9VbZc~_z8CpV**_a_X3ToCX zWwI6`%Ll6U1~cy4BiopP3>j9c$$%aizdZXy%E*f14{a83Af_S2L}#+WK)gh=38L(5 z%$msZ*)_UO8t+{`a5xP`k9LdQ&&n7*`yMpQ3Hi25;3c1&8TahS}p$*r$TgeybaKVZ^TIhAsr@aj+|1sIp?wOIel}L6qpB z8d{eOmNL9txz{#fAuH`_wvq~bmlj*5RDyBJ)QYO9#saofFybu69yiktS{m3{jgVu< zL=ihGXw*}8z~yo~x=%0r1C7Z}i1a-lfl=`7|C>?;{xQJx1<-~3i?rLa$2&Ykg1t7* zRgefBgB^(hbeKG~8LXmqI|Lx=s!bT3tkgwoQ&~loTZRkASOI(m{!Gn-?UI)c7y8h*HLQ-#*m3_AVItp#Wz6fYdrU zLSil#a|nf$cQd~#iT-9RfvI0H^OaKbmYUpLf2KIi*jNuF-_Ywda6yXvrtB)~V(DWR zk4cIg9{Z1V#|(N-%J#*;lL&9Li;T*;1F<}hyok?hHw);Z_h((TmYG9cxe>aeBPy@j!224UEbk^(o z0Cp-VM3yn3N*qut3LnLX20}Fju!Idwj=9KLuWJO9g(0$#g`LPkmelh>Qe02q88c{C zNJeJsr+B+=DksaXtI0@KE=ju=DROp42AK4SerI;oG(%_Np=TR1(?B9mkw!khUat2+ z3Mg}erib+Hbt$JB33HKSA6)vFT=KAo6iMOFo zu8`$=?DyxgbM_Hf&~j^1L5kz~{WN$eAP=-RWgD$H$V~HEDtvzoYTJpkOr}O0ltI!Z zCzAh6c5l;;^8YH-gSfcWZ1w~b_Q4F5wyCR3DUP!87`EA?NKI?!Qw8Xp;QPX`B#+zK ziq5glCeWJ+%%vbWn5fVqV8BN}+@ou?#O1zPvdqw;ipXw>Bki;gO2{zUNdtfg9mbqWGIk7*t>;@aUo)~@E7Bj?t83N3&U9)W2e)@mIW!&3mV+{iPdQdAKb zvZu33J{a0mB7zBRTbdPM4JYt59`;fM8pW}3BHEsUV2!@U@cO{$J0=JGzI@!P_ra0# zlA5%K@K08bZ!<=@sL2W%aX|SWzFPWHbd6lY2%eP^v+|sTk(Ebu^BTWigg8~7jnb38 z&U6fFkg`Z%t+`Q?1QFg85R&vfY-~Ref&)Ap;R@?9SAb$xp)d+@@t_RvE0E>AS{7!pXcXRi!y7D#Jts8C5Q1AU^&1P79rkTEM}KfB0yVE7*2d|&EZp{X0! z#0}Ot^|W_nK(V6+Ne9`Lg#itw4A2bG@fZ*hi%pD}Lk+y5##08E{niXD^c{Kxf2+Z!sSDzzr38M?|EnrdLyV>JTqBAI+yniXVLheJsze@nsXHIdQ{}BMf^;$ zHKlD4HVq1@>c>K@|6s8s&`R_mA5|6s>r5`ag4{hFL#}s@qJNgwMtBD|Ft!WG#CBXl zCd)h$ye|TVX-aj;%<#N$4NZkCt74XMyj(0-?TE2LjWw(lu=94%ZH5$2*LeIv1YQ`_ zK_NLJ)I+I90^@ncL>z7z#;BIRVDUD){3X`)Wqtl*!&WZGQ=b&qjB)Mj`kpmQCdDvJ z4wP&~>Uq37f!39y8&r5lo?^@7wDBbz55$xJ?%RIgJ2ih!i7*aIPirtR3K-7-MAJg^ zDmYr~syaC|gMvjQ`OaqUM@_@LsqXoQ(&_n3W`1KC^zx0+XKar|-+IYhbr<5_h+3#@ zZI4U@75u;e-Ve*)O#e^EAMLn#D@>^n)cCgR$vW!eFw%N;!aS!rU>cEl{9f4;;xlE2 z1dsf`aw#<9iFPv?%y$h-X2!D2YbdB;SyiFmkNb%dcErT;o?#~?=Q6Nvh7=B(ZmppK zWO0#IN1CHXLaBJ6=4uT6EUefX(!a|h@d>V!OiCP!qQG)eMJ!=7Sa*mPr);qu(>9A4 zCCn7fVFvIe$HTqzfbhr<-yv^OQ2pJqF8>v`15gIIThO@`U+q4fA7L0vS2Qr3`R_C*0r*H_Z)uxhH9~LBer@C|6w)9jF(8 zNoflsxtxZ?P}21i56sDB+0fR>VE1Gkyd#*&;Lob`%4^RKK%KZ(g&5#9_|-w+ zEmqbN3lJj?d|e`$&5*@+F?+Z^_DU$H*swt2i^lH;&WE-8j<2(j@Z(eU#vjQ#^-%|j zZJUN>n{FtI>jKZS?Fbec01im5Juj9R1Aqx~#k4c_>O2aWED9VaF!c<} zGk6_Y%ul$Qb=juSGKH=Zd7E2vh7jE&J3$zpZ$tkkCIi_3@>O)Tjjr0oB!z`0bK%&| zP1V}EQ%zVAM(HJ4 zm5jvpcLIi`dQ*%$Gj7_#^fon2^t8APebl3^tg35!Uc;UncWc@9K^MG~dTg=I5iq#S zml=jFkg&9a^U8-e;Xz9d?aH&``EoqtN&P1*`^pMzkjh-d#UMFfONmR`=p^);G#lDx zw#I{~HR@Dq=p)$&K)wNHq%>4nL|S~*u%l5#v!U!A0kssZ20qsgHx{pInKBN8T-^ z`#=s$Nh6+w#O@nQWsSOMA#tgd&sFUo9H-?6%$Gl(dMmO7%FiA;l>h}ijjYFV z(()hR1qS2k5PdwGPQT@X6!GJ$7o8QQo2Mj!=d%hu4@?@2FO6@%Yg#xgN6%U$f+^Z+ z`GaU$ML!OAEO+`#&AvGWUj#MgtLeIja;l&#wUwZ*KY$U!uq)MqA~WRDxwu45UC=_m zfI)uAzM#2K&ZHv9_rJSluHM~=x{ z$7?#1zwxjLM>rNE0^xF}8$*{w$W|qZqx5+<&X6R<^94bmYvrgUILqbe(#)HNnb!j%P6&RFRXSBdU+J^rjnBjdA+7Th?aUL*da z{_Rkxm5tMNt^MvVBm>uXn@5|D;3pvzXIfAn1t;J)&A-GE5@t`0y+9=gyQl=;&nr!x zxYtqj&a;y9U3C>sH;&O*Oq7LK$eCBnSLz@_9H#3h5@{aga2ysj3&No31ZuMX%;l@q z-4`zjAVw|F&VIU+O@d}Mo3xj61Yur2lckRia+FL%Ll=>WjN_OHLpXtgCO8WS2N*3X zBn7EuW{(UY5>txfB#ywcf^BAaUXW1nEUzS-j3Aq)j0By!EGXTUMNT@RT4V{B&kjA*A*gBq%6~%zR_bR2HIr z;mE>-o}wu!_EZYZ{jW$XRQg)mGAcRemw6sy)eIl;-o7rvMZU-+c_JI5*G69b-@ zL(FzFHp+@L7DeEa4J_2)7)ocJK{H}bnn5jER(d|l>P!6Jq06{wipS!5$iMv)tz3&c>OeRyeBOOW+pGu4Po5+K3W=U&WlaKc_wAD zc~+q=O8UBm{`tvXRE<&bWn`q|@L|`TUJy`~I`77|J8?KY!N+13N@WB6G%{YnV3Lvd z>|tpe*(5sQ9MZkOP@r0h3C^T+T*!;EVgrO^B|43o$%;AOV|P5cj1(x##IRyh_{@w& zs3f}CY}D%zlFfRxNh4sjx`L6zpj2=Y$D>(oVBPX1-MHgkt%3kWWVe!(G+kFw=>EZW zjaAbtnkq3gU8=0Df6b7{uIk^9ig_pct#g0M+fLVys+x(-UQZM3{RGd`B+ z+;atChB!%mOVjk9jSZ$l`;&N-AZt+S1j6|8<))6ek-j=#JEd){<*^cb>rWs5+*&xL z(k6vF&9x1Q_TfX!+WYO0%G}(7@_L1F37BMK0hIZLce5bv>;B%t2>XOc1~g~iiYP=JRam;MW#vXtx4+$eeK#SVoxgX(DLz?12G~%=*)DJxTya zFj||8#xHAFcRG;gA}1rq#oEbKj7p3QF&L7%&bVI!BV5iqE~FTzV=D{V&?y^>CiC*x zsqBRG!hW8}hJ`QLEecLAmyKv70!uE%mDFbJc8yoCf>84Ytln~XAMjj6;C$SFlg$Rr zkOWEN*cEXNO)-nR29$N0y)0|HpCN4zd3Uqap^(eC^yd$L`*}?8FeGCaVa&*RKN}~( zz|e%*J8({h(l-iu+@34izGO>qUO?Or)6vikqtK6&UGvKb+du#iI%B!U^orLoyy#+V z4CIP!sH|^lprTcfSs-Bi>p{mXr}7GM)!T!ckIkV8!OYR60DarorRVVXcDuPT%&hDB z1Y3Tpuc8$I|LwlPD!4@pwqBXwxp(&+z@aME$UGCKzCi6%! zEGp%f2m6d8h5_rP=l5?A>e|@lYt;>~9WB`ZuWts2MPz?;n?sl1yZ06#JpA>q|A1gh zaNA|t%Pfe5RmvAvs{*xR z7~oSqoQCJu8G9vJS`UeA3ltz} zU@EEMOCCm{x-F>mLg25rf>qrd{5qegd+_3CBOK26ub_nw=xTr?9x&li`%e*_X5xkX zD|h61pLZudzz4YlKMCcToEgvOF`NZj=hPVd=T*H6WJAdJ_CqkZd}jY@G_aembKRx^ zpg=(Z%24;f{p`7pU;xy2kPnc?$6zwv1YkZHn+4!t^91j7ozlIaRkwmFy%xNqw}90l zE^s=`uKxu?Is^Xc&EW6)AQXSy?Z7qXnX|~1=RWV)3F?m2A$NFPM-8?tXN{R|rfwc< z2Mc#YeDLa+X2$M+LAX)B#AVlfo)9GtZ!a!sD$rc(iv~Fqx;(26;;nZ>fmS5ME;oG=Tv5RH3 zJEAWRmxmw^66HG%Ap{2O;iB+&X^Jt98ySsZY%;zW@~wt18) zcAC>Oc!6m<-7owWo@8h2K8dlb+e?wQ9w3bA5-Niapt4G}$`Z+ge-54i&1D>C?J%S(|Em zd+U{2NN3PEW2xXN)YI9l%T6Yb!a+WTJjb*69EvDt!VT&dnrf-#sm(n5`ACSrL{!e_ zbIEuTm6SQ=w!w?HBWj&~QQ$cxY&IPMoplUObC)X|vF*n>#tF`F;o0#5%&JNmA0R%5 zKyW16h52dwfhIuo$T(B0GIi{Z;`WhLtkq^I3{G*WVZ|$18RZM#9$~gp3m&F(^R69H zppa9&z;j*8u;am@?sO1Gx)nm3ZCF8a%yGdf1f^(l0z0SDw9*MK*}qk&exi9InaQB8 zc4#S7abw>{mYsGwts^W%Qm=&Qa)9F;xyo_U>Zv3bE$o*<$}72pB&VgUB(^``Qzhzb zC`UhCQj$OakGh=|fOR*UtJQLSy#0?G6mEVRRo;tdTiJC*vRI${7rp z-MUSr!lr+QKa1Lcf)4Wb;RQ|J90cZaYH*hmcuIJu7k)WQ|Hs?G6((INe?5H+LG^}^ zO^8qFcRsx~!9mfYL($|(>A*Z8x{;@pJ#uFXk;`25Gz3)2wxetzST&hwa?E$FZ+R5Qg)7+1!hM zWZ~bwvH)OhNYnzTZrJ!mcZdunm_Ob%>E019!s20HEB zQ=^>r2lTCOSz}>4#$PPhoi!3PI12{>B=CLFj2ymH7K9JNC9U$_i$f{Ae}6EHiD;xC ztq`{y46Og|{U)86{ck#j4r^Mo?lt7TpXC*1!xp;ufV^*DJZ^~&_=7D2S5;( zUODI>4=40_Yqlr9H6KfVVQ}ksNXw-8{tQHF^XcZbo+RD2W_t3AE|ebQ_}W;yJ{#vq z+!V_0!z5#UQd_|0>h1IC!L;6q>C%=--~Z;ar#+fsR(~?FW~9} zN5AE>)2Hjfc+{AkaX9_%8p*V=tgV#oWqk~=3y$yiXlZ*xeTix{^XsJ=bX2jVkm@p| z8Dg?-ahT1arp;WzeO054Ct|21*c9Xn%{En$;XpMzvYd@fi)mj+HjOd+0B}?y0&;~C zsySC?%F`80`3h01h0$o&k}n^%(i0a?*6m#Zo7&n6rAIrp_+5b{gS0o8aXN5Sl8(Ak ztWYl7bTXVhj^nEWMSAkK&MNu4E?mvfRYr4l6Kco*?tFbn6?ht2W_mTMR5J>eBtfFo z<|`fBg)Bv(X2j`>qnlz4xx*4g5thlWpM9c+p5YWYMAj)0F{SUA>Z%r4S=x^lCt-0} z&r}Vg*m!h`B#Dw$q{tXP3lmF0B+I_$z4H zEIn7EaqqNW54ncAQ7aQf^-kZ-pjp&eTf3(IZ>z!;cutxhvWZGnUFujZR4+GGtaj_XilvHU_Od2X@hngqErI{T% H00000K--!s literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 b/previews/PR195/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..36d67487dcf5fbe3dc6d0a6b01cf4d29dc997765 GIT binary patch literal 16272 zcmV;BKX1TyPew8T0RR9106&lb6951J0Hgo_06!c61ONa400000000000000000000 z0000Qf?^woR2(WlNLE2oiv~YURzXsMCE=$kZP2AkJ^U{nMHwYsLGphn z;KmUA!0KX1l(C7g+Ovt$#$yTSR_jHKiCWO14R(YAiZBF9k_2uHMQ6KJl<7SFUn??K zROfmv1Je_=5pjvAqzzAANaZTehgNO8Zdg)$h5~8LOUW#y7ot?goxsa7>Bgt83~BZi4~N@ z31%Hev7gtOzHGR z0WbUiH&^~-bAV{e9?11om^zW%oiG)SgsLKWm!2x!Fs5-z3 zh}Pb;c~{hTMMVtG9UBBDWi1cUw*F^f*?N@>AJ?DrM)qF-d{tCHj5Rb3V5l~<{r z)mLfNHxdtNxBoxFIT9%w8cRaIR|gVd2nZ%H^Aoem)XMFg9uSSy;4OnVB_;y&Zmn}6 zP6}5jQ^`g(c*DVf0zBZvfYc{|lfX&f^b9~Ah!a}96u|Ock*|a_rQyE!@!lJr3jgCR z>rDHl;n{C^?|&_w-Q@4m_9%4~O}YFz1?tb>O!#-1M=3?2#9e5&p{w8$ClChfTfRoC zr>p#1dbsD?*%6qU9o&ZIL{}mJ=uxLWiVhzC-7XptP1P>k%y!b;1 z6b>OuHiTSt5E^WS&|*J?eghDOT!V1KJcOs-LO=i-5&(Mv4gs7D_zK`>fd4@u0YhA{ z&T>Css0L*7GM0b=NCLO7KLsQ(h5!38`Q_flJoxz^TX@T4s?*=PA9nwKn4u!frAEFdb*cY}o0G*~}QLqru+!_$=r27@D;q5MK)?r=ja_sxh8%7(@!Tp4*-6 zi?~e0VZm{DB14;$f0xAGUOiddjAjHFSsxezrc z_v6^yhc8JRg^jiqPPMTxoMKZX#~>l6RVXCZE@q%DkilA@fDbqT4JIH6>d!tLfUYBe zV<7R&EeIs*dXF3iewI1!L<}sk5U z2KyR`Bd-j4$R*N$cH-S}k#S+>L;B*(zwJ2V9A#&v+=Eh;zdLe94=}$J^@R5U`7d4Q ze++kjy?;alrWZj5BtDrtdyC4U=fC)my@)JaAHTXvuKZ&b1=c!& z9KPa-Jo?PkP0xeLZ%Zr_yEE{UzE>WPq2Dg+iPgn^u2D(69M?ZrJ@2Kl^&&Zp-*59} zj0rD~#>bg*R56G9Qxz{voL8{zKn^`ci&0|*{rj&gRt~z@rBV0oj%V45RYRNp-KNU? zPTbgUrI-_IxV!bd?!%-0?u!k=1kavJo>4Fv+x^30lWDEA?z&uT8!~t|F~$0d$km(g zUH@O6eQ>zD(VXt1p?uN3A{AET@tqpIdj#5f`SXcz5FtQ6c*gj4Fn_* z`RB4!*eiM$&Yv9E_|CwiaBiDmjBn^g=-+VZYql2b{S;*%vP{r;TDXQXw;`?JiqkA) ztXxCjt_!$}J5QM0Tq(T&8b%Kx}SDfvS zrMY=JAt5+CFy?@Lj5u+2&1JXTR%K(fcxe6}Gh)b5wW}_=?gm0FLxy29$pT-rJ4W4g zkA-$-v?Qo;$xRz1h&`L4{kzU#Yyub0hztI8g^b~0b;SYJ^ih($917b;%Mr}_HZraV7aI@SL?Mq{YKC|F2Zqziq%{tt{iV0B?sLc~ou* zVhEi0BN;wZIG=iij7>3}+>02CNdirqOFs0|-*^728=vNk0u z=YXjuYioVip}N2OOOy@B9zKI#g>^WFwxfNCtxZ$Q- zZoA{Id+v)CBUYSv2@)kK_0(3+?DpJoFNAw##A^?{#XuSvvgF8PQn1Hfe`~i-hfZCL znJ{I>oCQl(#*CXVY05*>W~5jzRho1eGG*DM4iy@7q)_z1JMaDGx}`_2KKp6VWXOoM zPg*)&I_Z>`P8+bwYHM(P*47nq#i%!ioN?7PK79G{=i!^aAtm!%xk(l!+b?wk0CSDrEyMTD@GV0lmFzrPT4YuGP}Sv#T3v z1#G9TwWWjqtbV=p0;%bGqx3Pl`J4G7Bm^I1dyD*H*sL>v8jU;0Vt(6XoPBT8dY$He zhsgCVrtmZ4HTxuY2GL*poNtGej2yj0qG`;>bZLRj#_4oiW-d#nwox=PQ&UlrVaizT z_u*#ANk6XG(hN>VE`&_}9PoGF;8a>MwPa!_LOfPJDf?78=HFWd%J1wQ^$Hzf<-58awSx>M@ zHqnZHvNY)wTEh5v0JVFWpd?xmo?bUW#U{0JjIl{=f{kUaAI}sg5Yiy8Q?#EGsv*wo0u@7;)njq6lTniHpU>2AcH04I_gWil~}tjTT)qR1|dF8mPW>ERZti$xD*&j zX6W|yH?l`q9EWaQyJZe*zHB8Jk*9vkumoEEQc6YilsgEKrzIk(WmF+ldM2-e@bXm+ zx5tR1hSFTg;&wNA)&R*GxISUA)S#%(`Qg-1T6~fkrB@?MBk9*SiH?;@Pt!I}hSv6p zdp%TE*!XL1qcwhiR@?dhRr$+#YCfKecICRZ=e@rxFPFE@bN;*MPY;}cbibkR_VYb` zdlo0}{^+c8)r{(M!}1$ zYbI(dB+gwZQbRShlN&RbIu_!UTAwymVh0ab;u31z`K&2)_+TaW z;kCABH|IJJXJk5`YtGBgYRYpyo0ZY~@S1WVT)t^EA?b3%@QLG*%gYN^hlDgKg~;P4 zhZ_cR_~AiCZ>oENR%eIb>&BhYOGgL)PuR9irB=i&?QHaa-O(|A@9wF+ER!zd)8reS z`7g)Inzo3P|Cj8%eu~^}VgkNOTjsWv;rsh5u!XH#vv&*P2>ZWid`D7UpXGs#mLq1H z1XV;pRP2^`uOU&T$54GjR76!!P_0$t$s)@Gt(K%}2Wh8OZAlyV27@oNA)`&DsPTP9PtFoZi zF{P9h+;67nl^dLzRU75yRNz-wn+-mD_MV9R2N=p$ZNo%m_JQ!oq0PxBLx|eud_kqN zTMe|<6=k)>i6@qMc{`{-xU93Iz?lMjet!2z2{Ko|W5--w33BvEA!)3sK9z8F4mV@0 zvo}g<$Xt7_FxP3QEg>Cl2PWf7-vp<74Jw$Lp*4g-5*}Z|N@? z$VyE=(7AYcu`}*KdS2;3e~aLG;i2=_%`^MGKJPlX{^^;V;yA*^qfBm{wyfW}Qi2bw zx>*)ZP8Mh;GQIcX16q0)6ZF9R*@MkSo57&Q{z|l#HSa2~La0@sA>R1{eMjXjZpzBr z-AmC3-)wMv=NA+icCKUCFiurkc3;w$FQEKiNV!T`>*#8lS?i_h73O<*3G&zdteyPW zi-Ll60zi@EOiM`(7ylyzI>d?LsmuADES zvSxO5lj@RTh;)$4pWF^4$$U=UhlG7g4c|k2n)%9+C(r*-?6yLsb)$Yq*AM zxQ1))H45hx28E)GQJO|m8h?+OTA~FE6+h==Ocn74#)|kU=8AY}1d13t5&#*r8gC@G zax1rTE4OlM)tXLgZ86xf)`ySH);bhMin3I5Yqwoww$d({U^h=SP`nFC;G(@?9H1uh zkbW$sozd=PstWRJg&qr^>|97jHvVemG20bhNp^+jc9Y$|IMA)x722u%=*fwSc0kCg zewP8yWXQkO$UYcnA-y)wy~J%5UnQMl`I3~vOXjDbR2Nc^izv#*=Q>slfWmO{(n!12yGVn zCH#K6PkD@1mAiGPT1T{6ac`J+e@%~h7Y13?voheQ3~8=Lb{~$_hlh@J)*%+Ua#W9|4 zg#(qyiW;V?I=B0xoi?}^8`sK!IT>=6M?97_Wyrd+WTL-9o2ecNzaRGy8owba?vzF6 z*<)M2TE3K3dsPN1k)gI!Bgtb~Gm)&DBqa8MPFLfPGJyq*05B^84BMb{vU(#tUYNIN-&p$-#I{=sUFX8Xzi3zlZhN#@6zbZfi)F z&M2Vz2L-?i5I&N1jSEnE2}MfWe>R?rey7=5;+(Filr<$pixx5F7pg~$I=QM}FC^9* z{2yL*&;M|-*kbEiDJt3CtJ$FzHLsUDD`blu0c9mVzm!3-6%-T{6tqJFh&uIu^4O%sb6wXsEQ~kC}@Y03n8b)5L5Eto2R7Xqr&k& zERdWKYp4rC_Kl6_F4;t(*u*APK`*`l`zn6jri<5#nCGyW7H`wgL`|s}>>Nkp>dYc` z1btRf>2k9Kf*U55!5^H!ahTzOl0{*B_bEt!g5}iJ#y*oT4G|dIRDnJ#p6F9D41N%Z zxEI=!bs0Cku(LNHUN?@Q$DPP8lGNmIw+aci*jM9iR!KY{@qnb)+^~*r2_7jK_{O=#(Um}D>eg+2Flp4nLQG`+Hk+id z)hRQzrP1^}Yh~A*mRs{k{!o+)ucVdkaS0iJ=sL21HE@qwvqy@B}@wSd~rY@N1&b&=IOov=3&uhAQcW5nGV zZ%fs)gM(Vm3Pu5AFQ<~zJqvh7+^N}8WHh-{CP}77X0J@OtU%6HE=O*sT!q}Qyu2V= z@UDEbe2IKFlPpXSzRcXrEN6}@D2i+fk&4-hO^QbqTNPg^NlFZoT%~BG3Z=i5s+1O3 zs8laqz)E1%vWi$WtS8EdOeeD`$EY-@6st6;JXggOT1AdR<$qn=XdU&fw5qGVx>9O< zna-1h)TTFAWA)Tt)^D%xjlCb+>8H?k$K6w#8MAEONuJu_Qdh*T(b}U`rgdNIn@&NO ztb0^DQ@c_7uy(Wd3muZ)pwHEb(ka*N(XH2gs)rf1Mw?!=UZvh%y>h*74r0=q7IKm} zb(|xdE1Zv!(vgXg59?>^-_!qOPBGYEu+N~@V8K9axXO}cdDgJV@R?Dt(GBC}(ak3Q zCXY?i%p%Oa%@3P5Tl83TSbR-nB)(<2%hC&A7XYtb!LyG_Xd4E)D=ZD4l`9YHD|JtA;~4Xkf% zOnS9_ob?>iJ%qTySUtY7mm3w5kh{bc-2(TBYiL0TZ&aKHynJvH3Kg#=-0fi}ZfQ;U z5#rW?1@6G83dZs*%d?xh;-S+lKsZhzX&OH;{#b=PkN{?~W}7wZhp~@)V4oL)$POdF zh5ehMBOU603S90^U0XXWaE=j3IE7yg8mE(l^E&0KeCdds4#*)?wYLP-$gcCp>UM&A z(LMtPu@=m!bSvE>cZIj^0ynVxqq(6kHL#8SD)?q%tbC5*=(URQVfG_yc^3O2)%Xc^B3U_`0iv0m z{b6brSUZ{4p=Toy-cw^8x>SQbG1OtNh9wBbXOFxtU+@-qJA}3mfsr{ZsC^Dkc85KJ zHH^vPkm*AOlMMwEN>d*xf`nhZLb5@jxnZZTEri&xi^{Hkx~_HIncItfGyK7I1a#!FbwI>&L|VuaawArr zr-tnHH^XL)c3M7v$kziI;iTRaZAy6jS-OUQt|i7%pVsURPG5ui^_y10zH_jp6A+`< zmyUz%Fd7?C6QM8(P4taIW4n-pD%$}FuUawNhb*IRoEo_8kzV8OMSIW;Fq~O=I5JKyUHN5jJTf9!6UW$@je8p@`DR(Ar zD%r+O(O@5>pLW=UJG2V(7WlfM7`V6-5a)uE9mdqa-d5yU8`uzyn!Go4$BFeX)?xeQ zhmj#y;D(3V#LoFBTE^rCY!Br6-XU;gE~tn2y=^JPAnL6UgdIlt%!}OrwaKp@7ebB0 zLk>rVi0rr5zBGjhju5PJP8{0WqAA+(y+9{Gu*`3AWA05>ArJ%@^;s+e8Z^$0%-(;_ zAH?T@H7-Ovf)QoV6#irWO#gg5V=Oz`B-*Is2D8C15l7F3?%@tD)hiGV9-E-xwMjK2JNglD2d~O2I2`y@Ed@6v0pMW! z|7e`9m^W~9UZlw6la=9FO(b60_sR%3K4)kDc*?jf&cB9%o8uyws_WN2`2BD))Qq#e z=E?aMc3Bs$!xBULZwiqsBTx3(Aza1D*Vv@VX(7MTHN0{ex%m@EU3>$+8bTGhG1U~h znbCcCC4#hQ;pA{Z)m+wAC^#J4n4my7IN>P}^%1+v#DuE5tbL_GIJhuEfpFl_ih{#E zjf+;l5DyG&C&A=vsRD+u;N9ElFfhKd8Q5$#*)+ujB}s6~*E5QWtX6RE`Y<{TiFScV zN8(nKM(qS&2a|~;L28aYU_`3)+Fgb9c%SL^pj@ z9_TL%tH|!lqwOfO{8sL**gq!zxFa4*vv@sYrH`%}st^6#Dj!|-y#D(y%_)t8>i(y% zpYp)HpJ^2!PCuK5>(2}zbvuO_3%%xu=@Z7p1#b+jm5VR?MPuQ(w%*k@%M~DA$S3&{ zKEV45`h$g}ts|?}HPM3bT-MMXU;$-Sl{eHX%)4eN)We4O#em-=AVpaqKMMv>vYl!& zXum+V)|&j%BL_@Rs$)UG^y=J|D`BPFLy7h9n$A>Dm8%7e5cl|A5Z|TXJQS3R&J$;1ypU7 zJ}VV9;HeX^2Lqj25HSgeo&%Y=91L1d=g#;c5eKrg?`*1RH_I@N!V_ zB$#cHrB)Qg*>DNZGu2k45!Ikwl7fm{9!X9~iJ7^h8f3AHnYEtVbvh}=WCA9< z*@>oTbI~ZkpQm?`A>8M|6G*tqW;Am>o?sCq{xAw@GL>f|FXq)e%d=5tCXHZlj^{X8 zM3g2t<@-$tlp+t-CgX620Jxf_({XI#^|KBhI#=fT*@YbJ`o=%tRF+h*4?B~Dg^Z5MO)y7wN++>{b_R!8Qax@}&VO*S(xuye(Mm+b_taRUdoFkHJ zjqv_S3OP`dzRdKrR~{1gb7USuZbz$4i;c}NYHxyjG^L{+3?%^{0^uT}4@)-rnjPvJ zP9cRSIgu*F;S2b;lPj(kpyX>%cH?~TaB?s`D8K$4muRY)b4?OB)f}WDSAfZfy8`c<9ypbI;@IhAu1xd6k2i%OCI_k7r_^1~!y8-tvFE1RpQl;&@W$S!i{K zDm+tTvuQ?_)f)zWyi_mh^(xNOYPw*!O`br6u@IV|FXsl-PE}e9d{Fy5VZ3jSONL-# z_$r*m6X|CpB4C+t`pf&;@R*nKsS(C_+pR_?Upe1RfzsIgvL_>l1uRqRZskRZ8X>iI zs|E347bTst&7KAumw>rg-LNAfQOI(BH#Cht`9*b!sr!x4$_FMTR4;O&sngDm$kGPc zYS}IfWE)q|6uRN)pX{_C6<+SPc%5Hk0rfS*k;clA=XgEr`OK;DoVpzpa*H)a6&a|E z8fBz)cBE2cNtkNU$V93fEbuC%DYM<^!$7f=Q9Z=%WrtdNr3b7zBZDID;iwEkt6=c8 z$bnUE!%Oi4zrr^E)q3oXj9-=!gB>=vIL$`RZV2smM+6$5QqxiCv{aqJBDpz^bG)Bd za&CM7wR6+`mDC27!E>2BMXXQ)x_ve2p9}^oZNcRQNnQt4-JKVf|J?b9wYQ?4z^<4c-Z3&G#;)42iyr0wSG~1Dw(o8`cJU8h?iYI! z@;xK6#~9^6{`V#yS~%D};y=B)iol|bLc}SVcsfO2X%8^WN(1MlN}Cd9Tm+$A4zhr# z16|qO4up@cm2er-kEFoC+-?p`j@>T9?u$7#o?{3^(+snUd-~WIzI8CdyV4qEmwSuq^HAFCQD5A zz?hOL!8SIpL?g(nJEH<6QqKg7?*tn;-nHb9OiT_5^LDoNGIf4tkQtN2;Q|VqzA*0T z%xv4^+|EHZSn6!~dXXJ&C}i94tZhYGI5LXvnMX(}Nwv0&6jjrWNYkD%LPa4EWmUJF zmG*lRMqMaI(OD5nL+tz+smZtm>%B%4&2umbozWg{W%)-@=p>(trqNFS-t^rE85dF+ zX5787qT^ru_Wgkd?UY^A^=3UP@fHeQ85sWwqRtgVNR#>ajh>|kir3LYLVyHh@_ z>E$WZnl)omI?Uv>nfd-z#VttqGvb)}jR$Y3n~`wyDvktY5VZLU@dt9bIFn8?1FtzM zl}*A&fIpZ1Y`Vuv)f3(61X`eN596_H;cD(9sz++Y?9H~935Z^}lc$U0v05`*WOej` z+0n=n`vHkfL^p8$i6Z`$p78=K`n}_*vxYgp!f8Ivfd2EGZ&I$0<7l>q2A@G|CT@}g z`cS;X1iTnNL3gh{o3i`;bF?Sj;geA34K(1xN7!TR^wGZAmrlmJ+ZY+2UEY~QuL^Bb zzKZzR#kh>0Jiv^2{fVQs%F9jCg5dM!)HkUo-Zx1s)`FyJiAW!odQ@Y3d==X~#LK?+ zHmdP$d;jehX0lJL6*Wgjf>tz}EnH8g_p+Y}5gkdV-x6SyUZo=ra%`k%O(QaaCa3Gz zPM-Vr|}a99{)tnK6ay{F z|CR3SlV)G{pGWXEMm0E;ritrc|L2o4u+Is6$s;1JpsVoVg9uq(>Im&@naBkKHSFo( zriRLRBtO_|%&R*E>QNzt`m*vtoVKC!G(wIWNEW z_WEN#!=L>{Au>o4MYZAXf1dgqK)yR15I(L7Fl#Jrp>vgyBVD{m@9O53Hp#@#d9cT} zcXYlvbA1Fed)x2oe4$G-8Pc^yt1@ILt2kPe-Fh>7v{H7Yt2)y3Xd^a<_5UfH>A}Ggwyp{MO4+g>_%;%M~{=M;&GmUESXTL zja!+VpJRB@#G&ii$N-}PvP-1m26o##E%D!)lxuxk=*y7+>zrUSos>{ZZ-mcQIkO#d z)cL;FFQC*8O{gqgwNgv~HAqbl)ZVa?T?0iX18_pP@UTRJe7OSe#0NHw*yg`l2kA)p z|@1EPggU$a2BsY1Gi9J?$ax)jPM-NI$?gZVA4v%D) z%oX-;2tkI8^_oL3=0i^{KSO1A68pSm9tKWVCa~LBPO8aV<`uoopU6u2PVe%TVt(Y2 zT#vX*nmw-^dvx!zGf0|M`7cvi3^O3Hs8%p2P-5dPevxtk-^h3KEqqg9<8RK~oZoZz zda1eJA8x#vvEKH%4jtRKy?EcQ2^#6|p_9S417)Xn?k_o8QvX1N(WiA#=qaHPLq)#` z^G3Uw1~1}@S;usN9Mu06BASx%R2qEj-qv!P4F%PZP&r`V_hP(Ku`aZdEGxS{dV4eL zeA~BiE#scf$_~lsoKzE=@9xh&Y~3hg&sF_b_UtIVo(8I2r14Mps}=kxJ!7Kg|J~>p zH9ztY!FvMk}FvDDwum$*mGLC z>kCQbOwfxc^9*yd9HEZ2`4;k-m-C=T+2w89hzRg<*9HQCLMK9^A2Y2OE}jf8E7;UkW!`O5%LHv#LZxI=5)cMor#3U zFnUEfg@&T}kj$C^MlBAb)1C3u9M%d4BLT)e?&rNC#E{GxqwCC3+UT6cItu2* z>_ny@NDy#=yOt@DiTQjU@@EiIJ|ijC8|_IYKzYqFn-bd5Y{W8MuPq#)kh#}QRh6|| z1EI{pMTrJ0WgH{~f(t5b^Itu|(9s%T5fEAzmC#9f)plI1&mI%l_#TxoZhU{pjV;)dSy`8q6|*;OF6UW%Zl#qaZMnrl8xwC8yQ|3x!C$U?RCs;xd`F zDf$4*)nPUt>N~r?qM~Xffp(ipiydz|z>M=q*NcdNX`FPx?2t%XRp2G~R!z~fil{06 z4=rrt;57VaiYVq7#}SnqGe042f3*%o~1-09F6^l?8rllmM``JZ_aF7_32sFPm9 zHP|q{B_FKC*-5z{R~^fSng33j>w1kwf`W&YCuxVVbAY9hq(#S5#HD5#S%`e;*cmBM zT%zfCygUxhv0NjMP>ap$PV7T18HH})LLjl=OSuL!G6<@5Z1Z1jfpr+>4xueFn<6>I?7(d+YwyLyDSjl=V73%cj<5C|@&uD+bvpTf*c z`~j+4NpA8iMo+}%Xh!mDuaz=~BIL~N_&oAy57T+*Y+mY_`5%|t`JlHo&l5zA>P_cg z&VCLI=}7g)-yPtWVdU4u ze;fb)BLL(o_+{GF@_*B#Di824zu@Hiqik{e4k|s-XlNCo#W{Rv>|X9Sel@N`^So_m zF4}!spZY6rOjP9;FzHxe*qr6SP3Z~@v0Mqwli4uuVqFV9E|TkrAOgKY^LCW_8yXcT zsthy0cB&LxIBw{eXlO-FD){lCvkBhQzd8YW5hechhWBx`#@^bXuO2xjiwnjZ9Pd4L zAQY299cPz@*3`jq##PRCc*aaSuC|lsCXWeJC)y~x9``!1tC%{>9M+5`{dM-QHiT{O zXlERYO*_vXqd;+ch`%$f6ocen7l{}0Dn8Cv@o_#D&CYBPsC+8y*CXj{ga1fUR6ZU{ zfk?DK7LrC^s~)( z<;<-%muvjTv^fwx7-8Rcr7vxR3oc~NW9HMShHMX35JIu=XG1FVC4=1?I?~m{bmD`MohpgL769K{TEEhWCaG_> zJ=EKv8tP-gZuZnKf2fD_UOYYx+wURK1>Du$=it>VOy86~eH{z?AwV}S#}m1ev4K&9 zLrvCFI+)(qi;yJfVpEL=`r>3Z8*IAftW6PD2J|!_=8Yt1ObVseq#NbTsm6%5RH}=L zGJ=>Gty-}qCCH{dD9t|eQ2InzT?l&^wU@)9f-LUv#wd#UO@^{KN zDh;u&uI>MX^-KGLXrg^m+K0|i+-Ube$xF7S#f z!jnZCf5tyIY}meI%fG2N?mAG>e15R>^r5rB7P;<>c>_P66=B~`88_WlcUD)qgO+k> zY*>QQ!p(@vC~p|7bx@Wd`Q$_n$CoK0bRg!lR;w+cN+LwjuzZw^!+JLotlpe%b=XjEf~O+|tuc-T?HL2piL*XVOC z$F4G)XNjZB<2qySR+$fpOu6vhvb6JQO7##wtu2W+IrZ&gmuXD$bG>Nnl=i|PYr1Uu z#L|i(KU8K>wQrzqc$Q~^fu{FhLucE_<^ds+l3>%(CixB>OTW6b7r8_2il~TNxkF96 z?hDt8jRGl?OJAO!n%x-R3}Jx~Uqd|yZCrKRvDoenTD%7sDxM3-d^ov^S5jOrIH z%=)o-O>mixieKDne^pMq6Wtu-+KL}+l6t_7om6~!Jta1aTJrwGFmD%D|u3s zQZU$@nCNLdKpS^{Yqkx$OtD5E;W)1AWO$@r&L;R4L$YV|27@j_XOO?zXdxzRwR)bl za6w6d56xr}PRJ_QC;x$b!J(8r2i8d&2qgtn%Vw}rA_0=U1Uy^upkkG51z%RMvJZl) zgrGxmK#}YPKMEbn+0$WmZJU3EsN(+>sf%NjDQK0&Fd^%KRY)+LJs0+^^`PSMiUSqQ zOBFg`Sh%R#lrWr@e6U#SYARKCtLcFr&YrRC1a1BWUt^P=#HpuU&I=A_-2reBMhYZc zk>EjKd){5KHXVDRGbaxgA2@OTGF)`&%uIz_tugIC8Znq1bjWm)lf=B}N2Q1h8}wC$ zBWzk$`i2K_?hu3W7^#WRjf^G@p<2hF=cMD~eRpOukbV zB4Oml-GH3^Vzs-#v|}+bDS1SH!D`zMrlv(%Vot_#6fX^C8(zvwhnU}$;*9eKVeQNM z+=uTzuVk=#gr5h`oTL){L)>U`tM$Z#epE{$>uaTyI`-jEJ?dCRo z(Wbq$KtPG-r8%27$*4JR|z`xYkS_tkfM(dZb&Zo(MU21GKCXj@U z{p+8%M($u2$amLZP}L>~ zNqrgn@0KJ+#wSMwy1Eio&QnSG1v$CSP|ffB%ncs!S8L!D({dpcpR zo%aeLzh#oP6|RP>HbR`h{b7iCQb2}PuIJ(G2eDCN2`rOLeK^wuXWX)#TVj}W6Ny+X zQ^-c@nR2;Q?96hEE6wbZY(ip^B8M1B28mO%-%wu;HA|S6Jmt!7eKoxCn&Wcu=a0MT z4u-+IV(P>M@@=x4o|ss=yErlL!>n9HVd-paWK~_3j)_`J`C32JtafU)JOueXsOjOz z)Fcb4%%o13mptX}|4<#0&{<&2^F|D&X~Mf^>%=t<-mwU?9sPtHv3Wv>YAv=SzY#2q zj$M9I{Q@>Y0XK4VW9+avBgp~&p?u=H-kGuk2WT-5u+bn3#bxuo$oCEQ(y|_nrgQ{C zir($wqQo|u?!UW+=?_s7rE)(R!Qxo%cLXqeQV3vTEs$rYuW{JIeGp(^81&89i1I^> zxU3OZHCQRPXJ8^B6tydN3-<7ZBv&L6@D)mhLZwlq@Pc9+^YZy~)r;!GhmIXRdaStk zaNG@O)*SaB)fDF+Ce5j%>UYUz-8r~0tJSmkjrQsPd1JMZrI*L%wC~)?`&YR>8Pr&` z%FbRI7!woh=xEH4RlJd$;&!0}3NuL~!BhblgT9Kxk~vAr`&-pt-_9b%avm0tm!Bfb zBFzS4YEG6Ns#&WgT+Q2H{Rj$D>~5L5hO}fx-YV{LdzSkVv86!wPj>I#vu(?cojbPg z*s*Q%wjJfNE?aOH{()#6RG&RpQCV40b14wSOuAbnzW^s(==qG0jrUDZ$j5f*+f0UW z1Gq&Ar8v(qtrJYjKTloq%_Od;{zJnLG?yt=N(7qNSc};h855ClaL|JuxNsK`?_2PS z_l{k-aPgw^@4CaSOjf&*eKqYWaA{N&f+j&@OCO(RIY~ks3?S@;CMp9^7@rOL;Xm)N z5n`*jc!{RIL{eI#PXdMzFqiyLH3R}CtK$F-f@!W1lbCA6(nbt67aVEmh(OHo;=*=) zf+@u-l^4q{mNRiktRSp3f2j4&|Ge?Tg5Q7Y@L-wfxjVgApI3kuwvyqYC!GDmVlp#% zaFL7j@^v?-v*`FpQm)ZxvBQ<@HS z%`rjS&8Xlkx|!3RgRprm%fn#8+FWo#ceufDkMaU_+Ks6|UJ7@FH(WdkNhPe$M~_an z(SXra15hc9N9e^slAzz9U)r27bp!fND}L4TFx?33orzWcv%9x%2DG6*f*Zkwz2wEY zUt(@#s^b*;DolQ4QFIdf#_ITNd|N$k;RrPxtQEeMS+*u$rE)wcT*X~oXI}3QlX2P#%B23CU=G2JEaX;G60j z#MTaladW-0m@FY|3ZEi&OiY@|37JEB;LK?;PH;JWYMIrknKwWL@8)A%2 zECY`Rs3!=+`1vRBA=r!UpzIY{1xyyn-5PtWm;l!e-koYQ?p%zPjmhOI)niAFAy@>u z2WRmDA3E0pL{0dZl8~}kV^BjnHh{YU`>tNVmq!rpUb7K8StMIT(p24~77Qd)v}-G1 zAgB=-C=AjJjBq85xSK)3&cqfHsDyqoL;+SfFchI{wV?!A?gk6p_!`PEQ(&lIkvc;a zs)h_TI2mbB=XY~NBebCjU9Sx`2Kj1eAyW-Q8Q}=Ea$*?9Fp{ES0zK(|WlW(a3!G%iQY=S`B+2ryS+QWr4x4`$2_LJQ z40#gdU=zrZX}tt-9>2Y#e0h>(%8~1w4-`XP9V1qn1isBmQajCdwhc2DFV>2SmGY)# zs^zwt?2~10Aj0)QgZQ13O&3A&To{$?FB<#Mo?dt7J4D zBq4Q_E~(c$gQ@8jbXFu|JccJly}q@5X8w3hSYACVKJItEbT7B7<#$E;>zXH1ns{GN z_ZbTlW{flTtmR?za)1Bhr23kU-Z}O8!Jp_YzUFgf5nII}gIvj{=qppYPG`WFAJq7z G0RR9|PM1{x literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/inter-roman-greek.BBVDIX6e.woff2 b/previews/PR195/assets/inter-roman-greek.BBVDIX6e.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2bed1e85e8b20cb3903206a6cace251c52bdd8c3 GIT binary patch literal 29920 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 literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 b/previews/PR195/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9a8d1e2b5ef22b97801781478d477685dd6119f3 GIT binary patch literal 110160 zcmV)XK&`)bPew8T0RR910j^L06951J1C_)80j=5q1ONa400000000000000000000 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 literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/inter-roman-latin.Di8DUHzh.woff2 b/previews/PR195/assets/inter-roman-latin.Di8DUHzh.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..07d3c53aef14e7e3aec6b11684395f2833e0b3d5 GIT binary patch literal 67792 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 IZR%D40KZ@npa1{> literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/inter-roman-vietnamese.BjW4sHH5.woff2 b/previews/PR195/assets/inter-roman-vietnamese.BjW4sHH5.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..57bdc22ae88555c6217307e4064a642f83d642b1 GIT binary patch literal 14072 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 literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/introduction.md.D8tkvOeC.js b/previews/PR195/assets/introduction.md.D8tkvOeC.js new file mode 100644 index 000000000..b7a4a493c --- /dev/null +++ b/previews/PR195/assets/introduction.md.D8tkvOeC.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,a7 as o}from"./chunks/framework.BjTE4JnT.js";const f=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"introduction.md","filePath":"introduction.md","lastUpdated":null}'),i={name:"introduction.md"},r=o('

GeometryOps.jl is a package for geometric calculations on (primarily 2D) geometries.

The driving idea behind this package is to unify all the disparate packages for geometric calculations in Julia, and make them GeoInterface.jl-compatible. We seem to be focusing primarily on 2/2.5D geometries for now.

Most of the usecases are driven by GIS and similar Earth data workflows, so this might be a bit specialized towards that, but methods should always be general to any coordinate space.

We welcome contributions, either as pull requests or discussion on issues!

Main concepts

The apply paradigm

Note

See the Primitive Functions page for more information on this.

The apply function allows you to decompose a given collection of geometries down to a certain level, and then operate on it.

Functionally, it's similar to map in the way you apply it to geometries.

apply and applyreduce take any geometry, vector of geometries, collection of geometries, or table (like Shapefile.Table, DataFrame, or GeoTable)!

What's this GeoInterface.Wrapper thing?

Write a comment about GeoInterface.Wrapper and why it helps in type stability to guarantee a particular return type.

',13),n=[r];function c(s,p,l,d,h,m){return t(),a("div",null,n)}const g=e(i,[["render",c]]);export{f as __pageData,g as default}; diff --git a/previews/PR195/assets/introduction.md.D8tkvOeC.lean.js b/previews/PR195/assets/introduction.md.D8tkvOeC.lean.js new file mode 100644 index 000000000..0ff121574 --- /dev/null +++ b/previews/PR195/assets/introduction.md.D8tkvOeC.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,a7 as o}from"./chunks/framework.BjTE4JnT.js";const f=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"introduction.md","filePath":"introduction.md","lastUpdated":null}'),i={name:"introduction.md"},r=o("",13),n=[r];function c(s,p,l,d,h,m){return t(),a("div",null,n)}const g=e(i,[["render",c]]);export{f as __pageData,g as default}; diff --git a/previews/PR195/assets/kfdrove.Dab1-ETk.png b/previews/PR195/assets/kfdrove.Dab1-ETk.png new file mode 100644 index 0000000000000000000000000000000000000000..7c32623e0e0fff839fabf61e59a4a1ccaecb2950 GIT binary patch literal 76849 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 literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/kivzwfa.Danh069g.png b/previews/PR195/assets/kivzwfa.Danh069g.png new file mode 100644 index 0000000000000000000000000000000000000000..27133e49c0598a98b595ba5937283e7edaa6d759 GIT binary patch literal 191571 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

2=+*Xx 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%0D152i5FFC5uUR4T>;-8^aHDQ&8F)9Pp9tG?sYN+S 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 literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/kvmquaf.CG4dr3Lx.png b/previews/PR195/assets/kvmquaf.CG4dr3Lx.png new file mode 100644 index 0000000000000000000000000000000000000000..0acd7653aca45ef80053c53766b4b374adf2976f GIT binary patch literal 66660 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 Y9i*)|{lw6E;9jMItg=iI;_cV}0|n0>+W-In literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/kvptgxo.BOOG5oTW.png b/previews/PR195/assets/kvptgxo.BOOG5oTW.png new file mode 100644 index 0000000000000000000000000000000000000000..fd0dcd164cc4212e05132cd688ff710939e34439 GIT binary patch literal 41528 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 Hl+XkKP4B)p literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/kwhpuoi.DwqDxlAG.png b/previews/PR195/assets/kwhpuoi.DwqDxlAG.png new file mode 100644 index 0000000000000000000000000000000000000000..2ab57171716eeccaedfeea0f4e1b5f32c0c65419 GIT binary patch literal 200861 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

CdBW`x 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

o4SG6I}gy1Uy^3 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 OJviFUu}!t{-1ToOzwJT* literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/kxmqmyj.mCtKcWOr.png b/previews/PR195/assets/kxmqmyj.mCtKcWOr.png new file mode 100644 index 0000000000000000000000000000000000000000..c76dcbee90307e36df372dd826b02c8748cf98ec GIT binary patch literal 83901 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 z[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

6f(YRMb*ZxRMgb)uuymK z9~9DiA9|k)(vyK~aM;XtI#6!c-_|?Kl;2tRSP?`(B}K$gSXh|ZW4o8$-hQz~9UUE7 zGDl!471&DQCWDy!Gq8%EV%d*o+h!kLG!;3Y#xK1~Dr`Z+p34?h&QCQo zdcQsX1i1I9LwjZAx5%%W+`|9KPfUt|G&w~t{^DCZp42qX#I?3{|H(&=z>|G6z&nju z_d$s__QUeE)5({6dHZV{-U0spc;LxQ%m!}vH}9Ex8592GgAA;tMHd%$TSbIdveaW< z8Bz;4e*pZ3r2#uM4(9*Y>nlLy)%fl7_nI1`8y_ace%e~=Fvxj=(tEVntS<2A1-i*~ zv&wl4dd^4}cV>a6=Fl?W3?PADj+QJ{Vf(B05M@0uj5v};MuRmBx!G&XTJzJfPT*M^Q)5}IsjNw8&PxCsT)KFLbeMA z)$oV_v_$im01*27EH;!EEUtYY(0)|BBPmJnX(X7vRsiCN>3He=cO2>N8>T;=g-SRL zSMKF<2@CH72JdDZz;*%kLvjePWmD(1W(Yaja0^*8CM~_BoV|@AY*NLcEkdS(PE)e( zgY6KyIKWo{#ORw}C$~(=$SC2xZUkt^=h1|eP+MEu>M3vVKCspR!xo>+gPResiHMLo zJ)9Rw>8)(6uRk8M%bdA;X@rZ1zp<$o|{WC1$L3vV2yYKfUKW9 z=}H!M>gw(WaN_sSkl*4pvp;~Pmpwb)ZE0x%M1!!{9!M`>yP^nslbU*1{#HHMqr&*k z-|&*;<8wRwJFBFm1md1K67C=`-_-eu;~Xw9S3cIWQh*7o)-Oye2Y zD3S5s%N?|r0>Y$#3z5JYzbr^6$?P7h^C|Ivjrjgucr3H5>;?D`jZ@j#&AKgK9v+v0 z=~?$l;C<0dxGjwA?c2?}bQj^@u2J2KPz8+Hyg~?J0u$Vo?G4DpP1*esm_==lO&tJi zKq0#dElkYfwlQ9L16vjmQBtzCR?;|aLx7q4ec#qq2T`>Wvy?su%O~OhKMd53TUuMEz%O^#Ga% zphF61a04rH>6f`+M)AMJxzhQG`2VX__wV;!1>efK(_lgCP$ipBEJUi}Yg C<~w%) literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/mifutmo.CgiryX2p.png b/previews/PR195/assets/mifutmo.CgiryX2p.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf01fb215f2661df913f4ee9a962e601431555d GIT binary patch literal 13822 zcmeHuc|4SD`}Zi~CQFMH*-|vOP|9xXONJ1#BqmArealX?-%?SsjuIkE_T3ak$S$%@ z_H|6wv5om1<9VO=_x$tx@q7Px?)!b;`|OYLnJ(9PUgvpS$MIbb5A}65nHf155eNjc z)3L%k9{|^HPsLl>c5ogjA#Uc522-|Y;-$uekkbni`Ag@ zMdHH)A81dUHl;h5vgeJOV@BC)C+8QBJ70Sg?ITKp@)Ur=2D5EB_4 z^`2H{Kp@y+_-GLb2K1kJdD;d~3d2qDxWFh_Chd!sTT#Q|l`6Yy6OJHw8&w{EWMZ*9 z{B}o;ZJ0`t_gqhmfx5bS4Skr(_{lvva}fdT7W{wqqx{Rh8Xce=dBiTPD@P~_AXb;I z+C(Ytth1Y3bN@ug5jZZu8+XCJlQsBPczSwzYaAR$%F!2-0ih)#SBvb%>LXpN7Bz$& zbF0_-2V8MM6kcr5T3?!WZ19vEexr@D-PY99l&UBIN4bbx;k#Ds@SRM;<2U17gXYZ3 zIgcv@uD{iaR#^YUnroUr8b;4!TIoah!hzZDHq=|4?npJfM~6V17Np~hxOC~#Tu;tc zX~RjT&GuD zS5{S36^!0!)C+$8{!=2{PhtIMxSsst=Oo`@Bm>Q~PD{&7$v~$_>07Dci^$a$g8WFt zg#e#;3E>xqKh2S79=u`GL#L&sh3{j|+D_`>pv>DUY9o_Eb~Xew{*az-&rn#+j4`-$ zsb#VyA*%Bo!tJRq{*qxvdS2iu?v+sz+_cvsc4xk=vywPzFOHB_C3{%ns(xpMbt z1fdinvA(`Ort{ZG9V<%q#^(o}ot-hyg(DDNPbMcsqTTAoaBE!n8<--y?EkiLP~NTypN!kY4` zd+No^F+mdK&E6K?9k(eRTDlf3+NIpGaJRN(RCy$8;Lp7xqS6axV=UKvq=UBBoRx%(wWlj-$(B_K$gx$iX)kELA;V)xiV&GMM{`_Fufs07)0H<_RbA@;F?ItCU zgJFC02bIexwbu;|4IeXkAYWDL{&dNIrN(gACzZ_;{ zMl7YkgMWR>Umke`^Rv{KI6Rn!BR3;{+Evb^OCA{v^vw81gCM|qeq`ujVS|xrMYmew zRikn(DkV$Ld5nM6H1bjJMYxDo1J({Q2d3=F55k!b*C5jbdW*YW4wAu zGWB(PeV@mF`gKfaegn@|L&$bR66y#dEQsJ}zp-?|XP#JiHd@QNA)Q^g(*zga+lcsC z{YZg9NH00jAS*L-gGkvS?j=b{NDO(lp^#~Mfuo1214ylHZU{B+4)vLl`&}kAO9P6* z6T;M=?{Z9f3qoLa(2u}7oRyVjfQF>;1>)IL4j;Tl5YDUeXnrXYr!(n@*}7^;Ps^9f zgJKy*gx)b24<`~)aSGoXPfNzGmPGcI6MSdP-1bDggkw)01_uZ5=+UEm>jwC(>O=K=A-fo;vqcbmC#iRvjN3?t zYLp`Fb=O=23X=4mf60@7e*O7-G5=SWs3k{Wb>DFXW1BNciyWg-1J=Y~thNE&XTGVmcv9EuolTf^*1CzQF<; zZBI|nUCc@}?7)l12hdoRx(wahf2^~+yU1^Ovez=e`Ns#V7cX9H@GwJKNnt0m*A6l< z=qYTBC%D#>hfsE|T)6@uic9{so1foCaj)e-d;3!&4Wu4MBaU*F_0h*-!Q?rN9&&ZQ zZ~2w=lfGidUZ@N%IP%&l?U&i6`8TH9U*{-(o$o6g*w%2ZUNyeIf4_y!!puv9rdx$j zK^b+et)pW6-^OrqapC>npTmzSeR7BTId?+&l|j6ub3gp1o+5cgM{v28No?@;Sft`+ zM^uSZ-_k}~Nbp3{3%I#R>0sxiR1l$mINn69 z@zdcS3JN^7*B7S%B~|$?uMv;Sdf9n(QV3I&H6lI)&hWi)P6eT40FADw-39RXg*SyGWDW`HygF;8BAE~bx6;$wWJb80yBdwrO5jMhu}#lWY$Vzt-1vY+b7!sPuly(~a@AwHzedoC3KIOT&@pqK zMyVO-w%0q1MQl7?X1-(6x3dtlKxGaRuv4-6Dy_+ zno5dKC-{(EZTIg*I3I{Ww7U-v4dmKv`S4D_;w^SB;}I%$>~k0Tmv3r#wHnr3tXuLY zGTZu+#F-IA%4~a-8jv%|y47zYCF*i@P7TT0a3bu&`DjB~uB@(hlM?HAP*z@?-qu38 zdl5O*nO>utJMRj2J;mw7k&h z=&SQmRgd$xzTGAb`BFt0C_1Q(@o4Q>QK&3b){maq*&<>pyzFaiY5CqbNfP>&2MG7> z#k5R%!^@-9L2m`vsKj}|gG)g3$v1-h+7Igx;EJrr#80MO2-(>VY^7JaNLdn_={D>- z-?qILrKgy5k6BxB+sYEirRw1zHc_*JlWAW4_8CD-(O7x65HqvB@y2LFG<7*oxaF44 zA4e?SESzD&T&=+96=Ploeux?Op`|oX>ohx?tPw$@#oqG z=$4iiC@!<}`G^OzSc*&#sq#L`zt>`BI6%%F)_ujDeq=5Wx6@}}a0en=7 zO3eYVboWKmuo*}u)GS6y_G}N~{ZRafyKl=DG}9P?Pq!2C!F+{PvUg>v1veTaU8L9A+70BK=R!_3U=F%#%iC9Zf&3h+zy8d}IR%m+& z@)=)Vy^yD5IZsDKisu>Ar#q{dt`AnkJ{c#|tXy5+!Dkt9P`e<4V=evd(K8?+4Suky zQ@(#h{O!XK4#9C`;7<&r~V?4wTNQu!HbXWyV6(U+Q$E>Dy+JtUgR?(0v=@zcycf{nMRH!wiM(Uv&Vi zqXjR`_U7T6UI?4yUW+rR05naNI*7*ri7{S=mji9z6oUk%>AY=gc4lVzYL7X98CmaH z6lpMe(bxrEYmpg7Do#FUUH|#vAz~%5W_7NYI8<2*ht{br2G@Bmqd0&MjLcH;wCv2= z=v%FcaYQ8i>LZN~T;_iGK~v*Tl&t?QC;tg9`WN>t{tkkF7X(yCXYck(hGI@`uEJmk zzv{hjSVi3VDaa6~87=r3V#P2uw--n2xKVT2g|ePUp@!e+V87$GJPB!%X79fJJo4-9 zsde|5=jOwx@4T`JLoMX^n9gjoLeLRj5Y7IX33Ln%yR^lsV+=UY-B7EsrA{CS>CwEz z$==09mwG}!gMQyM*YFhMoA1dPc*?H|_mOlR-tKqIW9E{~E+`Pk?^4a8H#n770W>32 zRerfeibTZYva%co%iP21Sw+RfaBKaJP==OJe2|vHW>1(fU;-Dvim$oZ_?%tXct5vn(JFoU#7p!3Z4LO}*{5NzA7|#};j06DcPV)zl}1-c zNqFla)4E}d%kR1G_CHh+{#&A;|AWawH)wZACbU$?b4cs^SzC)TaB*?XC2Ia;(>?Lj z7q$juld*;0$AUy<8?oBZieFcF+7|h3IR2{K;xmAve<2?JIQf@*{pQNHOmZN7= z^79w7-sf(vmEwXv8%``(oqmTqefl^k7%(Pw2US#Q>o2z_RK*x%#YbmNPWl}^Ew6i` zy+Zf&v)T%k_073FstM*Sx+}oH&#S3uv4INA4PF;jSjx2+IM4;h?}fa}9?`(rjadC1wBP^UCZi7}xr$SJ>FWeDvI#AMNkZDwT z+?sdm2b5Dh1YUoCKW2NB1H>!yBD>4zne+q~&I@+>H9}OwPWnqwvmJV-5KEqiHFKOX z{q^~f-XC023m;WaojPTL30jS<6 z0yAD+{R?1lJ=AKqF4sX2)29zBvkeE4hVWa%BwhH{_>NoS^Hacn$4TsdbP9UQ2%04PDg_F_YxdFcWa>0D?2C{^rE(K^_;3>mpXFDy8HzL!hB74IVZcS@lgk4|1 z-^|n@1Hu@w&uq(db3>@J0@vK7gJ{2_vcDEsShZVd4~OE?R{>-ilUUWScGcKx9$M(k z@^ZiLSyy)N@Tmv;w%F6Ksl@9{LeDoXF_DGwhlrnUjEfc;0jrSnP4d>V1Ieqsc>lSa z-S!L?6cF#JTjFs}l9ez63(o-ri)~A9zv+ifNBi~+Ih(@>J5_#5ekU9-Mr7$Zx1S$X zqkMqBgCmSg%P}wYnKea36wifpLYF^Swl>`%P`bD_;96Ril9>ru3D(`iYYT!<&hZutMW@AFqm+LT{r}DLX{I+uie3}0 z27z{T>;=!QL)LuQ)SzRA9jU?gybU}z7 zo4}DLNxvhJ3%%yGmkm5Z!L_1GA@*f9&>N09=H$pMj6bijP5UEbzw|?;9qv`Wz_mVG zc%}L`;{|q-+W(DC;BhmG6+zTXKbdq+j=VJ6)05~P&Pki1bbOVM8vImYLGs>dRPDKa z`;St$9kwl!%lvj_2|(6C@-%2o@&yg_p(N*Ze0qOF*JDy~V9`=r=La#L1to-=sV0g+ zcy~k%k3}6je`{lDqC6@?@#{_!Gy}-^??rqJxQXt3#hZ3WBV!e>b4e~3hYP@Y)ic|F zz9P!HM_>BU)+HMQG{niw(nK>haH$ah@^P9h$tC zkQTl}-hNyxpj|2(JkmQi*0H=XYp4VZpL3*#J=l!Y4EN%K9EFuY%WfdtlVwjeJP`5Wp8M zTre^+O7!kAgN_*np3jYUa+}&DiyA=sECnjLIMzU#>6&7wsj^PCGh-R!-5KFEKrc_V zDc;GW(i!mKa1^ofq9QNI_5-D^#9#ccqfsmEsu|ee%`ghfF_iy`Sja~6nqqBE>9Bw8 zNYF|uFUr48Rnu?eE=PS7Z^(5TV_1NR2@c=jUXb#B6Gw59Gh_R_zBp!xrdq@Y0-ZIJ z)M%}m!FToK*cZjeKy_cql!nCHqYqD=!c~j;f~Bsze7G2FcOu1a0jdC1`W%29jVX4x zBFB3Z(pAp(quK1jR@p2H!>?QP(}^EdexCOB zGtcO(=#$k3#ry97LCh}TM0`!P^<72rLeoSZxaZfMQc0+*c6JlM1^Ma-T21kT6GzG)Lsi;3ov_aY;2&v=o^-@frUQA z4WNFw={JuRwntb?H~4gqcwOOMEhOAjjxDvSy9dJL0=Uf#H6`JCCx}uSl^;OQ4_bYX z0VRJljBUn0;C->pja;qvr=Mn`o&UvBmsm8Pj2w8XjqS^5m(J zSL_Bpi7}juXO}I`4Ex=8Pwa4)3nI=_hz^B44sGJe#aO>vxAMqkMMXsw6&0101Gw{5 zAr$ESvs43_d(1~~3KVtq&m(R|#>P(qvy^^bF*17aHS5ZIkOHRqYl6v}-Q7k9+>P&9 zdinSSZ!D>+b#`@W+QxsJHelix6?Gvk4CNB+?Wy|zp=YzR4v-+pCr>ib3g_HNxEaRh z13r#nhHhq5FIg^pQY+%lFAOy7a$H+?zXzd^84mfo!uyn5IzAzVmE#4_!kJm}@j z$+;x|rQ|{O)nc^T?Cfk{4Xca2{bl+c=V7L8?^#)#*Gy-7yMC!?F&jJ*R^CrMCYqsf zkFw_bAA)9l51jEeLuM}Tuo&i8m@1j#=V@MNV{dbnr-xwlz09 zIypJHxbQTd48y6wgg0$$nCDxXo8`P`jW8GtxbC-ZrN=J63s8CU<_*XJ+W-+b#4H1M zwq-;_TA-BZ2&Q&Ob4Jq_bwY>T@UUpO7_E2v;9%9w#)D#0{APTn_Ur?&8~Jycpev(H zpIb3-{nw9t>pIl#X6S2!y>#MvV&Z(hF9_r(mc|-b-+$*kbm&lf9F0Kg4fCDftfg8t z9)B6F<}>2me8Q_33{ni32e}q9GBQ(bSkg{g7_Rw7{=2^~K zu6|jACK0OD2gORnyritewXa|TT1!sc$T!^{==_ZVQOx$a_v){5wu?s?j88K0Aui~h zP!3=nfoz#${GN0!Gc(h{P&!9VL*voc>v}nEC7SB$_Ums#d7&p6@GQa8G&s1Xzt!|h z$&d??K;SMbA8oe|fPUO?Z*~q2URkfN4#hQr8=X_1Lvbo1w2R(Jq<_qH^^0WVo?j}< zCl40UjexfkINXD~)xzn_q_Wymo|;-`O@uR3|9t)I=lXgF>V(OPAvKP@qS!hQPtPkx za#)Y9j*e%qUQJ8tKrregN_P;EcOxQnl4QR-N#guhn~2ef)FyBK{qx?^$7dVu6*%@Z z?)mgPf_f+yFm}r3Y|t`9f;om8-lnD5Z@rn#WQUkpSr=)7P9L?CNF?&a36+6fx_iQM za$8Vu6z*S2mN(;;#(wSW@0b0+XOu5;0$x|{#_aAF!t(NgCxvJ<^w4Ousi~=+UX&-^ z!UPTig+hr(>>d@Pj#KoR6wi3Eq7)GZDc9lS>l`hutw)|ECntlR+nS6T$SI{}8mOx5 z>knyMAWMR;SoAtdDo%%=pC5$DTZMkmIO9_Ndx^ERHEQ7t(a7A~{PN{MZW;`Rg~|q^835h$Y{s#Nj~AMXMQSn~u1%8e~L7M1VOJ z6C2Aa|M0;D35iUsUt6M#VWHpNtLFJP?mm#e{p%-Geiw`1KSW1I2i2d2jYmgAxHG+pWx$NI11Pm60wHw@W*Me zw)G#60*A{bv|^JL0@l7cS6vkVx7c0smW|EBi`TAQGdE9|`w7BxTikg~H3I{KV9E|E zD}>?fL0*MG1}3IM&j8Ytmn5{@O6@p(0%~L~A&OVgnCW#|+Lz*_n_<@_vVWBHIXQ%t z*&KOJ=k=zf#JKvQgPq+kX}+_NjNSBynQEJw&=S`nedof_5@t2p-oAYsEu;rVAb^xJ zn3`+M3cd^1lqOm1+FVNCi~UwtR|iffz+PWS{h;M$xza5!FAvr0VHGUylA%2~F%lHq z*%mJ^uazD0)_ds45*B9Vkw418k+Bc@$%HirGtCK3q(x)kmD);LaA#+XX zdg<;9ANd%zH&xN``eAP`uXlRRLuV{1x>p^QzE~?yyGe^;YUbT}$KjAcjHdsUN3-3H z$KwDhgq=%_kKcq4EBzEc;Xx0F>NuT`GF6`DGgIQ-7G>a$7d&9CrPcWH%f3@my90@A zv?jtKc89L4c=fKqZbfoQfkEGMtMJ(Vd!IjlwrPHu1g!;K>6d8YB+gzvAt1oS#56WG z<}8^|H}W7d686jmw0`jSKVHgJJ1HcjnR8%OIq!ye9H5cf+S>Xj+>RGG$3{oN!8Ov? z2MM0eh2c}koln={Pd1!=e0+R;ONU&d9z6K^?b{hqQH7A5z`(%mkBd-*9r&ejgZk90 z2ipb(vRG+wtsb64=*Ep3-3N~<23IxE&|EyRuR#%W7x)a&fV&pd?rVfn#%U@Y`1>(1hUbjA<@AvmV{CdA1597G+`!%lDbv>`=^}Oy^ca;?>$xoA`P$g3hckNjduzJOux zBEB_PY_1Zjk$HK$J~|rL5PSURy8GmqiJ*|n^iZ@?<&wLys*^qg32K~6_UCtms~Z~5fOH(zNT z9E^>}cD7an7P`8+GIOg*?SqAnm&Yp>NsWEge+I1Co=gV28fMH&aP#sm{+-Lsbv5fQ zo%ucX`54t1ttDL_Ixo#!4MWe}^^q#KfCZkMvc#v`f3Tb}S00Ujrj|K{Tl>{%K2-LI z&2#6GvT|TXMrX<$$BL~<6v~`|1$FkUh=|DKMr+l^i0*ok+hRHAWKmjL+P6{-Zu^>D z=Tzm`+C7;>w~fW6>g}8q%bwMZg+cQ;ew)6$6pM~yZ0<%Q<9`P2?Z166@YtFP;{3qX zkbW-}rz}C3eV53EHJ4ugLQ7dr(4u*~ZnfTMxYuFx*=6*p<~lLjj`aP?-#P}v8IrVl z%bAJ6)OZi^4%?$BVF8l=p}b~4I-ZP0y((A2q;3Zn8RhA&Li5%*DYrkrI=?QKbm7@C z5u&yOlwv~3>n#HwipTaKd@{(rGuFg!nk=Yw|8I{kn)iiiwYUgbp|Fon%x5iWZtduN zNKG|2GowFs>O3ds1}w8uIIppagwsq={+L7gK(RF^k?YbWy;3`U0|Nv2e0%K|EenhO z@MYK@SffBzsnc|H-PyXOjxAR?=Plnz|4l0&hR0q|3e#$p+!%6X;MKcg*2E}ORI{_v zIPvvO?qbT-t5>5%ZCAG3;nXa&C;4P(Y#;j?!l}Y~-opRq0m&79H8+bPj@1ymU}{RLBaP5t!| zx25A)WI;6zpB5{toIw3>|3hVbgq?aWSx{4-5SlMw*>QgE>b;cP0)KRsXz`q(S09ak zf%EWV-8H+W`TqU;dz)Wn=;`TS#@JBCz(#EUctJf-Vr#vqdTOdi*S@*2F>~O@%F4=D zHc!cm7r(nQ;PIY&tMRb-I<1wn8JT3%tn&`#O`Y&n^6~ER+jdt(a~4^3b7Rm=F;|5|MSF&r7#KF@3tP!ve9Exh+aBF#WneI`lKt z9!=$#D*}^rzg?@uhMhXWBC^eOBnqT|e>^Uf$+*+}T{V&MB||`+^>KfcL&l8r(istm?_WHfrDx-4qCQbLuQ2FZ0RAcr}-E&|3nS^Skt-u#! zv+t;=?M$m?10f71yX**e3nbJ@mh z>uqw>+H7w_Lq(is+Gg#Rqepk@T`8=+QweiDb#-;do>o&+Q*gR}?5l&n`KxlS`6z>) z(So*>->X;s6)w5!YOfjiauR-b!;$#xLmkc8djZq4oXT_(?YTQ=$UN9{Vh7?2vjitB zx^eB1Rd;K4J(5$pYDV@g)praAk3U_>CjEM%Q*31#bGJq_m(@ODcY7lqf(E|TW|*`d zgq3Tu&-VH~9c?e_9JSod&3Gb;LLE7F#-seGXJ$UKXm(td7dS`nY@K4k5|{Zt;~1ls zDjF7+-Da`T2u|I@W8h|Rx11LSOYJ*T0thM)f3lYAPh)T685lQblHN4=SVW25|AL-t z|MKNaj(&yCMp_2RvXf(CM~8<fV8?&8IZ;1;L)@=dZ`o~(CkHiu+mS63SOWRloEh;(%Qerxb_y?a^?!inkL7jMj? zM~`;Fu=)#A*HwEB+_Il|=pQnsEG^j+mOC^yRPGqCV7NQ0i8l=JVe`0R!+wdEw}iJR zJS@z)S)^C1!jPnw6D#2|Yp#XOn#k0wDZP86%c)`*AO7x?3?&gh5p|aS(`RDrxrW^P zQEgCRJaGH5~jdePU^~Eu2s$W!AB#6N)tAG<&rCe=>%9a5Ffb)W| zC6p<4jGEPbKL2a2v>v`2LJydE+tSAV@6Xgd{u{d+qtS!=dmA;)^z|$Q>a~Wy3t9PcY4iiHQJvecoR9wl~+%UY*KiVPL&Us5OFNf6j0}Dn33w zE-o%U-gD5lG;*8G{r4wup+2_GnHt$6V4(L>mFei{n&V|g-5&weX;KY`v2BAl@Lvc% zrbdfr6FjLG1 z@|V_ZFIIp%K0Sy;GiT>N0JMYz1x4+KECP3gmCF~ff87-MObBz-=B^}i`k2sPaP+FfkaJj4445-Q7k-;0r3q^u*XVamyWwlkt$u+ zA5(w{Xil>X+ifWERlSRjj*gF)u^*|-le6{4K+yl*&>&bMx5s{8aDz{`wBDq*J639o25qqgBGmW!SX#l2b7-&{QJ%(Kf#3L{WD{1wphBJ%WR%uQ*BST2-#a>sDs?TdJoD zJ5BVtiG&@?m+I)lUeB0@3kwRsM{;rT|1AKs2CR}thjYw{0vz@(EKFy~+V-vL`7XjR z$@SKajYijlb<}tGegPlvJq9@M6up`E!;#7-(=8b$k0__RByhd~%wjK*m8-mqJ!14G z!#heRQ@H2d70Zrfz*f3%0-1!&+TLHQceb?r1;IVT;8Ro-5!1u#`Q*uy`g(8_P2NXz zOYK++G9KT*KMrA}Ry184ISr-zE8#W7GrOJfd+Mv*lB}&$;f4m*g<#93Hs>!~D7NW$ zsPQh|9-nTG4xqHA?1?EYWF@&Q+1aY->BSJPf9S7-Cr2zWiP}V9&N7}@9I4t~{>mnn zsaC%qHtR7*+7ZrlDA!Xse7(-izBx)HD&;u#@5YiLq52;7y0Wseon218lttTn2uj+9 z2CMp<#J&PkrQt!o*`3+$iOWTVISrF@;^Kd)JvU#h?^t%GT;Sl)ux)BjQVa+n5|0Q8 z`Q!yA3M-|6#|$v#MD>|`3&I-Y_AYGzGun?^+7E>5sx%JVayj#+lKY zntWmu<}43Srd4TaPqwaZ4P}MHi%1nB=IP(Hbn*EN&;31Pm7KtS8$3QU2c*~7!5`xVz6fche$IwdyRt54^+CNI$8w5;{85D%7N4=-sKJODTh z;MeX)R0v_q@}-EwjJo$wW$`x3~9nN%7%~?>g1|KBwc->#LOb882PFEK;IdWT8s1d5~1J1+JZt zwG#QNF3O7P%$2(}+i}6+2CkO%{!G)e&pAp5S;pEe%m}V^esnmrWA;%;PhV1vwE1cD zTq3JI){#a@)n_B`d)D)p*=(l);p*{f@-v>o#fTF!0#*J){dfRDzoZ;iKVZBGrrmt; zOlD?>Z@h;x<)D6ZOsYDXrew)bUwBa;F0`?+xq0&yX1pu?o~fxR);mkV(h=Zd^P68V zt!W!Ed?Zh$?&sD5(?&q?_haQd-^Is|CdeHV%3Bz%86_J^T>q-M*>$Vjo&EwQ=C%PY!Rn7&wLu0Q=?^Y<85>TxzWp3bs6 zbnC7Zk&UHjCB?fug&r2B)w_PLUuRnT14JJ&OROJ4qbw94kGBzWnEVD=n9c#*r(zLj zl(0qhnw=qq1B(QVkt7VfQ<-GuXT2GG%YwU40KOT+3K19 zrN4FiHiA6BXA&{n8%r{fb{6|QgrMC=URmz`TAMqo!IkSlIRi>o2#KmTCiLk&Ir`Sh z1%`6$2OhED0AYLVy3Vz$NN+v(8pu-b?CxGk__ZL^k#dLGF+#(@U}S%9Xs5y@ z;!G2*9)AjT_^#LuU2)ug#Tl2!+9BK=V_O`knHhMs4i3NFjZfLh$qy{OVaQApA#dN> zm5q_D#{7);+zSvJL6@63JC_h@Pg?s)+=GK8DyqlZYZ|U^wzvbSvN&P(0o8(Tq1l}qOGD=r10(qC37H*Yccn&faKGyOv5oC`*V&76at7|p^42vL zA=>E6TwG~(k5g#`~VYWxpYn5xoByd^o2{oK21jW@WzR-FiNx*gjXs6anS4 zxC{wYKfmhbhq*u96gho=*`sDZOxG?_(6j*@N9FxGKd=Tsu`eJa6H!d6`|_nJLLh0R zS;)}Ki2sVq;?T~{juC&E)31(b`|9$MUK_L!ChBJKOW8Cozw)6`1Z$|oLxO1M?gp;p zW(WsU?gH^RZ4=Gg>F8_d;E<5ck3BsTmxW=#t78bSaMf`dMoWF>%J0pIH~S0ro)m5j ztM*(`DUpTkFZnZr!TXBKaHHNc6+Ze-fl@oJ?bFuBRFL+f++DAafF|g-HaAnID?P3< zDBb3)8U3o47x;Z^p>$M~%~by;-z1@vFs#>g4Q*U~9rDC{gFE={ypZQn znTkE8EVbeQV0*Axe@~sL-%-HwC6zxngt$deXoGO>&nS=xSgwa>$f@(r^quTbVeFT( zM-wT^u{ukdD!IM77F}toiBwGlG+@Vl+22Est-r>GfD5ZXo}~DO%Iy&9eSZQD{ZSda zD&BMVg8=06p5U;0iU)wiAOtpCdqMVebIgbGBK7GJ_tiVr{B4Bch$G!WQBi;QwwH8! za~W`2ZaAPKo_>0M)a)w)i2H3ptoPw9X3Q|EJ_{bk`2x)X8?8l=xBeT+qkQgLMVVE`L1;+t zFIUylXtlP2EWcPe5f}wqedWB2$;ru$5x3SexF?YC;WIU~C43Q*saw-fq{g;8qZ@d< zW_v)h2#Y10{0U$q0<8h7=eVZx>XWn#9YYei%tpJGYWAgVgqmu)wDt)oRFnvCr4q50 z?82-C;32k`YGfWzmV&!&0@%JVP~1c4o6DB-p#nJiWFkN;YwR96I3nUP&{d0&Ndm)l z;>kCl_1u9tc&V@0GPhn0u?XNLo4|eIx=_{EiE=oYqV^+_j?+yqOUuEBLM(NKUj0&v54>3;p5{A+s1UA@l?7g>e~ z+}6Z*zuezFg!+N;v-=fs1l8=DGlu~0@84DN#V;?OWnP5b$A_Bj&z3uE`eJvc<_+rZ z3_vL~=p%q@KEM22Sy>6*gN~k_)(|lh(tOvo99<5yBBSH}@?S6+Rvwi1NC9GUO4$cOY5{Y20(43f07|Y)Nel3Arrl zVZQ*3lYz{LOokfu>>S`8)JMx!nf)DLVR?v*z!DP3&(@5N=9?&*6eJ=%EG%n@2o0(& zEo#cp{6CcJy)vK&{N=Afrd#DOb<1&I*S^X$`ICT2eGu7yKWuR9M^LC#pai6L*E;J< zt`=MJGrB|a<&EJDp96C(%6^1;#vzORRj3D&`cn+?=@fm_3i=JXq8J(d$djM3hsjRl zl|My2Q@}TN0qHL*%2&14aZg3+0yKWC-vA_8Z5GSS`1|eLo4#RTl666Gl>1`nYE_#`9- zf38A+Q;?UJU#SjWs-c%0$n?^DSlnpwE{whQtUk60Hny?R`WxMjhv&6x*G!6!A#|9VYkawvZS)o9rC3rw~fHSK;>JvZYe8Q13e@pxG8Zki>`auEBvd$*Q~o4 zK~#g2P~^I9<*4G}u?LiDh0&+yDl)rHwZ!8AU9xa{S%uqV=d!=y(SU*_z?lC^{Rxy< zY0K_p<{d@tThK^$g1W)K*t8p9fo0}|M7G3Kgc+>_}@1v_!L zBRl0vOi@$`4yJq6sw)jn>u#rtOt#_aQ@BcCvPn5#zkI3uJDb^aJe=cBlv5p@CK`*_ zgexpLlzlL+FKXH@iP(DcU%dFMp4ncwM!)j$BgoAo4IV6y*Wr9$^OCsWY)rNxb`F!G zf(HjKflCFx&HbP zewrB^*oA{))4JT5cVV3jDXmRSC&*sleC>uwc&PzchKPuWjt;e+c(^ZWHh?^#D25fS z0`!dyFswwW1fZz3wY33?WNnEf5HEYf%5Qy9qYWU)dyi}+X_!j=1#Fgps9+*&W zULLR~um;!V<@<-jQtAq5I~-gQaz|7&F)8VD9EO(GL@HYxkWt#Y0i>hmeWU@)D2=;! z-*epp&<~c`teHOD>#dOyYE9Be2|q@-(@l3L{U_hJkXyt(k3pW|cs1r!$xxDYCH>&q z(C3}5TS`hmEZ@InGOjdnuI>3>ndRvX=i~TM^EUK;&*=#kJ>xx=>qMG-qaWuiPY^IG_H)`_z0cUK9l zkAHZb4m`d78JM%b!ubkj-gy^!15@a`UR==0H(WioCR=X6+V;YunXT)EbTh*#SM9t@ zTx$jIRcLi0r>SS*$J?}tSF}>*618|b2~}5SItd@HXl2aZ3VtN~qm!7g_2&MLCaqu2 zYmK-sAyeLoBx+?5kC==rTBUEEx@PxMB&fT2#OmNXP32f0rm&sPylR*}hFjm%v)VhE zF}G#zob@-nw5OtLEssB2>hnwQVa?swL5ATP-4Da9a`dLG%pX5#Y;@yzleIg%-6=G? zMSEg6V@gV6Tfeq+_QatCg9S0;?yX@rGd@j=7tO0~b)_v_l8-nx$Tx;E_gQA}`t7_f z-6pKvEDHth1_d!c@OtfbDl;_tkMSbnx2^C*i~&AC?emd=c**P3S10`(yth71q+oQ)U&gvq(0tj%HA{eC^K01zl!{Kp`ly5dr*=otif5h z95!M|Jyu&*cEuzqE9=tyaq0M0R~>>`Yn=XP)pHn)*t(*zCfUAI42rZDsZQB8j#dh| z*cOyd6-3nQ!Of5oU&XuYGX3_KGH#Knl9?3pJ4@sxcAVH}JB|uYCPn?( zNH(PSTWnNDUAGtSt~nPUlOc7Dra0#A!sSa6R)3>=BlQf^e+>zh$rC(tbEgjR$_H#j z94(F4JKr)v;IWE$u;@@nk{a8KID4{EHAC%#0Lj;(JZX4LW{%^Dii?z+``QH&vF@L% zTkh49lMjv`!Uo?}Q>G@G1qvRceaWvteX_LeVVzeZ8-=KSlYZejPhDARa;#d?VDC@d zt>R)jM;CvdTlk^&jNT8Vq%N-TaX-heMQa?suKP7xYb>)3|IyX*Q(GkO(_AgXF)B#$ z5Q~S?UvU$Sp)O>^KLhj%ujUbMqIueXNBg4qtQEa~-{#dB4iqYvJ*R=TE>jW-r_8jy zov8T8l4PK@Na2RN`H`*dIi8QMt!Vt2%)FdY`1_Qp?WUUb{Yf7WS5Fc9cX?j?^Mu)x z)^u3c5{uA#dcr1seFH7h+cd{MOs&cGB`H$NL)}~E;SbsFB%nv@ACOhKuKPXid>HnP zuXXTksh!ElXAXPm=KWf{4n`BjPk1Y^#w8#zmO8UAIj-HGt0=!;};VX z!(tP_r#qJ(wFoLO`p9rX=ujQQrH!L6@Ea7^28N@a5FY<&0iI78v#AY#AY!VmsJed# z707-}jr8H(XH{JoK3qIpb<3N7Z87WtrrMaab-nh;W`XScOG8?5ur%*2@f(9TRav!{ zV-sH+FNg;$4Gk~$^!fjDnU-(6=QrZM1v!_$8}<}F%G)qLAvE4}%Nwb;*`mP-w7 z-Z{E^Md|1dy6(BxzJDewW{kQ{bp-YPdzre(MQ-xS93QrvhFTf7g$1;Y?=M2w8`5DgDTfZC7t1ipDFpOH^;w+a6*FCjg;giw`SUt zR;Qb3ae8hG#jGluOlkkg#qCdq?G#5l_CBCbWv*HB-{*z}a(cZ)@L0*acKIde6Gne> z&#Y#Y$9>AGHI6Os9PmZlLSVAg=fh-aO!?IVDa`rb%cGjaE zHFX_+{9HE2pk~c*~Pohv)KE=P(FB6~pk#bJ)(6!yx{oV0G=9GG+ zaxy78oTa=l2BGQD0!AO7%_=hrKDYt!#v6k*ISQ0sK5#wSg=SUjJ-QIVFI~C>)st{N zhwmnDq|EeaF}Ro&w$Zp6JI9gP-MU|-Hp1>&)OA-=sxzW#b>EJ-Bo1Fbib5%msdbz4 zRoSdaEYXK<6*#Q2YOgHBH1ZZ#sEV>v-BN0|))()(DSW4~rG@wMWm`x)ot%;au4n!p<+?PhYFf?UY%;~kE`)e8p+s|VPQ*~^9w%QYAxXY@OAL=r0o0SdGkk} z6@IRTGDgwE;5Pa2FZ67qYlF#tt&#ox{nGJ#ptPu^=oA}H?VMdCj6d`tGe{-)d_JpY zt8mVWRbSywMn*|Uv56Rt@#;hCk&LHx6#-K99W*#}>G(}0#)rz|M-RXC34#rj&F0wn zwd%=Sx_C8mP*8Mw!dAjV>_O1*Wj|q(|E1_TbU?XU^%)rFCRqu36Hc+a(`_vkZlm zT3PQk%ooU+U1vx<=Kg}aLtZ@=TuK6 z-BnW`IjSe>_N|-$9e&F%y@^sAu(KgmQn6khf&G3T9LV20g}p)l_?MMbox< zd#tRr$t$(ur7LokoAx%FBWy*>5LbT^{L z!Fptcw)$NCrtF9D(zm^I-BNZRpH0&2hP(_x*0)oj!awYoh@0+x3NxlqdM`}L_lu1K zaWxJ~BLyMV=cYGhUnmC5vdS3Ac6k3hAMiVaM*k0_5Z}@rPGCbCWI2xDuIngk_x#zR z(_IORU10+f{TRPu#rWUzRKMb#j9ZCbc6BDYwEv-=xpPwhUb>3Tu0jn7iOm3WP}&eU27)*AP{n!jq8@|ixGXu+l5OBK2}6j^iMd~c;z zHs{JN#gr4Czdp2$$M{CgmtZMcvP{GleyE2L(8q~EXfMqAgUOHjM`h-}8ETyRMoZ$C zdw=%2KTp1S?T_l4Nv`z=`y%v%P#%EKYe>i7V2xv#;3?sYL)yPT2ktB>9eP6A{Ix0T zqV{I<)9zb^b#}yX%)EJ%f@r-kg!{>KJ;g8cfg6le;7QVzYkXP};$G^6_+9*Gbku43KKmiwpggrKn|DqaufBU!tI|^md zGL(_Q?Uyol?M|nYK7R7Ajhy#gxC4=O(OgouHN_)a&c^?Q~a*X8n&nKW&AD!r1_hoLGw`7fp9eUGTz%Kbv~^rRv(cZi3& zH0a%v|4zWSbp=JO|Axcym6k4_3Z#zm?CPX1&&j55Rs~JoT!`eabQxzv#&@OS$uRF2 zZEb`mN5f*zb$Tyka8H=7@>d!4$JNrMI=(mk<$GRba1q%I_K=2G3RBUV3O`rlve3j1 z0S6<6Pa90$JPpNas>@5GT*o<{3=-b3^+-H&^6A@iE`{8bJ#mtX7<9_(F8zPa;rIf9 zB%}V3+9{9hOUX06+!;z6n`6ThKEW{lXGN8~;WYl|_56Zlxh@|X)8>7@MHOb##I@sL zKju&~O|exv0vF^G1uS2g=*koF)4foL>xTS)3xjS|t~P3~P7G!89)&Z4>1yPeex>Rk z5T>f%ak4(;LZCHMcYlipND{BS>e5#r)MIY>$v)OtK1#8{kUem3^Qp!%={+kyeX!V@ z693r_A!D1RFUyxJV{NR@LN%Z3-dlDN9*t_lk!I;y-6BM%1L*$Se3THGM9{EL}|rH$BFNsr!R@ZCTNm z-NWk?9!TWrja+$${NjFs7R`6<7S1N8yzhc~yfXQ22ua zkJg`&vEJA)ctyKlM}q=0tDTeH?T-*31|9RtyLx=K8sGmW(=TP_R_Pa|8!uo>0={LE z{Eg0=cn1;Crt<7I$|bSxRb@Lt+^2FS9%)6(3=9KB@T~CGRI*@}9NH3tjt+3&k6YW> z;+5}p+I`;RB444?H;k-%q2JdJr^-g zIHVsoCfYuCYh}?u8b$jw?QE>NN8{yHi7q#ynJ%4zHE5gR<_rZhK_2DR@iAXN)j-Xg zmpIeA5_a8QvqBe6+(Y^mlAZ!LHzx+!WizAg@0`L_H|TC9mMZG3P&$i&@BT4=JzVvM zuk4J|SHBubgPm+{;$6MNgFE{8&0z2i!p9xMRGD~)mn5(}9o|Vti)x2C&6z2vop0^n z8)v-!jWi3djeWUTq0ZRgx254C!dp>DoD*???Cj&*zso zUBXqli6Fxj?@HL&Uq9M`Pe`-E<%aE>xH!TlwRo_aF?qYAiOT94)k|8R8Z+9w&yq^Z z_!@?L7U^L=F}o0W$PNrM4GD}h*FQ{2sLQt#q_9?Z2Z^HxyNJ5@ZP@e_@{soY=i!xB z4tFok4~*O6KotxtCQGiyce_=bSOA}^YHvy3;iJKQdF(bgOb-Ll)*|^gFrXLgQ1du; zr?dJSOw4{KP3@K7qe(2mJ4oQ*vcQ~e0?jELm!IO;G1w-|MT3oBZw%DYSnB%JtAQ!u zOrG(op%&56uyX9Qxs4Z`uuiJHrrvp8h5;kVF)=Yf@`}glX=(M%PzD`2%JsEnj|V;&G>bs)0p07l zQ89WaR=jvoj0Dw|T@O!!A{&q|Zp{`P+y|9=OL|NLo< zpG5-1rOH+1X3i|V@)gaRzumx4H%kEv20}R~%6K3(Pfy_Cfw0b5=LJLvvQYy{&fBr# zp|ZX=gbpVhkhZ>;{=dN?<4pqG@T15PM9PloaY~Z zzYxANM(z1{YbqR}_uwz){djWHwo-uCq`{p(e;(GLAUIBO^;~;JWqBJ9N9ZF}EbOrF zrQE>_?l{KJXj7g2#y`ACK({6-1Y}Hn-(T9_mBD@~hY~TUUS6JYolQ@LM{4Tmkf3Cs zb2uTG+ifGv^_M;D0w5poRJ^RczdT+PWJ?;mc-@7RaQN{=z;r1H+(11<<(2|P@lrcF z97ygI(gj;Uo9GOxLRiV+$|sK5Vj|qcBe*NCQ}9P{p@^g%qiUd8r$&5xN7%~EI}hqW zkl_i{u!z~|5xny9@_vInl@ec!A`Q|%E zqAtS_XIvu%(lm`vVBwrRz~@L_^KMIr`f5+Eq2X{lQnKjFmqQDHNJNLvR2}W;=mz*)kU?~ zp`oF^OHjC;2DTDvOl%&TV;r`5 zv=}stk2b>6&yN!-{EgI=z4Hvrnj%y`w{uVuM?sGSf|@@|qq$sAa;j9D^P`!Lq6N_u zQl+>MuGayY1t>!TS%FBGVDQ^tW%dL>ObHbTVg2aXXRL0 z7;@u#y{OLvP;!MbgZ(8*Mq1j{S_-}hYt^pzK(>#6c?IQ(U#annovCl~g?M@G8s1%$ zdwJp)Xwg6e1j|wm6|)rEs$n!SFzJ`H$%}&toNYQIcf&i+!^+@pb$jT$cam_lfq5?) zU1C7C?C*N7p^B1HW~0g1H*7KSq_-CD=h5ijard^AsoGo3T9Ip>x*1UTc!^XDXXYytksPr5^{!uQH)35tB zr%s&`9yeuy*mLF5ZE6(Chyfr*^Gywno)6&$I(P53flL5Mh(xgG^|EiExyPI!1Fgeo zjpu$|DZgmT)t@nB#of!WCZ9p#0B}FJ1jiMH_kIXc3;1U{P^1lG1Q)lOLTGBjB+zqqBL{_UIy_d!F_0^(z7sR^R_pMB1r;>@&>8| zC7AobLJ)4hfFFUo2Sv6f$QjC4OKWzsF;KXt1M@Qewgn%#f_{;R0kzP*chjdr=e)=h zCL-u?_zy@u2cx>eD`D(%cosN(LjCg<3Xo-k#(|I;a9U&*q|YKHh&&rA8EC9s&F&wl zVAS<(4UX>pi8PPvFShOlopT=eJh1y5DDuHt?8Cgwo1>;yx1e;h20BsEUD^UBueL{w za_~4KhTKNe2j_krGCr3r$N1lY!YPc;(BQMBoy+B$oYK;JQ2bz#c7JSVw+J;!v*svM zsi?3pQO~^{I8+0}6jCD)B<*El^#tUE^4PED5#5NXaKFa0ru)0+0<0dv2Mh-4@I^wT0jP69iTU)OyFiNkL`uXhG2lmF@=&7sKCv9rUKcF^ z{-(_o!1zbr5kHTYQyqA8EFJnBpQvaFOx3xxmaIu|_J2*wvKLD%O2dd#{X3lU0|a#X z0RXr{GBDe5Om5@?k43zxi**`E7W8F2lu$TxHf?SShsLVQFAofz2D|wFn46n8Re(oF zw-(S^=pDhCw@0dy!Q-VNazm6Xv^b5F`#y@YhQ&U603fFpg*Y%~NJWyg6xfO9wVZ3U zwTQ@{D0J}NrnXeYI?-3%r@_ga(jZH5BU8`$ERwU+C>$hH<_9%EqjQ!#;Ijea#(E17 z;eMh8>S$96B>8C5F7o3|%D{!IB3BFX5WU`;*(;s(C!jybvpdlv;Dh{Nk$qQ5`U?DS za~rv!66r+W$XLterVBob9h*D1_SJ+V)ayJ9H*xL*oeBDvAoOTqEMdDL+oVD!$-_-_ zVgf$NS29;iEocni2JVP0#omOydrpi0BM5S|f_wK|McyuGVBK_5V9{&zOJ9NAV`p z;UX^b5S9)HNIF(N7qC(55*sY!F#+U`WZqWxx@Ud7YWap|Z zIFI8-au{)nLIgMTH9{WX8Y#ngs^i`Nm=M1!lL=DTwOI=xPx#$87~yNo@^8cb1)B9v zSuP4-r~qzWA}tDurX9qGM29d{`V^ld$jak+Z?|4Te2?gF(t|8a0e=-tJTP&t)_lk0 z!9i_VSKXNje8_PKU)Otg{o05azwuD>TRd=$V*bBW>n$VX(}xmXLePSyPy)2PQ6;t?95*{vyVBr*^U>;L2uAibC`V%t44*Z$QTc{Q`U!mnNRXT` zvHxa2ojxO|!>b8dhM(*VJIUZ*Sa*A(m-=%oJQFbzZ5o)ANf=l$3i9?;8LX0M`U%8R zF@=p>hykN20Q#t5G2-Zu2KcEj$D#jt`k{n>qzhH;ftd~BHPA3uZde2`&lmqJGq!h1 zaMpCs;T5v|aD?D7{Xit4DkAA{ z+!+Lz0bzd&(VlAMy$|fJ&8_}BoAgFHV{ryzXzvx<;^?dC{u$T%2Z3isS>7BleFv$9 z)qrdn1O|xK(0o^F-Mg3z>eS8UiO$YWLx7icuNk1T<|p`4cMv_#I>dq!3ws?{Ucd!9 z>lPrXI9=NBY<#d0gHO15i2u3ip1kRgeW%e$R_nv+ng&%p4vuNi#8muvPC>*VO%TGC z9f$zHeQN~~`aul4bLUR>y7&Pe-q~tJ81wz1WXh6A1FId=mk06HIhbJV3ah6Uz1RUY zgOZper$vhJxt!ib{`mNUTAGXK`}(zGx!%!( zf31?MO`Nc@fB}(?z3F;H)le*21}%;~jxFy}ECJ1DWb{mpM>&&lT52cN-__fnKnat^ z$L~*+#(bSX63I3T$(&An$n)An3p`|wk+0KYv$dRYI(Hb+pgQx$w6~AF)`!AOPp6g9 z5ghglp;uqbq~0G|-7fkSKq>`6d+(>r{`aP)%7v1_uuIx%tMUk}(P6eZ-&g;^Qpdxi zI+1I7HQOsEE>4|8tW+KCnIuMrI;{^nR#0WLW7?8`;g8Ca@vb|Gi$_K?ENMuxzUiGS zF1;yBYgsFsHb=tXRBQM1ujMi(FsIpi0bn5AhW5|CJY#5Q%quSh7yv3-mD{%w84}W} z2#s+wu*{~E4COE+t1DJr)X@52ZFf`3B8r}wIWxnGg_rfxC4s-^%f=@{PFGz(wOxnS zw~6ubsBuj$RNsY$1)4;4^w_IFzjYG)HZd`A-cG$Uu{E_QiXT&7S9cr>4Is6w>s#)y zD!)M@qV6)2|CJS*FbuS{`=KAonu@spx3>l!eWVsTr+S9oy0!^}ZuUC9TZb>lQeOT7 zRM5EF@3fypS&%EJv_oy3{xT3p^e7AA_L0uvA134DArpy+@c9~ha${O@)I+sMC{(LH zm1zRCiIz%cJlrI&=sNCq^!!&_7H`NH)rpGr60nuK-St zoyc{d`N}1w>_C&kfiuY6Itz8Pp#sy_85zhqlsF^6!=r?L1V~+2IcXv3wc5mJaAJ@2 z?gs z&?H_Wersuo1HXG9BisDUw%3+^k8^Gd+Itq^=}>ut49#v{^^|E(mNw28nvjr;4Ll7L zHlH6fC#*>FaK*dICm^`>S!|`<@vj)sHHv0+T4yFY9JB^L z2GyhsxIsi<3(8GsK0PZY)_X-5@<8wl1-uO9P~I%D>0cRt&6i_P^%uUBu&Uva2FxnR zFHYC|qWOA&yQqxGaIegmOf?v_LHKkR4S~(YeRsVV=nJ(|bvItbiW6L+0Sm$tPi`-> z!wS@G>!C&pnL&^oU*+#w5Njy}p0Uh9fg)TG_6*6xA=TCB=J2Gac|T`bKVSb3_JwO! zL(M{?Qv*#&%W*q`-xvqtGH4E=rKP>6rj{WAlDp9?gD+RU0&YEcFTi5kzwom2la#|I z<=VC2-1{)t%=sA4V0E|`Lt#`N#klX?*&iyR+WkKn$x0T%LZIslq{Z>~0`Nrp7E0ds5q+3Aw` zF>d5+QK>>04{7*eqv+js5sc9$k6#M5r3wO#Kw6F@*Bx)jED^r&=mDDX;s1(hD5An5 z5Qn_#{)vQ!0|cXcvk!^l2-Nh}#-2JrUpDx1s)XzM3fPN>5={OjJ4}^}oosIpcc`O} znjlQH6S+R0&>qXb*jB~ei+#rdSm_yW~XGZFIuF+t~>! zbDJR29r_d(xYPea>f8o6>yQBePK=*68o2F;3^)~u@zVtg; zm+>B!@{b^AXt1TR>kU8hgme7QkYwp92(EX%o>g6b#n^K&FB+$+totbJt~`v&raoB^ zDEl_1e~FdA`7?6g(k>uS&r2Q|bLBMdPfNp)AI$CWW4-B0LA9(qDhFAb zV%xgl#2dkb4C&#aevZ?o{l}5Ve-eBd^bY|4B*gE<-1f$piycZ3%A>-9WrTdwfOHff z{(C62LTdF8^F~QT^!#z6cu2!HfXQfaicSFVS6>#LNn6!NG@^3=c}nQ_c^dWqU%b)|a zQyBW|n18^kcuK^aO3VV#=*WP>OgRtUi6N>R@~F*M@u$np;_{2ZxPMFZ{=fv~W=L9v zoQ-{~Lmy(R0{(Y1nYa%nupcBuR=vS7Ly2nG>y4XzcG)4j9`R7wKLL3Y-2cS?q*yUV zg!*4AKYkm;(pjpVJbHlXuk}8yH#9wX`X8NpG-$;>}%i$ICbpZN#&CeP6981d((ND2m=eqM9RQ^i}mQ#juoTb&~NU<((=vx@e=8KN$d z{KXF+PzF~%M)|)`C}V0@O597tp<{2FJ^+J3Rq6S@$Kbf^uzJp=zy-(}WO9ckvvFv% zC)aaAGPcXjfIao@7-FdRv}OlAxOCA884W>kEDLtZ*HsU!*@I++cZIFp&hB@-+v$Y8 zz8{$WO2FYMe-ctKOgNl}Ml9xV1cmYmmAU)&O3!?;n1S4aMy>-JmdUTWGn#l3 z=-OunuC6cs;rnk_T*t3p%g3C(D$SAo)VdgQ6g60@hAJvDd&F zc})Q{Wl*t7&MZIXP>GX-Knx1}qZIUKpgjQEKL7>n0)pdfkYwh|j!yyAQy*>kp@s+@OEeE@)_&)p>{&;*9SOJsyb1;}gUsCLI0YB0EY z7|ywKNz)P@`@0)J(c*j|2lhS_1t0?6ih#M_o+xj=DH+8E#yw-|havw*BN(qQUcwUF z>iAzBPRQY*+_5q`?7B9SKU&MR=KaBP0H|wk3{s_Wb?QjISziyNuXXhV)QO1DO$tJ+@z7(at#p7oxn{JY4G-asN2FVEp{*(v^s8^qAT^tP}{w&J6aAm=-O_DkK9}#`z5L5$l7h?(!!+-%puAB{vg@f*!C&HA<5X0D`JF=IUxO~fJ_;uJM zI_zT5vCq7JA$PJ}$`9cr_w&Ylf7Jd|Jf#n;?4i-T&;qJ4xBG^`3pnK>GbQh+3q>$W~0MZ!dro`bH-5i zlK`G>LIJ@nyH3L{B-tAXEb@IP^6OYYfbj`-8#_du`QKr(f29gwl1x%Zp_aMi84qj= zSHtN3p3B@8Qg(*rfd98Y9;VjXXpOmg51sG2J`2?xe#R50C6E{E#5nhxhRYk#Q4Z3e zZBvg|>7lViP*pVB!Wsq1-R%@zyebv#JE_#c?4%FnsPnp+Tn+HrC`jC)Gv9S%QR>0B zphn(`ENE3b(5E(mL=-wMdR7}78VaB&SXj8ax|+S6TRt7dY*%&-y$p2{=&II(#0Xp_ z^FjT?4w@GciVQ8yIfy|oq->u`;K6a-QWuIE0>1FQ_Tb|G`piPtnnl1RBE0ZMBS)|N!S}ZiJ}0NA#U&*E4^h_v zPi6nUPg_c6*~&>~gpA6JLnt#Vdxa3CjEt5MA}KNoA+q<0jd0${_{>{!Q9_ z_ip8GxzDRksJD!GeSW!nVJk^=72cc?Q~b6`^xxahM^zN}(op%For?|$?Ap?7Xtl+< zB#2ANc_cX8CWgR{NwXuobPEr?bxCt{CYGJ$jQ`&0*%7nRxx;=*Pv)IoYtu+@7l8A!7_1qM@HoX|GnQ;x1w16@Mhh&7d>UUmY-z* z`(mNjPE`h~QAFfSievWNvG!#Et|rGsfBhN4Op)5u@;aW}8?cW2vHrV>G>d7#{=oKa zKEw)b;kG7{5Yol{yX*#qVxEPz)TQ6lzP*k3a$e#&mVSHYPbK#EVTPx=o}Rjz>Z_By z?IzW2A>3MGI172b@}DQyCL}I))m&yB4CB6W?oz4EL@q-TRmf60w{up6UW`&F<7+Cz zaXW2S8@EfwbvhH%&ZfD4wk@{)_b;@$Z(L@F9+hTU;Y1G?@q1a zq^hy1&9pW?n$fGIfe_h?5ev`MH?2{@=%NELw{G_ zyB_{IIw@0Q{if_vYO*9f{Z5|urZPks@gkp&{-}3{{HmGnvVP0!yf-@B2;~MEp71)-x$biwf&L(ro=JBpugv) zZNk2*?!7xJec6e3;~$4!^}QqYaA37=mWy-SUH`jF4!+6Ty>Qo(*>XzNW~4ClNJ&uO z%LEqJE!+(793;}-ka~lnca-D@o?Q`ZA4qX?mkRz{Q1*Bw4>`%$(kG(Ex*5E2$~|WI zA+Kx8cza0O+bt(&eX|qYu6uoaxkXscERUT9pY?!oht#e^DSC{$hawI0%sFy7uW3HM z-eJFKV~V8M>h10(em;x8%^P?Wezd-&Oeds;r{x5=U9Ygzk$Jnr?RV0QjOXmleW{!1 z@lkhOQ{9f23|jaHh+d+5Aj%VH*tqyQ{;}@d54llcrcHT_d+|AnjPxI5xdpj1$1u)_$>Y7#o6sD}W-%VRZ*>RGeP4g>hv(OCG~X6z=Dtn5 zZxsFROaPfW?{wpLk3RP&zn}G%`&oxO&3kRr=6D7VcbUVS^YVsu>uIS!JeO_pkBjl< zn;J`u&Y3tCy8oE;XMQ^uW*e1f_w}+%7|s;Cj-KM1G3T-1l=G|cUS4$k%>H4JyV87< zw8P;BMtl$HHoeE*!)YB1x@sF}H^@YlJziC)t44KFS4g|tFezUydE!~UzCh=Gfpf&o zxQ^NF8hWZxdowZme&@Jf#ABUvMH0KDcJ7iInZ9(`C2V|ra+ujTYWwn9pJlIE#{Lmq zAO@uNbz zPkwdUOE_s-jQy%@`=NV3zl3icImMw_3g7T^b)Da8IsY|saz6)hXU`Mg!`3T@&WGyy5H?u9xvLvpYUpYq;2Z>bct6Xlb~NCBCU)D^p!$ zh*6617n1&AC{m+CL%+Xz-*?Zib2M{v8^6p=z3(h?mic(=+P3pMiEp84j$oeIIxPI) zdZx*PKim5qV@}K!XCd0|^VV`bv4TN@d@~kZc>}qo`vtniOWa0>+I{Z&`_aC7b!c>> zZWjJfwjRD!?lSehzp<6?!Q+P81#Wlm;}2E8IX?eld(EA=_VaBI*D4hrh)^v-pDh`V zlaS>qd)#p)u&|0QWNp29Ep`n3y#0%4dBGP)+Md?O-1ZQX77~z_lmF2XAYPY4{aH@1 zZO^q|LQx?h*56lKuov8tCzi&~e~ql)YFYoEgREStci^)x(sVeMiK$ogj>wxA?()xb zEc;Gz5YfvzyYy{zdKH6GA@?2K-n$J=N@{w&=Lemnxnx*7dCDpIul24RdUHzlF{Glfyv}&bUQT*+yMmpuq zv&NKwLqg71*0d)E1Sq4pg>V|tNG|8qRccfz8bXWP@&-)jybpx;`H!(dVR+-3IUPCO| zrZBBG8`|X!OXA~;tJw=rk2DbpKZ>NNWTEq|*mGaxK_x2Huj^!K6{KkuD$eh$DRR)K zHqi1puVLotsb^uR=c+L<^T;=nt06?dUq9*8{$KV-4pclk(ONFD!YwbqimN_xP$sC< zxw}aC?^n)-YPH!b1kE)CGg`3&9QTEw4bj{Kt`FF1y@=^hTPzF6z8FY1sknoo@NnxX z2d*(@2c9uI-ZA@KqsIr@o@!JH#R{^dX6L!E5KDQ$cjx3ZjSUN#Av8#S)u;29lFqN< znyK-wK396y>BOFLMh%W9hTa72^oyM?zd`rWGwO$*=n$rT%l)Sh1k>!xP#c2?A2^;r zp=0{`zBYlbfYFCy$zztuN7ur`OYL0n><^mt@2e?4{b}he^QX3enn=Bo;*z7Eh>PNT z+kWJkf#4g80c)yK{*j1=n`{@ZV1Jnn-r?F7&7k~5lq{2?MrP^_<+!s;OL$tvlN^=! zprg^kg^wvLNK1s_kb`ejq9V_>1J!CAiMwoyba=MyJ8<}k&84)GC*Rx%hK5UfS+rS| zk_v@W)}-vT2iAr}p`ag1*6+LMqF#y)BpdKD*^?@WD~&31_c}2;RQCCdd2g&>%mF@O z1({J-Lw5_OfyCSowZ2}|LiLwzLabTRQ=JCcg3Qu&GBb@Ab~MDX1hWKdGUaRu=`g(0 zv0r<$Sh!+K#Th!8eZ8T(9xWseY-ft53fju~RVhkwcmDS@5xOtaJX_DOE%_zYX;s`y zE8+BV`MhInRRD0 z>^q7*8%9(f+K01CKY#J!MV~H!1OQL;CihQVFw9{rH?OWTu+T44!;ZFt*1s#u9 zKPS7&lGlL$L$y#s*Zv^AtT*Y6uWm4~ihUS(#4RtC^Snrk|D^4lh_u+W5)VU2Wv^ye!qc=DYz96wxJSRl)f`K?Cx z5WRni&0!y&Kr0#O(74Xfg^T+tu|O9SRLAj!D=XkWA`yhBPy4I%!_IG?zi+%M?K;p> z7akEIhZKUSQ~^6%UbgX#&v??&C|{}FJS@+d!z^I;?8YIzbR~hYF0=ERW3RWo@nCw2vZ{S{)T}m<3+kI3p=bJjawiOd~%;hO&;Vjwy z2Nsm0vE6SZlY-;?H}J|T>6phxWpb1v&wD+?dgD3c1!wf} zMSl(ZJ|H|j9cZ>k42ctCq{eae-X+SDk6(S(dz;GK$yoaXVcwV~)h23coak6g-;9!qSA;dHwBIxDi1;pwtwlwSZ?Fx7s z6dPq^YS`FU_45@omKQU2nZ39kHeE#FjS*Bkd^}w|UC&&Xr$FO@zDC)R47do$>EuWL4x85Ho3&fJI_aK! zxL9QK_%$(4_tKq-8Qwp`m>ELV9(-(K*`z|2XD=LLvGq-yG3MZ$IU6a~#6r3|B=Ytd zzVFG)qcek?yI2mbFIUUyL~e=$3%CVhhTW5i#B&2&<%@?#UM7lpD3}-WJ%0Qc+4$|7 zH%p*&1eMULCNmKQg$u|`DNGz39Q5?>K7621pf0ll5CrKco?HV6&V*)7uG?CdWHlbT z(6w5c)+bo2%o^M8M7PFlwLQ*yqt!rTzgNBByk1L8^@*Ml6@zB?M5oAPX+z7#!Rl}B zlHE+q)>T^a1576*`)=IG*0)@Y%WU#1HcZSZqfT4ZJ?Rw@R(bHzqh=o)mG#xyIhG>% z)n@l?4ev)9VGF4!oh+MOj@=}bAPnu?J+b1lQHuOK$-Wz#Sk_#WGze$z)O))loH;Lz zZ}f+=sV7MH5G(!;VhinddAk=J`%XRR?)Ji6gXS17?KX7gg`C4uW?LMcAX6BCPx=n{ zh$@%sAt3(O|61rrRrKTND43g-OdT&hAc~g~@Jr^UEu(8!nBR{rMeeaN1|HY&y2_kv# zjvj3HvTyND5M(e)tmUAFa5n})RPL|Oe zBsPII$O3f*j4H_+2yBus6-?vxYuAo%h3v}VsHiAN#(^rcva%AvEJI?sd;6K*P0iz3 zWXZhgEe3A}N}MWVW5g`f%12tO`Ikk2}qt~~qA!_7p z>%G1d!s!^Go-T@ueDp|3K3M_4xo(;&C**;l(`j`$8Kni_U=#|)4@C!}9FA(jZr0nl zS;!MH(kH(FWx2s3N{62V#sF5F13F99^bx9O<|hrvY!Z$-^RK`jhkSZ?NNQRdGWv^R zk?F;6?23E8xmTH(M@_fbX~aBJ49?QaN{=~nOwvj7+_^?G!#qP%6Ty!Ofzq z(oZqW5xQ+~dXu<7j8lBAyGgFrQMSDD+}!M}S9(>qvh91a^_}tzTSdc<GT~FcjD^weZ6Se?d^wxx=`A1J)PH__R4hDTsI*68%YqG8!Ta-`o(6ke z8f{WS`a2G_R4`5*xf*lI^z-$!faj&g8|WX4Zhq`IHNWdhKtP;Bubt7N|G}G#@j69K z-j0egQ6&Erk3jCUu~LxJYHMXvbO?3=3K)zX;0RT|B0#RnQ}4i4dJD=oNHUh^myXN7 zb-!@2J&ul-kB>158@#U0fBx0|B%iPl@x6Nu1Y;Dfg3>j!|KkEkgilYq#2-Xid*}$mjMuF_`MJx|t|ShqCi9QV9- zNmtJ&k8Ne2({hq(#ZT)=pS<&%JQ~WggAQ0sjqk`Gs13=oPH8rYX8WaIa3;^VrF&+5 zw@}_lsl%^`*zm^T4_4#*yM`BYgg&n9T)3+p>&aWNwy+c=v#1boc$(}3I=_0?f)Nd! zRzg(vd1G|(LfLDc{4WF z;XoWDo;q1hfo2!sF{zQ(p_Z=473pxTX%#6~OE5+wUGI{j)hQ!mSAW*fdrozRWZn4$ zDV2Pk3EnH!6PbD`UG00ToUj=+%07A9rfW54DW&M~3s(DY)#$Vp+Mgw8=%&|V;GW-a zn3A8JrY{&1BgCbUv@tfO^`xJqZA8Y#0?p&A(hU;7Y}24ReB_ptyHZPxp}n(Y`M~wk zfwY*Tr?YaMe@I2lcN`Xsc{U1FZg*Fg#+%grT5*vkd0N`qe5p7XahYA&200fmUW9Hf z)=hzXqxG?4tn{qYTs-7ZN~&r5*`1Q*w$=3H>~^(*%a<>+O}&XxO*{Af3-@Eu^$LQk zND>|pp+qR9$Im1flOlFYJM39UEKl_Hx^!`@ugw9#NO zBMFrcA9lFB?(1+IZ}O!|*Gtb3v2|e|QqI&r@nQXj&B~1Qlb_{Bs_3}VPUgPwK$VI* z=<?|R81=?DH-|dJ?6+kdN3)$7GWk5tH$H~>=@??t%UjUQR=+o zAKe7>*@7CI)QotC(nsBI&Sy(}@alNf@%(8=$|{=in`%7M8}{=A>bPy$vSs>m0{VGi z#>5RZ)Ab)Z3Sz^OExKu`i=Es~Ii6S-DKDcj{mo z9-8?7w%G1%v)-}+03`3;`a=KkR#vA|mDy0Xfl&CuG9TE(r^7{QO2dFqN3We#lCs}zfQK3W@ZB*y@qB2k4NSfA7s1N zmev}y!;s9ocOMKh+y!xw!oaJiYk9F(o97YUdaJcEOXeh>J4FKlRN zP)!THdeydKoS@91`i=VYi;uJTVE=C))LUN|O4`!C+xtTHG1na#FIVX5SF4D}qhNiQ zB4P6+gsq=gA6|b>nzHg@=jy3d9kq=n3c@kZ?0m+(AHzh7F99ki>1v$qk~G z_m+75jxn+*GGvZrWmLLw;rI3H*Wrahi_(r4SE=ATg~ICefWqsm7mBgbypgP8J_k|_ zG^vEi?1^m!h0~PGCg~K7$_nccfi;s9OD_6T2`lq6X<@tv8fCh++zVs963);8V;;&c zE>6gFjd{+7hlNqo((6~uh0p{3@vM*BDXxOEo5rU?;Xt^cm zeiPdTg5hN@_Yjw2dl0p8knEtL|2XNahsQ6JTi%}g$XW7)=FbhiRI?NBMRgh3kg=ZL zqr@ZX>PtxXLLCvxp;>Z>7&o$%bt=4zd^2Sp6f=j5at7ES_O(Nw82?!9TQ7U7@MZQi*ynS#d z3UtD?Vs%UMiEK5oZ|h&M_h^m1iEPmmlU6|uQc7B}7+-Sf(xv+PdURi*rHtS!tEO?M z;`Ao(KNI}oqp7%P$s%1bI#W@CVjI#@`}2C-|My`QhC>^&xOW)jM@+n^M*ZHRVh+R% zL`T1&P>n6Tor|m9`tkb1P4+2VO6(3kdnkXNORF;NJH|8=PGk32x*|_Fd$zQu#&@3D zB+v8Pho=g^=58wPXn~&HV0Bre&EC&~X@A~j^`q1zbjOR@K3LRL_gWN%v^ z8e$!XUA}j7nqF29O}}uHlCtW_J4^LX`9(xLadbUB&(DoV#k;N|S*d^{n5=MNg&?S$ z?6;pW2BK(*sD07gtp9rGi}jS`v9;NXw%i+B^P0`XtANQks=jBcMpCQ-FJk>wd%;Us_rs zN1;jb;H|K$R2zv}4WPMWm>ux!`E%F#$xbLhN*QzS-+vAwdlU(@YhhBtF>$H3|330% zW4E`R_^}fwvOckTc`YJUIuF5FuqtsxS|CF?@%i)TnHh6P2u4MnhJ-w9T8@4;1Y`4# zl{7u-ApiXwFpfdvN4tSncnp!eqs6x3VJcQ_!@6~l8B7qCSo62AfTEnGiAln!TNu$` z0>r-evFharV)hPpP1m*5^8bEKf=&C+%lVM5sWH(?Li}>PO{qyPKT+Qxy*wheS(#Gr z%T`@^ylZMZ1O1InjQ8|TxVwMD6>1u>L+bPRdu!_!a9#8h}JPoyeao&3g-TIN1|yk$@B;(yTMr|MtxvOWJ&i~a|m#SZ?8J#j;oh<_G84Vq@@e_Q$qOaU+U99CA=6Hgx$W)g*n ze^2E7$Oz~lZJ#s>40FJp&EwSF$`d#ri+~Wa)8IXijJyW(VWBmq8grHEv6FE+!E<;G zC9qJ+tMSvTNpAu)($QT2!j^}pCqe?xGiORXaU>%OU{8TT$@$E|F=jT8dh06*3tQC2 zaSE_8Fo;_{AWbXxe88Nb=ka@qo;|bV%E-tUsK$fuWcEW9M0(i5WsK-iPuE)rM_C?K ze4|`rZYFAW1xM0F6M`uKA#RLYcu~(pwU!W|0#4xk``AaMwrG@$C?ZmY6?Cpf(D9QL zAN#?~5_DorZJ3IpllrN9!nCyK%1bi|Hkuy=L-=rFmPvyv&+I`ZV+W9K5Cr&t8Af4n z?P@;0`#3}x=L46wOIq3sTh@IwPR5J&j)?X2IxC6E6Mv4A(K7@>suP*Ks*`jO7;Q@R`51F=;C z0@ftI@Pgg)+`Zl^rlT6|CvQL{3Ux&5>$`XF2A1H5;8_(gf(bSVEkxpjE!anXetuZx z$B!PJ|21!vzgI^v286fo(9VW8M9VwNK5Eh}G&MJ5X7X>}o*Wm)GU!(MvHdn0`L_gH z<6&P82yk|}k24AjNC!&qtDNz7Bb>8Bvcce`I_&MD%GkxI3R z>2T|kEKHoPc(gGmoJ|bGJH$PA5Q~5`IVXY zLzfl6qNLL_i6m*2tVNN)P^UVwo7-owK(JM2a5|?8`593@=?z%U>)SxGl7AdbLkLM% z#=6yhRW&zt%ssSALI_&GXdg}nAc-SMjB~@JfrOqbh0EK8OO&A6ghnG5t+!y4Os1Qy zcusW*zux!`lbs?Yi3WJYizpp{>?Eo5ghcXqD4%F%W(NM6PTg6w-oR1kw7(8bRD{&` z_~__75D&8|_fcFRFdXhbFF*N)j-4AwnduiVk_JC#PvY=);c&zdY7t-zPJadJccQvD z=*l3OJ2wCl#0!AODtxj4iGykt78X|N)O7FueRk(Sx$WT0*`gK~an1k0()aHyyN@TE z;AyF-s0f>sigs-2S04ZHfxwyWC?M>}1Yr>n0|t>er>z4na4cdzb8R8L8r9TYETWv~ zLicS=Dx7t@YEDlh4aNvM-G~UFz6TZr9F`|26eN-2zXYz#aJQjP4}k}yB@ipGTYV7s z4;9$a)>vg_WrD-%_x(%LmhGem3~W=nC!ATPl^wO9A5el+4bI3~H~xT?(PeHjEO@|H z9)^wd=r4(Pr10J>y1>TviVDPxLhb#pwfV9e*MwG(CG#8Bk*sdxn>MynW31krgml}IFTWBbK3zZ-EoF>f(;IzNXMb`n=>bR2 zhUkg=jGgaSNrKxZ>D)yWe|&z>)PrlAe12Jg9^|44kx96pK#8ujS7SK(W7Nv3Qx6_K zyd)=Dt|jI>)X~vF*}3|XA`gQAQ&_OXYLeBK>7&o*UWYn;y(nI^I7~@q;vmBv~{1+ySHRWV@bYOUP34QuCeoO9lc6RfxV6+zQ!u(|PZ=|7-yRhPSO9r1iK-thaE+u$tJW#D0XQ<2(E zCN-cB6Cn$(JFBMSCtz=4dIQ;{-Vb`GAD=UC-I`}nmk^>F!Pbc>ASLzK36newPqEpx zD0tHw&aV7UCzJ(3TiV-CLM@{@mbmfhqu2UX$vbx3#SAe@DVW=6PaS-Q!w=46hH4ri z-;Mz!?LS?yEP_ZQ{hydup1LG+Eb`DU#R#-iVeAJzIYG=e*wDG-YfX62=f$$#d=eP2637d&86%JC>m_r|8*r0H2XM=uuS=E?)LC0dm7SG6dGa(@?@MQ+TPegatSZ`$F=6Ia?g7aU$o`b#y z`q~mF*`Gt3qljHi-%{QhNiLRS0J`yj;jOK$5lLe51R-RB%Qqbd!@D7P;6R@-aQ^VfNOZ08qz(^Td7hNI3PJ)A z-;=CVk%LLs?7DOUGbC~J_#z!T5_kN|t|WX}CQfJpozTtF=M_}rxdE@Cbz3SA^`mW9 z!-D>%W~2w-`d_+~An=#$g^X16%FDJ=6JmB5>`?D7U(KEphe#DN z!B6<}rd*6KLlNg*lM^hsr%Y`hVrPlNi+s)E zQdj}3N?iVIpL2le%o8>nZwL4;}4R&@Q}_bZ-hc4T$F zqEpi6@-p_u4Vz19lasJ9d*~4YenwD=B`pJM!@ATYoEa@RP>0K43Fam@2use@cJj~G z?V{*6e0UF+4@`%bh<7H($GuT|xp3hE;|vosGp?Mj1J)7De#5%Uc=8yLFhy^z%parS z>+2h%u@zYq8=KR+nry&_)|K zH@7kqjA^i)G2X2BZ|%#+Va%|v(O3Q&{gqBflV`Z+78f0wANF0t(`M{|f63zvS@oBw zNP0QlJ5){9%bJ5K7C9APCUf9G*BC?j7113#c1TKk;2tqg3!^6@=Yfax5yAgOdwKinx;k4hnxajVczlX`C z1t!oykO(B5lW7>DjCX(PE=VqVg;*G|C`j(Y$#i|ay~n;^E4y-%kGLDs14DkMFf1Bl z2UL65ih8k3Arvy1mS!byT)XdHnk| zl4%jV1DQ?Xd@aK3M3K$3w6vQyOO!h(tEvW@iSWS&4F_*n;`z@8Nu>Y;0Cj^x1l4cm z`w$Vpi@~NY12E6FsP_Ni2~rXTy#_AcceEM)+c%6rhVwccLmV;GjW-)=RYwva9dS<` z9bRKv!9hVl1`|Ruj>O-Hj((EZ?No-?q8$l#=(y$YrB&Oo&m!4FbD zV*16ABW)Nx5t5036tT+mEAa;pQwbR~fhXqIu-&ry(;3rzQ^< z<(1StQiqv0M95tHaPof!SW47MCtVNax{wfzYC6(=_Vno`Am1S^Lqiq?j&Ni|Lo`+d z1_iAPP%wkZfi#)|EYU1w@WX$=)~tb;-C5;;E8!w1P&L&SMAddB$yp!ysa&h1&~CxM zrrSytNQB*?#|Z?84PO1GCuy7h8O)OVC%@3L0P@+3V{&eG3~C_kxjGgW^>Et6ylG+K z_D4nkkBMQr3%L)z6X^{K(DNF5&?JHfhe%r^r!zP>*kqs7zh!LaO#4@O$wqEiT~mXC z9L7hT0#Gd&6BdG#j&|>)^UD)&-sr<65Y2BYD#!l!cGB29xIlz!MT8|7pv%@i$Ve5ZiK3fgmCF)8*S=03e4~4UUG#G(<8>&2Q3-lE9NNf!R z}U0#Lv3?J?1cC!A~MqJ)G0)S{U~ky~;S+pQic*4`u z6XD-)u*l$)91E3TsrQ&y!}3w1(EF~3C2!ka#XqQgf!=t-^ zrZ#N2()Xqo2@kAMJ7=WGVZOV6PsEw)&GAQtOAeBYPf4i}cbFuK6dQO{Xh=w{4vNW!cZaPTmcv*%T<8AZn$ydZ;RC=S#G4( z&~Yrm)-p-a(cj|_1xB!nmR=p+WAJv_6L7mxzFAhgFsMhHc>{6F$1rgb(df_;F&Md{ zLrhlI59`1FwNjRTH7X^5EgxB_PEJk|VwBL5tgftN33tF)E`aIWspxTK&^0mX1B?=q zSz3A)orz`V4&fo+LaoLy*O(YL*)r<>$xdB;BR%q!cL3hEi&{OvcfEi2&idUStoOmq z9e+j6K$(kq2wo6|I-@o03z%h6pXw`2@)n495vY>ObpzZw)Olc^5is8OnE=uYDHfaD z3*TUfgbZ_$wmcy4|5zx35&=7fm^cr=Oy42%x%M>%c#=(k-r(#_{mOu9$4-|cZuXG> z`;Hu8)V&Jc3O~Xwt0H?Up7`tOpz8SdN(JZ|Msn z;r|J3i^^B9j4PNDu(zuZ*85vH#O}KD0NXx9dh5OiP0jNV)dND#zjtp5hFd^n4-n*t z25O~9*E~L@tEPeaOS9+>qm2*(*Khz%2FgtM1%ya>zB}vOj?lt|5aggqOg_81r@kfe z0?L3rMOiord%I3xqj!q+1+QG(2(dhJD)KE5i=MoGUE&jjkR8fGk(4=r>~h{;9^Ck2 z{FYR(%-S-)eG^^U*@=Rbb=_^~Zk3)aW19n=+| zzumA~ww6w1eZakrN^31x8j^kRuO1F65FK$xekfV5iS;=g79P%%3RxaCekQgYxGR3d zzTl<&cu~EMsLD9@NxA0s?I&i3Lp~+f;t&tR$-(LvQ}4ZGvXWqo)R%gox^EJ8>sixuV4LlKDH)1gA{F9=Ju7!vJ%8k#{#p(g1IKmw?c+=JX?dC)Slm17?@bHQ+Gb6mpIC`_|HeI zQ=Q=nc*B7ui!LGV}n_b39Kdpn%U4dRK4k#yxX$aX7IciF@M92^_k@MgV zNyE5%@;0HQSa0=kHKQh`2CO@>T7q3Zc{?V_!7t*iG#vY08keDm&~seV%IfaAv_D5H zdLn-}F~lrbx)Mw(yFN z|BE!B!)9sKs#ORrIsSGw4-O7`m>$;D98D1K67Frda6yXuCtRO_;8v+Ds5(p$J1!Q( zd*QDEwoE*qBovU_^|8Kwgm>iHlApX+E!+#bi;43NN<2yisY)p?Yjkot zxsZRunIUKq?5BOI`2fw9@0$uHzkc~Le2uWpKMkN7c#(@Mvf{$;6;Lt2QJ5L5iEUj5 ztiqXp&3HF<&KZO|yZ;0j7kQ6(`9ELpxm<*UZEvHrqr0OU3?5gL9Rye$pY-MWjT?_R zr#_h4-c1tg9vQQOr{fF3b_Te3oO;y{asXmxcpTTP-Xy%AXc zM;@qN9vgf2?lhu7JOQ+qitpU1T%oput`;)SDBv#4&zJoTs}e*#RksTv=EGHkr8B^K zNs$hbVqN&PYb%Jek4X2_`}?{sDlqn(IFIahx)n7FIedSUpn~@oMX!((Nd7k)g6@Q{ zY*f|PqRRa^%rGiEc9y7r7^dhTjdE?EMqpy=b@tRL;J;2~2_ZzMs-Fy&a@&KEuaFAH z$qom+jWL;Xb7v8&B6^2Vppcf=A;N0qEu!wL&W!arp+-(PZ2M=@4>O^ z52@gia$$+3Ba9>*spvvv{3k(4h&NAL#UY|crK^w+WrUm;>o?QT{DNIWarSY&3;=DvLnWLE$p?aY0|nu-HQeZkB#|@|DCBbxzN(Cc z&=WDc-FPoLh*6h~@OB=IScQ?oo}Y(K7WToy{NdpfB56IfUqLngtZ&kAzV4xOVq&64 zEX#40;1J|0J+alM{Zk#n?PgcB+8!C zb343Ij+n10YDMy`#kl}W$#XnIDJ2fh2N4(|+m~>+1NHtuQlQ~_8R(sun6UY_iTqqZB%z|J%9fK1LGzfPmvJWNDcFX$)Ah12_qY*w z?Ctz692s~O&xbECwa?Z3B|wqReIY@Fm@lpT_lv#+(n?GM?jKO<#>y_v^f!ChGjw>p z^+(*?);I8`qvI=*l4-X4C}p&_M-1B9BBH{+%(S=wY}CbT6t{^~_jBI>G2YfDxot&A zy36==X|(n>dhjz)EU+c$PSqB`l49cHPdt^hCwh19K4qj@3)RDT@Nr$M)A{)M35s`w z`~`pbAMn!`78ay*5AidJSk{~EVdqJe9`d#Yw$mw{(fu00B@(kUG8Uqn_rl#Qe8-}R zdp|`i-4o!DbS`6?8`yLq9a3`}=1NcYcU3URv^2sMbngQb3!4gpDlLzMt`RI2Z)E(J z0bn0Gbf^Jr^67>HcaUZVUb%vyPTt<$XHiJ&aKo<9Mjl&WUSsG*yV(#Y7D0ae_3H$^ zFyQGVC_s?ykcXW`3OBh`Y%?P`f&dLrmUO)?=#0}j{SbDz=ivQn8(Ukqp;~o{ESDQl zWSVo%Sgm6xTz`_1Dm^d&z?wYmOXn4 zfcjqb?7E+i_PZa(3+YjI znMYvR_ip@8i?*W=G2wX6o;_p)c;O)-!_R?SFM`5g*Ft9(fTHnT0-@lJ(Lgz?9_a}V zohj%vL;|e%dSrO`3y5LG%}Cew``$Io=}i>;?ze)+pSz71vaw~uh7F$G=?E~K{}F8* zZy-J;1`jZHU@5SFR4Jf`G0GI3!gC!nmPasf_dN3YmXEVIh+LRrIb%FW03a7LoDftK zr$y4)(8h*Lk6nzvW9smbNtshjnKEo$rubhPWlw)UAQ0^t_z&v8t5}^ZFUve%%Ox^L_jT8$#>Mw?%pojlJSfy*cW)Ux1&_& zVHB;)&on(0&~-Hv9qxaBvX@QT^-gkfa#@<_=KnwqR?TGj!9H%5e@H$^R&N@{sB`{^ zBETT)!v;c7Q(v&mbH{%W#P0Vvyo9hK5(T8M;D!56_lS`Z-1IQFFyss*fXQ`B=~vGIEuA3@y&Dy2q2IIxA5_TyJ?>`mDV zE3&2s(3VkJT8hM{si}z|Z8iK}slh`&OKS}YQ2=|&COZ5~;Jrp{{llvwT`zyAU^RfW zFmxQch`%6KbWV1S0A}g-qa&w9w5_+q0oWY+H&hrOL7)kn4xX)ys~hPMTsRt2K=i7r ztSoixu))y>CqIIVhj<*A0<58?wj&kUU3?}Z3kwS!ogxKjQn8LP#qM1oL8_gvDa_4v z0RT#rwcOpsWeR73P+R8lxp8S>X4_+S1Gog;44KoO&>mb{jL2r(O!hu6;{w0RvB?X>{GjW#}6ni;-Yq@;wTaFl<*+PXQB7s3&OFt z>=4ds1IR~BTZoysI9R8V=Oha{FtDA0cSDN|d9pJnHs}$Ve12Qjim&;|OMH1^p;xCMR)pR!|Z_U=F@7 z5N4n_?<|10m*#IwF%xmP@`@;s`b=c%ru771^eJII@v^#&m`Ix_ULVoa9E272b%$Ru z3qk|SBuXPE`pffz)|AZ22YSRLCFL9Dgk~Zn?L3U!au@g@*1!K$i%5mXY>K=QzMvz_ z4-{go@7VCLBGPv6bLVJ)5r7$hTCc->Hj}t>zEtej5{=a{{QeA*u-urTr3MaJymzw}mh^-!gh>uNkWb$vx~th}pC2u5n< z!4%YiJx-st{!x+J(#5Fc*}8=cS)IMcmwwT>cZM$w2hcjz8sVgIrsc$|rU{6M*t0YZ z4Por~m5iJtd2bxcM%mI;bE2G(6a;IBCzMj2yzwqNK~q<+`(`$o>2^pR_vDZDE+Y}$ zv%eGcQS1?pQQLJ*ui3|J$no=_)cMe|Zndv{P0bb6wei8Vr@5knL%5rg_{5D5wlRKV zU1NFV3u_YRPL~IXDaV9FL{J(bM}-VZk?u+X>-Y$M=k5#dDr;&?dAVM@$Z^|Mr0|gk z=T&lybh7k8Y5Cx`T4XwQ~gHD;^u7$KX<(m6b)D`=*s;XJUM&6 z;#zlH_H%tn)BeNZWp={}CJL-hMlN&R&eidK_3?ebI`RwyWZv@o_E&G+f0<~`jE%1Wv`#^i1}6)!U2r&fRmae47&Q6>#Pq!LJZhO63lWv%5pZ&^QX zbO?7E=9qORq-3ZmwEFMPBmQschM4Eh_Y79~il2Y6Q3YgeYqF)$_cwKzQ?2e6r`#Le zE4$Is=5BPUr>qRu6qw9rvleL*KD7lRU#500+r03J%d)`=@2wG8=LlXI?4f zV%saYv(bKKzAOLOh+LrS`)#X(3wCK{Y1kKD(aFA*B{?~H(y=tbz3g2<%tMnmCYte+ zMN9Gn+Z)6McPb0qdAGLmTR~jZ*@TtkI+@6V?CQnezk7d#$6s2zTAhV~YSlXZQ)_cm z^_boXo$M4M&y+=DTu1N20*y|W|O3vM_3^x?jE?)|~ z{E|heCqybz`A@h;rm6+E3WeRPsUzQbw-AjhLG_n5rspHb%sk0_fwhEw`yuBJe{tx`mzsM4}6EEx%n@UG3tP{z(2i~ z$SW@X_7MFh$lj5?o`NtN_}$+tN3QMl%^-Kt2CA#8qm6)HKmgOPw6`>{*X=w0Ec(gw zO>2f$U6}ISI-2t=Orhr}SC`Go?|UKH{I5&Sj4?B{zu3bT@4ow^9f`D_BXV-Gl>6m_ z-|OFVr#i2M6ttSIgjh1pe3`PA;|O1Sz|w$1F?pP4E^_e79G-~h{K2^{wVaULx4*l( zSIoDl_-4J2G7UR_d#reow%nL|+6|3O$Q|Jwhm4ONorR)g1C;IoPoCe$F@%^3?K40a z7D0qLi6Tv`xo25(IM?su+932D16U2yN-2S6-R*Sy2(%7FIMKW%A=+kYlQz2q^e zq$2%<$FZl`uQ-#t^qn~^mze15gg0E+wm;g zPnCIMr3!TWzdMaSe%snG8>caS$->UTfzXx%@!+Jn`5?&FUy0dLkl0JnA$k;u7zDu; ztHT{)TmjLx_0@c$(J5jAyY-Ja_z%xC*1C5!Z-3>7yy@)x^)>QBxW6|xEP>sI5Yyd6 zn48tp_BlXcV%zvoyfiVD|gdt%97=g*7e)D*MmbeM;Q>qW5g0$A!A_Z=bc} z53+#{y5$C^z~QE$aYK*$sWVP1XOGTMmpEXu>E6Aw2zgcz#{n-`1TXL$V6rA_6?EGD z#JAtMeVd^25tZbJCB_3Su1BI2-PEM1D zAU&G4{a0p63b(NEjDy0D_^gs(4+ClGe1ZO|?6b{$k_L&BJ2=AJU$xv>TBow9nVCjg zYk+p=D$+%d5BE8|7D7~}7VB~ampA-K;=Ju{rll9vdsBSluC$F3kN`w{2>t)ktgI6N z5(|JGBBk?_e~Z`_VUlmBfzd8^@hc`ZdW@v(yYW#Tr&TU5J ze&yYZdkmCva&GMr{vKdDDzlacC{7=+gM{0+b8>PNmdAG<9lQQg(HoOD!dgJ(sqr0- zKB@&+jv-3RcO5Z=1IRK4ZBJ=mSUzfQZhrLW&DRq@$D|w1f&Ip6yPB-m`{s-1xhxFc z?B!%Jr{%Cb+YzW9|3MMix|RXQ)o-r9&h*k)*JTOlFI|vqP;h%QW3T;eZE2!f;n>(% z!><`PqMt%xy)$-R@zDR23WMzS2j>BY8P|*-9=|gE6u?#x> zC^tKMw{6plq^97q8V#eEPv7m_4DKH-ikN?}sfpQKAM-WeUoK}Pt-rz<@i{N6{sniR z&SJ~eX8BL2@3D6~J2`+)dskQ2_&ieLJ;#baV5}aCjHk=x`x2rWs%iQLkPeRSExEXB`h<(IsYP|ROY^Nd zgGARV&TGBrMxL`vpSM^EwEpujZl})e@29Qrpc{z!(ALvYY2WwqaC;K{`WQ8yZ^%9H z5UwKfFag>zw+t@ho|@@mq5Mi4q#^e0Cois3x|>?`F7ewdgLJX|h5m9cM@~IwlUsQ7 zmGR@4w%QrKxn^%f_jiTV66>sgEBMzhyL{#;`FQ!DQujRAB*cdUC;WygKx#LVIE-#M z+ql)JEm5ZX-Kn^J%G`7|clqUYYMdOt!mRAtFnM4wZ0v#C7;^?!^$#R#!&Lh_%aeHz zRl7PU^yp6X77&H$2IvxME$nohuxO^7JMP*$0@GRdfBC#i#FX>HA`K$WiT78Vqb4sF!xgE71o!Jy zIDNbp)4{>=ct}=$y$s9%p$1PFf zX|+eoS|ww(rgZ$xVGNV zol6ErM~H74nVoJ#ze0qvSspH9Hs%e2m#PuB#{O2?F0bmC>9dJR(!s=iyw^176O5EF zy%qlIO5t{x@Z+%K@x3McpvxZD)N;vfx~G21s*Ynh?IzFtsc^1KtZV<{0@QZQZo2w> zyXBujup1w6DfM6|awz5!ZXnJ1Nw3yc!y^OLV_@c{hCO>3&6SV!pNT+9ufN=5wxCg@#k_kBxjw z%yxP&3m|68$MJo~-`u)H=ZWjIR5|-AxwA7zBg`mfy65eyR}-Ifv|sfu{rPqesXeUe zGl3`RsZNKdV#COkcbAu!n@8kt;N6udC-VF9qfm#)Rxe`G`o+=SU(vcfxP(LZg*R+t zF4#R}!Q6gn2888A6=Ih2n(NO5(h7I2=DwyTv7x@o|HrCiZA#?HT?*ooCoQbs{d^Sq z`i#52%EWm>4DhNuzev$+ig=;WYHlBfaEkmunXiZX*S=S;G8A`=T_ab^3(C#hW~Bbe ztaT^q_F-z`^Aoc7ZPoSYkdRBgni10Ol-Q%}XtY-8EH~Yjf`0R&>V3Q$n%36eDJ`vH z|rWtdgBQlI&SV zw)=IRKEL~MKkk3;|Lz{XpU0PT&ULQqeZ8;u`!$}UEtzn4{qc&9=Qh&fnZuZ+PM)@h zH3GpAFdoiWigTH3 z#}@tNt!b+@J^0{nmg2AO5>G{Yo z20SkEXb7jV#2f3!(}JazNXtZw{Cg%hCLdL=P8Q&=>OX$C-2V3aaERQ&O5=t%-e7>6($d<|0bisTl@ZHP4){-X2++VP*7KHrcJ? z^2()A0-qJnN|oqKWEwKEjv!Zh?qKa7jC`)vFOF8@)EVSLsc`+?GA5ZUAlZr zO~=xBnqSGDhl{&{nU2=lU1H0y=mkCLqrq~F2aR9eT}_=;(&mgLf#-2YYdu;^kIalE zcaW-9%j1{7n%6u9o}d2O*u9ygdz&tB|4C>Ji%|8225gLi_`lx|I+`@Fv`W9SXME0! za11We!$D5-F0uujfw3l0>tA{7T+n5^+Uxje{PKiHsTE9J!GX_ZiN&KQ+3dJ%Ltb?G zP58>~ESAc8(HP0(P9|;7@K)8p#SIKx_q3-?>Y7M z*?-s5lKLU0T=Aamdj+y#42qoS@4*t`Fow28v@Y_ezlwRGpU zB#4!2Q!;t&(OQeQguz?XsAR;#rp9p1Oii&ABa9K7l52l$^Y6<{C~*xlJiEfJUDIU;8$*t|FgZ-Pf!xix2rn9VjsHbAfJf$zS^ii4I5 zI`VL3Z*Y+Qjb#V&n5;T;^J`(LH&OLh$>3e)D?UnC7fG8N?U~tXB3@E(obr^nL8wi| z)*Kqyjpb%V?HBQTb%wMFZ+P*8J#Z(B17~^CD+cTXHO)??8llMwtosikyQB>+0!EKa_wPu7Ree>84A5h`hCu-@^fq2}jAcL?{eC z@s^;D{ryxnAUNCRHh@9}2kc6gK{3j`?l>)Dt0o|zmcxD430nVMd`Q93JX}^Bdc!_( zvnh(KWeKJdX*LzO4~*nNUpO`3aK}p4m=$`iU*+TFMMUWvj{4Q2FAi5jTpWAHDLBgp z^Wx>pvnK=hd=3Gs53RB7cIg$+*v|9KlE$IPE^?vp{1kt(VZud7FnN(}6t`-ZBm7oxg@1b@3NkMLjsI0e0Ax#=s+kf=^iTW0rs1calx zQ0J7B_l)#-m*^54tDvwDfT-CHA10ppyk1X{S4x{IMzHjzCv_cp)9|>gAlI(8B=x&< z-Ur_=HJzM*_T;W`3#4D{7-%jm>YVcgx93oxg<_2%+NlneGd7VuWRN@G+L6;zm-)bL)6LP=&)F zG7?BC3^=vfi{Z`AVB$0aZQJ&-+?h}`)&dImLF3PjK~#?e)r4^}2$Q1|_feS4L^PmT zOLQ7-7)4e2>dl@1v~vA@=nfTWBjci+96>1*qO9O9!3b4%+2s$D!2N|{`uyKr-`^o7 zpP*~(P_^+gja&Bg*ua4GCq#T;!abdq;oP~fUsNR&n4qbxVSTbHexC~vbHQL%GK&tG zc#|Q{+U6emWiy`v-hS{Ww&vH=6n)Joz~cY`h)lkGqsmQyR3VmjUUV7n-sxhY#5SbM zw~~>;KB)xgQK7bnsPm}Xm=r7)s1aqRxqB0$J{BW$LE0l&7&}85^AK=X}(^d9F#GS%Cd&&lj-o zn$reO+hG$%;CJ>4Vbi{cBRW*fWewX`+5sdT4hWF+(KEn1z+mFD0u|W$%`)A5YUHGT zASao=6fm_VNifx9CvUV9B`P&yEi0a-7et626D81=U=RQ+Yx0_1Xhtvyz=N~n>UNab zuhWS*A6lhEao8mTWGmtYiuZF`=J4#G<}}&U>CMlZcm)J583V@tjfvHzA24y7I|y!xhmhqjs%HSmCsK~KA1a$$t%Qs{5(hGy zZiCVF?PLKj8wl=Nw;<4URlQ2}rlMj8tWrK8EL1h=y=5qEuwh_)@n-|wc%X9#ZDB=;oC zfbT^l7?S%T^kI7NzUtL)rGR@6;jfs5BGJ|ccw)j~Ajf3q;(e)>rvUz030Ez*x7zTp7Bv=91$3EiFw~q?*&*e{{{c0D zBp}WpFc>IY0oI~M&hr5@u7P7_aj4<_<2>Pk6!uY2WQEONMKI{6@ZF##@)#jQC@~!F zj~@bGb{^ytop0S51Z07crluftfdDRnfM0tWfNl;B_OUMC6#)v5hC&$PF@FGxd@o~S zBpJhC+Fu0B7F5T|GFB)f8=SZi6?ef9RdY}6Z-@rU-gedHmk9}v!9UyGy?@CKA?Cx^ zc>A{7uEJXJKTp|`XU=Kc5V(FOzs_$w$dh;CURffFp%6kHYiTpdb!fN4VZ9l88VX^t znp_!BoE3EEg!j2k&O&%!B%d?eH-N^!6+_VlaaB2+`CYl+=F@>)anh2b(R6;_B zL|pM#G2@Ur{2JF-{e12X-8(+=n3A(C zl~!)sXT4?@69|^N7+pu6w2=KFb#5d@;|u6hpi+RhQ7KWxq%Iw^eR_}kK`OFp)?$US zL!Dqm{NSU}NRvLU#jIcP9(5@fQE7x!exNp@pnoF+Ka9ItF<=`A>DzqqS=E1ksKM5ll?yqz-zCBE-@cI@sbP)buJ!g4j2?=6V~nDI_G*C zEa3nzQ*&pc0C_PCYx|Qe4d@wpY?_z!Yt#{BP$5J901=j{qqj}z)8Q( z+k188UydPz`hN~WBdwWFfz>p|9O*-G7P^O|5;Mht(3Y_{|EQ$~b6W6B%!Gi?bHFt|4`U<04q2#cdOR)hZg zdP>70oK~8)$bD_NR$SqAL24mmg7wP{M{5=Z(}?q~1}cJ#eJ)1W5%r*4ZWv0q-C;VJ zRZGV>(upA16Tg6+sT09i*VeBUyu-CPA9YANL+y) zq()8UWXxw32!X?#jwAi=7GtE6uv&~VY34~6MZD1jN#Uw!kgJLgB|KNP?8qLHi(IW+ zX1weXmlVQ;ciEJ=M_rD5R4$0{~wX3Soj7J5(X!&Y;NV-d3(?h00jEl=;*hOj>B&b zK0O*yVo`EKZuM#eMy7M88*w@1UwNc%=L5_8slXxL;(sQjNZ<&3l^Sr$X+Ljx(hD#_ z2*_x8Iq6~jiG30M(&Mla!A-IiH)0DgYP{s}czY@qs^)(cQ#%0-0BBip2$n(A1oVlV z08<1=$xoAE(k}%}eAodsAB|J7w_k>41bL02fx$pck9bHjR8k>c(ar?Im$6?&yhbJ7 zVf6!`6!v|5!6I$^VDmkYmTqAo)OZWvUuYn#AnIqcsX_J-aV#z_8aEFD#{)M4wNxPI zJKy25EsR4lS{QOkoyJkOFFD8Bl1`!A9c6T;0T~4B4^-sgR`{VHI4>`O-p$_{T97OK z3&Hb-lsYR4q5a|jG2LkQ_NDy4DMAfJINpk}W)n+a5{avhrvng|BFC&*j@UchbA2bc z5(Ghz1PyzsTG1rz;x_S|n`8la+`kF-NT>1Mx=sH^F@HSdMnCz&{8mBcj22zgKRlHx z0I)-Dy`yqu-z^4GDYI$Wlz9?NtmN5ONwPI!?SITZQu+lcm zTOa!fKoM!iu!a>x#s!<3muF~b=*8STAP)||Ik2Dl!o~+NDnO5r5f>H~wg>xDdZD}6Soh}(U@j{0kX2IhV~}I0=|@1B053)x z3jiHPa%FSm-z2y%e}MQA7@L*AAed=IdL)ak^`M_rb=kR0RPBL{jh60)3d!GhMX0M! z{iZDs^p4OG-M)Q0w8)8{_KePv(-^!qwGsCAZH9Wk45-#yQ;C^I1e>$k+Ss58qcaL@ z>w#uZ(_;!~*s5D0vFd@Tq^=bWnwioNcn8uNbMx_4LO=`w&F~s){~c$wA}Vo8+rw_r zg4EP2TG6vJ!~XJuclRDD9tZIZ$n*rsmyEnBbR3ha6*BD z2jX5xj0W0viO54JJ-)3@;g6JhWkmmz{O5d@|Ny*W72Tz+t?l~RyQVe zz04>11kvYf+|;UoLTQfGgg~Kmkg7`w`{L#uw6c?`D!zGA$m^#3ozFrj@NUB4##dJU z*t4Q=-ua{&a{Dgs?~&5JRkC;A%3oh-ugj9wb0vAC1yx>UWfZqH=n#=4iO+ghUY?sf zwD9BNLHWrI_EHg*&7!nEZu_v66@g}j4u>pVNJnC*Selk^9 z@!9Ff3Ll)VS52L=P##oVI^AY{(N1Ea6I@!~rFoRc(k1Ojo4Fyi|nHfx;-IlmU8 z)A$C*Uw$$me|1oov9uYmpt`!>MeU#^mPkASC^~==UBCb%cI8n7;JpA-XMhFjyBk3N zT`S(k@=xMc^b>a7hoSR4M9NM zHJbOBG#t*GICX5sgf8x9C7l?6(GYmXGX{GP1Of`D41|@w{(gq{fSX^-GufY4A=$2@ z@L7e)F88P9JOtD6K+9absH=-4eUSf@9A+my?4nWlw<*&YvGsnw4EyJstwI#O1$L#s zAh-jx8bdAW^Jl`CWp|)hgX}CL_U_q18j@4drR`D+`K9giE(?D_;{b$j0h&s)L?i;C zJM;%(d0cj{*-gxC+Amchk|V@n2L6!f+!NT1CKTu>BW2qGeGcWI_nDdZph*k}Jm3<| zF1H?TCm+r&_Z@+|!RJ-@_hZ(GK%MCsp`b4T-x5!t94sjEQVs>KNY)wOEC3Kp^InwciR8MZfU(r7Zar^_^G8^@70-+KZDVvWp5rJTligWyu zGmE!Vy=tcKpK8|dL!Pip|IaasFTM@Z-Aac$82eG=2o%>o!uD2~kLp(G1S~+=$xS3a zFbFt95#whE2gN|7D2Ka?2y8t0NZn}1SowyJtumqfZj=U95Sy35aYFieK|yz9=|nKN zW;?;9kR5Aiie=J6Ag*mRql!5TZqU&g#&{VhK|J&?=gyss)*5Eyg_570V@{~9OM>wH z&uApR7U3yNd}3EjcaP=>;Q;wpVm8aE$|ZH4!GD!Di}BX17XO_L#I1Ik!uM&a!$&DnRifkJI{L=JT1J=&3G2Agnl0-2g?JIh>`|94S7tRsq$uVfIPQtv|VMQ zy3*W|4ZQYQdtH;B;kW`NQeC{5YJQY$BMts+sZA69TcOAQZWK#j6zLLPHsEDvS3m^S zJ$S7xOT{HHLNozo!uVrb|yubU{ISWN5)Pk0~z=pC2MAj5u>PC(< z+-wE&*+%BZ=yizpRj*$3<3ytUmy}B~sn-WaUJ*Ge?G*>aaR%^12^d~LYtg(P>kH^) zCVl=^-dZ05X$6UquVf9`h!CGo!)p97|yuE;3o%$H&XYyHm@*H=l0 zRnfDAknlMEr@e!`b@&TtNWmxeu8td8LtWlhP5i|;wcPUai{_W&EcuLv%4rU~V z-77x!-vbhy_5pIFZzod~SQIKTsN2Ne$nCw**i{{*N$Uj}K_$k=;3+%=^W{89?psW( zw8xkcBzhK4DIGAyF8)`oC~FjKCoDNqtzc!}#Ht8yjo%v;3j zS#REXB7qz)nULXKI8Rr2GJp@uo)MEP+`Bl(e(Y3$o6_(J`1lEA1ogUR59O4w=-;_q z!4Jt~NJM@Hacue9y_+-sw}SNjGI98{nv;#QT)smIoh2k?<$$0S?u+ocLK`$x!$8bCA#;b!m7qV2Knp%59?Z6cZnJ<=Q zwTIN7zCXfybqSKk6aSJUbk~^xo3X)EOXryvD(nicAvmWbxGU?WETs0;o;5#emTQ$Y z*mI4ws-s3w5N2H+%V~PwNC`q63wzP;V*D5{hFRZl_|=0=mnR?2`xq#&LJoyOM*T+b zqKU)exf^Tk;*WUc6;N_*v?rA@@thd-pn1((rN|ztR(hy7sg!H=@}tN#L8R65yWw#c zXMim$EHZ*x*az!D)tb~=jgj-Rqfp5YmM0c6QP%hTm)-YJ4y0ViVqeH;Gu?j%r+DEk z*%JQP-OKTWmEnrZQ8Qks2{0T}SlgbHgwruSa`C{mDMY8JN*skJyB<)kL@dPOML1Df z{NkBsUun>~*Hqm)U=UAOmB`GlZ6~N_e^okSG!iM_MyoCSg#|LCCz5G1A)H?7TGa19 zMwJu*@5U7Tk{|&34y>{Sbt|Cy0l3Gp-^hJxn%PF91py?1LF2;mGE|Zdpng;3J1u1p zA>Y=ViU?3-J$ScGqEI@lK3j3%&$9R9l~q!(@rghMuqgs^IB?BF1TI4{N#FRwO_h}ZTiF-vuM32$^%bPzXFsHSE37)M|%+D4Y0yD zWe|pdARTq&Op=#9aMyk(ZT^rq_gr&@#g%Zg6+?UzahS9W53AvIX$zy3g`&$IFm{_O z;{q526_IY!DF{Mj0I0r&MUWCrO-)J70Ld3JzL6kNBCu9M^K3I4R_1@Y0EP!M_CiPg zm5p*6YmCua*qe(359=RynVTZJZo^8F+mH<=ZD9v6SzgRm5ISI9Ks7KverVj8u?(&| zBuO|Pi|lGo0(v$g1d0be5`Vt3S+=-gKA$RVT;vWI5(pGq+uCII?5|%B`Hhj4t(tKR zrKtyA7}^Gu;rRLO?d%efI&njN?a9<_;?&~bR6K+yow9>=Pp99I1|9C4|5b7bMzYK9 z{b)JR909=O_UJF%dg@3Bhm22Mc}`Ogf9Fo~0*Svi&^$qA>A%P`kK%k?qPxhEbX$acA%u5gGC|3FkE zw_1DDeZ;XjvZIb1#yXu4Q`{1*;y?+9@oGg?Wxtkr?YBbLM?`^eY5>IriBEb~)>SNU zaks%ZCL=R*W3O;$XGhX`8rMSMyVbDrct*NODZ2*|A_7$bN0?$zSBE%o7xAuzc&1vz zsgu<&F8p8K{d@ZoE`Ubq)AA(KecFPyrL^SsXrZAKn~e}47eW~Tq+{-2Vg9Z_MfbIR z#Wh_oxgB;95ogHljmDg$5|L4bM2wE?m^iS&0G@MM-ANFtmTO&v<@!Q_U-_AUYs})P z_zR5Wpmeze9gPEcd=u4Ypq>f}%ASz6vs^p3_#IXYvrmYI+_*Bs4Z`zQ-xO}~iBMQp zxnPoFcQkcW8Wlg}rhs)Zs+rHtJAl%0NDDmO`=6;a)*YO;A#Bac%oKxYduVjbo-ANG zr_W;QHS@-Ho!DPq$ol~Jpg3}HTN4@(dkSRkkAf5#tq=?c5tI^ zSP_RTQA{kj1?uMGe+S7q*->lT5EjAmNn&D}h?agKlg+IvaPbU@q&6)X5Knf26M%0? zbRQdBut^(57y{60DTFx-su(~AQ+Mw#FtqvdSfvF0Xwu{gSVT}Z; zSA^-zGb%fmDnN7ofDQv$paMKt+uI$!KI|RJn8<%=MirzNo`@_Drh90}bBh&vh#+fA z6A46*WWd>ZzncG{2+R4uYSfj#$Hf6DJ9HTpk8s{-&_NB3Fs=Wt4nPgX)+IEjs0b0k zLh2oMJ96q!ggz4aRN;;}n_Z9ZQSaZU9pnb5mdcFI4(BR|lXGH|%_>4$-X!JU9@S zeU@QLK_We12zt)pGJjeCq_umm-v7jj&yNW;I29RR(?kp&$NtFjZRD5F+E>p_)F5g{%&+NrSP}O069o$)NZNiu^zV zpA? zaq`x}>d~;Zs|cz&oFI|YhEpq=IbE84G%gr*S6EIB+1x4lP+Kao#oRyLn6q;m+LFjk zITdiN)<}Ce!qg8=-FRLp9Vxx5(~I4LFmsZSM95=~5if+&8cU(-Hw|KhZ#_Y3)=!S% zv712((llr#$44U~ZAoGGkPtQ>o^n8n5V{H@$B7r9e(qSQp%-m|oJc6@?pt}m5xx3$ zLO}eRmdw@~7RCk=g(vdX;{Ub-o`EqiDrOB;g8DdG;l^3#FWiKQ{8?Y(lL+PZZM4>R zm-k)(GAN<^lLDc?+F7z^&ue@Lt%lErwKZ4JO0d(*LFW=?JqW{S z6r#3|+WAEgR@>j{3k4HDtT33g52LWMGt>$rBMNEBzgMYF+V*XvV1Bx&-DGO`2KR?1 z02Sq0mPjZyv)VtcJA=nm;D*0$rx~RJ5{H`}?CS}0MLx&-XzDPGWXe&t&lZG$7UdAH zM|)xkh1R;m|Ca|&{{`fVd~lY;e#NsG!lH_Mt!Y{Xo%|1XdT0QGGe-m^@tjr!JA}lv ztm+DWXReYe#0H%SsAYrmq$di)yr(7KCLXOMvIQ^nb15j12^0^pqB7`{piqmo@p#SVHzHuI^K7E_|Fg9(ivg{wB+X-OloAZqDa<1 z>l^ulL5_pZQ+u8SD`4fIdO<1qNI-VjwE$;UC?Mc$F{ z=$-lB>dK_s+7VH=BBCT8-Er%SppLSF^A}uIdTK~5%Z;ym>rkAbzHK6^ZC~#2}|tT*!Y|9c%@U3+oF`P zpXUgJ}y%6l#|Gs^D~-X_oiknr)Mm9RWGqX{ixQ*Whv$C5I+Vl!MLoA ztRY&ER%B*-Xk2KMEfKurdGD}p`cLlBd%Ew2-Iw_C3iipgNkd;B3v_8w7)FX=|mn|dpaq|oq=KJ3qIDzmllkhPb%bo1Jm{oGHr=dY0j{` zkb0~#|E4)y$cG`!n#QC*R{wjxT%DKoDYr2HZJ|Z~WfNBF zU1;6rZHno97tKE`Yy0riN#f5{@>kKxiE>gRa+gY31^Bq6&v!wE7}g@|iBZoCRjdw2 zqKt)Q1)w{iN=?eKERy_5wwNy0`SJic)(__NHIf_A%)iy6Y%0m|Bpl z(I>}>@e7pZuvVJ7z?a>4A9833^ZC0HF+(V=`lT~mPm)%@RT+Iq2z&ae4St+0(i}5C za%fg$m&4dR))+1PGW5b|mt1@sD>cN1S26Pb3eHF@4x@H^eW|&Fw`{f_-BOw?U0V}g zQ??5G_El#NF|Wy2>hWixXCTv+LJ`YiP(%9n@iPI}K62fV%J@2MioqkdH$v@2KosEu5_{E$k;&R8{vMw&)@zJZOQ_AEFFJ7!_z%G#De|G0)|GW}b zHz=?Dgr$bnlN163ayCLtRP2HEJdbwsxtizLviPB_KeF$JzutF4MyOX$$JO4wYyQ+S zcfnvuDW@mL#YSm@eArn*NW$k|T~y$q>ZBrOtC)J2 zBRNP9Kc(u+12}_^?|r;(eJhl8o${J@i}o?nAMc(sQu}sbH=I{JV9e32=N&I8nrXeK za-QYv^A6_MvDYdA*NKw5T@3NEKY4)i4J*Q&lsL(secl(jC;79WKWM1x-v4rW%%nQI z&;=+)F|Izo#XXht^M>NKJfo|QZ+;tw4@<(0G+kVMT5@Z$`3#GYjI8YUg$=2wPs^XZ zIUx!z?mp_d+5^!&pa?oo5wq=B3`9hmDc)3{CtP*02D zq|)7S%G1w6u0OzEAI`lIbT6Z~|56BU_NSZVC;sf=sT?hwfPr6l%HYpVi zdn8V)UEipXwJVZk*1sQr$uId5RI0cyZUxW!ptTaIsGC(vvqc^vGxnImdTGAdn_CSx ztrENS?wt#>_R1w+9MaY|)~ZY|v;3P>Q6)y2Zt{>?Nns-F1KsIoim(yhbWgd~r8ML- zhcBxUEX46wa97~Q4isFn6*oLbZQd}4H^-O=rWF$eT;Vu&2Gb}XLqg2(F zRI+(&j063_B145*_CvMzQMQ>7<}(nFa9~j4;^GH$8osxojp*v?>gl<24Jrq~;89DI z+OTd$7+g?3*#(IRz^{jaJ`Y+8Ivw8ng(XVNN-xqe^Ua`1b!B;e zS~=X@XID*bZTkdae0+0yg0q4;z4i)lxPXS+&QUd)U0f9zR_qSDGs}fZGVubgRdU0P zRA11ax|ZB3hNChn&*$U6F0Fdp5$cdIPnwg6Yo2m+`yI!>9Jc^tLAB=QzWzv~IcVW- zP9gJk)!!0~_XUzE5mmqAm*{3%P-Nkh!JS#r9xE&mm@g>N8i74@;Xnv^kU3O}-jBKs zM}|9pz4%^c>xX|LKL`$NKm(T%_%E>zl1@#;>M{qqP>#8E>rL)`0DRU!h3VMSi7ZZE zK|1pC8Yo15Q>!NYc7jCV+w+4gP7^^CIsEl`wI(a$YEV4GzS{GGR8y>rmWz>#2BIi8Ib)WCQ;Riu)7^junYrJgXK+F8* zx?nWlH2us(hsP)W*w+}`2VnQ)78QY5BZHJn&Y<%VBJ`4}^|%ct9@h}FU&3wU%~+I` z#fc&V_8XT68sjsb==Qgy`c+w3_~fT4FLj9oOCtP=`}KG4-XTII&}#lVbsPFRpt23% zM+9R8=1Q>1a{(s_RHYy>9n4d_wc{$^+?5PRg#^hQr1S z6=U7M!o&Ky89U3$1+1$3at~a#<%aPadUjIzalsX+7m2Dl*pR!N{{D+a z)P(+d{@CX0>c{FkCDk?Amt4Iyv|^%l9M&!G-#G5D_%r)b>y*no8j?zL1shwT;#}U= zH^w${H8NsVlV8=HaxZzh+24HIJZH<$x8(Y9v}<5dCZp*?)ty^t4ma-mp+`~#%6?o$ zt6{18Pk3wii;JjK8`X8;S58hqTWSZWfa-)22-JYOKNtY)VaO&MpoZYkmJ4ch{TGlX z94OENp^8U43lOMm7YmkFHX-fx25BN(3uJ}slPrfH1lFL!A52Xaps=)2;ulwZZapZi z=&0YrHW8+NuSfa&t}u;A6qs1}cRtBYH_&&yKhz%|HLreY&3t)XpoQo}fU;9*>?OvX zvGkVvp6_cU<1aCn-)8>V0~;<#ba!s?84 zP3HdjauDv=i4VF*PA_bM(=GpyN7JIF#D{_a$o2BzAU%(jOjzqiR!6A(v z8EJ|HNxi9HTujXO-d-2T-jQx($$KzYa)y=`t_4xK*{o3c0D>||)d`=5sMtV_vE+Tb z#AGOdY1QHcQ=yeEpv{3IR!(z{KEoJ)(VS(W+>=E$v9ij=I(jMkx^#IX^G&%$$zL06O7%h6tuO}erIf;m#l~M>L=hmq(~fe ztU$rV`u=^&NCaq@XrBnB04M~UIdcYdSLVe~Ac=Mp3w^-vJZJDN&~sgaD}mxeDO?E% zp&d?>r<_WPTS*EpDeGr1(bB8Hy;&OUX0h*x@MQHgl4JL6swwHpdD%xFW*uwPEmY`=)5ESinCXOkyX25x~(nc zWtW_R=!N;sC85ZT;tey&y(OMGopVPq7|J&<`PX|knkUWE11WGCfSVr<@ zdMg+E6Z1|V0XO~^V4zSH`#5t&R1NVLP_h7UC_tn^0A9oA4;6Y4^pE^d^6oN0{MQ=G z=}O-AO+U$cw`8)h`;=){-@My=vE1Nd+Pm@Vw3Ym{OwKwe*I%ZTqkM zA$vR5)!1*ZpY0VB4SUv#$%e-$tmbqWw~6(L{XF~&$~AX3vGY7TSE975?z;rpy&a|* zHCu31>Uii>k-%j1IN|ni`R5%lqAc|OV@vuWz3R{`t*H!e1|!ktCcA> z9JkeTbO8kKwMMc->XRqC&aKMfK9>N%1N<$|MuN5)l*SrXn4y!8c?ZSO72Ly z@2%!`@7qzh-m)Aq8oRs`L?LZl@%okPqy1Ut<)7)U?nW!WCwfDFDb9CQCIpUsv#SaU z88vqIN=#yR*LPU@qf9xvpOE%`A;@R7H?`Hsc*U}~kaX@qPRs~f?K?a@XNAXcFSqBR zXPF*#7XG9ogF4a!G`-k;omh8gCnqdBBRS%bTxpf&?{Xe0qdj5v$^8=RV`56UL^LDDU zk``YdEdDeTOY=Z!(ir4p!~eF{n=GJS_<{Azh!l zE$6*3wYCj3SEviJ3)A6QJwK0YzsCQ=?nLs(k}9!7Lt?WeiFD32A&C?n2?T?(8B%Np zgf9J7VK1|6KnDPy#_n-mn27!A_3PJxmnukiI*4@h&utBA$1*C^bdZ!|0mTbWqLPj7g_&eZ&a$W%(L2L=i(I!&f-G_%yze(#=L zn5Z4|AUj?k+yT`3$~$kRvouO~FJ)R~a&T-|?bacHeuj^AEM(UZT$a4`UNR4g%;nLg za}#OT17%PD_l3Z?b%HN!7zBL0C-W~l_|Ct(|MQ*U&FQ)KW1*$T$X2af{8oh>B;lZM z@@BK%6gi?xgoCZ^;vf5U&$6z^6#nZ{>K*=&dlSw2HNMB3_vzg_lbD<=fB`*Nqp^bA zTuSgsiw0Q!Unv#$$*srLAYcCZGL$=rh$IvM?*ovOvymV-!5>Zpab6w{0pQOVSAfXF zxAyk1%j2yeCv{iuEWG`RdFq1qexM%@fZzbFA!dx|0VLXQ?;n7xMMw)EsQMQqW)hsk zaGwAG7&Iw5XW&41ToLoCWxM`6U!Q23Nj2t}(9YLtp(=SbLL#=xhS`!#y zzMMWTR4 zx;#LQZilrLada^#`3dbz%1F?F02L4+F0L6e(pO;N3Knu8KUlc10{~6EBID7K5gAZ* zl-rx2fTQZmWD``v{9nF^dwCv2Isgo0_Adning=-4`r1y~j#g|y4{LqM8!NvsSwIT)CjJDh{zU?;HQa*#Fbc~P6*nQ7^IO-^h6Dfl+lT5vk1Td z_&C0B!LkGS6Okz~p)>q{y!QWiX!TMq!6&dIKtEl-pr8O5^@#u~Y9+~MSKzXd5D?^K zfg_dR(hXV@*Y+=K5J`|sJlsk?+_U<3@1l9MpHZ;b1356|@OvL93sr7rM5*)g@=85> zzm`eqPsA6{d>4?DNV5k3X3+Tc>QbUjgyVsru@`9Jh24*USen89gBd&q$WvIoQQ!d2 z)&uxe?r^(9F;z1m>kN_dY@{-C>$h*vc+sW>>OXYPU^dY4`Q)xGT(zL&_Li8ZLK_jXr_Hais`xF$zZP zX180;hkxGCCVH}*4;HptXRQEC2cjpVAlR&?_6@KH=P}@YQ!yR?AnaiRFbC1Epik9N z`KN*9K+q?dn20eLmQ*-zCy>u=UL8Bwxp~6iX;^v*xH3$R4Yt9<@usDz2^@P!`zn{zKGR3VQksji-Q{bv@fN8`_M)xWWZO7&Iv=esH)nYNQfn z$JqS)a7c7qwUt`f%KFWfkHTmSSsCuL&TL9l=NLCtL(fxTe7)3cN_zKcGzJ&_^h7cTTJY+(L?539V92$9FN%qXO}DtVEEiwkDotxwmpK{hy-^k4~WDo=5N zc59a(3l%X63kK)$grVc)X<-OiQ80=|5 zN0#IV{zxq?Zz8C#!n1Nme{F58vZCVCHLi^#^C(cuWyZKvE{dO{og^ny1B9O)i=vsn^Jl@x;Q(W z)EKyK&!C9NBx2NI^Rw62y$?^_t8ddV{V1G!r2_!cFbqbZhK8>vZ`#}2Lof#ridz12 zL{Iq$<7Q94Q3r$D>pyt#C~vaH_i$6j3QSWE6p2`W=zMvk&h;CU0*3*wJ3Bi&&=3d9 zD#%~wW3$0|8`ctucUYn=mJ>QU#B5I$W{pYqSq4Ce=5npQLq-IgXbGGZ~@@UBI_wCAz@%*!U7&Dva&|T#+PRf42e+jgn>^% z?bMoX{UslM^@{#I*9{Gg5S)6p;Vc`V?R4b-ogGwVK(iO*+sw097-T?52UN_JGHPnZ zYpNKDOuLRF!&qlU=8a-vDqwCa*C>$!xz$NCT%9Qy1w}H*>~x@r49Iw=WU`|?(3)Vh zR0`l(U7*U=*^0Znx$StpA}Wp}oXig<1(t!D`_o_vQkWMZve`+e~(j$qSHLkxGUE zFnCH8Bj2e>=AF{N0IKcm7{Jy#8!gSwYEl4z<>w< zfwDcYiL(JE%4-PKK*uJ*xn*n1$hxF{i7{6j;x``IuM6{H()#*6SCVHG{j&g<6+v-}$fruM!R{QmuWSTo2A zgH$3H661z7n^bw~>LdSVwv^ToFn6(;KQ2Mm%gxED+h@d9+@!+g8WtQ=y1Tp2t_Kr6 z$!lq8f$%n1#mFde(r!uo^%4Y!m=~a)3|2|aa^1bX88_Pxd`vBYL+VzJOOScw^zdQl z?_VV)C7{d+n$rLzfMXr^5hoHfIePRc@6Vy(;U&_2oGNR^;E#0BfzGR`fH%B+`4Zec z;^WV4aAZJj1RRvYxRNCt6%rrMv@wug{6A>AykN3iOpg)biqm3p!eE;ER#Hru#6sWp%Z9{|8u$^l}vftD^%7k+7)( z8^d{~or9AzHwv70&W&UrCt7}^S>ZH=AJ*LkY4>mzcbVk}I>f1=3bUnPaSU4A{r9WD zVYIsXa(0vzUjU2@&v9AAnpA(bb!8fK%?+F99CT6eOUL54jZ14N+sIE)Pt(%*^tKj?_i#SYYsd? zVxpqR?z*uDqP3rpe=@t*Cskn$0z$?2`-uq&qI9Q0Y-|`dU7)PM7$L{6J(J$$0s8FV zuK;V&yh{ayD`2q$7D6mC9-T|uz+L8@>aBc=Z?ynIF*t*T<8Yk|8=$QZ1Q2eBR&8y6 z_4pGh;8g|FyJp?Qz||r#A~JHqW27IZ^ULv}N1nZ2!Ie&DT0cr{X)(L|Q{v!Af9M2ek@E#9tH+g1eCi;6pW#!PHKazHR+;Vbq@bK_HefpG@_ftNf;`T?Dn&_OsKN<&Myk03mEx%rXZDK6zXay~ozo zJuV5~FU3y!wBYcL0_Z$o-4T+Q^C8EM#yAGlB1%EeoW;Hg{CGwUgJCNW3Bi{1)LK>& zxsvdF?|J-w8-I~cfZr+&l>V&=^w34YTl1{TKG<HPv*ZgeK1vdBYU2<*-RT8&b#vubEZ z8#^fxbpsaGDzf;(eN6;x1OaT#o!MsHy(mta;x_N)O!fKd0cB7Wu*4|@P?&gAzLVnT zLj)@iJ+PNfs!|@ZGZLc1+`mJ^a`k0{8?9d+iphJzZF6FQ1k`B29<)CI*=TJb!f*t* zZO(cQ4_cs|QDHz!Y;L$9Id^G|pE~APC8((kfEGwa2|a1K)a2MQ{V2ms*ojcq9B*I+ zqWbz7ylK24p3ZM^&VVLM$VWG4V)Qbw_NDQZb42SwMYrOS8>n3xX=B!Qgu;^FA-7#Z7E48(I0{+QGahPP-h z7IUgmBUMF!yW-0IwQ-!4A^c&HmY=)GiMGuH28*u*f)tFTlwL!&rO<}q)Yj-|+(A8X zh8~cA9qjoq`f5ni6|14*Sj1{@oef{f|d&M`D5-Rx|8gzwK1g}_8D%w5vQ zS{L0@#~J?KD(js0I0#@cA9A21UpKJ`PsX{cWVX%_45gI(osc}1@M(t8I?WC@#$^P~ z_tr}%-NtQ)Vit5#Qc^}s%tuQtpL;69LOJwkY139|w^OlsV()?K$=O-oRkwn8y&T>RMXon^K#I ze z_0E`}PPQL+QYd}(B+9ae%XX!IwmBefL8ps%xBUw_j|UvAhLMR$tHf+L@r9q==EQmB zF!y)XghDu2$N+bViT0PaTiuZT!|~7FGv`hwG_JtyyX@ezZNSATPhO zyKBEO=6Hfzdo<%G{M?wg2#RFDhyrf@PEE3*>v*LIDqbZv7QK7^dW&4&j>5R+(qA6(PJ;c{nuR#QVhWH}krIQ0gZOt?_2zzk zyD$3X>@XvD_2}?@sC$i3U*cIqh*q zNf_wqnT?jL2j9;dI-PLd#G%eDo4Iz4+TCY&J?q5c9XsQr%$q_kh69~X)E)`<5uy&Q zhvse^HLoRq+-AckLM#Fb%?g|4xt5?(^HGChbxP!!)o?j%%H?dnWcugL-z(c4szt@) zZ75aLn?AZe?a08$7|ri`B7o#FXb(4xb3G_%W9FH?b$YmoY-;Q8@7I*&oVq(OICza( zGBy1~)Yp2y9dG!!?Vy4Oz4A-RSoPj6ZOx#HU1Dx8_yJLI0{UTwLZXSO>6Q2HKi@pQ zow(BDI2AlHGD1p5rlFz1E)^7WH6iiXu!GO}AX~HiU4zdJV!!#lFkY9Vtvi+-i@Ub+ z%v0G%=WajASr+hKeRAH5Z1)~ixkeqjnOU11uz#SPQ6OxKQ#-kNce7;tnHjIc)|7P@U#U?~qQKcS0gv69!(xp6#qlSi zG@#xIeUcx$D1q>8-f2!1eLy@ZpPhdH`Lh-+Iyfg!xWH-pLdEofc2Ak)@3FD$OcQx| zd2w;yHAX>uYzz?esqWwZDCDEsJu+gFuX>Y^P(dMSSG&V!aNcvP3wg0yVY@1gjPUUA zNRbG8eH52M=i8zuE&=_J@z`Z|7@W?tAdkUmSDzn@LdIpB`#TR&%QnH8Hzv%1J2782 z`y6{aY*dt3iG4HI+<5nd+|RFc0%=PiQ8fNU@>0l-IG!h5GF6c34Qm9QhtE})Zv=)~ z7q!XB$#ec36P)Mzfk8o)GXWRd0m!o~#JTv;K7qj5)*f*7b!s1m%icYon3pj(J3Kk0 zG(8QqZZ2>vFAxR}*r*$<|C=bq@j+>=s~3FnRQ4w>OVxLm zJ74NaY7U?js2#;}e{3bTNzujgvQtZ)(ZeAn`K02xF`|}N!;TIZ+jd12{9qlpxXD~6 z4PGTB4zu4>9_e{`G7=KF5f$Sb6&2jn4e`%ER)BwO6U9{?u}W~)d3jfyy1`y$y}d*7 zPDsQ99wOje&Ay!%>_5?M!XRK!$vrzHT6?P)5;S*13b+{mE&&hmuHp}XCEog1hK7J9)?LqbIOVH!j?2M zTfV>h8UA44fd{ATx2{MHVS<%s4zNnZcz=-{)OX#oC#Rx0wT&64a3IdGx^ zM^jg{hGu7GLK)TGHFbf={OZYLrfJJB-wKIIaHy5dvLc>7UXRjEI_O(Lg9)nmtr=o_ z!oyxWEst8(@`1N#4FQ>KwX=1dEz2OCF3%5bwJ13(#(+^at-e4LiHJyIt$A`V$J07i z>ZD?&6g0*QqV~HNKiE7dUAEpI?etB{81Kxr01>k=GLBW+Zzc$Pw;SwsgI@%coeba= zS!rnmlj_5Y^5e+8b8LQ_){P_y7*qG2`n4Ou0nTi6%{1qDZMoEkm= zN9g6{)zHw;->*2Vc2APy>5UppG(i#4uc2F2x_Vn{W3PADXu|qA!4~d;@Jl7%aXZAS zOX*e7bDLNpgy;uhYkR8oK9GA{oD;0 z+!$Un`3fN|5#VcKA|GijDC|rZ2G~e$KL1R6_8ow3HSYYTR&sn0Aejg1HBOml1qLtvF z!G0hGfmn=mCGszH50<7_r$?Pv-7e8k$Bw0RbKY#KN6AtFKqf(( zlYM_-nmwL!Nlx9K!6YUMlw$u*fF7~l3D)1;ae5f(2^ZDiwGJaXy@DE;2Mz3R6<0k;sX0vpZw7G#o^1mR}`~6Pp z(vKpBmDAy3-RtA#S`G@2zk(ix@Aj=?x|naZ=+~7?__fKDp)!tlvS9HGw~6$(0eaC> z!tUvwcmmGUTYw6(u&?f5)A{KtiN^yxO$~SOgnVS$WO#S*p_6O42c*@Ip6}{>G2<1~ z<`IB=yXCJXIuC(_aVW{jUrjK@lB_H$g$oTeYPFS?la8RK9QTDDO2{=x6uul*0COn$Ng%W=sth{ApTUeV10+FBd8B%hcD?rRtL@&-<2h*eb9jHZ;Ds>kU?**W;heRlQ zpz?t8K~+RHEn@XlQ5vpFzJf+&>e@L04Xo~>u1^B{RWww4LjKP)a5uw!le2A z6O1l~URS%iEZ#9O<%XiBy8%r{RKwHB&%wdwaB+~u zgUTobpC&>pT+b^Fxc$y55uO-=dJmM&y*2qn+y`9VPyMCQEq`!L~asj824mF!RA?2_S7*?mfc#e`Je4V$2@gCw%YutdryQ~ zBx*=NS5B@n3^f~+nZ3nC&89ok@se6(xhK?FWiuG^A~yKYz;@>K@!4e!X1rL$N!89g z3q49dVjyGUWUxnkb8XfynL3VDu{X;zM(tOV6B=fAempo`-|LJ`{S@)0DKUqMA`aTa z)CZs*Fhho)W}2=;`h1Ku)D0K9=94xXDF3Pnhlbw0z7nz(tt+xsRh4|w*hP;*tt6-k zISNG$-OhK`rj93u>_QbePM@S z*>zZ5lU3#mN$lQrXtImgNH=2(IY6-wXyOdf7o9$Ondc_C5T1)A`GsD9Q zW*$O_-~hsmx87Sfc6A&ydT~R@r*6Dh#+(-wkvOkF5BrET124|E&p#|ulKdkgMN@!H zbVs-$9`DgRXJRuGGBfi}EQCNBaV84QXz0sE8rs!WP4|=0Bi+nqa=Y~zv>fa|OD#-M zy?o-V_%>pzgRfY|#pV?h$WYvd;9{k*(aDveJ%ZTF(+I9`x4?|nxvo#;5+7tM}6H6M|48`&Ven9Dq_Isf9OYf=ypVIkHKBaIP#is~jLn3vS zB>j32BzEP)qUhv!t;OXNXij(3aynQnZo7=fzeW)_2xa-cY=|8Z%!UrX;?r}v(Dpmy zv|_h}`b!)ZAj-kr43hSt*rvAH!944W@-c>>Y5qa3u_~5mby2{9<~7*jpOH#OlK3P|D^RdjQ$U6CWUquM4%b1ZCR48ila6 zNCY%h)Q0E20ZnoL4e=DObY+86tgTNWDutB&a!6%;`{W7)^x?w5&B7w&XJ>&P`LTf@ zp^>FQ;pUu&ni6sXf(0Nf@w?>kIb76xd%vEvRWu+4(EtaiCe@^?%5dtQ46)Es#nH)* zx&9ya22KdQ^B9DRX(tUkUwRMD=?ws-P=rbaWS4N_K&GbJN$v)-r`Xi|c}8bq({r{`b`+U6Mi+9-;ix!96!JP$E0D+4o_lY4B11WWqKh_ejS^5ALav1waxES= zAO?r)pA1gfuUVAi$%O>q5k_P>=6ltVIOsWcesRIJsHuG$bmaYzmeqCYmjpNOdSC5A zo+O*8SrtRjT7&^?p6aeEQm7LZnpTK13=S8andFtG8Yl^0gUtBG zEDH#Nk+EQ&-4jDbdL3vMTu8nmpD_xp=07~yHb{ae?isalM2|ucgsK2Km~V5v6MV4| z{JajYl{L?INJ8H2f}F1h3gOt+L-Qp(EQMFQ4y!73ouvv;y7leOpFjb! zHNR$B2&3PCSVJG)LC)FMtGZ6Al0rV`%_B9-W7PkA`0At6!?TVj_Z(iomOrmEyoH+X z6Exi`c2k>$aTPtRu1RNeLor)anj~@;n(hOi_3BnnM9a(^tF~NW6XZq~AyDS?2Bdr- zjX(vZY|GgoAazb!=oIzH!vEweRqr%95YH-;o6ulXfhajyHl=^I)Eee+08CJCB0Y3c zoD9&Irw%Kj64r&NjOEQjVj@kBFywddK`0fD$4FD}d+gX^5)Gf}-Y&V?R&d>?B^dB<7$c*2_az~kwC%>K3$g*ZeC2jM(u*;dN7lyn**f@Z*M|_=Kl+| zF9e-WKGi?N5g_jc4t}Ci7HnMTt&-u~b2F3(=XViX-%1b7Ib~T;yF=;1t=dR#y&xTy1vam9d*Xph<5ay| z-N%A(wqPnY9mL4Cg|SQm?t@Ef6|laqYh21l*EbRsfpxGO3y#Rp5?qhHJp3o=|LI;l zyk@Ho7Z9(nEA7^Y5%c>)h}!KYGQ+M|*R!MTTwF|;k8FUOdH4QDCmd?@3VustG04NX ztKQo1?4I4OI@@VmvRS*hHtsWhDdsQCSJIpVIrg*8;jF#x6wkE*MH4-O4Y+74+g z?&1-`%9(6k4u%Z__)m;9HOE{J$A?}F16FiydKF9hj?24RTcD;RL|q)5z^mEdlyElu08rGP1&9TjwLS_(c-P)n=hm z$0i;vrO(;;Db~bqTSX|BsgUC27k0?Sr{HzitUkO(9gDm;Zf|ejE%Us?W)Qv23iM;q zs_lm(ZjG9Si%ZoSm7u+mv9Ym<$;#5w*0GB`x{Izzmp_*LBv*I*>P)AK_{8N2wno7V z@tX}k;H(6x;xp+9^zIWE6&J^FTGh>NW1yoAtHJ4KaJ5B6o1?j`)z#H&w*4)~oK|xd z?e9yc?S2k3wzL$eCBy2J*^&w=o27nPHf|x+CrP8AsTrMpJwU4Uw_{OCMM{#~?)do# ze_9eU`u$<{OBJii@rvBi(ozNN8@MB*qwG>_x33dRl<^OyVg;wN1naJ%U!l0^TeK-6 zFXBS&ay0D?5%fUXmwZQO`g4(>ueZ1J^x*yOlwIXjd)|iYevLX$NrM6d z0a>Z9|B6tj#mu(VuaW#hu%)L&;1@ocA) zm;B7k7R$XUBs;C#-t|^ZZCkB;Hf&h~^gtX2fJF{y)-6__pID^D|8hCd{}cGZ8$!I* z%5JzXm_ zyUB3`_%T#3fS8z=kPjB6i|kC>R~YQuj3^yVrl2?9}LK6gcBG1;pzfCWVB z!!tfEYg{V$EfT&mjbI`W9DCJ-fG(>rnSg@T?#|Kht5x^b)D93Riu z2hjeMysXHv8@#}Qi0G1ON*zQX^gmEI`EX7e_~>3qilbkg}>VJg9(JL z>U?U8C9_nM%A+SLI)s)G5sxsf^B9;)(2F0N_T0?VXgRAVepzJ z`O>!K48}Fi*F@Y3pBG;1Dpd*>^L*aE!`k~I97G_2%i}IjxQdqTz%W7|)LVXn5ZZeqo4+lbPSTwNu&w8f?oRg)TecYTb+3G;XYxH+y}&|# z9bck}sL|+K;NuerY;YFda1D$tbNp?uyiO#_p1{zI*Nk^a%AXM*O-^k*Fa5tUrL8{NtY@plG1ti}0S4bHX!h?`Sm7`%9~nLd4b673K5=-otphP_?$(d1WO^ynw05Kx@u?g9;*=zRiB-?C zMgaqZ*PNN(nz+&?6=GWLALn$X=4-|y{csa|RcnKYK<`(duprG|Tp-gub(0_bZe$t) zpQ+4SuVUoUS9Kx)p_Z!ZNTaRDmpu}!f0WVVA|%X>-m9#?hghSgc#>D47p8`D1IkUN zqWPRheR4viKrS; z*Jm5ft2NGOfU&yS-V}nn!;Cc1tsJV&%iY)LByU@ohit1C!#Q5Lq;9B)LofL@Q&UkE zub4{nVN}eB;rCz%PCV2GW&=U;WB)n2vPczsTU=}(fUMc!Gh9%1q5z-hr1}6IC4+bQrsbpjH^H$YGvmJm~WNj$esI_2tTgkj)%e;@6Es z2U89w`k@Lf2K0>)5EcSWS}Mefc^K~~5GB137mB8=F$Ti80Hhhn^K@g+${J^RP$jT~ z`Q2T}9;A~_$73V+fk`Rl_EbwzD}0PJXo=1oAvamTtAo=%q-KUgi@;?~SAmE;1C~d` zLfOBS*^J+ea5Nu;fOZjPpAFN)yTkG2(dvyR)%W+V#x;4Ev7ZwA<^1S%PJAp&caQAy z5(X=iEqrNc!6|zQayucPQ{_$4ppd|*5Jo_xM;E%M{Zvp|vg4{|U$v>F)iaT7movYb zIj${DN$c^hRYR}=BCEP_E^Jn}fMW<;p@C?~GNaXV!a$|hd{?PhF^ZgI_BB8}Q8>@V zw(*dZdQ`8d@gBIhX#UsYyf%-ZLyZw+zoX3jtIc_5)}X^4kcVUp_Su?%dvgE2V42n3 zs^Xk^jZaj72o3S8KbTdrm?xX7P_jihxk304O1`_fFq0qhZr*dsF#Yko-~kqwK*%pTR}SS@@-IkB)TQo0itng?3iezLbWKHXxaS zaR)stlPr6y8#E~AR_D676Uebqp*cN%1hb*#o5~qo%b@RXRXL6%@Vb60X(0N^Fqpo? z*f&DuNdq@(>DiYraQqfNSInod*l1-l<(&7?>QBafz0X7BemnlO+E(Lfm;wWGVDdE~ ztD@xg0)J4pop&Uk)~8kKhg5Ya73#F#eOSFo9=4k%)9L{i(5yUV)o2Ylhy|RLk95W4 zY|i*nhUThW4tANTa4M!m=EGH*fsOBal5(GkAK~2Sga{~`PoR`nQk-e!w<_W-@YqyL zZu?vX5&R~U{F>li_ql~khZ8U<`k|$X)UO%Or3&?=mDcgucQLi!1l_s30qHUG4a295 zabaPnbIr}8Rkvuz?3pJ^7FIzDS|(eOH*T%>ap9fGt*reogI_bAP-}G5H0m&X-;1TY zewH4j$yEZZ6;?PFnDZP4lr z)j4lo>p5m|OI@AG;j^v1oaz=1I&#GSAqId;PC>Uq`JhJWBb(IQ9o0>lcHSoTw`bY( zl7)jIdZU{hs%H|=9$cPdd3(S?``;nG^NNQXID{u1L#iuwT*U>qYErAI?>8DfNt5}m zH?LuBa3_0Neunxb6q}c5YRj#bh=)GOw2}f20n|Sp61?uK#G<^3*KqqUl$lFST(E%@ zTK{;1p6u(0IF6G~0V|_bf2yOkhdKE#ue5mxUhn>I7$Y{fVgKt*_!B=6-vtj_#FfLk zx}tW*($KV!mv7EDCj^cJhVX*HF{<>OQ&_IQl$lpAHGT0zi;R_BRh~(WBg4-7p{}pa z+&=o(kI*YhBSD>&HVE^~pdO97p=)B;{)Jtu?MEk|O7U#VZl!4k)j%6VOl>R`e)Y$v zsGQ@xTgFF$EYAFCL03>EWny^bIJLqrmI)#?bMXK4%Sr6O ztA5WI?gKCsg7ZHJrm;!JNPsjgFkh%~bJ*|I1q3`b1!dcE35h`fghjId!YN~1w%@RW zEb`UY3BZwTEUm_!_EUBX0G1?cAIptj|0`HP=X1fVL&e&8J1)L~O0Hz z9k3QK+yeMSjcL;nGH$l;c4HL`1c}M_)HX1f1{xfw)pwZ~Cv#`7(Eb32+O66fcEt{c5GGg!IHqkZ%|L~t^j+ENQYpg;3@C!?l9UcQee#tZ|&8w%4HtoV{KFe;#8 zDD3#UZ-ImK#*!zc5{EI~IyvZUaXlN)n)!@5T<)Hp^7q8|zkp@<5(VUu>V)z{3ax*J zo5qfhO%u4NyUl#FKRDk=O#r^V=jCA~ANwkMm_n9jl5><$DkghJAeT}xPk%d^2eq`g zP<#}`PGXa&j5uFx4q=|}fvgLf#i>BjrgY?^`qCV2Z8w4TO=a^ybZ%S82_`cjsS#FDarH)Np4V#+8bjLz>3 zX7`=P0_XljwD=Z?uw1UuaF;P$9Y`4Nj}uYtsqaYK6hV-z8-HSL)zjqM907uC=Zn8q z<~kJY-U=k8EY*2FG0AI&V$_`>2A}2C7=P|tbS|)R^KWXLl{D!gZ^R zB&HG<)7tXX7N9`7Ss7Z(?ATcH? zq!QQ~jW*boLHbo$e>;x)J~{jeWDOqoQ7yA3r*#2sq$6bGpz+|A>kc1CJElz;Z7ZYI zhp!>}Cc1~i_`3h3joNM3EoSzzsAZMFMQ-?Lw%GZ?q3t110M@1VU%YPS zyvwn3$jCc>^Go)LddHoh91s+uQp1B%Ffi^x<#qQh+XyDmI+Ji%D@X6)U@|+6b1rX5 z)+1_17hk#b7hu`x6%Mut8e~t}>oqv%&nPS$%olG^H-MH3yv?Ae=_()AWCclj|J@;n zJFA-=18>q2o_L!{{w8{l2P8dJ1)}Yl_HUymk@%FBmfKKSregkdHpl8Eum``6D7GW;W1zE`IngUXbE_3GQ<1ozH_|49AJOb%@R29>uyGISpw*56nj8r!N(rs?vz)ZIvn+&1dl`dB!GD`nt2| znf#3#iAbGGke@-zhf-g`hF3-50BDn)_S0_QUv}Q_5OAp8<7&nR0=WD&sh+Bo-J>aO zIc`9`m)A}tthr(Y+Mh=(a~~PUC%eN?vj>Chn|Q*dg)hqvoBHCw`1r^zV|TXzBrG*` zL#mld#31K!T7C8($seo+>SPe~I6hEv<)|bjCQ-tn-f*;S4$lrwSY{*?;z#IajDn;~ z`6%+htFvb9Jz#Y(O)Eazz@$;uGv|0vGOdwCde~o5;&{$RZ2tGWoBAWgk`Y}G{g8=w z*vTK1Y|>fQ`3EIKzyg*A8k0c%>w!9;9zK`PWcaVYzRXQx0w=f%h$4M&A;zBn16TY| zgK9YNZ-46vInN6j^@JlYt7cZ*GVC=Cg2=DQ0j{j7m<;3zZp2tdnWk-#@h+h349lrQuo-rznfrsdx#((JW zh|*}s-}1eC52@XyAqs%10I!B~o2%IeT!8R|=LIVwIOx__!wlQ-J%15)uka06mj4$P z17-uY1;K7u9xS!no(5F!Ii>&_BFk>UAoX)A=!i0G{BJ-xGSFN66IOf{N{X0W6VDQp zD~vU43m0%P!f=8VYuaW7{t8!+(mkSbx2P)xmnah7o3MgD2ZQz?N)FSSEBoe?Z!Hi{ z1Y`hgA_rQitOjK}IivqU?xCT&$^?UNgE}Qg^Di|&KMy!V=>XLEki&4=itqUyB#ZyM zFLsxNOh2)?UG5GU{$1ybzH8JCu6diFP3uph{h;RxIo?C{dG+-zdBpC|uL(Me9e0M* z0H}E;^~9PMO$X(O(|7jvrZpI%#518A1?`P5G&bYDX78v?=ZhRVua-dc@I_{AHH}_+ z_)Lc@4H(YuTyb+q7}$WeCuDt!a#CJ^df5SNgW4{6w&iJ4D>(zncgfr5Hnq(fl|3Lg zSXaOCcF0Q-Zy^@&J|+y`^~RIKXHp(uz(JK7IG-pqV;rdKSX1+X$6JfM>2PgqomDBV+cbyi2j zvOA4P#I07SYN(&?(Ry!2bp!Q@Wv_VP-y|Xa8k)4+ zXYYX`N>G%YBw`e<$zsp{6<-09LnTPTp!X!StF6s-XLiZalXU_3xYQS*Axii3;BH(!tM=hP z8DtZqycH}9KIWYU=bEC{T- ztN@9&_RznQ72Ww<>|eQ`*#0IT%+3I;+kGk+Hq-_}mHHc1VduVV?6T3SsxIBwCcr<} z1GnfB5`F)f-K{!_O8n{%f1^;CreSuq+2sm)9pHa%Vtx#chQU#uv}BBPZ-!Fp?$!|& z;1mO@s_mosY=s0uaaa`p(iMBam6Yzmzru-NHBeisVEZw^rX|4~X1rs7dI0f}$#E-k zf{(F4_(k$xt2N9JwUCAI>#YpCJ1<$zmQ=G2jrb(eoI%bE%|kwLI~m=Myu zjVjR7;2rIsToLk#tF5#&n+#sX+z%wDzk5t7QQRs75_ik-)b0qKr-!6jBjg}3eeU}D z4Ijn~+WSHK)xIAYCQ`Yl%o=f zB{yv8E=ncBP@QOePSeezk;Nm#Q0ww)t*gEy3*pK?P;x}xu^>RnnG2s+0g3i^lso7E_lsr3mcp zHd`#<7o_jpB?GO&2ZDcNES~-W$N(4GCh3R+)&o{S3N{b(iIcihG;FIgexZw|6<3>` zJoht;Ezv$g_P=C#j1dTh>jsZ-(BelS?#BHwU29-@lBmG8l~kefkkh+}ZX&HVkAG5c zd8_11|DN9oqQe=EoIrE22YhBmqzznX3A(Ik1at$q2D!Mob_#S-&wB*}Z4(D#T>e=Y zNz^JH&;C-)HTn3umgXs@6C;MQ6ipm#{R!0d5-D94u39)=RFSNK!VgXgM^i|d2>ad##j9M3LS^6Tzqin!q0dR%85HvDp5A}6 z>Ju$S6IB(9#5*>7W=TmCWi9)q2jupX#cAJ)k{e5Y_PHz6r*oXFRR@|Mc^R>wIq+Qyc_b)Ajx@e(5Q zY57DQ?p~T#C1uLK7_fDSb%wcQnDzy^u}x<-?*gVLc0!huK4~`=(^UKK zy#T>zOl4pxA54aMd?(W|lvff=>ih56Ta`7nQRLOLOBejsV8(>mpnS+%W^2nbouJwo z|M6x}yRNipelrvf3dA)1^>`~i`(Qi~%Mh6u(RXyY76n54PZx?~%P_7X3s35(asRfhtYEP>2Z?%hI7|>)`T@fyc#7&U%LrhG&cI zDIa;*93${yTQ49F@|HrZGd#uG>&r=7s;tN)*Sz>=4hyKuMYJs-;o#l3yB zlqK6@y%480z64J^1r7PowQX)TgWufyrX}5=9EQ>e+?}PRc7M-XZFc0hgvKiMn%yaI zTq_&n4h!$ux}`XH&VVg&;3gm~Xw-D%3&=O_8ZMY==xh@E;=wpkCCW0{%W(em_@as} zMd2LMSbhQIYEn}4lfl9XR?T7+oNW0kjtM(bO%Zy3Q)a_R_Q8Rf1T+}p3#1Rsih*nk z`*{eqnJ!8Uvip@^26;=~O(N3pk2c9XvJNoM`R89*lsVOI2X*ZU8a7?`E4-Sgg$65o zixS@r%oG}a_9v^;L-x4Tv6E}H6G1MEU;CSU(I0+IBVxuMy30ED`d@Up-RC;&NFFuV zs)nz(uo01;O!c_`SZvt~^b5E?cqEEf`pqo=AeMuR?=_dJFHz7NacR(G4}qZ{jotSX zc9^>K7|$tfY^cKD^A{^;;@j66H*rHO ziG?o5Bnujn^?1g(I@^a!8YUKN;x71ZUa+QIx=Pqzqkers_n4+|cPP)QRMQN+0m|vS z^MOv#zgGgbrC8I#8I*mHTdyCWav)jQRKa}4zghjvRam=`ff5T;L#j&{MhA>#O?21{ zFkwYdyEcqmsLaF?Z2rrfSJok!p`lYeo32;m@NDnKWqBUnQCXSEO(XfSi~fPNUP2vISpDi@Ej6I|Cg9VzUUpck^9p&LVyw-(Dd%%ims=3A&SS+*Fd zEn}IkRF5UoFEBN_zY-(NyvvUUV?t3Pl}Z2NA#aP9s5*B=MN{NO^S|&l?#vR|TP8i^ z*!-b}TZ&5^N)$XXR@rtwl)^E4egzgu4&kMP8A*ccCt)T(XT1^{W7mK~+W7RP2q%y! z*Yn=kw{@q*sTQQ0BDh~Vw?8i2$E{zLsecijB zRwh`>Ng|U zKKI(P|A6>xTH4AcqN30K@NprySHMqu?b`I&@$M$*KTV5uTG?)<6j;Rr_nZA+_z}Af zry1($@$UC4Fooj7+zkkGN3t-KGu~Ip9@ET97K~Klhw;50X6qnbWxYS1QdS@_Hkn2c z%`X7(=SXf+m)qO9X}LQF-ssRR7^1qXxWv(?n5Lk|4}4T0ObQE+w0{iT%r}z$PoQvz z*pPs&SBrTwzTYx{cYlng7Ou0=>MGn9_|hS;19W?E=H!snLCsR21#Y6;(t4?zn%bjn ze#e0q5q+>Ro;oRg1-2A#larq)h%@)d)32W0`?_!o{is4SH&`*BT7l?!x#|Vy@=DH& zkmH8~{x{4Q>drotb0jxF*GSBTG#EWXLPCy@k9q7jGz;`vz(*fColon%32>{ez`5#RDMOCO@3yc=0c_@Nwn|zefd^hVq#+4*&MBqPgxmf)_}SK^uq@F ztLNLo@-#}B*>-s~uGOB7Z+4z~@@GW~uBK;Y5xUGK)Te{*2W4diJ!sL%509BoTwcle zwOu^jJ3q3GTvh+|IAn&mgrZbkt5l=%GhB#Hh>pE!=sHiZH1YP?96#IZ@uXFq{fiw$ z&hY8dtJ2{FNm&(@G-GusDXFJ!T~|o5YHDh7bESuDqnK7kMNbL$FC`+cCBStK)`kU+ zeiDEi+z-UK-_893-wT*+^dkX{+WcETu54EAc9w6>VS#_*SPSlYE3q|PWmZ+VHAhB3 zE~2HSB_-vbYFv>U6*K?gk$xzlDP!88gp!6Q@w4muWfSV9qk9{K`@b1v>_yz7yUKF2 z_Al0Qk&|vh*xPiumLZ z*x>xxEyl`Lb1OF%fsGncf*xwkA|p9)aL~62+|Ez*+d`#cxcBec@5}|s#OjXhooMUm z=veDxGK(lsLre8|AQqYW@WF$k^G(O<1kQIhw#hc-%G=-Iad~-xjlIV4Db1XwkwZ6; zo?>W8^_ESvYupKLx6^SW^g&cgJ$|y24G!$GW6$MJ5A}4o)k}@u^uH2JFn&Ig;Vx;F5BuELC zYMYHwo0a|y5MROq1AEhC;FTqgvUeVgZ1y8qEhL9`EID*)`N( zJe$2QH8gpWd}e>ie^wvm90lA3cQi4J$45-OiuIDwPS>cTqa)&zm1?K`kz!Mlw0Rgz z6XUPbvELS-Ycod=EvsfqFZmfgjpqjsBKTg( zWVv-(qt3QdwV{@rxl`ZxfC^$<2n6PJZwj0cOMp;QmWp2qM`+Ux>#XxxzH_R2cS7`t z=4Y_`dM`^eqPPW-pa1<{;&LI0`Q-L*JieQEL4a|`e^4PqZ#~oSiD#os82ejbAS-Z1 z^?Tq8D_Hn<;X={6&u_rGdq5KU{8FCDVeE0y?;wyqKsn5_=LNQ9Y}zI0Q7>9!*ceX( zHYu}|0){dRi7gO^9n;DZSnA*=j`a(B>brbSHlRUYOss_fTtNU|{%I*Vo9t_*L~6e>N}G3i6P8c3{BTRU$b%y3;x7AOurLU3;Bkymd2lvoxgd|*5HynETdRmm zC-7mV%*<=lpt(LYCg!{^?!pH2Kj)AT!MdA_{+1}|4$TF+jgmL^m^0P$z%;z<6b1Q$5D&QDcBdHkg%AD zSuz0M6SoghaPU_9WblEQyopKX@FN&(!KeQ?WagIdBnkZ_W5XiSUOY5B*vy-!If836 z^w&VwXl|Zn&vA3<-Z7B72fS9@e#uFuwX8-9f;8)DmGt0Z5I)_1%~bVYa%&a=MR6{y z)meX^s$aK$)!Oo{E!3Q@4mB#kL+X^AKf1-ed%&StJ;}+_cO~Wy8)GMhL2`Xc;j7*c zYQw|GF()N{14?bJ>-N=-%_DytOJ@_^M5(rtiF>n%2xv zNh@(6or)n+xJ10E3i8=}7Bk>wz3LPM)U2mC2y{vTin z-m&4uzFm8y~$aQ`6RGN=)(lv%8-R3bBTEkZmX}gKtLgO=~Wcf z@Qfsm5Ai-w*|Vuvjgc~~wpwF_dd&yr9DCw+5abylgP@K1{{d}8R=>aMO&k{XYIm+p zXI1U#=G1k&@bb!MNZ2OlAFb&L6%-_+R)Imb@?b9zHW@(GqUv zEiHeN=&GuDoK(tx>?$1!IXkUsdwSRpN%eGjJODZ^8}4e5`98hvc;l z>EvOH65z~`4x4?ee2+>Gq3d~(ct8qo(51LCLUZv?ToZbWD~MSob8sTwspIp(rDBg- zL!!<@7!L0C*;;J|l7C$I((>vPJ9Gks&c{HuEe#foRj+tyq+PElzC>oPhi2Ne7bY>YFth3 zjL4z2a(S)X;w6DSea+F79|0LS)A~q8gB>y%<}>mOI6IE@z5{0KPGj?raV>OyWU_Ox zVBc)otkDABqJyN^XQrsYbf)R+$H+TeNd9{;5~|cY_YdxI6;GYUlvr$mpda-Chvu*M zZ8*X=h(EpZW+oVS{`Kpj2T~)Z0O8gC$*yPgx*I_J+K;hoXq6UDL$ZXg#(5A%E804u zY>TFr)@G9@RegEKsfBU|H<^;Q@TfQYdbl@Q)_@5 z(B1iQbY^umpO>?qNE4AIK?)~xfb_)wgOY!kL@g*BG?F>dM8vrliu=mjS5??>GJRlo zuj3_h9Zw_VW{3AlQGf`Y{TDel{#p_B#yKQpeE~tr)Ou9zw)wx9YPpNdKLEi8-0-NL zP)LdnKRIe^Fhh*N3+39Yj~Peqgr3J`Pc`*kGrImsB}ARd%|@?xF;-t>zX;iWLL^2? zru6TGxGHk&M})TMyyg@B5$>pH&Zo*Tv;OT3ZvDIt78Yrd$j(c`&QE)S3Jt8d!SVrA zxK@OSoPGD`ms)!JBt=b*aK65xEzr7r&MkOv=Q-qdVf&n;dA}q16D%P2EieDc{=!m; zJHm6}@b303mP4@{-r-iJjfKt>N0kEPXCcWgE*s+A#Pp}(+&(E_S26#7Dta;>iafX|O zvOPi&t&5PzbFl0Lr5d`fJ4K&Y_~`KoN7^es`>OFPKzCKfsJ#XQ-1zAWii9h(rB4E= z?SZGUywR3bT0CS9>~t`9lHjadc{?+Da(&vadP(|i@SJxp;D=2MX5Q9tX1Z;jjUJ&O ztK{h}V!If%(_IUU+Weq}dMiuf`A2sVy{F2}2T9lQ?l(I5qs}WN2BmdXt^XN-d`L+x zef}uz&RoZl6N#N%4F(9HbdYB}OyYlS)eQ^P^uAUYvOE}R}g77Mlu`qw38Tg{)+Wq$KA5JS!kGo=z4EBsQk)=A8}I>O|QS?&b9DvsYHW7 z8#a+qGXRiF|2$$W8J+%|$qs8M%d8krW9I#raC__RnqO+j5y?Yh7{)SxmQ{fH6t zX69)Lyv#`MHeGt??(?w#=GH0ryagFoqB={Tm?aSO8)OXf$q^Ltt`6G z^LUXwli>+JUo!A!e93azHFN|Bg-))az2gXR0RVnfh8(&W`A-3aIz~8`a{urK6 zUiS4t35l}I!iU()rI+k8#3abWkQx9H58$A5y-313xnHRCE99A879F6qU+m*R+O)iw zX|A-W?d!id^m&^Kvrc_xT(h^gR~XM#cN@K8h-P3E^|@xy%L#IJlzv?@_nE%{Gxka9h`J}5p@9J-XoQC-5QleTSawHRpze^uY?eOcgD;WAqB<47i1nRRv zUquwIPrc2C>s4UO$}N%v1>LRmH-bCy77;98*vo&=sJ8}7L=?AaWR>>n)nd0CV^<*c@%79Mc?d^CP){wyKAR|cdbjJzdi@W! zebc>Uci;1s#+ohSgu<$$+F{v71cVIE1oB6rV>d*=RUWb|m|w1s((h6TCYnL1q(r1G z`n+%2Ykv*ShkxpZYH-xuJ6EegIXp#*DMbkXTa>&C$bC1fm&|t@WmIx|)$zO5xCl&! zd95E4g0NaV1WnFP@?V6tV!|^^DQJL&+J5M@^m;76?5{=nGjfC0WXPquA+HUC=c*1RnYU_iA{}l}g-ju;t&A(yf zO#v<_rAp)dBEEw_`Y5|iY07Vh=?7YZ83C=KV2w>Hz*x?kJaH-7a}dQmmDX{;^YzE- z)?V;dH*Cn#pZmE_P{lazG`cy#j#H3+#5UYXbKmZt8fsyQind0P!CB+?i1#4rh@ZOz zQBbvXwl3nNF82H?mLY%Hx@vV zooKd1SzN@JvJm5_GvHA%4N)57`C{)kzuZ^sbMe*GD}F4$E|Dlcdafx73jLz8gO;#so(F*V_@@r-k$jE$af=M#d$g*X%653rVy?q-8kg1=pmIJ z79RbhZbcafby6{g@o4>`80M2pCC`x6WxAoTDF(8WmhBW|?&k#SABt*5Sx6u{BYrmI6h1 z%n~tO?L&Oe@vjvw*WWxeH(!FXc-P#vw)J8GFSA%J(|w0&Pcf#7*{pZ(DIn$5)8^(T*C zT|aUp2bVxZ=@vZ~h(dg(h zM}F+(aO-nE_0!zxOmODbb$L@%&4ujz`6|1UHkAsKu9|*+y?1LGV%PlUQu)LrOBaFP3hr5^gf|W;rfimUxtg zSS7ZgadXlh8podh&Sj4qz_5{iRqJ<1^6_bG)D-1!2N3N517)J{=`P{`gYg`r3Lc;y z{$FA-zs=vdA0f}4uQbu4q^^MTI};JB88t`>digQZ!CsIc$-eMfSzKz192|B&4+ zgM!JJ-ylLSkCb?{hHqg6q02RMRlAjp8g+zO;D+byaMbdemi0vTPqr!CQ`Cwz$hO4?wTK6;dY)ejgFp{~|V{bmVqv3Gh9 z=O4@G9T124Wst$_f7r3a-`fRb|Eg}QO&$rL^f>C8LTIdU$oA)d^CQMT?SrM#2io3j z1~m3f&wmL^wvncv`W^4!&P3@or;ADK7>kz|(r=umJjjVPlX+0z@sbB|+k!o(j8RQO ze|NeZm>^oUVY4tOe3~-U4=ku*YpCZZsj$4W2%g`rxwTF)r?wT8h~bw3>1977#*-LS zLbSFkkZ5Shs1>4g;m$-3sofQqbE1CVM43-6TuZ&l-3k1Vy}okZp_NFfrpu{F)c3f7K!l%d$2JP4&UNee^c*$0oEQOD^fz59+j)kuO2kS^c{F}#om!<|3it#!|fsk3AU zKd`>md|!-b8CK5Pbk{$I>=Yr8CUXq`o0^RwyWGS4d?+E6LMadE%K3~!5JX!f4%0zC z{R+IFhqL{d>wyZR&5ysL(bZr`qxwRzGL{gm`&PLi_VQ=#Vvj_c^*N|b?{W&M=x>i9c8fXdNqmLU6}{v`L%2J~GXE(IBxAplJL%0R`9i~3Juy7&DUzvvtE z?0>T-qBL`d70ae5+OZH-*W{|}!JqTLjE~>p^I-^n2VoFk00)k{yiaoWanm(fI`kfh z6z~KehCI^u#U_gh`1lotlGrb=#eYoh@MCj@ptZ&4boaB;h5|_uLHBWwqp}B_Rd;GC zrC0L;cNU*5CZyV%b=^c61C!nJobQf{(oWF%@6w{(*o;OYeSTj637!cx5v{*N zLyj6@c8=sUQ;xA4UhdnG95+1NvB9t>YEHy>{~SG~*ZvnO5lK?A{nJSXWep10byV54 zCKK@Y*7|f=S>33BIN{u$Z@3(J9}#g~Sh>D9kW-pl!%q%$Y%R;O{>3^#MKp8*X=IV? zu6?T&<+s!miJH3>g`0gA$gCA%)~wVR&&x@@z#w{AX5zOsjEU1Ay1l?G`*lGV8TWFA z53pEGnfiIY1>Wrm)B~Zp1?PK`>z`#7b+ZvDGXw#0OAM(}m3?d5{dtb2kK=wwGog&n z_&jnES$mk`;PrF!x=;fZP9l&-EFbt~bQcd!)|W}V9c8Kq_*g5P#=0pJLmTlB?*iIL z;dpv1a!Q*4miavQ?;tHV{@&}9$Bpq&aY}!8cI~WfpV}}Xb9aWhcf|-_%r%Pqx%u%W zH=~U9-vZCNybhlN?*jx``NOEY95;Gzw@ZWaTfFH!5x79qpZ(!-8@YR$vgOs9nX8>e zDNLifVZBBPh#SF^W@2W)u>uc#RNrSl38G9!NmWUu&u+OyXIAnZO>>|Y?a19I*Q1RR z|4qNPgrOIqB^J0dQk5POUCvjnyGz20kVu&u+>nhAr6oSnn4a7(lblgfJwue#<@T6^ z(Ssatr}jYApUB>80%fE!KikMmcP{c6I&OYZVC0L?zXTc}V3Mp`#CW{{yeJn|jh&H> zO0uR1ty^*LmPsCoc(5zSLVJTRA(=R#8j+u0|F4_0c6ZptmtAFg7#gEt4z zjLUn-7l>$>Ay>fI0@Ub$!f#ukIP5$w3eTHXb#QFXwWzFQ3^>4VO7;O3P2V(oMTDA! zl~#{21aI?Ch*qb*L}@QV;>;Jl{RS{Glwfi6z(}8MiPLWD>l#m1^RFAP3N<-vdqGLZ zT!qu3JMAmEO#lS1|G{DNlHUgoa=gg+=*Nh-U@lfwI=)dPOLdBNTQZK=`hqm4Ky6_Ua$ZSyao8Mp}^k66qbSq1XQFv3>^HO+Q~D z0qJMqV9Lhg#qs>zoc*f_i^3Bq@Q=tC@Qqw;^C-GG1VQDG)_jgDN%Y9_$H(Bsk-hzA z8`kBko6{f?&M0@@gmMYOrj9R4>9j3qk?AkSPA674&T`` zKH)Ria`h{+;tLQ&l4AOkiv3rSMXBJ03n@8FwNS1O@ktSK%B41`6*w-ic_=f2VW6jY zQ9v-YohS2Gr&;5@s)uN{CO}LPywz0JEO5P`2I^Z9Tku+86lG#Nkm9|2MHk-3?ZMzqI@8`NYnBIu_M(^XK=z4&3IspbaNpFCQv` z7Gvmj$5I1+vfZ6<`zz2jN?ZnlUr8n6rGr}+l|QQI{h~xJGS_UE3*!WyfxT~R{X6Se zC9I0&>u>D9^eKv;tApojmY&rHqjNuT>l&iCAmhN9H9Z3qb&dpg^aJJCzhkmx!N5<% z&~ipH65tyaYv_yjmU@QD73?LEj0KPM%>;*B#1}-Ofwb)%(gtD(;?*W7LiCzJ^?s($_l*Z}1+gM^E% ztTrgv0y?ivSSAObGDdb@?xH}>r-!P(;CC+X0;1~Pg45p4bIUx4G0O)$Hk6+9AO0U< zp5WbmF#PxD7mk$^I|m{&hKiy&um7D9TZFh>{3MoD;P&ox@w3;9R?josWd>kNr5YO;YCQ_^wmK z>LzLd3jH<;cEgMjr093#HnlyZ%=$#A0*P36};T%5RA+Xkr>p+LO1#Eddw)jRS`2i>5Ozc>%8XTONcY zj}8HAa$nDaRlpm(=2n0WBnX}&H2^<;PS|OFerDh;YFkZ zSoa+H9aC4pIuS4M-a(Cra34sI8PPR2c0NX#k0)0GDsJRz<&vkfJ^s90sXK_zUqrKOHLW*HO^wfN{)!F&^)ysQ&Er-0{X3AOWbR8d6qu zgnhW4JkfIO2ue@8JCW`Xv=?|z7X*ITgZCR1aQzsldNU}Ad+TjSa7tn-K&6=AZO8xU z+w;yo$59oeK7(e}Nmu`HecQ-fRWR^*l1*p1<*8|G=X{ucJM^~2Sc_hE|6u$>N97E~6eg$O5OH21h8^?X& zeQoJ$agL-ZI|rW}n+Jx5VcX+y-7{TJ|C9gq#UGk3kyv_j&A|0kmamb4_p_PA=Uv@A zx8+j_P*k3GE>^yuu)t+-U{Nt|x#fqBc+E#$OP0v`t||tmFzRM~d^|H7fm})1ZVKMd zC>pMv&4<(dj6=w)Pq}9vYx!@A);7hp* z^f=A@-9q@1JVaG&KCUKBgU~F2W_h9BufWXAR}z=ji+#lM z0n$-E(xk4NmBJxeqA8{Wv#xX(6D&iybS+oryaZZo^dG@tK0rw-PI$f&*aA8!DZAN7 z$4BX@g2t}T%DO*7q*PS)dWE~vRd)x>oA-CR%bn)4YL$334gXPrx5R$qG6I6O+UEbb z*Q#Zkrb9^VxTPz1U0~}g7RC7FWYjJzw8|pob8-M8BM=0|#hajw5p*#^N^=GU2J$R_ zyMWY6G|nIF;?!3bTMxpzbZGb*_b)!-B}h={c8PieNX^dIZmUz2Y6D7lZ!k{)lz_Z0 zDYsQ1<p+3gDq9Uc-gSvJ?U#4CN2!p^w6>C0-`C~7*S?~VwCHYos5b-(ftv2%=4lnWU-w|74;K_%|yA6-es01YO8T|70I7fB)>`B+J zAt9HG2ThW0rltZP2Kt^Yg(kk-h>eRA=(hBzYK?OT zb7;@Tx+xWFjwJU!9Z8vQ@hVe(QvP)Cv8GQz3oa^BlI?uxCQX{l(W;6)H#Zl44k2Yj z8#vu4TOD9Qp7XeR`RoD0s{8qd4jQ~6EO}sxa*)0^AMoj(Ct(7E+Uwr z;gu=3#bw`z)E7^4M2eS9wccZo6c=mP(9~2e!rSoij$|8sYnskZ?WSNG1NQwB9o*Tj zICcCjD%EaT*@=5)#%~t|wun5cvVdQgmex+FWz89h%d_@@ptoeUK*O}d4^jC%e65}4pUqr zQ|+np8KT9j1qB63u8P?@j$J4DR@XC}OQA5gfTwYPo@$dboK}7rd&o5Tnl4D`cD_sJ zM{|Z$r4HTE7P%Z7%8t8?4!ps8IzJZ&i`mG|l5=l)NsIXHtk2Q8^}qq3nSvY2)9Op3 zAD6B|oY4gVQclG~oMG|o3rFG}K>)V<`nsTjP(X?gFq#1h5 zi8eu%_Lg&Ni|04vHrFO*%&i0VjYWN-XF(2rt0S2}Y9|z?>^?;a{S(XCJMS7p&V+#H zJ=c@DR(GH^2CGiZNC(#I=%IF7i|wcdn$F3|BP|4i)|3|o9!GM@VrLoketGrkXw@_j zMCYLAq8lD`sk}o;gj~q0KLQT!w{f1L?8s!*yyui#>8=LI?(CUSq^dWtBp*`0=r_*) zteBlN;~JL41G5-DJlI560p9QHF4Hl1fPBEcJjI|PmK=Z5t8VN_dQD+5Xq^fz;C@42 zHG-QemoHo}Uz=`S9;>wmozs)~3|j2M74`7eWsBlLrn0TLULr(AyrnPxw(q!8k)%1? z^ks^5Tg>|y`XTOkY{L$#kdeamv;sx>4b%%P1c*5!K?7U)HqwqzOG_(+3@*kPoaJ+m z_PZWRv@dVU%@6*}xC<>{n1#N&&seJREg3&}Pg)2GCxg&rZLnBgDj+Q_?O=Zwc3!CFq2BHwPEXNA z#rUyUmS-1z-f=qSxi4k(mG`P6tlQ7%#L1TD`_DAGuqD3W#odl;RLR_zar_Q7+?6gt z%pVmq_7;g#bL5yusAA(I`3tk}&#*^QxNIQh=1?uMiF91*g_>r7^M>#G94_xmG{OzA z4uK%34_VZ|V;OBm91MgZ?zs-knwKKOu)y@>wxok`J`23+{h z%$BYxg^KkrH{=+hQ|wSpKOr}ntUoywPoRChn1B#GKIDAwq36kd2K=Ikz(Hmy0s&G0 z$Mupie_gzI>b+2Qc6iXK;oY?krY^F(T=*_Jz&?StL%~H5zU3qCFP_?Yr~L3GB(e)FAY`YceYZWo=GUQwt(t^YM`zC%zETS_gtNvVM62aHj}j3FQV zN#?ags*(Lrz!S$k*{NvK1txYE7d^42rQdYfq_M-@&DcPDpU`kD3{exBLhb#Uq&F@7 z6pl0+gWTzhvL|8NM_xc22gL9m__%r-AJpo^DFrbOpErIZ*v&VQE)D=<+`y1nA?``} z4I;@DrC>`U9u)jmfL&!zbGXt4n+WOLHr3=or(RyeOul;iz*}B?arl0OA}#lm)~C=e zBN&~D?cxQ7HV{jBu4h3%iKmEzNeRQIku*(Ig^;LK4MVA6%Af(Hfy$_?yUOk&pZWx| z1lN&}Sfg8N*!#nrtY7Pc!i|l`M$Th?dowv?RvmBzT=XU7qU>K6VO7!mK-9>25x=de zcVCH+7k+v=27Duf5N&}gVVH3$Dw=$F05gXi^Q2ARJ-%+RhJ z6gDg?*6;yoaX^>BMTPZ(jq6;rKbtgGZps){4rEp|M-3FnHqWh+Zg3gG-k0YZb(f9h z!hK-|cn9ouj^|V|&U`nI8nzV0TWFGzBli2R(X78rg<`l(HWe1w9JpZ1DlnTJ)K)HB zsh+fE%BfaTx~5Kn^`r4v1=5oP(XuvAlJtKcY_q03L87#q+;JBF{%;3DOgI&?7&hM6IZFHkvNbL}jPLQ54%V>Blc zfjij)jcG6&-9oIRQ@mJwvvg+5x7!++ZsFlr=*Cf~m`?89+#^7j`?+@KnUiF>h8@y9&xCuyr(2*CyHPoxW?ZGq zIpXBom#yXJd)1Jqp(~D}l#oPC3LwE?$G*-55^ZYWgX{~VhyBH?E-AC6P?$ln=eVLE z_2vL!^t`3&A6x)I!8C_~`Y01^+w~;cSN1x6NqIazWv!aN)-=qU9u|raET$ z4r`j!F+%+9^+yM8j108L=aHf^C=^TX#;OAI4VmN%_`T-bV-$Q*QZNo|6!UUY3_!o}B8L zpxQ`L&Jk4Y=0b)ZHiDX!BcNJ+;a9LGV#yP%DX#%8%=k@Re?8`7;wdS!yyC5@mhY;)3tHIrn(BnxHVn z$Jh!8@ehSMH~apz2}$kR-Dyjz6~{+ihX<O7mi}X zZ-D(H!&*0t^*5t0=+UF zxX%019#~w13Xj>X+I?5MVMRMIb6Kmw46?9_0#8b9t_WYybf+YVw=8%`R zerqsp4~cqEDlT{~K`oS|Q9~d`9KA9r5+`%koySJS>unCKldWjfp0MFcW}uadWOIp~ zvj^opYfsN=stftwB8&Yptf*qjAov4%FRFEh+Cavq%ZZ%o1xE(EgX&{^uTw9T(DREq z(C?_wZs@s1=&B}o?!ZoaL!J(Hu|pIy5z$iR-BOcalPJg z!NaOJE9BQ3#^<_BQy(L-Q*<#Onh{X#X3c7Fg-U(}cCO5j~eez7zP372A`S|)s< z*6XOUAjr>ybQD9m_)mAXS+_dO;OKXyHuT&(Ht z$8an&j0R*6^m$;h)bUMJ@Uc71)$ZzX!r)Jl*k&r2^APyjq{euxl3V30)r&QaCa>c2 zop2tI&S5B2gxF@%keA1R!sD%0=O$xM5qUP;kxY!l3rK7hnm<e**&uTdp`c@f=54ie0dE;WYIdsvHV4)n2>uTdVmnYObX0kg713w{h^ zyg)dgtpvR`xA9a~&uVu^eJlm-SD?I!d*gdMcs~a&!-i_Mfj~E+ zg^$1Z;C7C3GXXEv69tWP>V)Q>V-ywyT~skoQ#E<8pZEM3@8V6W7o1$y^GOO`LJN;w z$S}X^FYNJj3vIN_2nt%!=`ifhq=63G#XNTI_3^=FqhZ$it%<=}+ypf#Hr%Id=$+sX zIyc{s?l+^1~EJhvi3nm0c z*M>>K)-Q5IEiaZagAy~sEc?K%0>hDa2gZTRKX__4qf66Zv%1h?SwTT?cCjsA>?;2C z+sag!8z=%}rfj)--7B|!+*}itPUUCC;=HG`_!wIktrt)S(LrV8hF1jwtKHOTv~TWE z3c;d$MsL5%Tk@H<@rm8O>tns@kz31Wy-tlngFx67ewrcM1kv(g!V3>fJhvOaX$Y_b z3le^iJQc5&Z)+6tCFIt=($|#r+le}I7b<%(kE_r9^<15h=u`KM;COLB+V*f(2woG? zmJo#+XoKrVXJ}ZBsJS|;R^!ksm9wjL3;Kl^SYwxA^Pr_L)*8ge6~!- zv0hvY$r@89^A%-+3zgR~pJ@=f`?QwN@+_YA?a`W^GYqtX`$!=`6zY>uM!WH4vc4bv zs)BdK++yX1YweJcJG(`_xVZR0lP9GN`C!5|&cU7UQIAgTHOk!8SQ!2JB)c!xrO&KI zKtVwPfRI&y%(($NuCA`m@B3`MG*q1*6dq1OO3FaxMaX1jJ;g-=k5LeF37$*3&Estc zMuo%T+ZQLVOD?hhe4d?a*v$(tw~l#knfAw@EyHPw+2_xnNBXD%)>mUU17lJ6zDJDr zhaC#q4b>y@d`}D~ubC{c<@A#ocpNpT!S}&~=1tH7E$={eA!>Ygsa*YwmPo4HXSobD z<3Sr3?xNAPPX?!tl8V6V@xb|DI}QoBFB;i3&?(Ob9Jw~H0Zn^P!X_@rYSc3_HKjY@ zfDH5WoVGa6@=4f`4;R1CPo1=kH_5ZwEk&L*3$JSsHma??UHCm|Z@IH`ZZ`b;icl7V zkuR1iA*uJ6sLJ>3WI0?frZAB{$9YDUn2_KAiT3H~=}^BwoW*(kM<{dtU~)o2f=QuE znAFgVlI0kDnu(Oi6PX@*kuuUsbx$l{OlVYZBpk-#3{#0Uge&jLq zR1+5$SA##~4W==th=_;?yo55krLiMxQZ`J6^H<;SIyP$fiuC^sC+5mqvy$Zsi2vT$ zSZcKpR;P92+BHe8GdEu3HHSgMc~6$6M}GdM`r%IZ?4e9&rxb_N_o){>pG8Pkk7V_f zm%Sg*+ImbF9f}Uw%`xH=aapC6mpiXJ&#uk1%NljgSWvZrTyW|fGZ5rRe#J(9mx_+A zwyLVCzrVj5ddM=k@Pst#WcLoFDKejqW!9%%nfdm5KWKsJ21~7Kz2oMuPUk(EhYOPD zzG~emEG)FOwPi8rc(}lj@_o|0B}c#A!8EyRGbm*QcEx^k@sh8IKds^f0`j}e7N;gI zz51#eu-rz`JkM??HOO6I+*^Wo<4jVjoRX43;P85@FohyRPz&-$GL;*x+^&M@k61QD ze1(i)*NDcCwiu~l4?7<^wl5?kCwK1?ULqiPAS86k0}EafLmnwE=i!mFZVHCgs+Y%S zjsSI|NLLCMM)qd?IS7yZsIPCEu>g$o2~rLRmDA8&r9Ibki!EMF@F&xF$(P*%Fu0Uo zLx35kLsaTqXWQnI^Wvv>d_B=c%V=9D|0lJ3ixI1^u&~#6s0-22 z1ePS~yZL^f;D%B9yJRQ3HNhm2L2mxUhy*-xUI%u1dQrih&7}-00{D0Qf?Cy{i;-bA zZ#+L{YK<3N25oqRLxgf~XD%b~h%kc9j9e)hc-LR!Zd-6!ka|?3>0R>$uq|X{a8Jip zYh)=fFqQAUxU~Btl1skVyVwSlTE%k<)7et3@813G8GG9UJD2HIR4Fp!>@Z4p$Iu|U zOS4kx+E_9lPguZLxIr+`*HdMRbGVD=r)j7Pg%S~)12LsYPoR}-CLMb%- zouHZYojW&m5iXEf%yqOei5NQF4gG_EvZwSgZk^;kkD4fYit?-wGs6M*K)z^cHryO^ z#WPgO)e_DuqV>4VnWFqBBCggfZgB!St8|{5gc(88b`@TAFzO@r#c%s^X?o}Ro z`B9w(Bt3g%zr3I`9cyySL^lOO#UyQb^T_X)g_zmzx#MmmeCgpILowjqhtN zzd~p9CRd@O={OGN*K@IvH!M8=zQ+9Lzy~>_FnyB z!eN4%92+jWT{--8#re>@`>?28Lh!9Ytg+dZnh6h(r$@l@3&~^;l=q(PT8Bg(CF@t7@vQxKsQHUG4RF^uLutKMVC6)cD2ZN`Bgfmin0kP;%PsK>lRujs*O_6~hml>7f zrk0Vfz@U>I8sFaX3aV=T2xBpv{1Li3)hy3-<|*#M!2xuy1S`j+BgMB*5f!eSYtShz z!NX#^G9E}T|0(jsrRQ#lZ2W&-&PTdgAcn}3P?8w!hWh_)3to4tJF707b&=E3)?Vn# zZK$qJgfO}6QmC&lJ_$*9K)^UO%^e$)-dD%Ja3LEa$ggooc6N5U7#W_P;M@CkA1d-d z)GT%Ab7tl*2)zQ2;748E^7^_ZRPT}Ct|&5Ms{{Ljl+)rG3rlBJRs6H6*K+k|IxhK_ z_-CRrgKbwQ-+YJGv7dT$S0@`A!`YY)gFBj=O~Gss5)#UHJm~0-P zw^2|~NJuo_*eHZHvx0(dYKOHmH|$ECMk-#OI(3R|X|G4qXM4C0qUXjNPh1S3QSKph z7=G>M7BE~6Uk}Ym^K4J><0w4$<8#C+d*`L|w(_^(h zOyReW9X+a)XQa4M`{Bcfx$X@4EPPM7!}g0v@#OgtSk;Zq>dsCU zTH2Z#ChP(ndhr#oYEm@pm@;OY1yaZ~Sq|rprFcO!O}{;fhK^1?OTxlp4GIPcB|sBb zDJiLi{(M4T(cqh!vJoFCO%ZWKT7MqKMKx!G-UY&}zUo3>DT#L>WO32K-#mFco zNOkpUe~!NS>V+Uj%A-BejI`Uwu+BXWXKmETa&vcQR4?OZVEFO$7D8F5bUW4C+dDcs z3ZY1_GxMDE`4iK)>hkqkk&0Tf-2Ly#xWpsaTcP>$NgQH@?LdBZ?TeX-(EYR#xFOJr z7;JuR=NXgriRY4%A3X2sw~bGlmRD9)1xE8&&dMb66`Kz8x_*`15V|9b9UBCt!z7}( z3!##Zw&|9#qiu=fu9db2%uKEa+?8a9A7oHXsModDheCcs;?bioqi0YCl}Y{%K-CdS zfKiHyiWAmDP%7!mDjWpkb@}5mjaL2+m!LPX-d*DTy*;QxC*MuzQV;hK$_X?mgM0Vx zogrYz+@U}ENvBxkKn`qYDE}rnp54rwYG^lbH2K|8*1KjS{1a#GtG~UuV46DxVd#K+ z3JN`q%EcBlaqTk<1fq#kSH+^ZIT#rie1*wFS&jSPxXnfor<5j&22V~+(T@R(Lq-32 z;FF=KwI>`U=f;A3b`cum2H@Y2Sc=i})adIKj!TW0`~0<%Zoi@%39`z5>1G z#(Y})%*H~$eC;^@LXU}Gc_7lmnbUGMR5wbBliCOp!h0lv-cv8fFA^Ai>FCj;YIZX; zh1I(5IXQQ|s;Q_Lm2y%t^*cYwa#_vmwIzti$jC@Z`C7g>mMd#D8Sa^olq9#T_-wi* zw$y&}91hNBi#gbB!36jmZHkLfS&W7X>IB}re!aKY+VshjC*W7)n+ysF2n6IRxa{|u z`0?5Nitz--6wiRx(R0$5`94iZz+?(+397j6Ijpmn zB@dP_(24&DxqV--D^0OILBxM;%|dzVcv|B8*{N{V0<&ke@5!iM3_ETH@}!VbLg}^n zzTDI&=NjIT^Vq>-;C9HXKi#1yMz@`iK#i~8m-Eq6P*~V>px`zKNAKVu4>k2Tur|ne z9ST&R9Ltq&7dg;LOiTo`^owW7_GGwFGk5EChtb%IFm}j6)JBMw)dW%Jzum%d!ZBcf-=;Obj9V}f^`Zm zH#{M!K49Qi-b)wl;0KHzQc~_`mB;N9+pp~}SRaY;TU%TE_3IbV2b36sVD>Tvc3;7T z0gA#aS64y?g%~-3inmbP3OGwpb&3FvW%~^8!PeMK)uLaCr82H~_H85*i0iT|FvA*o37{nIWj8gc~0yCXL`?A3b(V-DcDsZrL&*M(yvcU+^_8 z+tvXB1T3LJ5|%;ATUbtTvEYPX@`bBApge=eNFcYN7u6TPmzer9s#^OoZ9DkR_2M5c zbK98d=;&;dmF=yFMv6}@E=GO$Ai43hS9ZRj{u=4a6;sIBI9$3Zacgbh)Yy$Ahd?m)y9$qM?6+R9ROWtqLFR*M?-^QYg{#4wN^_*ss}0s zpyS0rX=-FKz-dv=H@WfP#OzHjE_=Xe9CtT(K*Yt9NmvYIfV?LtD7fti_mOTRm@8dr zD{SRAR-uix7}2+yn!c;ICE4;L#|H-o19$7~Y;4k0i@TbeGmQMjlf#*H#o;Cw(t-kE z8@RX~GM2R4r$Ge-F{$6A@~4x?lYcCxi9n>@?KJTO1vg zdX^6jyR~(6cDA=eA1A?063i3j?;n2_^nSd`(@78|)9&=h(x1mztU%9?R(VA8IjadS zmLDD<`q~bs=F^E2CuY{|0CupNW39L?Ywp)QV-Xb7w=v^3xvT6;Jf&c zap`0!1k7TyC-sS~fOA@6vm6&3-2L76s&O;2f#qSg-ZnNiclBB- z&>p)Y8|72g&WLfL1YmiADUn}f^cbqQ34PPLGci66#p!ykF-i*OMvVtnxxy6)x+w3g zCkb+l6>{`i;a;}n9Q;}Bg~;xW4WrIaoxm5fUxhLO?tF)P*`5}Q101(*NeUL=@sY{_ zfOa33#{xbkCMITjdU~=kTs~{{?In7IFP3Yt-e;IGSh8N}eumaxM3CK;_Oo1hAyn*Za&u_SVdsnC=xR>2?CB z^s2t&w6_%(7q=3A{=$VoE=Ab_DY_9!1I{{JqC3=AuEZ1+*ueE6pP|NRKcJCSve9P< zFTdyuYN-!)#Tr?HUBCx~62J@`Fs?LVM-)G3Gi|eORcqO-e%Kf=6HJ2zU2rBQCu!;E zyuK#`Z*n47eaIjmF7t2S1o4+QH$i9*phD!@m=E8{6DJVn78$3-_xgHHi|Lk6vZ=73 zP!I*Uk_P33s18XnI$I{D46t%}w#WTpjitfPg4>Xolr$nJC=XZeNqgE_^#wos%)y6Vkt*{U6#Dn05dF literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/pegfkke.P33ciVMf.png b/previews/PR195/assets/pegfkke.P33ciVMf.png new file mode 100644 index 0000000000000000000000000000000000000000..cec7841481a1f49decaf0023c01f898834866b0b GIT binary patch literal 61958 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 ~fFx`b+jh?Ec(UPY>FO;$SnL42-LN?KZ2 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 H@Xvn(CzObi literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/raeppvv.C3SxJ3x-.png b/previews/PR195/assets/raeppvv.C3SxJ3x-.png new file mode 100644 index 0000000000000000000000000000000000000000..5261ec3dce1f5a67175259f7346801f4e899593d GIT binary patch literal 23728 zcmd3OcTiN>)-NhbJBlzmBO^!}TTn@oB?m{LMS_ANl5|Ltm7GCDnUMjsk(@=6k|att zBRPX)ksO=cG^yX(2j#+AFW$+J9=ODbfGH`~wXQ4Lw2m zx2rTXv^g|1d;D;_;fXARVJ7^s?{^iY-)N}lzl8GC5E>c|8p3Z1S}rluea@jwd8Hz2J)IbKE=UtUj9syL$jjpB^{Gmwlk-`(d@eN@m_$BFUuQ> zf`W0|)ttInk!n)#@kDuN`vr+=SLrRc0YX-Yb}@gs=Yq8z^G#jdJv21(o94VSK!%SH zEhqdf_OKuP#qkm&P}p`_0Y^ilk^2AhKTI09$)~n8HEFm3!5U2PO|Qt`^1TtMhgPHi+}Y{>Gd{e0;5+w@j$L};%L(V+dsUf*-4@y9D=9`v9@(T;EliCg4CXyXH^_{!(&7*BAD0>*B zbLxa@^F2L2{_$gKyq6mhh?rX)3O0-gkCLz-O$wG>d%(W&t%fJt1HOV7W8Wab9qVxQ zTIEEUh=>S2eNwLEA^EEjWq=yH&~2I5p_AIkE!%8g(0++ww?*~;*4d5+O>P|=6z$X# zw(ib<^ym@$)||iXLmlFeCoXynpI|50&3|GNsGI7&`+;6XpnOTJ$I5=Tc&xDf7M(|H zw=;FK%QV`m!nI;Pu;Toq43{Pa8Q5u^6#wTD6#-Bx$p@4B24kK3BaQu8oxa{l3hZA_ z7x0=7AjG*%rq2&m3CuZ`IFl+?x-GL84OtgeEqgPIOjBbQ#^fr89`NxMkAzv3JH~mH zH1X2VBrK-=&RCeA4?OoK7s3Uzzto6a-v%_UdBKTs_XpAxz}FUv`#s9@DU4a!D5|%g*@9Al27_j^6NnUkp5kT z6xHYfCh3j4v*kre9bg4wHGlT59S;zw`07-*>>tX)!lJG3*uMV=*JZ2Dco)lT+qKD8 z+5B_v1<%~~kpm2Q-wbiywLUPF@qlnbk*Kqp|F;h8iqJGNGCF_$0o9J? zaPN00WA&g06oH8o+sBr+%M%T<7xfeEe z0(X})9xJ>71ubN?-_$9cXiY7WdFVb>D@hWcaj9Yrr%lnV@^Uu# zM^bJrKf!Br%CM5GS-IApOTJOSZR6xpp?5@_}8b==eSw8W(@i1_Sq*f=@?v@e*LPs)E@ER^I94nX)>zU7>D_ z$+0jqKRU!JIo8R*ChbzteqGnPpxvf&bLG%_O00e`TbFUjXl7Adai0^P|M9DoZ(p9C z5&5w2f1$U(6#N$HmqEqEw!zAcAD^rfxV*7si&T@ zY+E+}`2`__csX9S{6mGgw$L4ota7nD(~+XedXiUo1C_~W7md%EmutFDZC-ymN*?g0 z0xj*`-D|0Gn-lPTaY80FKk#JS?J^0cXO}JG@oc@>ROwx@5LzQ+q1AjE9B94e9c$~E z2+~q8oYLzmwrE*TH|o}=+{)|V<>{`xMX%OE@f1>yx5EJu*M;G9&D5;?mP?*%OO!FW zyylCMGExLD>iTrf`H6e-S3uL|J}

7Znv%jXBrM(t18{%4c@`4af8)3kh7vagVzd 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 E03rEqoB#j- literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/rsbvlst.Bglvb-jp.png b/previews/PR195/assets/rsbvlst.Bglvb-jp.png new file mode 100644 index 0000000000000000000000000000000000000000..07de5081966cc2531eef8ee125d88c40ce962435 GIT binary patch literal 44112 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 literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/sduvavi.CZy9YIUA.png b/previews/PR195/assets/sduvavi.CZy9YIUA.png new file mode 100644 index 0000000000000000000000000000000000000000..12bf2b02480954b534e5664912aed43a30fc2b31 GIT binary patch literal 162785 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� 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 Ty7QYo5ybGanO?~yms|e@SYqNk literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/snugpka.3sfpQl2i.png b/previews/PR195/assets/snugpka.3sfpQl2i.png new file mode 100644 index 0000000000000000000000000000000000000000..e91a0338ce96758af988cf0cdbdcac3336f74241 GIT binary patch literal 65364 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 literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/source_GeometryOps.md.BkD8zBly.js b/previews/PR195/assets/source_GeometryOps.md.BkD8zBly.js new file mode 100644 index 000000000..5719dfad5 --- /dev/null +++ b/previews/PR195/assets/source_GeometryOps.md.BkD8zBly.js @@ -0,0 +1,74 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const y=JSON.parse('{"title":"GeometryOps.jl","description":"","frontmatter":{},"headers":[],"relativePath":"source/GeometryOps.md","filePath":"source/GeometryOps.md","lastUpdated":null}'),l={name:"source/GeometryOps.md"},h=n(`

GeometryOps.jl

julia
module GeometryOps
+
+using GeoInterface
+using GeometryBasics
+using LinearAlgebra, Statistics
+
+import Tables
+import GeometryBasics.StaticArrays
+import DelaunayTriangulation # for convex hull and triangulation
+import ExactPredicates
+import Base.@kwdef
+import GeoInterface.Extents: Extents
+
+const GI = GeoInterface
+const GB = GeometryBasics
+
+const TuplePoint{T} = Tuple{T, T} where T <: AbstractFloat
+const Edge{T} = Tuple{TuplePoint{T},TuplePoint{T}} where T
+
+include("types.jl")
+include("primitives.jl")
+include("utils.jl")
+include("not_implemented_yet.jl")
+
+include("methods/angles.jl")
+include("methods/area.jl")
+include("methods/barycentric.jl")
+include("methods/buffer.jl")
+include("methods/centroid.jl")
+include("methods/convex_hull.jl")
+include("methods/distance.jl")
+include("methods/equals.jl")
+include("methods/clipping/predicates.jl")
+include("methods/clipping/clipping_processor.jl")
+include("methods/clipping/coverage.jl")
+include("methods/clipping/cut.jl")
+include("methods/clipping/intersection.jl")
+include("methods/clipping/difference.jl")
+include("methods/clipping/union.jl")
+include("methods/geom_relations/contains.jl")
+include("methods/geom_relations/coveredby.jl")
+include("methods/geom_relations/covers.jl")
+include("methods/geom_relations/crosses.jl")
+include("methods/geom_relations/disjoint.jl")
+include("methods/geom_relations/geom_geom_processors.jl")
+include("methods/geom_relations/intersects.jl")
+include("methods/geom_relations/overlaps.jl")
+include("methods/geom_relations/touches.jl")
+include("methods/geom_relations/within.jl")
+include("methods/orientation.jl")
+include("methods/polygonize.jl")
+
+include("transformations/extent.jl")
+include("transformations/flip.jl")
+include("transformations/reproject.jl")
+include("transformations/segmentize.jl")
+include("transformations/simplify.jl")
+include("transformations/tuples.jl")
+include("transformations/transform.jl")
+include("transformations/correction/geometry_correction.jl")
+include("transformations/correction/closed_ring.jl")
+include("transformations/correction/intersecting_polygons.jl")

Import all names from GeoInterface and Extents, so users can do GO.extent or GO.trait.

julia
for name in names(GeoInterface)
+    @eval using GeoInterface: $name
+end
+for name in names(Extents)
+    @eval using GeoInterface.Extents: $name
+end
+
+function __init__()

Handle all available errors!

julia
    Base.Experimental.register_error_hint(_reproject_error_hinter, MethodError)
+    Base.Experimental.register_error_hint(_geodesic_segments_error_hinter, MethodError)
+    Base.Experimental.register_error_hint(_buffer_error_hinter, MethodError)
+end
+
+end

This page was generated using Literate.jl.

`,8),t=[h];function k(p,e,E,r,d,g){return a(),i("div",null,t)}const F=s(l,[["render",k]]);export{y as __pageData,F as default}; diff --git a/previews/PR195/assets/source_GeometryOps.md.BkD8zBly.lean.js b/previews/PR195/assets/source_GeometryOps.md.BkD8zBly.lean.js new file mode 100644 index 000000000..114205539 --- /dev/null +++ b/previews/PR195/assets/source_GeometryOps.md.BkD8zBly.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const y=JSON.parse('{"title":"GeometryOps.jl","description":"","frontmatter":{},"headers":[],"relativePath":"source/GeometryOps.md","filePath":"source/GeometryOps.md","lastUpdated":null}'),l={name:"source/GeometryOps.md"},h=n("",8),t=[h];function k(p,e,E,r,d,g){return a(),i("div",null,t)}const F=s(l,[["render",k]]);export{y as __pageData,F as default}; diff --git a/previews/PR195/assets/source_methods_angles.md.BIdkE80s.js b/previews/PR195/assets/source_methods_angles.md.BIdkE80s.js new file mode 100644 index 000000000..269c30272 --- /dev/null +++ b/previews/PR195/assets/source_methods_angles.md.BIdkE80s.js @@ -0,0 +1,124 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const h="/GeometryOps.jl/previews/PR195/assets/enupwom.Dig-DWOQ.png",o=JSON.parse('{"title":"Angles","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/angles.md","filePath":"source/methods/angles.md","lastUpdated":null}'),l={name:"source/methods/angles.md"},k=n(`

Angles

julia
export angles

What is angles?

Angles are the angles formed by a given geometries line segments, if it has line segments.

To provide an example, consider this rectangle:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie, CairoMakie
+
+rect = GI.Polygon([[(0.0, 0.0), (0.0, 1.0), (1.0, 1.0), (1.0, 0.0), (0.0, 0.0)]])
+f, a, p = poly(collect(GI.getpoint(rect)); axis = (; aspect = DataAspect()))

This is clearly a rectangle, with angles of 90 degrees.

julia
GO.angles(rect)  # [90, 90, 90, 90]
4-element Vector{Float64}:
+ 90.0
+ 90.0
+ 90.0
+ 90.0

Implementation

This is the GeoInterface-compatible implementation. First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait. This is also used in the implementation, since it's a lot less work!

julia
const _ANGLE_TARGETS = TraitTarget{Union{GI.PolygonTrait,GI.AbstractCurveTrait,GI.MultiPointTrait,GI.PointTrait}}()
+
+"""
+    angles(geom, ::Type{T} = Float64)
+
+Returns the angles of a geometry or collection of geometries.
+This is computed differently for different geometries:
+
+    - The angles of a point is an empty vector.
+    - The angles of a single line segment is an empty vector.
+    - The angles of a linestring or linearring is a vector of angles formed by the curve.
+    - The angles of a polygon is a vector of vectors of angles formed by each ring.
+    - The angles of a multi-geometry collection is a vector of the angles of each of the
+        sub-geometries as defined above.
+
+Result will be a Vector, or nested set of vectors, of type T where an optional argument with
+a default value of Float64.
+"""
+function angles(geom, ::Type{T} = Float64; threaded =false) where T <: AbstractFloat
+    applyreduce(vcat, _ANGLE_TARGETS, geom; threaded, init = Vector{T}()) do g
+        _angles(T, GI.trait(g), g)
+    end
+end

Points and single line segments have no angles

julia
_angles(::Type{T}, ::Union{GI.PointTrait, GI.MultiPointTrait, GI.LineTrait}, geom) where T = T[]
+
+#= The angles of a linestring are the angles formed by the line. If the first and last point
+are not explicitly repeated, the geom is not considered closed. The angles should all be on
+one side of the line, but a particular side is not guaranteed by this function. =#
+function _angles(::Type{T}, ::GI.LineStringTrait, geom) where T
+    npoints = GI.npoint(geom)
+    first_last_equal = equals(GI.getpoint(geom, 1), GI.getpoint(geom, npoints))
+    angle_list = Vector{T}(undef, npoints - (first_last_equal ? 1 : 2))
+    _find_angles!(
+        T, angle_list, geom;
+        offset = first_last_equal, close_geom = false,
+    )
+    return angle_list
+end
+
+#= The angles of a linearring are the angles within the closed line and include the angles
+formed by connecting the first and last points of the curve. =#
+function _angles(::Type{T}, ::GI.LinearRingTrait, geom; interior = true) where T
+    npoints = GI.npoint(geom)
+    first_last_equal = equals(GI.getpoint(geom, 1), GI.getpoint(geom, npoints))
+    angle_list = Vector{T}(undef, npoints - (first_last_equal ? 1 : 0))
+    _find_angles!(
+        T, angle_list, geom;
+        offset = true, close_geom = !first_last_equal, interior = interior,
+    )
+    return angle_list
+end
+
+#= The angles of a polygon is a vector of polygon angles. Note that if there are holes
+within the polygon, the angles will be listed after the exterior ring angles in order of the
+holes. All angles, including the hole angles, are interior angles of the polygon.=#
+function _angles(::Type{T}, ::GI.PolygonTrait, geom) where T
+    angles = _angles(T, GI.LinearRingTrait(), GI.getexterior(geom); interior = true)
+    for h in GI.gethole(geom)
+        append!(angles, _angles(T, GI.LinearRingTrait(), h; interior = false))
+    end
+    return angles
+end

Find angles of a curve and insert the values into the angle_list. If offset is true, then save space for the angle at the first vertex, as the curve is closed, at the front of angle_list. If close_geom is true, then despite the first and last point not being explicitly repeated, the curve is closed and the angle of the last point should be added to angle_list. If interior is true, then all angles will be on the same side of the line

julia
function _find_angles!(
+    ::Type{T}, angle_list, geom;
+    offset, close_geom, interior = true,
+) where T
+    local p1, prev_p1_diff, p2_p1_diff
+    local start_point, start_diff
+    local extreem_idx, extreem_x, extreem_y
+    i_offset = offset ? 1 : 0

Loop through the curve and find each of the angels

julia
    for (i, p2) in enumerate(GI.getpoint(geom))
+        xp2, yp2 = GI.x(p2), GI.y(p2)
+        #= Find point with smallest x values (and smallest y in case of a tie) as this point
+        is know to be convex. =#
+        if i == 1 || (xp2 < extreem_x || (xp2 == extreem_x && yp2 < extreem_y))
+            extreem_idx = i
+            extreem_x, extreem_y = xp2, yp2
+        end
+        if i > 1
+            p2_p1_diff = (xp2 - GI.x(p1), yp2 - GI.y(p1))
+            if i == 2
+                start_point = p1
+                start_diff = p2_p1_diff
+            else
+                angle_list[i - 2 + i_offset] = _diffs_calc_angle(T, prev_p1_diff, p2_p1_diff)
+            end
+            prev_p1_diff = -1 .* p2_p1_diff
+        end
+        p1 = p2
+    end

If the last point of geometry should be the same as the first, calculate closing angle

julia
    if close_geom
+        p2_p1_diff = (GI.x(start_point) - GI.x(p1), GI.y(start_point) - GI.y(p1))
+        angle_list[end] = _diffs_calc_angle(T, prev_p1_diff, p2_p1_diff)
+        prev_p1_diff = -1 .* p2_p1_diff
+    end

If needed, calculate first angle corresponding to the first point

julia
    if offset
+        angle_list[1] = _diffs_calc_angle(T, prev_p1_diff, start_diff)
+    end
+    #= Make sure that all of the angles are on the same side of the line and inside of the
+    closed ring if the input geometry is closed. =#
+    inside_sgn = sign(angle_list[extreem_idx]) * (interior ? 1 : -1)
+    for i in eachindex(angle_list)
+        idx_sgn = sign(angle_list[i])
+        if idx_sgn == -1
+            angle_list[i] = abs(angle_list[i])
+        end
+        if idx_sgn != inside_sgn
+            angle_list[i] = 360 - angle_list[i]
+        end
+    end
+    return
+end

Calculate the angle between two vectors defined by the previous and current Δx and Δys. Angle will have a sign corresponding to the sign of the cross product between the two vectors. All angles of one sign in a given geometry are convex, while those of the other sign are concave. However, the sign corresponding to each of these can vary based on geometry and thus you must compare to an angle that is know to be convex or concave.

julia
function _diffs_calc_angle(::Type{T}, (Δx_prev, Δy_prev), (Δx_curr, Δy_curr)) where T
+    cross_prod = Δx_prev * Δy_curr - Δy_prev * Δx_curr
+    dot_prod = Δx_prev * Δx_curr + Δy_prev * Δy_curr
+    prev_mag = max(sqrt(Δx_prev^2 + Δy_prev^2), eps(T))
+    curr_mag = max(sqrt(Δx_curr^2 + Δy_curr^2), eps(T))
+    val = clamp(dot_prod / (prev_mag * curr_mag), -one(T), one(T))
+    angle = real(acos(val) * 180 / π)
+    return angle * (cross_prod < 0 ? -1 : 1)
+end

This page was generated using Literate.jl.

`,27),t=[k];function p(e,r,E,g,d,y){return a(),i("div",null,t)}const c=s(l,[["render",p]]);export{o as __pageData,c as default}; diff --git a/previews/PR195/assets/source_methods_angles.md.BIdkE80s.lean.js b/previews/PR195/assets/source_methods_angles.md.BIdkE80s.lean.js new file mode 100644 index 000000000..773225dae --- /dev/null +++ b/previews/PR195/assets/source_methods_angles.md.BIdkE80s.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const h="/GeometryOps.jl/previews/PR195/assets/enupwom.Dig-DWOQ.png",o=JSON.parse('{"title":"Angles","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/angles.md","filePath":"source/methods/angles.md","lastUpdated":null}'),l={name:"source/methods/angles.md"},k=n("",27),t=[k];function p(e,r,E,g,d,y){return a(),i("div",null,t)}const c=s(l,[["render",p]]);export{o as __pageData,c as default}; diff --git a/previews/PR195/assets/source_methods_area.md.6LdxlzTA.js b/previews/PR195/assets/source_methods_area.md.6LdxlzTA.js new file mode 100644 index 000000000..eae95158a --- /dev/null +++ b/previews/PR195/assets/source_methods_area.md.6LdxlzTA.js @@ -0,0 +1,87 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const h="/GeometryOps.jl/previews/PR195/assets/enupwom.Dig-DWOQ.png",t="/GeometryOps.jl/previews/PR195/assets/vwzrnej.CULn5saZ.png",c=JSON.parse('{"title":"Area and signed area","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/area.md","filePath":"source/methods/area.md","lastUpdated":null}'),e={name:"source/methods/area.md"},l=n(`

Area and signed area

julia
export area, signed_area

What is area? What is signed area?

Area is the amount of space occupied by a two-dimensional figure. It is always a positive value. Signed area is simply the integral over the exterior path of a polygon, minus the sum of integrals over its interior holes. It is signed such that a clockwise path has a positive area, and a counterclockwise path has a negative area. The area is the absolute value of the signed area.

To provide an example, consider this rectangle:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+rect = GI.Polygon([[(0,0), (0,1), (1,1), (1,0), (0, 0)]])
+f, a, p = poly(collect(GI.getpoint(rect)); axis = (; aspect = DataAspect()))

This is clearly a rectangle, etc. But now let's look at how the points look:

julia
lines!(
+    collect(GI.getpoint(rect));
+    color = 1:GI.npoint(rect), linewidth = 10.0)
+f

The points are ordered in a counterclockwise fashion, which means that the signed area is negative. If we reverse the order of the points, we get a positive area.

julia
GO.signed_area(rect)  # -1.0
-1.0

Implementation

This is the GeoInterface-compatible implementation. First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait. This is also used in the implementation, since it's a lot less work!

Note that area and signed area are zero for all points and curves, even if the curves are closed like with a linear ring. Also note that signed area really only makes sense for polygons, given with a multipolygon can have several polygons each with a different orientation and thus the absolute value of the signed area might not be the area. This is why signed area is only implemented for polygons.

Targets for applys functions

julia
const _AREA_TARGETS = TraitTarget{Union{GI.PolygonTrait,GI.AbstractCurveTrait,GI.MultiPointTrait,GI.PointTrait}}()
+
+"""
+    area(geom, [T = Float64])::T
+
+Returns the area of a geometry or collection of geometries.
+This is computed slightly differently for different geometries:
+
+    - The area of a point/multipoint is always zero.
+    - The area of a curve/multicurve is always zero.
+    - The area of a polygon is the absolute value of the signed area.
+    - The area multi-polygon is the sum of the areas of all of the sub-polygons.
+    - The area of a geometry collection, feature collection of array/iterable
+        is the sum of the areas of all of the sub-geometries.
+
+Result will be of type T, where T is an optional argument with a default value
+of Float64.
+"""
+function area(geom, ::Type{T} = Float64; threaded=false) where T <: AbstractFloat
+    applyreduce(+, _AREA_TARGETS, geom; threaded, init=zero(T)) do g
+        _area(T, GI.trait(g), g)
+    end
+end
+
+"""
+    signed_area(geom, [T = Float64])::T
+
+Returns the signed area of a single geometry, based on winding order.
+This is computed slightly differently for different geometries:
+
+    - The signed area of a point is always zero.
+    - The signed area of a curve is always zero.
+    - The signed area of a polygon is computed with the shoelace formula and is
+    positive if the polygon coordinates wind clockwise and negative if
+    counterclockwise.
+    - You cannot compute the signed area of a multipolygon as it doesn't have a
+    meaning as each sub-polygon could have a different winding order.
+
+Result will be of type T, where T is an optional argument with a default value
+of Float64.
+"""
+signed_area(geom, ::Type{T} = Float64) where T <: AbstractFloat =
+    _signed_area(T, GI.trait(geom), geom)

Points, MultiPoints, Curves, MultiCurves

julia
_area(::Type{T}, ::GI.AbstractGeometryTrait, geom) where T = zero(T)
+
+_signed_area(::Type{T}, ::GI.AbstractGeometryTrait, geom) where T = zero(T)

LibGEOS treats linear rings as zero area. I disagree with that but we should probably maintain compatibility...

julia
_area(::Type{T}, tr::GI.LinearRingTrait, geom) where T = 0 # could be abs(_signed_area(T, tr, geom))
+
+_signed_area(::Type{T}, ::GI.LinearRingTrait, geom) where T = 0 # could be _signed_area(T, tr, geom)

Polygons

julia
_area(::Type{T}, trait::GI.PolygonTrait, poly) where T =
+    abs(_signed_area(T, trait, poly))
+
+function _signed_area(::Type{T}, ::GI.PolygonTrait, poly) where T
+    GI.isempty(poly) && return zero(T)
+    s_area = _signed_area(T, GI.getexterior(poly))
+    area = abs(s_area)
+    area == 0 && return area

Remove hole areas from total

julia
    for hole in GI.gethole(poly)
+        area -= abs(_signed_area(T, hole))
+    end

Winding of exterior ring determines sign

julia
    return area * sign(s_area)
+end

One term of the shoelace area formula

julia
_area_component(p1, p2) = GI.x(p1) * GI.y(p2) - GI.y(p1) * GI.x(p2)
+
+#= Calculates the signed area of a given curve. This is equivalent to integrating
+to find the area under the curve. Even if curve isn't explicitly closed by
+repeating the first point at the end of the coordinates, curve is still assumed
+to be closed. =#
+function _signed_area(::Type{T}, geom) where T
+    area = zero(T)
+    np = GI.npoint(geom)
+    np == 0 && return area
+
+    first = true
+    local pfirst, p1

Integrate the area under the curve

julia
    for p2 in GI.getpoint(geom)

Skip the first and do it later This lets us work within one iteration over geom, which means on C call when using points from external libraries.

julia
        if first
+            p1 = pfirst = p2
+            first = false
+            continue
+        end

Accumulate the area into area

julia
        area += _area_component(p1, p2)
+        p1 = p2
+    end

Complete the last edge. If the first and last where the same this will be zero

julia
    p2 = pfirst
+    area += _area_component(p1, p2)
+    return T(area / 2)
+end

This page was generated using Literate.jl.

`,40),p=[l];function k(r,d,g,E,o,y){return a(),i("div",null,p)}const C=s(e,[["render",k]]);export{c as __pageData,C as default}; diff --git a/previews/PR195/assets/source_methods_area.md.6LdxlzTA.lean.js b/previews/PR195/assets/source_methods_area.md.6LdxlzTA.lean.js new file mode 100644 index 000000000..8c7907726 --- /dev/null +++ b/previews/PR195/assets/source_methods_area.md.6LdxlzTA.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const h="/GeometryOps.jl/previews/PR195/assets/enupwom.Dig-DWOQ.png",t="/GeometryOps.jl/previews/PR195/assets/vwzrnej.CULn5saZ.png",c=JSON.parse('{"title":"Area and signed area","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/area.md","filePath":"source/methods/area.md","lastUpdated":null}'),e={name:"source/methods/area.md"},l=n("",40),p=[l];function k(r,d,g,E,o,y){return a(),i("div",null,p)}const C=s(e,[["render",k]]);export{c as __pageData,C as default}; diff --git a/previews/PR195/assets/source_methods_barycentric.md.CyGX2fFb.js b/previews/PR195/assets/source_methods_barycentric.md.CyGX2fFb.js new file mode 100644 index 000000000..b265de0ed --- /dev/null +++ b/previews/PR195/assets/source_methods_barycentric.md.CyGX2fFb.js @@ -0,0 +1,415 @@ +import{_ as t,c as a,j as s,a as i,a7 as h,o as n}from"./chunks/framework.BjTE4JnT.js";const k="/GeometryOps.jl/previews/PR195/assets/sduvavi.CZy9YIUA.png",R=JSON.parse('{"title":"Barycentric coordinates","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/barycentric.md","filePath":"source/methods/barycentric.md","lastUpdated":null}'),l={name:"source/methods/barycentric.md"},p=h(`

Barycentric coordinates

julia
export barycentric_coordinates, barycentric_coordinates!, barycentric_interpolate
+export MeanValue

Generalized barycentric coordinates are a generalization of barycentric coordinates, which are typically used in triangles, to arbitrary polygons.

They provide a way to express a point within a polygon as a weighted average of the polygon's vertices.

`,4),e={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.692ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4726 1000","aria-hidden":"true"},r=h('',1),d=[r],g=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"λ"),s("mn",null,"1")]),s("mo",null,","),s("msub",null,[s("mi",null,"λ"),s("mn",null,"2")]),s("mo",null,","),s("msub",null,[s("mi",null,"λ"),s("mn",null,"3")]),s("mo",{stretchy:"false"},")")])],-1),y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},o=s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1),c=[o],C=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"n")])],-1),B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},D=s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1),u=[D],T=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"n")])],-1),m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.876ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6575.4 1000","aria-hidden":"true"},Q=h('',1),_=[Q],v=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"λ"),s("mn",null,"1")]),s("mo",null,","),s("msub",null,[s("mi",null,"λ"),s("mn",null,"2")]),s("mo",null,","),s("mo",null,"."),s("mo",null,"."),s("mo",null,"."),s("mo",null,","),s("msub",null,[s("mi",null,"λ"),s("mi",null,"n")]),s("mo",{stretchy:"false"},")")])],-1),w=h(`

As with the triangle case, the weights sum to 1, and each is non-negative.

Example

This example was taken from this page of CGAL's documentation.

julia
using GeometryOps
+using GeometryOps.GeometryBasics
+using Makie
+using CairoMakie
+# Define a polygon
+polygon_points = Point3f[
+(0.03, 0.05, 0.00), (0.07, 0.04, 0.02), (0.10, 0.04, 0.04),
+(0.14, 0.04, 0.06), (0.17, 0.07, 0.08), (0.20, 0.09, 0.10),
+(0.22, 0.11, 0.12), (0.25, 0.11, 0.14), (0.27, 0.10, 0.16),
+(0.30, 0.07, 0.18), (0.31, 0.04, 0.20), (0.34, 0.03, 0.22),
+(0.37, 0.02, 0.24), (0.40, 0.03, 0.26), (0.42, 0.04, 0.28),
+(0.44, 0.07, 0.30), (0.45, 0.10, 0.32), (0.46, 0.13, 0.34),
+(0.46, 0.19, 0.36), (0.47, 0.26, 0.38), (0.47, 0.31, 0.40),
+(0.47, 0.35, 0.42), (0.45, 0.37, 0.44), (0.41, 0.38, 0.46),
+(0.38, 0.37, 0.48), (0.35, 0.36, 0.50), (0.32, 0.35, 0.52),
+(0.30, 0.37, 0.54), (0.28, 0.39, 0.56), (0.25, 0.40, 0.58),
+(0.23, 0.39, 0.60), (0.21, 0.37, 0.62), (0.21, 0.34, 0.64),
+(0.23, 0.32, 0.66), (0.24, 0.29, 0.68), (0.27, 0.24, 0.70),
+(0.29, 0.21, 0.72), (0.29, 0.18, 0.74), (0.26, 0.16, 0.76),
+(0.24, 0.17, 0.78), (0.23, 0.19, 0.80), (0.24, 0.22, 0.82),
+(0.24, 0.25, 0.84), (0.21, 0.26, 0.86), (0.17, 0.26, 0.88),
+(0.12, 0.24, 0.90), (0.07, 0.20, 0.92), (0.03, 0.15, 0.94),
+(0.01, 0.10, 0.97), (0.02, 0.07, 1.00)]
+# Plot it!
+# First, we'll plot the polygon using Makie's rendering:
+f, a1, p1 = poly(
+    Point2d.(polygon_points);
+    color = last.(polygon_points),
+    colormap = cgrad(:jet, 18; categorical = true),
+    axis = (;
+       type = Axis, aspect = DataAspect(), title = "Makie mesh based polygon rendering", subtitle = "CairoMakie"
+    ),
+    figure = (; size = (800, 400),)
+)
+hidedecorations!(a1)
+
+ext = GeometryOps.GI.Extent(X = (0, 0.5), Y = (0, 0.42))
+
+a2 = Axis(
+        f[1, 2],
+        aspect = DataAspect(),
+        title = "Barycentric coordinate based polygon rendering", subtitle = "GeometryOps",
+        limits = (ext.X, ext.Y)
+    )
+hidedecorations!(a2)
+
+p2box = poly!( # Now, we plot a cropping rectangle around the axis so we only show the polygon
+    a2,
+    GeometryOps.GeometryBasics.Polygon( # This is a rectangle with an internal hole shaped like the polygon.
+        Point2f[(ext.X[1], ext.Y[1]), (ext.X[2], ext.Y[1]), (ext.X[2], ext.Y[2]), (ext.X[1], ext.Y[2]), (ext.X[1], ext.Y[1])], # exterior
+        [reverse(Point2f.(polygon_points))] # hole
+    ); color = :white, xautolimits = false, yautolimits = false
+)
+cb = Colorbar(f[2, :], p1.plots[1]; vertical = false, flipaxis = true)
+# Finally, we perform barycentric interpolation on a grid,
+xrange = LinRange(ext.X..., 400)
+yrange = LinRange(ext.Y..., 400)
+@time mean_values = barycentric_interpolate.(
+    (MeanValue(),), # The barycentric coordinate algorithm (MeanValue is the only one for now)
+    (Point2f.(polygon_points),), # The polygon points as \`Point2f\`
+    (last.(polygon_points,),),   # The values per polygon point - can be anything which supports addition and division
+    Point2f.(xrange, yrange')    # The points at which to interpolate
+)
+# and render!
+hm = heatmap!(a2, xrange, yrange, mean_values; colormap = p1.colormap, colorrange = p1.plots[1].colorrange[], xautolimits = false, yautolimits = false)
+translate!(hm, 0, 0, -1) # translate the heatmap behind the cropping polygon!
+f # finally, display the figure

Barycentric-coordinate API

In some cases, we actually want barycentric interpolation, and have no interest in the coordinates themselves.

However, the coordinates can be useful for debugging, and when performing 3D rendering, multiple barycentric values (depth, uv) are needed for depth buffering.

julia
const _VecTypes = Union{Tuple{Vararg{T, N}}, GeometryBasics.StaticArraysCore.StaticArray{Tuple{N}, T, 1}} where {N, T}
+
+"""
+    abstract type AbstractBarycentricCoordinateMethod
+
+Abstract supertype for barycentric coordinate methods.
+The subtypes may serve as dispatch types, or may cache
+some information about the target polygon.
+
+# API
+The following methods must be implemented for all subtypes:
+- \`barycentric_coordinates!(λs::Vector{<: Real}, method::AbstractBarycentricCoordinateMethod, exterior::Vector{<: Point{2, T1}}, point::Point{2, T2})\`
+- \`barycentric_interpolate(method::AbstractBarycentricCoordinateMethod, exterior::Vector{<: Point{2, T1}}, values::Vector{V}, point::Point{2, T2})::V\`
+- \`barycentric_interpolate(method::AbstractBarycentricCoordinateMethod, exterior::Vector{<: Point{2, T1}}, interiors::Vector{<: Vector{<: Point{2, T1}}} values::Vector{V}, point::Point{2, T2})::V\`
+The rest of the methods will be implemented in terms of these, and have efficient dispatches for broadcasting.
+"""
+abstract type AbstractBarycentricCoordinateMethod end
+
+Base.@propagate_inbounds function barycentric_coordinates!(λs::Vector{<: Real}, method::AbstractBarycentricCoordinateMethod, polypoints::AbstractVector{<: Point{N1, T1}}, point::Point{N2, T2}) where {N1, N2, T1 <: Real, T2 <: Real}
+    @boundscheck @assert length(λs) == length(polypoints)
+    @boundscheck @assert length(polypoints) >= 3
+
+    @error("Not implemented yet for method $(method).")
+end
+Base.@propagate_inbounds barycentric_coordinates!(λs::Vector{<: Real}, polypoints::AbstractVector{<: Point{N1, T1}}, point::Point{N2, T2}) where {N1, N2, T1 <: Real, T2 <: Real} = barycentric_coordinates!(λs, MeanValue(), polypoints, point)

This is the GeoInterface-compatible method.

julia
"""
+    barycentric_coordinates!(λs::Vector{<: Real}, method::AbstractBarycentricCoordinateMethod, polygon, point)
+
+Loads the barycentric coordinates of \`point\` in \`polygon\` into \`λs\` using the barycentric coordinate method \`method\`.
+
+\`λs\` must be of the length of the polygon plus its holes.
+
+!!! tip
+    Use this method to avoid excess allocations when you need to calculate barycentric coordinates for many points.
+"""
+Base.@propagate_inbounds function barycentric_coordinates!(λs::Vector{<: Real}, method::AbstractBarycentricCoordinateMethod, polygon, point)
+    @assert GeoInterface.trait(polygon) isa GeoInterface.PolygonTrait
+    @assert GeoInterface.trait(point) isa GeoInterface.PointTrait
+    passable_polygon = GeoInterface.convert(GeometryBasics, polygon)
+    @assert passable_polygon isa GeometryBasics.Polygon "The polygon was converted to a $(typeof(passable_polygon)), which is not a \`GeometryBasics.Polygon\`."
+    passable_point = GeoInterface.convert(GeometryBasics, point)
+    return barycentric_coordinates!(λs, method, passable_polygon, Point2(passable_point))
+end
+
+Base.@propagate_inbounds function barycentric_coordinates(method::AbstractBarycentricCoordinateMethod, polypoints::AbstractVector{<: Point{N1, T1}}, point::Point{N2, T2}) where {N1, N2, T1 <: Real, T2 <: Real}
+    λs = zeros(promote_type(T1, T2), length(polypoints))
+    barycentric_coordinates!(λs, method, polypoints, point)
+    return λs
+end
+Base.@propagate_inbounds barycentric_coordinates(polypoints::AbstractVector{<: Point{N1, T1}}, point::Point{N2, T2}) where {N1, N2, T1 <: Real, T2 <: Real} = barycentric_coordinates(MeanValue(), polypoints, point)

This is the GeoInterface-compatible method.

julia
"""
+    barycentric_coordinates(method = MeanValue(), polygon, point)
+
+Returns the barycentric coordinates of \`point\` in \`polygon\` using the barycentric coordinate method \`method\`.
+"""
+Base.@propagate_inbounds function barycentric_coordinates(method::AbstractBarycentricCoordinateMethod, polygon, point)
+    @assert GeoInterface.trait(polygon) isa GeoInterface.PolygonTrait
+    @assert GeoInterface.trait(point) isa GeoInterface.PointTrait
+    passable_polygon = GeoInterface.convert(GeometryBasics, polygon)
+    @assert passable_polygon isa GeometryBasics.Polygon "The polygon was converted to a $(typeof(passable_polygon)), which is not a \`GeometryBasics.Polygon\`."
+    passable_point = GeoInterface.convert(GeometryBasics, point)
+    return barycentric_coordinates(method, passable_polygon, Point2(passable_point))
+end
+
+Base.@propagate_inbounds function barycentric_interpolate(method::AbstractBarycentricCoordinateMethod, polypoints::AbstractVector{<: Point{N, T1}}, values::AbstractVector{V}, point::Point{N, T2}) where {N, T1 <: Real, T2 <: Real, V}
+    @boundscheck @assert length(values) == length(polypoints)
+    @boundscheck @assert length(polypoints) >= 3
+    λs = barycentric_coordinates(method, polypoints, point)
+    return sum(λs .* values)
+end
+Base.@propagate_inbounds barycentric_interpolate(polypoints::AbstractVector{<: Point{N, T1}}, values::AbstractVector{V}, point::Point{N, T2}) where {N, T1 <: Real, T2 <: Real, V} = barycentric_interpolate(MeanValue(), polypoints, values, point)
+
+Base.@propagate_inbounds function barycentric_interpolate(method::AbstractBarycentricCoordinateMethod, exterior::AbstractVector{<: Point{N, T1}}, interiors::AbstractVector{<: Point{N, T1}}, values::AbstractVector{V}, point::Point{N, T2}) where {N, T1 <: Real, T2 <: Real, V}
+    @boundscheck @assert length(values) == length(exterior) + isempty(interiors) ? 0 : sum(length.(interiors))
+    @boundscheck @assert length(exterior) >= 3
+    λs = barycentric_coordinates(method, exterior, interiors, point)
+    return sum(λs .* values)
+end
+Base.@propagate_inbounds barycentric_interpolate(exterior::AbstractVector{<: Point{N, T1}}, interiors::AbstractVector{<: Point{N, T1}}, values::AbstractVector{V}, point::Point{N, T2}) where {N, T1 <: Real, T2 <: Real, V} = barycentric_interpolate(MeanValue(), exterior, interiors, values, point)
+
+Base.@propagate_inbounds function barycentric_interpolate(method::AbstractBarycentricCoordinateMethod, polygon::Polygon{2, T1}, values::AbstractVector{V}, point::Point{2, T2}) where {T1 <: Real, T2 <: Real, V}
+    exterior = decompose(Point{2, promote_type(T1, T2)}, polygon.exterior)
+    if isempty(polygon.interiors)
+        @boundscheck @assert length(values) == length(exterior)
+        return barycentric_interpolate(method, exterior, values, point)
+    else # the poly has interiors
+        interiors = reverse.(decompose.((Point{2, promote_type(T1, T2)},), polygon.interiors))
+        @boundscheck @assert length(values) == length(exterior) + sum(length.(interiors))
+        return barycentric_interpolate(method, exterior, interiors, values, point)
+    end
+end
+Base.@propagate_inbounds barycentric_interpolate(polygon::Polygon{2, T1}, values::AbstractVector{V}, point::Point{2, T2}) where {T1 <: Real, T2 <: Real, V} = barycentric_interpolate(MeanValue(), polygon, values, point)

3D polygons are considered to have their vertices in the XY plane, and the Z coordinate must represent some value. This is to say that the Z coordinate is interpreted as an M coordinate.

julia
Base.@propagate_inbounds function barycentric_interpolate(method::AbstractBarycentricCoordinateMethod, polygon::Polygon{3, T1}, point::Point{2, T2}) where {T1 <: Real, T2 <: Real}
+    exterior_point3s = decompose(Point{3, promote_type(T1, T2)}, polygon.exterior)
+    exterior_values = getindex.(exterior_point3s, 3)
+    exterior_points = Point2f.(exterior_point3s)
+    if isempty(polygon.interiors)
+        return barycentric_interpolate(method, exterior_points, exterior_values, point)
+    else # the poly has interiors
+        interior_point3s = decompose.((Point{3, promote_type(T1, T2)},), polygon.interiors)
+        interior_values = collect(Iterators.flatten((getindex.(point3s, 3) for point3s in interior_point3s)))
+        interior_points = map(point3s -> Point2f.(point3s), interior_point3s)
+        return barycentric_interpolate(method, exterior_points, interior_points, vcat(exterior_values, interior_values), point)
+    end
+end
+Base.@propagate_inbounds barycentric_interpolate(polygon::Polygon{3, T1}, point::Point{2, T2}) where {T1 <: Real, T2 <: Real} = barycentric_interpolate(MeanValue(), polygon, point)

This method is the one which supports GeoInterface.

julia
"""
+    barycentric_interpolate(method = MeanValue(), polygon, values::AbstractVector{V}, point)
+
+Returns the interpolated value at \`point\` within \`polygon\` using the barycentric coordinate method \`method\`.
+\`values\` are the per-point values for the polygon which are to be interpolated.
+
+Returns an object of type \`V\`.
+
+!!! warning
+    Barycentric interpolation is currently defined only for 2-dimensional polygons.
+    If you pass a 3-D polygon in, the Z coordinate will be used as per-vertex value to be interpolated
+    (the M coordinate in GIS parlance).
+"""
+Base.@propagate_inbounds function barycentric_interpolate(method::AbstractBarycentricCoordinateMethod, polygon, values::AbstractVector{V}, point) where V
+    @assert GeoInterface.trait(polygon) isa GeoInterface.PolygonTrait
+    @assert GeoInterface.trait(point) isa GeoInterface.PointTrait
+    passable_polygon = GeoInterface.convert(GeometryBasics, polygon)
+    @assert passable_polygon isa GeometryBasics.Polygon "The polygon was converted to a $(typeof(passable_polygon)), which is not a \`GeometryBasics.Polygon\`."
+    # first_poly_point = GeoInterface.getpoint(GeoInterface.getexterior(polygon))
+    passable_point = GeoInterface.convert(GeometryBasics, point)
+    return barycentric_interpolate(method, passable_polygon, Point2(passable_point))
+end
+Base.@propagate_inbounds barycentric_interpolate(polygon, values::AbstractVector{V}, point) where V = barycentric_interpolate(MeanValue(), polygon, values, point)
+
+"""
+    weighted_mean(weight::Real, x1, x2)
+
+Returns the weighted mean of \`x1\` and \`x2\`, where \`weight\` is the weight of \`x1\`.
+
+Specifically, calculates \`x1 * weight + x2 * (1 - weight)\`.
+
+!!! note
+    The idea for this method is that you can override this for custom types, like Color types, in extension modules.
+"""
+function weighted_mean(weight::WT, x1, x2) where {WT <: Real}
+    return muladd(x1, weight, x2 * (oneunit(WT) - weight))
+end
+
+
+"""
+    MeanValue() <: AbstractBarycentricCoordinateMethod
+
+This method calculates barycentric coordinates using the mean value method.
+
+# References
+
+"""
+struct MeanValue <: AbstractBarycentricCoordinateMethod
+end

Before we go to the actual implementation, there are some quick and simple utility functions that we need to implement. These are mainly for convenience and code brevity.

julia
"""
+    _det(s1::Point2{T1}, s2::Point2{T2}) where {T1 <: Real, T2 <: Real}
+
+Returns the determinant of the matrix formed by \`hcat\`'ing two points \`s1\` and \`s2\`.
+
+Specifically, this is:
+\`\`\`julia
+s1[1] * s2[2] - s1[2] * s2[1]
+\`\`\`
+"""
+function _det(s1::_VecTypes{2, T1}, s2::_VecTypes{2, T2}) where {T1 <: Real, T2 <: Real}
+    return s1[1] * s2[2] - s1[2] * s2[1]
+end
+
+"""
+    t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)
+
+Returns the "T-value" as described in Hormann's presentation [^HormannPresentation] on how to calculate
+the mean-value coordinate.
+
+Here, \`sᵢ\` is the vector from vertex \`vᵢ\` to the point, and \`rᵢ\` is the norm (length) of \`sᵢ\`.
+\`s\` must be \`Point\` and \`r\` must be real numbers.
+
+\`\`\`math
+tᵢ = \\\\frac{\\\\mathrm{det}\\\\left(sᵢ, sᵢ₊₁\\\\right)}{rᵢ * rᵢ₊₁ + sᵢ ⋅ sᵢ₊₁}
+\`\`\`
+
+[^HormannPresentation]: K. Hormann and N. Sukumar. Generalized Barycentric Coordinates in Computer Graphics and Computational Mechanics. Taylor & Fancis, CRC Press, 2017.
+\`\`\`
+
+"""
+function t_value(sᵢ::_VecTypes{N, T1}, sᵢ₊₁::_VecTypes{N, T1}, rᵢ::T2, rᵢ₊₁::T2) where {N, T1 <: Real, T2 <: Real}
+    return _det(sᵢ, sᵢ₊₁) / muladd(rᵢ, rᵢ₊₁, dot(sᵢ, sᵢ₊₁))
+end
+
+
+function barycentric_coordinates!(λs::Vector{<: Real}, ::MeanValue, polypoints::AbstractVector{<: Point{2, T1}}, point::Point{2, T2}) where {T1 <: Real, T2 <: Real}
+    @boundscheck @assert length(λs) == length(polypoints)
+    @boundscheck @assert length(polypoints) >= 3
+    n_points = length(polypoints)
+    # Initialize counters and register variables
+    # Points - these are actually vectors from point to vertices
+    #  polypoints[i-1], polypoints[i], polypoints[i+1]
+    sᵢ₋₁ = polypoints[end] - point
+    sᵢ   = polypoints[begin] - point
+    sᵢ₊₁ = polypoints[begin+1] - point
+    # radius / Euclidean distance between points.
+    rᵢ₋₁ = norm(sᵢ₋₁)
+    rᵢ   = norm(sᵢ  )
+    rᵢ₊₁ = norm(sᵢ₊₁)
+    # Perform the first computation explicitly, so we can cut down on
+    # a mod in the loop.
+    λs[1] = (t_value(sᵢ₋₁, sᵢ, rᵢ₋₁, rᵢ) + t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)) / rᵢ
+    # Loop through the rest of the vertices, compute, store in λs
+    for i in 2:n_points
+        # Increment counters + set variables
+        sᵢ₋₁ = sᵢ
+        sᵢ   = sᵢ₊₁
+        sᵢ₊₁ = polypoints[mod1(i+1, n_points)] - point
+        rᵢ₋₁ = rᵢ
+        rᵢ   = rᵢ₊₁
+        rᵢ₊₁ = norm(sᵢ₊₁) # radius / Euclidean distance between points.
+        λs[i] = (t_value(sᵢ₋₁, sᵢ, rᵢ₋₁, rᵢ) + t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)) / rᵢ
+    end
+    # Normalize λs to the 1-norm (sum=1)
+    λs ./= sum(λs)
+    return λs
+end
julia
function barycentric_coordinates(::MeanValue, polypoints::NTuple{N, Point{2, T2}}, point::Point{2, T1},) where {N, T1, T2}
+    ## Initialize counters and register variables
+    ## Points - these are actually vectors from point to vertices
+    ##  polypoints[i-1], polypoints[i], polypoints[i+1]
+    sᵢ₋₁ = polypoints[end] - point
+    sᵢ   = polypoints[begin] - point
+    sᵢ₊₁ = polypoints[begin+1] - point
+    ## radius / Euclidean distance between points.
+    rᵢ₋₁ = norm(sᵢ₋₁)
+    rᵢ   = norm(sᵢ  )
+    rᵢ₊₁ = norm(sᵢ₊₁)
+    λ₁ = (t_value(sᵢ₋₁, sᵢ, rᵢ₋₁, rᵢ) + t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)) / rᵢ
+    λs = ntuple(N) do i
+        if i == 1
+            return λ₁
+        end
+        ## Increment counters + set variables
+        sᵢ₋₁ = sᵢ
+        sᵢ   = sᵢ₊₁
+        sᵢ₊₁ = polypoints[mod1(i+1, N)] - point
+        rᵢ₋₁ = rᵢ
+        rᵢ   = rᵢ₊₁
+        rᵢ₊₁ = norm(sᵢ₊₁) # radius / Euclidean distance between points.
+        return (t_value(sᵢ₋₁, sᵢ, rᵢ₋₁, rᵢ) + t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)) / rᵢ
+    end
+
+    ∑λ = sum(λs)
+
+    return ntuple(N) do i
+        λs[i] / ∑λ
+    end
+end

This performs an inplace accumulation, using less memory and is faster. That's particularly good if you are using a polygon with a large number of points...

julia
function barycentric_interpolate(::MeanValue, polypoints::AbstractVector{<: Point{2, T1}}, values::AbstractVector{V}, point::Point{2, T2}) where {T1 <: Real, T2 <: Real, V}
+    @boundscheck @assert length(values) == length(polypoints)
+    @boundscheck @assert length(polypoints) >= 3
+
+    n_points = length(polypoints)
+    # Initialize counters and register variables
+    # Points - these are actually vectors from point to vertices
+    #  polypoints[i-1], polypoints[i], polypoints[i+1]
+    sᵢ₋₁ = polypoints[end] - point
+    sᵢ   = polypoints[begin] - point
+    sᵢ₊₁ = polypoints[begin+1] - point
+    # radius / Euclidean distance between points.
+    rᵢ₋₁ = norm(sᵢ₋₁)
+    rᵢ   = norm(sᵢ  )
+    rᵢ₊₁ = norm(sᵢ₊₁)
+    # Now, we set the interpolated value to the first point's value, multiplied
+    # by the weight computed relative to the first point in the polygon.
+    wᵢ = (t_value(sᵢ₋₁, sᵢ, rᵢ₋₁, rᵢ) + t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)) / rᵢ
+    wₜₒₜ = wᵢ
+    interpolated_value = values[begin] * wᵢ
+    for i in 2:n_points
+        # Increment counters + set variables
+        sᵢ₋₁ = sᵢ
+        sᵢ   = sᵢ₊₁
+        sᵢ₊₁ = polypoints[mod1(i+1, n_points)] - point
+        rᵢ₋₁ = rᵢ
+        rᵢ   = rᵢ₊₁
+        rᵢ₊₁ = norm(sᵢ₊₁)
+        # Now, we calculate the weight:
+        wᵢ = (t_value(sᵢ₋₁, sᵢ, rᵢ₋₁, rᵢ) + t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)) / rᵢ
+        # perform a weighted sum with the interpolated value:
+        interpolated_value += values[i] * wᵢ
+        # and add the weight to the total weight accumulator.
+        wₜₒₜ += wᵢ
+    end
+    # Return the normalized interpolated value.
+    return interpolated_value / wₜₒₜ
+end

When you have holes, then you have to be careful about the order you iterate around points.

Specifically, you have to iterate around each linear ring separately and ensure there are no degenerate/repeated points at the start and end!

julia
function barycentric_interpolate(::MeanValue, exterior::AbstractVector{<: Point{N, T1}}, interiors::AbstractVector{<: AbstractVector{<: Point{N, T1}}}, values::AbstractVector{V}, point::Point{N, T2}) where {N, T1 <: Real, T2 <: Real, V}
+    # @boundscheck @assert length(values) == (length(exterior) + isempty(interiors) ? 0 : sum(length.(interiors)))
+    # @boundscheck @assert length(exterior) >= 3
+
+    current_index = 1
+    l_exterior = length(exterior)
+
+    sᵢ₋₁ = exterior[end] - point
+    sᵢ   = exterior[begin] - point
+    sᵢ₊₁ = exterior[begin+1] - point
+    rᵢ₋₁ = norm(sᵢ₋₁) # radius / Euclidean distance between points.
+    rᵢ   = norm(sᵢ  ) # radius / Euclidean distance between points.
+    rᵢ₊₁ = norm(sᵢ₊₁) # radius / Euclidean distance between points.

Now, we set the interpolated value to the first point's value, multiplied by the weight computed relative to the first point in the polygon.

julia
    wᵢ = (t_value(sᵢ₋₁, sᵢ, rᵢ₋₁, rᵢ) + t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)) / rᵢ
+    wₜₒₜ = wᵢ
+    interpolated_value = values[begin] * wᵢ
+
+    for i in 2:l_exterior

Increment counters + set variables

julia
        sᵢ₋₁ = sᵢ
+        sᵢ   = sᵢ₊₁
+        sᵢ₊₁ = exterior[mod1(i+1, l_exterior)] - point
+        rᵢ₋₁ = rᵢ
+        rᵢ   = rᵢ₊₁
+        rᵢ₊₁ = norm(sᵢ₊₁) # radius / Euclidean distance between points.
+        wᵢ = (t_value(sᵢ₋₁, sᵢ, rᵢ₋₁, rᵢ) + t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)) / rᵢ

Updates - first the interpolated value,

julia
        interpolated_value += values[current_index] * wᵢ

then the accumulators for total weight and current index.

julia
        wₜₒₜ += wᵢ
+        current_index += 1
+
+    end
+    for hole in interiors
+        l_hole = length(hole)
+        sᵢ₋₁ = hole[end] - point
+        sᵢ   = hole[begin] - point
+        sᵢ₊₁ = hole[begin+1] - point
+        rᵢ₋₁ = norm(sᵢ₋₁) # radius / Euclidean distance between points.
+        rᵢ   = norm(sᵢ  ) # radius / Euclidean distance between points.
+        rᵢ₊₁ = norm(sᵢ₊₁) # radius / Euclidean distance between points.
+        # Now, we set the interpolated value to the first point's value, multiplied
+        # by the weight computed relative to the first point in the polygon.
+        wᵢ = (t_value(sᵢ₋₁, sᵢ, rᵢ₋₁, rᵢ) + t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)) / rᵢ
+
+        interpolated_value += values[current_index] * wᵢ
+
+        wₜₒₜ += wᵢ
+        current_index += 1
+
+        for i in 2:l_hole
+            # Increment counters + set variables
+            sᵢ₋₁ = sᵢ
+            sᵢ   = sᵢ₊₁
+            sᵢ₊₁ = hole[mod1(i+1, l_hole)] - point
+            rᵢ₋₁ = rᵢ
+            rᵢ   = rᵢ₊₁
+            rᵢ₊₁ = norm(sᵢ₊₁) ## radius / Euclidean distance between points.
+            wᵢ = (t_value(sᵢ₋₁, sᵢ, rᵢ₋₁, rᵢ) + t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)) / rᵢ
+            interpolated_value += values[current_index] * wᵢ
+            wₜₒₜ += wᵢ
+            current_index += 1
+        end
+    end
+    return interpolated_value / wₜₒₜ
+
+end
+
+struct Wachspress <: AbstractBarycentricCoordinateMethod
+end

This page was generated using Literate.jl.

`,35);function f(x,V,P,M,q,N){return n(),a("div",null,[p,s("p",null,[i("In the case of a triangle, barycentric coordinates are a set of three numbers "),s("mjx-container",e,[(n(),a("svg",E,d)),g]),i(", each associated with a vertex of the triangle. Any point within the triangle can be expressed as a weighted average of the vertices, where the weights are the barycentric coordinates. The weights sum to 1, and each is non-negative.")]),s("p",null,[i("For a polygon with "),s("mjx-container",y,[(n(),a("svg",F,c)),C]),i(" vertices, generalized barycentric coordinates are a set of "),s("mjx-container",B,[(n(),a("svg",A,u)),T]),i(" numbers "),s("mjx-container",m,[(n(),a("svg",b,_)),v]),i(", each associated with a vertex of the polygon. Any point within the polygon can be expressed as a weighted average of the vertices, where the weights are the generalized barycentric coordinates.")]),w])}const G=t(l,[["render",f]]);export{R as __pageData,G as default}; diff --git a/previews/PR195/assets/source_methods_barycentric.md.CyGX2fFb.lean.js b/previews/PR195/assets/source_methods_barycentric.md.CyGX2fFb.lean.js new file mode 100644 index 000000000..063bff792 --- /dev/null +++ b/previews/PR195/assets/source_methods_barycentric.md.CyGX2fFb.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,j as s,a as i,a7 as h,o as n}from"./chunks/framework.BjTE4JnT.js";const k="/GeometryOps.jl/previews/PR195/assets/sduvavi.CZy9YIUA.png",R=JSON.parse('{"title":"Barycentric coordinates","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/barycentric.md","filePath":"source/methods/barycentric.md","lastUpdated":null}'),l={name:"source/methods/barycentric.md"},p=h("",4),e={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.692ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4726 1000","aria-hidden":"true"},r=h("",1),d=[r],g=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"λ"),s("mn",null,"1")]),s("mo",null,","),s("msub",null,[s("mi",null,"λ"),s("mn",null,"2")]),s("mo",null,","),s("msub",null,[s("mi",null,"λ"),s("mn",null,"3")]),s("mo",{stretchy:"false"},")")])],-1),y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},o=s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1),c=[o],C=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"n")])],-1),B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},D=s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1),u=[D],T=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"n")])],-1),m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.876ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6575.4 1000","aria-hidden":"true"},Q=h("",1),_=[Q],v=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"λ"),s("mn",null,"1")]),s("mo",null,","),s("msub",null,[s("mi",null,"λ"),s("mn",null,"2")]),s("mo",null,","),s("mo",null,"."),s("mo",null,"."),s("mo",null,"."),s("mo",null,","),s("msub",null,[s("mi",null,"λ"),s("mi",null,"n")]),s("mo",{stretchy:"false"},")")])],-1),w=h("",35);function f(x,V,P,M,q,N){return n(),a("div",null,[p,s("p",null,[i("In the case of a triangle, barycentric coordinates are a set of three numbers "),s("mjx-container",e,[(n(),a("svg",E,d)),g]),i(", each associated with a vertex of the triangle. Any point within the triangle can be expressed as a weighted average of the vertices, where the weights are the barycentric coordinates. The weights sum to 1, and each is non-negative.")]),s("p",null,[i("For a polygon with "),s("mjx-container",y,[(n(),a("svg",F,c)),C]),i(" vertices, generalized barycentric coordinates are a set of "),s("mjx-container",B,[(n(),a("svg",A,u)),T]),i(" numbers "),s("mjx-container",m,[(n(),a("svg",b,_)),v]),i(", each associated with a vertex of the polygon. Any point within the polygon can be expressed as a weighted average of the vertices, where the weights are the generalized barycentric coordinates.")]),w])}const G=t(l,[["render",f]]);export{R as __pageData,G as default}; diff --git a/previews/PR195/assets/source_methods_buffer.md.DU5YIRhh.js b/previews/PR195/assets/source_methods_buffer.md.DU5YIRhh.js new file mode 100644 index 000000000..7bf5adfa1 --- /dev/null +++ b/previews/PR195/assets/source_methods_buffer.md.DU5YIRhh.js @@ -0,0 +1,11 @@ +import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.BjTE4JnT.js";const y=JSON.parse('{"title":"Buffer","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/buffer.md","filePath":"source/methods/buffer.md","lastUpdated":null}'),n={name:"source/methods/buffer.md"},e=t(`

Buffer

Buffering a geometry means computing the region distance away from it, and returning that region as the new geometry.

As of now, we only support GEOS as the backend, meaning that LibGEOS must be loaded.

julia
function buffer(geometry, distance; kwargs...)
+    buffered = buffer(GEOS(; kwargs...), geometry, distance)
+    return tuples(buffered)
+end

Below is an error handler similar to the others we have for e.g. segmentize, which checks if there is a method error for the geos backend.

Add an error hint for buffer if LibGEOS is not loaded!

julia
function _buffer_error_hinter(io, exc, argtypes, kwargs)
+    if isnothing(Base.get_extension(GeometryOps, :GeometryOpsLibGEOSExt)) && exc.f == buffer && first(argtypes) == GEOS
+        print(io, "\\n\\nThe \`buffer\` method requires the LibGEOS.jl package to be explicitly loaded.\\n")
+        print(io, "You can do this by simply typing ")
+        printstyled(io, "using LibGEOS"; color = :cyan, bold = true)
+        println(io, " in your REPL, \\nor otherwise loading LibGEOS.jl via using or import.")
+    end
+end

This page was generated using Literate.jl.

`,9),h=[e];function k(p,l,r,d,E,o){return a(),i("div",null,h)}const c=s(n,[["render",k]]);export{y as __pageData,c as default}; diff --git a/previews/PR195/assets/source_methods_buffer.md.DU5YIRhh.lean.js b/previews/PR195/assets/source_methods_buffer.md.DU5YIRhh.lean.js new file mode 100644 index 000000000..5871927b3 --- /dev/null +++ b/previews/PR195/assets/source_methods_buffer.md.DU5YIRhh.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.BjTE4JnT.js";const y=JSON.parse('{"title":"Buffer","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/buffer.md","filePath":"source/methods/buffer.md","lastUpdated":null}'),n={name:"source/methods/buffer.md"},e=t("",9),h=[e];function k(p,l,r,d,E,o){return a(),i("div",null,h)}const c=s(n,[["render",k]]);export{y as __pageData,c as default}; diff --git a/previews/PR195/assets/source_methods_centroid.md.1Rbjvw60.js b/previews/PR195/assets/source_methods_centroid.md.1Rbjvw60.js new file mode 100644 index 000000000..c3f0f75b9 --- /dev/null +++ b/previews/PR195/assets/source_methods_centroid.md.1Rbjvw60.js @@ -0,0 +1,93 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const h="/GeometryOps.jl/previews/PR195/assets/ayffpge.BD0hVfse.png",t="/GeometryOps.jl/previews/PR195/assets/ghbensl.DHcwB147.png",F=JSON.parse('{"title":"Centroid","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/centroid.md","filePath":"source/methods/centroid.md","lastUpdated":null}'),p={name:"source/methods/centroid.md"},k=n(`

Centroid

julia
export centroid, centroid_and_length, centroid_and_area

What is the centroid?

The centroid is the geometric center of a line string or area(s). Note that the centroid does not need to be inside of a concave area.

Further note that by convention a line, or linear ring, is calculated by weighting the line segments by their length, while polygons and multipolygon centroids are calculated by weighting edge's by their 'area components'.

To provide an example, consider this concave polygon in the shape of a 'C':

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+cshape = GI.Polygon([[(0,0), (0,3), (3,3), (3,2), (1,2), (1,1), (3,1), (3,0), (0,0)]])
+f, a, p = poly(collect(GI.getpoint(cshape)); axis = (; aspect = DataAspect()))

Let's see what the centroid looks like (plotted in red):

julia
cent = GO.centroid(cshape)
+scatter!(GI.x(cent), GI.y(cent), color = :red)
+f

Implementation

This is the GeoInterface-compatible implementation.

First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait. This is also used in the implementation, since it's a lot less work!

Note that if you call centroid on a LineString or LinearRing, the centroid_and_length function will be called due to the weighting scheme described above, while centroid_and_area is called for polygons and multipolygons. However, centroid_and_area can still be called on a LineString or LinearRing when they are closed, for example as the interior hole of a polygon.

The helper functions centroid_and_length and centroid_and_area are made available just in case the user also needs the area or length to decrease repeat computation.

julia
"""
+    centroid(geom, [T=Float64])::Tuple{T, T}
+
+Returns the centroid of a given line segment, linear ring, polygon, or
+mutlipolygon.
+"""
+centroid(geom, ::Type{T} = Float64; threaded=false) where T =
+    centroid(GI.trait(geom), geom, T; threaded)
+function centroid(
+    trait::Union{GI.LineStringTrait, GI.LinearRingTrait}, geom, ::Type{T}=Float64; threaded=false
+) where T
+    centroid_and_length(trait, geom, T)[1]
+end
+centroid(trait, geom, ::Type{T}; threaded=false) where T =
+    centroid_and_area(geom, T; threaded)[1]
+
+"""
+    centroid_and_length(geom, [T=Float64])::(::Tuple{T, T}, ::Real)
+
+Returns the centroid and length of a given line/ring. Note this is only valid
+for line strings and linear rings.
+"""
+centroid_and_length(geom, ::Type{T}=Float64) where T =
+    centroid_and_length(GI.trait(geom), geom, T)
+function centroid_and_length(
+    ::Union{GI.LineStringTrait, GI.LinearRingTrait}, geom, ::Type{T},
+) where T

Initialize starting values

julia
    xcentroid = T(0)
+    ycentroid = T(0)
+    length = T(0)
+    point₁ = GI.getpoint(geom, 1)

Loop over line segments of line string

julia
    for point₂ in GI.getpoint(geom)

Calculate length of line segment

julia
        length_component = sqrt(
+            (GI.x(point₂) - GI.x(point₁))^2 +
+            (GI.y(point₂) - GI.y(point₁))^2
+        )

Accumulate the line segment length into length

julia
        length += length_component

Weighted average of line segment centroids

julia
        xcentroid += (GI.x(point₁) + GI.x(point₂)) * (length_component / 2)
+        ycentroid += (GI.y(point₁) + GI.y(point₂)) * (length_component / 2)
+        #centroid = centroid .+ ((point₁ .+ point₂) .* (length_component / 2))

Advance the point buffer by 1 point to move to next line segment

julia
        point₁ = point₂
+    end
+    xcentroid /= length
+    ycentroid /= length
+    return (xcentroid, ycentroid), length
+end
+
+"""
+    centroid_and_area(geom, [T=Float64])::(::Tuple{T, T}, ::Real)
+
+Returns the centroid and area of a given geometry.
+"""
+function centroid_and_area(geom, ::Type{T}=Float64; threaded=false) where T
+    target = TraitTarget{Union{GI.PolygonTrait,GI.LineStringTrait,GI.LinearRingTrait}}()
+    init = (zero(T), zero(T)), zero(T)
+    applyreduce(_combine_centroid_and_area, target, geom; threaded, init) do g
+        _centroid_and_area(GI.trait(g), g, T)
+    end
+end
+
+function _centroid_and_area(
+    ::Union{GI.LineStringTrait, GI.LinearRingTrait}, geom, ::Type{T}
+) where T

Check that the geometry is closed

julia
    @assert(
+        GI.getpoint(geom, 1) == GI.getpoint(geom, GI.ngeom(geom)),
+        "centroid_and_area should only be used with closed geometries"
+    )

Initialize starting values

julia
    xcentroid = T(0)
+    ycentroid = T(0)
+    area = T(0)
+    point₁ = GI.getpoint(geom, 1)

Loop over line segments of linear ring

julia
    for point₂ in GI.getpoint(geom)
+        area_component = GI.x(point₁) * GI.y(point₂) -
+            GI.x(point₂) * GI.y(point₁)

Accumulate the area component into area

julia
        area += area_component

Weighted average of centroid components

julia
        xcentroid += (GI.x(point₁) + GI.x(point₂)) * area_component
+        ycentroid += (GI.y(point₁) + GI.y(point₂)) * area_component

Advance the point buffer by 1 point

julia
        point₁ = point₂
+    end
+    area /= 2
+    xcentroid /= 6area
+    ycentroid /= 6area
+    return (xcentroid, ycentroid), abs(area)
+end
+function _centroid_and_area(::GI.PolygonTrait, geom, ::Type{T}) where T

Exterior ring's centroid and area

julia
    (xcentroid, ycentroid), area = centroid_and_area(GI.getexterior(geom), T)

Weight exterior centroid by area

julia
    xcentroid *= area
+    ycentroid *= area

Loop over any holes within the polygon

julia
    for hole in GI.gethole(geom)

Hole polygon's centroid and area

julia
        (xinterior, yinterior), interior_area = centroid_and_area(hole, T)

Accumulate the area component into area

julia
        area -= interior_area

Weighted average of centroid components

julia
        xcentroid -= xinterior * interior_area
+        ycentroid -= yinterior * interior_area
+    end
+    xcentroid /= area
+    ycentroid /= area
+    return (xcentroid, ycentroid), area
+end

The op argument for _applyreduce and point / area It combines two (point, area) tuples into one, taking the average of the centroid points weighted by the area of the geom they are from.

julia
function _combine_centroid_and_area(((x1, y1), area1), ((x2, y2), area2))
+    area = area1 + area2
+    x = (x1 * area1 + x2 * area2) / area
+    y = (y1 * area1 + y2 * area2) / area
+    return (x, y), area
+end

This page was generated using Literate.jl.

`,57),l=[k];function e(r,E,d,g,y,o){return a(),i("div",null,l)}const C=s(p,[["render",e]]);export{F as __pageData,C as default}; diff --git a/previews/PR195/assets/source_methods_centroid.md.1Rbjvw60.lean.js b/previews/PR195/assets/source_methods_centroid.md.1Rbjvw60.lean.js new file mode 100644 index 000000000..cceef385d --- /dev/null +++ b/previews/PR195/assets/source_methods_centroid.md.1Rbjvw60.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const h="/GeometryOps.jl/previews/PR195/assets/ayffpge.BD0hVfse.png",t="/GeometryOps.jl/previews/PR195/assets/ghbensl.DHcwB147.png",F=JSON.parse('{"title":"Centroid","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/centroid.md","filePath":"source/methods/centroid.md","lastUpdated":null}'),p={name:"source/methods/centroid.md"},k=n("",57),l=[k];function e(r,E,d,g,y,o){return a(),i("div",null,l)}const C=s(p,[["render",e]]);export{F as __pageData,C as default}; diff --git a/previews/PR195/assets/source_methods_clipping_clipping_processor.md.DEdPT5AQ.js b/previews/PR195/assets/source_methods_clipping_clipping_processor.md.DEdPT5AQ.js new file mode 100644 index 000000000..492d762db --- /dev/null +++ b/previews/PR195/assets/source_methods_clipping_clipping_processor.md.DEdPT5AQ.js @@ -0,0 +1,524 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const o=JSON.parse('{"title":"Polygon clipping helpers","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/clipping/clipping_processor.md","filePath":"source/methods/clipping/clipping_processor.md","lastUpdated":null}'),h={name:"source/methods/clipping/clipping_processor.md"},t=n(`

Polygon clipping helpers

This file contains the shared helper functions for the polygon clipping functionalities.

This enum defines which side of an edge a point is on

julia
@enum PointEdgeSide left=1 right=2 unknown=3

Constants assigned for readability

julia
const enter, exit = true, false
+const crossing, bouncing = true, false
+
+#= A point can either be the start or end of an overlapping chain of points between two
+polygons, or not an endpoint of a chain. =#
+@enum EndPointType start_chain=1 end_chain=2 not_endpoint=3
+
+#= This is the struct that makes up a_list and b_list. Many values are only used if point is
+an intersection point (ipt). =#
+@kwdef struct PolyNode{T <: AbstractFloat}
+    point::Tuple{T,T}          # (x, y) values of given point
+    inter::Bool = false        # If ipt, true, else 0
+    neighbor::Int = 0          # If ipt, index of equivalent point in a_list or b_list, else 0
+    idx::Int = 0               # If crossing point, index within sorted a_idx_list
+    ent_exit::Bool = false     # If ipt, true if enter and false if exit, else false
+    crossing::Bool = false     # If ipt, true if intersection crosses from out/in polygon, else false
+    endpoint::EndPointType = not_endpoint # If ipt, denotes if point is the start or end of an overlapping chain
+    fracs::Tuple{T,T} = (0., 0.) # If ipt, fractions along edges to ipt (a_frac, b_frac), else (0, 0)
+end
+
+#= Create a new node with all of the same field values as the given PolyNode unless
+alternative values are provided, in which case those should be used. =#
+PolyNode(node::PolyNode{T};
+    point = node.point, inter = node.inter, neighbor = node.neighbor, idx = node.idx,
+    ent_exit = node.ent_exit, crossing = node.crossing, endpoint = node.endpoint,
+    fracs = node.fracs,
+) where T = PolyNode{T}(;
+    point = point, inter = inter, neighbor = neighbor, idx = idx, ent_exit = ent_exit,
+    crossing = crossing, endpoint = endpoint, fracs = fracs)

Checks equality of two PolyNodes by backing point value, fractional value, and intersection status

julia
equals(pn1::PolyNode, pn2::PolyNode) = pn1.point == pn2.point && pn1.inter == pn2.inter && pn1.fracs == pn2.fracs
+
+#=
+    _lazy_closed_ring_point_enumerator(ring) -> Iterator
+
+This function returns an enumerator over the points of a ring, and adds an extra point
+to the end, if the ring is not closed.
+=#
+function _lazy_closed_ring_point_enumerator(ring)
+    @assert GI.geomtrait(ring) isa GI.AbstractCurveTrait "\`ring\` must be a curve, got $(GI.trait(ring))"

Check if poly_a is closed. NOTE: 1 is defined as the starting index of a ring in GeoInterface.

julia
    if equals(GI.getpoint(ring, 1), GI.getpoint(ring, GI.npoint(ring)))

If yes, pass the iterator as formed

julia
        Iterators.enumerate(GI.getpoint(ring))
+    else

If no, pass the iterator as lazy vcat

julia
        Iterators.enumerate(
+            Iterators.flatten(
+                (GI.getpoint(ring),
+                (GI.getpoint(ring, 1),),)
+            )
+        )
+    end
+end
_build_ab_list(::Type{T}, poly_a, poly_b, delay_cross_f, delay_bounce_f; exact) ->
+    (a_list, b_list, a_idx_list)

This function takes in two polygon rings and calls '_build_a_list', '_build_b_list', and '_flag_ent_exit' in order to fully form a_list and b_list. The 'a_list' and 'b_list' that it returns are the fully updated vectors of PolyNodes that represent the rings 'poly_a' and 'poly_b', respectively. This function also returns 'a_idx_list', which at its "ith" index stores the index in 'a_list' at which the "ith" intersection point lies.

julia
function _build_ab_list(::Type{T}, poly_a, poly_b, delay_cross_f::F1, delay_bounce_f::F2; exact) where {T, F1, F2}

Make a list for nodes of each polygon

julia
    a_list, a_idx_list, n_b_intrs = _build_a_list(T, poly_a, poly_b; exact)
+    b_list = _build_b_list(T, a_idx_list, a_list, n_b_intrs, poly_b)

Flag crossings

julia
    _classify_crossing!(T, a_list, b_list; exact)

Flag the entry and exits

julia
    _flag_ent_exit!(T, GI.LinearRingTrait(), poly_b, a_list, delay_cross_f, Base.Fix2(delay_bounce_f, true); exact)
+    _flag_ent_exit!(T, GI.LinearRingTrait(), poly_a, b_list, delay_cross_f, Base.Fix2(delay_bounce_f, false); exact)

Set node indices and filter a_idx_list to just crossing points

julia
    _index_crossing_intrs!(a_list, b_list, a_idx_list)
+
+    return a_list, b_list, a_idx_list
+end
_build_a_list(::Type{T}, poly_a, poly_b) -> (a_list, a_idx_list)

This function take in two polygon rings and creates a vector of PolyNodes to represent poly_a, including its intersection points with poly_b. The information stored in each PolyNode is needed for clipping using the Greiner-Hormann clipping algorithm.

Note: After calling this function, a_list is not fully formed because the neighboring indices of the intersection points in b_list still need to be updated. Also we still have not update the entry and exit flags for a_list.

The a_idx_list is a list of the indices of intersection points in a_list. The value at index i of a_idx_list is the location in a_list where the ith intersection point lies.

julia
function _build_a_list(::Type{T}, poly_a, poly_b; exact) where T
+    n_a_edges = _nedge(poly_a)
+    a_list = PolyNode{T}[]  # list of points in poly_a
+    sizehint!(a_list, n_a_edges)
+    a_idx_list = Vector{Int}()  # finds indices of intersection points in a_list
+    a_count = 0  # number of points added to a_list
+    n_b_intrs = 0

Loop through points of poly_a

julia
    local a_pt1
+    for (i, a_p2) in _lazy_closed_ring_point_enumerator(poly_a) # basically \`enumerate(GI.getpoint(poly_a))\` but makes sure \`poly_a\` is closed
+        a_pt2 = (T(GI.x(a_p2)), T(GI.y(a_p2)))
+        if i <= 1 || (a_pt1 == a_pt2)  # don't repeat points
+            a_pt1 = a_pt2
+            continue
+        end

Add the first point of the edge to the list of points in a_list

julia
        new_point = PolyNode{T}(;point = a_pt1)
+        a_count += 1
+        push!(a_list, new_point)

Find intersections with edges of poly_b

julia
        local b_pt1
+        prev_counter = a_count
+        for (j, b_p2) in _lazy_closed_ring_point_enumerator(poly_b) # basically \`enumerate(GI.getpoint(poly_b))\` but makes sure \`poly_b\` is closed
+            b_pt2 = _tuple_point(b_p2, T)
+            if j <= 1 || (b_pt1 == b_pt2)  # don't repeat points
+                b_pt1 = b_pt2
+                continue
+            end

Determine if edges intersect and how they intersect

julia
            line_orient, intr1, intr2 = _intersection_point(T, (a_pt1, a_pt2), (b_pt1, b_pt2); exact)
+            if line_orient != line_out  # edges intersect
+                if line_orient == line_cross  # Intersection point that isn't a vertex
+                    int_pt, fracs = intr1
+                    new_intr = PolyNode{T}(;
+                        point = int_pt, inter = true, neighbor = j - 1,
+                        crossing = true, fracs = fracs,
+                    )
+                    a_count += 1
+                    n_b_intrs += 1
+                    push!(a_list, new_intr)
+                    push!(a_idx_list, a_count)
+                else
+                    (_, (α1, β1)) = intr1

Determine if a1 or b1 should be added to a_list

julia
                    add_a1 = α1 == 0 && 0 β1 < 1
+                    a1_β = add_a1 ? β1 : zero(T)
+                    add_b1 = β1 == 0 && 0 < α1 < 1
+                    b1_α = add_b1 ? α1 : zero(T)

If lines are collinear and overlapping, a second intersection exists

julia
                    if line_orient == line_over
+                        (_, (α2, β2)) = intr2
+                        if α2 == 0 && 0 β2 < 1
+                            add_a1, a1_β = true, β2
+                        end
+                        if β2 == 0 && 0 < α2 < 1
+                            add_b1, b1_α = true, α2
+                        end
+                    end

Add intersection points determined above

julia
                    if add_a1
+                        n_b_intrs += a1_β == 0 ? 0 : 1
+                        a_list[prev_counter] = PolyNode{T}(;
+                            point = a_pt1, inter = true, neighbor = j - 1,
+                            fracs = (zero(T), a1_β),
+                        )
+                        push!(a_idx_list, prev_counter)
+                    end
+                    if add_b1
+                        new_intr = PolyNode{T}(;
+                            point = b_pt1, inter = true, neighbor = j - 1,
+                            fracs = (b1_α, zero(T)),
+                        )
+                        a_count += 1
+                        push!(a_list, new_intr)
+                        push!(a_idx_list, a_count)
+                    end
+                end
+            end
+            b_pt1 = b_pt2
+        end

Order intersection points by placement along edge using fracs value

julia
        if prev_counter < a_count
+            Δintrs = a_count - prev_counter
+            inter_points = @view a_list[(a_count - Δintrs + 1):a_count]
+            sort!(inter_points, by = x -> x.fracs[1])
+        end
+        a_pt1 = a_pt2
+    end
+    return a_list, a_idx_list, n_b_intrs
+end
_build_b_list(::Type{T}, a_idx_list, a_list, poly_b) -> b_list

This function takes in the a_list and a_idx_list build in _build_a_list and poly_b and creates a vector of PolyNodes to represent poly_b. The information stored in each PolyNode is needed for clipping using the Greiner-Hormann clipping algorithm.

Note: after calling this function, b_list is not fully updated. The entry/exit flags still need to be updated. However, the neighbor value in a_list is now updated.

julia
function _build_b_list(::Type{T}, a_idx_list, a_list, n_b_intrs, poly_b) where T

Sort intersection points by insertion order in b_list

julia
    sort!(a_idx_list, by = x-> a_list[x].neighbor + a_list[x].fracs[2])

Initialize needed values and lists

julia
    n_b_edges = _nedge(poly_b)
+    n_intr_pts = length(a_idx_list)
+    b_list = PolyNode{T}[]
+    sizehint!(b_list, n_b_edges + n_b_intrs)
+    intr_curr = 1
+    b_count = 0

Loop over points in poly_b and add each point and intersection point

julia
    local b_pt1
+    for (i, b_p2) in _lazy_closed_ring_point_enumerator(poly_b) # basically \`enumerate(GI.getpoint(poly_b))\` but makes sure \`poly_b\` is closed
+        b_pt2 = _tuple_point(b_p2, T)
+        if i  1 || (b_pt1 == b_pt2)  # don't repeat points
+            b_pt1 = b_pt2
+            continue
+        end
+        b_count += 1
+        push!(b_list, PolyNode{T}(; point = b_pt1))
+        if intr_curr  n_intr_pts
+            curr_idx = a_idx_list[intr_curr]
+            curr_node = a_list[curr_idx]
+            prev_counter = b_count
+            while curr_node.neighbor == i - 1  # Add all intersection points on current edge
+                b_idx = 0
+                new_intr = PolyNode(curr_node; neighbor = curr_idx)
+                if curr_node.fracs[2] == 0  # if curr_node is segment start point

intersection point is vertex of b

julia
                    b_idx = prev_counter
+                    b_list[b_idx] = new_intr
+                else
+                    b_count += 1
+                    b_idx = b_count
+                    push!(b_list, new_intr)
+                end
+                a_list[curr_idx] = PolyNode(curr_node; neighbor = b_idx)
+                intr_curr += 1
+                intr_curr > n_intr_pts && break
+                curr_idx = a_idx_list[intr_curr]
+                curr_node = a_list[curr_idx]
+            end
+        end
+        b_pt1 = b_pt2
+    end
+    sort!(a_idx_list)  # return a_idx_list to order of points in a_list
+    return b_list
+end
_classify_crossing!(T, poly_b, a_list; exact)

This function marks all intersection points as either bouncing or crossing points. "Delayed" crossing or bouncing intersections (a chain of edges where the central edges overlap and thus only the first and last edge of the chain determine if the chain is bounding or crossing) are marked as follows: the first and the last points are marked as crossing if the chain is crossing and delayed otherwise and all middle points are marked as bouncing. Additionally, the start and end points of the chain are marked as endpoints using the endpoints field.

julia
function _classify_crossing!(::Type{T}, a_list, b_list; exact) where T
+    napts = length(a_list)
+    nbpts = length(b_list)

start centered on last point

julia
    a_prev = a_list[end - 1]
+    curr_pt = a_list[end]
+    i = napts

keep track of unmatched bouncing chains

julia
    start_chain_edge, start_chain_idx = unknown, 0
+    unmatched_end_chain_edge, unmatched_end_chain_idx = unknown, 0
+    same_winding = true

loop over list points

julia
    for next_idx in 1:napts
+        a_next = a_list[next_idx]
+        if curr_pt.inter && !curr_pt.crossing
+            j = curr_pt.neighbor
+            b_prev = j == 1 ? b_list[end] : b_list[j-1]
+            b_next = j == nbpts ? b_list[1] : b_list[j+1]

determine if any segments are on top of one another

julia
            a_prev_is_b_prev = a_prev.inter && equals(a_prev, b_prev)
+            a_prev_is_b_next = a_prev.inter && equals(a_prev, b_next)
+            a_next_is_b_prev = a_next.inter && equals(a_next, b_prev)
+            a_next_is_b_next = a_next.inter && equals(a_next, b_next)

determine which side of a segments the p points are on

julia
            b_prev_side, b_next_side = _get_sides(b_prev, b_next, a_prev, curr_pt, a_next,
+                i, j, a_list, b_list; exact)

no sides overlap

julia
            if !a_prev_is_b_prev && !a_prev_is_b_next && !a_next_is_b_prev && !a_next_is_b_next
+                if b_prev_side != b_next_side  # lines cross
+                    a_list[i] = PolyNode(curr_pt; crossing = true)
+                    b_list[j] = PolyNode(b_list[j]; crossing = true)
+                end

end of overlapping chain

julia
            elseif !a_next_is_b_prev && !a_next_is_b_next
+                b_side = a_prev_is_b_prev ? b_next_side : b_prev_side
+                if start_chain_edge == unknown  # start loop on overlapping chain
+                    unmatched_end_chain_edge = b_side
+                    unmatched_end_chain_idx = i
+                    same_winding = a_prev_is_b_prev
+                else  # close overlapping chain

update end of chain with endpoint and crossing / bouncing tags

julia
                    crossing = b_side != start_chain_edge
+                    a_list[i] = PolyNode(curr_pt;
+                        crossing = crossing,
+                        endpoint = end_chain,
+                    )
+                    b_list[j] = PolyNode(b_list[j];
+                        crossing = crossing,
+                        endpoint = same_winding ? end_chain : start_chain,
+                    )

update start of chain with endpoint and crossing / bouncing tags

julia
                    start_pt = a_list[start_chain_idx]
+                    a_list[start_chain_idx] = PolyNode(start_pt;
+                        crossing = crossing,
+                        endpoint = start_chain,
+                    )
+                    b_list[start_pt.neighbor] = PolyNode(b_list[start_pt.neighbor];
+                        crossing = crossing,
+                        endpoint = same_winding ? start_chain : end_chain,
+                    )
+                end

start of overlapping chain

julia
            elseif !a_prev_is_b_prev && !a_prev_is_b_next
+                b_side = a_next_is_b_prev ? b_next_side : b_prev_side
+                start_chain_edge = b_side
+                start_chain_idx = i
+                same_winding = a_next_is_b_next
+            end
+        end
+        a_prev = curr_pt
+        curr_pt = a_next
+        i = next_idx
+    end

if we started in the middle of overlapping chain, close chain

julia
    if unmatched_end_chain_edge != unknown
+        crossing = unmatched_end_chain_edge != start_chain_edge

update end of chain with endpoint and crossing / bouncing tags

julia
        end_chain_pt = a_list[unmatched_end_chain_idx]
+        a_list[unmatched_end_chain_idx] = PolyNode(end_chain_pt;
+            crossing = crossing,
+            endpoint = end_chain,
+        )
+        b_list[end_chain_pt.neighbor] = PolyNode(b_list[end_chain_pt.neighbor];
+            crossing = crossing,
+            endpoint = same_winding ? end_chain : start_chain,
+        )

update start of chain with endpoint and crossing / bouncing tags

julia
        start_pt = a_list[start_chain_idx]
+        a_list[start_chain_idx] = PolyNode(start_pt;
+            crossing = crossing,
+            endpoint = start_chain,
+        )
+        b_list[start_pt.neighbor] = PolyNode(b_list[start_pt.neighbor];
+            crossing = crossing,
+            endpoint = same_winding ? start_chain : end_chain,
+        )
+    end
+end

Check if PolyNode is a vertex of original polygon

julia
_is_vertex(pt) = !pt.inter || pt.fracs[1] == 0 || pt.fracs[1] == 1 || pt.fracs[2] == 0 || pt.fracs[2] == 1
+
+#= Determines which side (right or left) of the segment a_prev-curr_pt-a_next the points
+b_prev and b_next are on. Given this is only called when curr_pt is an intersection point
+that wasn't initially classified as crossing, we know that curr_pt is either from a hinge or
+overlapping intersection and thus is an original vertex of either poly_a or poly_b. Due to
+floating point error when calculating new intersection points, we only want to use original
+vertices to determine orientation. Thus, for other points, find nearest point that is a
+vertex. Given other intersection points will be collinear along existing segments, this
+won't change the orientation. =#
+function _get_sides(b_prev, b_next, a_prev, curr_pt, a_next, i, j, a_list, b_list; exact)
+    b_prev_pt = if _is_vertex(b_prev)
+        b_prev.point
+    else  # Find original start point of segment formed by b_prev and curr_pt
+        prev_idx = findprev(_is_vertex, b_list, j - 1)
+        prev_idx = isnothing(prev_idx) ? findlast(_is_vertex, b_list) : prev_idx
+        b_list[prev_idx].point
+    end
+    b_next_pt = if _is_vertex(b_next)
+        b_next.point
+    else  # Find original end point of segment formed by curr_pt and b_next
+        next_idx = findnext(_is_vertex, b_list, j + 1)
+        next_idx = isnothing(next_idx) ? findfirst(_is_vertex, b_list) : next_idx
+        b_list[next_idx].point
+    end
+    a_prev_pt = if _is_vertex(a_prev)
+        a_prev.point
+    else   # Find original start point of segment formed by a_prev and curr_pt
+        prev_idx = findprev(_is_vertex, a_list, i - 1)
+        prev_idx = isnothing(prev_idx) ? findlast(_is_vertex, a_list) : prev_idx
+        a_list[prev_idx].point
+    end
+    a_next_pt = if _is_vertex(a_next)
+        a_next.point
+    else  # Find original end point of segment formed by curr_pt and a_next
+        next_idx = findnext(_is_vertex, a_list, i + 1)
+        next_idx = isnothing(next_idx) ? findfirst(_is_vertex, a_list) : next_idx
+        a_list[next_idx].point
+    end

Determine side orientation of b_prev and b_next

julia
    b_prev_side = _get_side(b_prev_pt, a_prev_pt, curr_pt.point, a_next_pt; exact)
+    b_next_side = _get_side(b_next_pt, a_prev_pt, curr_pt.point, a_next_pt; exact)
+    return b_prev_side, b_next_side
+end

Determines if Q lies to the left or right of the line formed by P1-P2-P3

julia
function _get_side(Q, P1, P2, P3; exact)
+    s1 = Predicates.orient(Q, P1, P2; exact)
+    s2 = Predicates.orient(Q, P2, P3; exact)
+    s3 = Predicates.orient(P1, P2, P3; exact)
+
+    side = if s3  0
+        (s1 < 0) || (s2 < 0) ? right : left
+    else #  s3 < 0
+        (s1 > 0) || (s2 > 0) ? left : right
+    end
+    return side
+end
+
+#= Given a list of PolyNodes, find the first element that isn't an intersection point. Then,
+test if this element is in or out of the given polygon. Return the next index, as well as
+the enter/exit status of the next intersection point (the opposite of the in/out check). If
+all points are intersection points, find the first element that either is the end of a chain
+or a crossing point that isn't in a chain. Then take the midpoint of this point and the next
+point in the list and perform the in/out check. If none of these points exist, return
+a \`next_idx\` of \`nothing\`. =#
+function _pt_off_edge_status(::Type{T}, pt_list, poly, npts; exact) where T
+    start_idx, is_non_intr_pt = findfirst(_is_not_intr, pt_list), true
+    if isnothing(start_idx)
+        start_idx, is_non_intr_pt = findfirst(_next_edge_off, pt_list), false
+        isnothing(start_idx) && return (start_idx, false)
+    end
+    next_idx = start_idx < npts ? (start_idx + 1) : 1
+    start_pt = if is_non_intr_pt
+        pt_list[start_idx].point
+    else
+        (pt_list[start_idx].point .+ pt_list[next_idx].point) ./ 2
+    end
+    start_status = !_point_filled_curve_orientation(start_pt, poly; in = true, on = false, out = false, exact)
+    return next_idx, start_status
+end

Check if a PolyNode is an intersection point

julia
_is_not_intr(pt) = !pt.inter
+#= Check if a PolyNode is the last point of a chain or a non-overlapping crossing point.
+The next midpoint of one of these points and the next point within a polygon must not be on
+the polygon edge. =#
+_next_edge_off(pt) = (pt.endpoint == end_chain) || (pt.crossing && pt.endpoint == not_endpoint)
_flag_ent_exit!(::Type{T}, ::GI.LinearRingTrait, poly, pt_list, delay_cross_f, delay_bounce_f; exact)

This function flags all the intersection points as either an 'entry' or 'exit' point in relation to the given polygon. For non-delayed crossings we simply alternate the enter/exit status. This also holds true for the first and last points of a delayed bouncing, where they both have an opposite entry/exit flag. Conversely, the first and last point of a delayed crossing have the same entry/exit status. Furthermore, the crossing/bouncing flag of delayed crossings and bouncings may be updated. This depends on function specific rules that determine which of the start or end points (if any) should be marked as crossing for used during polygon tracing. A consistent rule is that the start and end points of a delayed crossing will have different crossing/bouncing flags, while a the endpoints of a delayed bounce will be the same.

Used for clipping polygons by other polygons.

julia
function _flag_ent_exit!(::Type{T}, ::GI.LinearRingTrait, poly, pt_list, delay_cross_f, delay_bounce_f; exact) where T
+    npts = length(pt_list)

Find starting index if there is one

julia
    next_idx, status = _pt_off_edge_status(T, pt_list, poly, npts; exact)
+    isnothing(next_idx) && return
+    start_idx = next_idx - 1

Loop over points and mark entry and exit status

julia
    start_chain_idx = 0
+    for ii in Iterators.flatten((next_idx:npts, 1:start_idx))
+        curr_pt = pt_list[ii]
+        if curr_pt.endpoint == start_chain
+            start_chain_idx = ii
+        elseif curr_pt.crossing || curr_pt.endpoint == end_chain
+            start_crossing, end_crossing = curr_pt.crossing, curr_pt.crossing
+            if curr_pt.endpoint == end_chain  # ending overlapping chain
+                start_pt = pt_list[start_chain_idx]
+                if curr_pt.crossing  # delayed crossing
+                    #= start and end crossing status are different and depend on current
+                    entry/exit status =#
+                    start_crossing, end_crossing = delay_cross_f(status)
+                else  # delayed bouncing
+                    next_idx = ii < npts ? (ii + 1) : 1
+                    next_val = (curr_pt.point .+ pt_list[next_idx].point) ./ 2
+                    pt_in_poly = _point_filled_curve_orientation(next_val, poly; in = true, on = false, out = false, exact)
+                    #= start and end crossing status are the same and depend on if adjacent
+                    edges of pt_list are within poly =#
+                    start_crossing = delay_bounce_f(pt_in_poly)
+                    end_crossing = start_crossing
+                end

update start of chain point

julia
                pt_list[start_chain_idx] = PolyNode(start_pt; ent_exit = status, crossing = start_crossing)
+                if !curr_pt.crossing
+                    status = !status
+                end
+            end
+            pt_list[ii] = PolyNode(curr_pt; ent_exit = status, crossing = end_crossing)
+            status = !status
+        end
+    end
+    return
+end
_flag_ent_exit!(::GI.LineTrait, line, pt_list; exact)

This function flags all the intersection points as either an 'entry' or 'exit' point in relation to the given line. Returns true if there are crossing points to classify, else returns false. Used for cutting polygons by lines.

Assumes that the first point is outside of the polygon and not on an edge.

julia
function _flag_ent_exit!(::GI.LineTrait, poly, pt_list; exact)
+    status = !_point_filled_curve_orientation(pt_list[1].point, poly; in = true, on = false, out = false, exact)

Loop over points and mark entry and exit status

julia
    for (ii, curr_pt) in enumerate(pt_list)
+        if curr_pt.crossing
+            pt_list[ii] = PolyNode(curr_pt; ent_exit = status)
+            status = !status
+        end
+    end
+    return
+end
+
+#= Filters a_idx_list to just include crossing points and sets the index of all crossing
+points (which element they correspond to within a_idx_list). =#
+function _index_crossing_intrs!(a_list, b_list, a_idx_list)
+    filter!(x -> a_list[x].crossing, a_idx_list)
+    for (i, a_idx) in enumerate(a_idx_list)
+        curr_node = a_list[a_idx]
+        neighbor_node = b_list[curr_node.neighbor]
+        a_list[a_idx] = PolyNode(curr_node; idx = i)
+        b_list[curr_node.neighbor] = PolyNode(neighbor_node; idx = i)
+    end
+    return
+end
_trace_polynodes(::Type{T}, a_list, b_list, a_idx_list, f_step)::Vector{GI.Polygon}

This function takes the outputs of _build_ab_list and traces the lists to determine which polygons are formed as described in Greiner and Hormann. The function f_step determines in which direction the lists are traced. This function is different for intersection, difference, and union. f_step must take in two arguments: the most recent intersection node's entry/exit status and a boolean that is true if we are currently tracing a_list and false if we are tracing b_list. The functions used for each clipping operation are follows: - Intersection: (x, y) -> x ? 1 : (-1) - Difference: (x, y) -> (x ⊻ y) ? 1 : (-1) - Union: (x, y) -> x ? (-1) : 1

A list of GeoInterface polygons is returned from this function.

Note: poly_a and poly_b are temporary inputs used for debugging and can be removed eventually.

julia
function _trace_polynodes(::Type{T}, a_list, b_list, a_idx_list, f_step, poly_a, poly_b) where T
+    n_a_pts, n_b_pts = length(a_list), length(b_list)
+    total_pts = n_a_pts + n_b_pts
+    n_cross_pts = length(a_idx_list)
+    return_polys = Vector{_get_poly_type(T)}(undef, 0)

Keep track of number of processed intersection points

julia
    visited_pts = 0
+    processed_pts = 0
+    first_idx = 1
+    while processed_pts < n_cross_pts
+        curr_list, curr_npoints = a_list, n_a_pts
+        on_a_list = true

Find first unprocessed intersecting point in subject polygon

julia
        visited_pts += 1
+        processed_pts += 1
+        first_idx = findnext(x -> x != 0, a_idx_list, first_idx)
+        idx = a_idx_list[first_idx]
+        a_idx_list[first_idx] = 0
+        start_pt = a_list[idx]

Set first point in polygon

julia
        curr = curr_list[idx]
+        pt_list = [curr.point]
+
+        curr_not_start = true
+        while curr_not_start
+            step = f_step(curr.ent_exit, on_a_list)

changed curr_not_intr to curr_not_same_ent_flag

julia
            same_status, prev_status = true, curr.ent_exit
+            while same_status
+                @assert visited_pts < total_pts "Clipping tracing hit every point - clipping error. Please open an issue with polygons: $(GI.coordinates(poly_a)) and $(GI.coordinates(poly_b))."

Traverse polygon either forwards or backwards

julia
                idx += step
+                idx = (idx > curr_npoints) ? mod(idx, curr_npoints) : idx
+                idx = (idx == 0) ? curr_npoints : idx

Get current node and add to pt_list

julia
                curr = curr_list[idx]
+                push!(pt_list, curr.point)
+                if (curr.crossing || curr.endpoint != not_endpoint)

Keep track of processed intersection points

julia
                    same_status = curr.ent_exit == prev_status
+                    curr_not_start = curr != start_pt && curr != b_list[start_pt.neighbor]
+                    !curr_not_start && break
+                    if (on_a_list && curr.crossing) || (!on_a_list && a_list[curr.neighbor].crossing)
+                        processed_pts += 1
+                        a_idx_list[curr.idx] = 0
+                    end
+                end
+                visited_pts += 1
+            end

Switch to next list and next point

julia
            curr_list, curr_npoints = on_a_list ? (b_list, n_b_pts) : (a_list, n_a_pts)
+            on_a_list = !on_a_list
+            idx = curr.neighbor
+            curr = curr_list[idx]
+        end
+        push!(return_polys, GI.Polygon([pt_list]))
+    end
+    return return_polys
+end

Get type of polygons that will be made TODO: Increase type options

julia
_get_poly_type(::Type{T}) where T =
+    GI.Polygon{false, false, Vector{GI.LinearRing{false, false, Vector{Tuple{T, T}}, Nothing, Nothing}}, Nothing, Nothing}
_find_non_cross_orientation(a_list, b_list, a_poly, b_poly; exact)

For polygons with no crossing intersection points, either one polygon is inside of another, or they are separate polygons with no intersection (other than an edge or point).

Return two booleans that represent if a is inside b (potentially with shared edges / points) and visa versa if b is inside of a.

julia
function _find_non_cross_orientation(a_list, b_list, a_poly, b_poly; exact)
+    non_intr_a_idx = findfirst(x -> !x.inter, a_list)
+    non_intr_b_idx = findfirst(x -> !x.inter, b_list)
+    #= Determine if non-intersection point is in or outside of polygon - if there isn't A
+    non-intersection point, then all points are on the polygon edge =#
+    a_pt_orient = isnothing(non_intr_a_idx) ? point_on :
+        _point_filled_curve_orientation(a_list[non_intr_a_idx].point, b_poly; exact)
+    b_pt_orient = isnothing(non_intr_b_idx) ? point_on :
+        _point_filled_curve_orientation(b_list[non_intr_b_idx].point, a_poly; exact)
+    a_in_b = a_pt_orient != point_out && b_pt_orient != point_in
+    b_in_a = b_pt_orient != point_out && a_pt_orient != point_in
+    return a_in_b, b_in_a
+end
_add_holes_to_polys!(::Type{T}, return_polys, hole_iterator, remove_poly_idx; exact)

The holes specified by the hole iterator are added to the polygons in the return_polys list. If this creates more polygons, they are added to the end of the list. If this removes polygons, they are removed from the list

julia
function _add_holes_to_polys!(::Type{T}, return_polys, hole_iterator, remove_poly_idx; exact) where T
+    n_polys = length(return_polys)
+    remove_hole_idx = Int[]

Remove set of holes from all polygons

julia
    for i in 1:n_polys
+        n_new_per_poly = 0
+        for curr_hole in Iterators.map(tuples, hole_iterator) # loop through all holes

loop through all pieces of original polygon (new pieces added to end of list)

julia
            for j in Iterators.flatten((i:i, (n_polys + 1):(n_polys + n_new_per_poly)))
+                curr_poly = return_polys[j]
+                remove_poly_idx[j] && continue
+                curr_poly_ext = GI.nhole(curr_poly) > 0 ? GI.Polygon(StaticArrays.SVector(GI.getexterior(curr_poly))) : curr_poly
+                in_ext, on_ext, out_ext = _line_polygon_interactions(curr_hole, curr_poly_ext; exact, closed_line = true)
+                if in_ext  # hole is at least partially within the polygon's exterior
+                    new_hole, new_hole_poly, n_new_pieces = _combine_holes!(T, curr_hole, curr_poly, return_polys, remove_hole_idx)
+                    if n_new_pieces > 0
+                        append!(remove_poly_idx, falses(n_new_pieces))
+                        n_new_per_poly += n_new_pieces
+                    end
+                    if !on_ext && !out_ext  # hole is completely within exterior
+                        push!(curr_poly.geom, new_hole)
+                    else  # hole is partially within and outside of polygon's exterior
+                        new_polys = difference(curr_poly_ext, new_hole_poly, T; target=GI.PolygonTrait())
+                        n_new_polys = length(new_polys) - 1

replace original

julia
                        curr_poly.geom[1] = GI.getexterior(new_polys[1])
+                        append!(curr_poly.geom, GI.gethole(new_polys[1]))
+                        if n_new_polys > 0  # add any extra pieces
+                            append!(return_polys, @view new_polys[2:end])
+                            append!(remove_poly_idx, falses(n_new_polys))
+                            n_new_per_poly += n_new_polys
+                        end
+                    end

polygon is completely within hole

julia
                elseif coveredby(curr_poly_ext, GI.Polygon(StaticArrays.SVector(curr_hole)))
+                    remove_poly_idx[j] = true
+                end
+            end
+        end
+        n_polys += n_new_per_poly
+    end

Remove all polygon that were marked for removal

julia
    deleteat!(return_polys, remove_poly_idx)
+    return
+end
_combine_holes!(::Type{T}, new_hole, curr_poly, return_polys)

The new hole is combined with any existing holes in curr_poly. The holes can be combined into a larger hole if they are intersecting. If this happens, then the new, combined hole is returned with the original holes making up the new hole removed from curr_poly. Additionally, if the combined holes form a ring, the interior is added to the return_polys as a new polygon piece. Additionally, holes leftover after combination will be checked for it they are in the "main" polygon or in one of these new pieces and moved accordingly.

If the holes don't touch or curr_poly has no holes, then new_hole is returned without any changes.

julia
function _combine_holes!(::Type{T}, new_hole, curr_poly, return_polys, remove_hole_idx) where T
+    n_new_polys = 0
+    empty!(remove_hole_idx)
+    new_hole_poly = GI.Polygon(StaticArrays.SVector(new_hole))

Combine any existing holes in curr_poly with new hole

julia
    for (k, old_hole) in enumerate(GI.gethole(curr_poly))
+        old_hole_poly = GI.Polygon(StaticArrays.SVector(old_hole))
+        if intersects(new_hole_poly, old_hole_poly)

If the holes intersect, combine them into a bigger hole

julia
            hole_union = union(new_hole_poly, old_hole_poly, T; target = GI.PolygonTrait())[1]
+            push!(remove_hole_idx, k + 1)
+            new_hole = GI.getexterior(hole_union)
+            new_hole_poly = GI.Polygon(StaticArrays.SVector(new_hole))
+            n_pieces = GI.nhole(hole_union)
+            if n_pieces > 0  # if the hole has a hole, then this is a new polygon piece!
+                append!(return_polys, [GI.Polygon([h]) for h in GI.gethole(hole_union)])
+                n_new_polys += n_pieces
+            end
+        end
+    end

Remove redundant holes

julia
    deleteat!(curr_poly.geom, remove_hole_idx)
+    empty!(remove_hole_idx)

If new polygon pieces created, make sure remaining holes are in the correct piece

julia
    @views for piece in return_polys[end - n_new_polys + 1:end]
+        for (k, old_hole) in enumerate(GI.gethole(curr_poly))
+            if !(k in remove_hole_idx) && within(old_hole, piece)
+                push!(remove_hole_idx, k + 1)
+                push!(piece.geom, old_hole)
+            end
+        end
+    end
+    deleteat!(curr_poly.geom, remove_hole_idx)
+    return new_hole, new_hole_poly, n_new_polys
+end
+
+#= Remove collinear edge points, other than the first and last edge vertex, to simplify
+polygon - including both the exterior ring and any holes=#
+function _remove_collinear_points!(polys, remove_idx, poly_a, poly_b)
+    for (i, poly) in Iterators.reverse(enumerate(polys))
+        for (j, ring) in Iterators.reverse(enumerate(GI.getring(poly)))
+            n = length(ring.geom)

resize and reset removing index buffer

julia
            resize!(remove_idx, n)
+            fill!(remove_idx, false)
+            local p1, p2
+            for (i, p) in enumerate(ring.geom)
+                if i == 1
+                    p1 = p
+                    continue
+                elseif i == 2
+                    p2 = p
+                    continue
+                else
+                    p3 = p

check if p2 is approximately on the edge formed by p1 and p3 - remove if so

julia
                    if Predicates.orient(p1, p2, p3; exact = _False()) == 0
+                        remove_idx[i - 1] = true
+                    end
+                end
+                p1, p2 = p2, p3
+            end

Check if the first point (which is repeated as the last point) is needed

julia
            if Predicates.orient(ring.geom[end - 1], ring.geom[1], ring.geom[2]; exact = _False()) == 0
+                remove_idx[1], remove_idx[end] = true, true
+            end

Remove unneeded collinear points

julia
            deleteat!(ring.geom, remove_idx)

Check if enough points are left to form a polygon

julia
            if length(ring.geom)  (remove_idx[1] ? 2 : 3)
+                if j == 1
+                    deleteat!(polys, i)
+                    break
+                else
+                    deleteat!(poly.geom, j)
+                    continue
+                end
+            end
+            if remove_idx[1]  # make sure the last point is repeated
+                push!(ring.geom, ring.geom[1])
+            end
+        end
+    end
+    return
+end

This page was generated using Literate.jl.

`,175),p=[t];function l(k,e,E,r,d,g){return a(),i("div",null,p)}const c=s(h,[["render",l]]);export{o as __pageData,c as default}; diff --git a/previews/PR195/assets/source_methods_clipping_clipping_processor.md.DEdPT5AQ.lean.js b/previews/PR195/assets/source_methods_clipping_clipping_processor.md.DEdPT5AQ.lean.js new file mode 100644 index 000000000..d7ab98c80 --- /dev/null +++ b/previews/PR195/assets/source_methods_clipping_clipping_processor.md.DEdPT5AQ.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const o=JSON.parse('{"title":"Polygon clipping helpers","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/clipping/clipping_processor.md","filePath":"source/methods/clipping/clipping_processor.md","lastUpdated":null}'),h={name:"source/methods/clipping/clipping_processor.md"},t=n("",175),p=[t];function l(k,e,E,r,d,g){return a(),i("div",null,p)}const c=s(h,[["render",l]]);export{o as __pageData,c as default}; diff --git a/previews/PR195/assets/source_methods_clipping_coverage.md.CbA11gxz.js b/previews/PR195/assets/source_methods_clipping_coverage.md.CbA11gxz.js new file mode 100644 index 000000000..6ed91b516 --- /dev/null +++ b/previews/PR195/assets/source_methods_clipping_coverage.md.CbA11gxz.js @@ -0,0 +1,223 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const h="/GeometryOps.jl/previews/PR195/assets/tvdutpc.Cb0_DiYE.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/clipping/coverage.md","filePath":"source/methods/clipping/coverage.md","lastUpdated":null}'),l={name:"source/methods/clipping/coverage.md"},k=n(`
julia
export coverage

What is coverage?

Coverage is the amount of geometry area within a bounding box defined by the minimum and maximum x and y-coordinates of that bounding box, or an Extent containing that information.

To provide an example, consider this rectangle:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+rect = GI.Polygon([[(-1,0), (-1,1), (1,1), (1,0), (-1,0)]])
+cell = GI.Polygon([[(0, 0), (0, 2), (2, 2), (2, 0), (0, 0)]])
+xmin, xmax, ymin, ymax = 0, 2, 0, 2
+f, a, p = poly(collect(GI.getpoint(cell)); axis = (; aspect = DataAspect()))
+poly!(collect(GI.getpoint(rect)))
+f

It is clear that half of the polygon is within the cell, so the coverage should be 1.0, half of the area of the rectangle.

julia
GO.coverage(rect, xmin, xmax, ymin, ymax)
1.0

Implementation

This is the GeoInterface-compatible implementation. First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait. This is also used in the implementation, since it's a lot less work!

Note that the coverage is zero for all points and curves, even if the curves are closed like with a linear ring.

Targets for applys functions

julia
const _COVERAGE_TARGETS = TraitTarget{Union{GI.PolygonTrait,GI.AbstractCurveTrait,GI.MultiPointTrait,GI.PointTrait}}()

Wall types for coverage

julia
const UNKNOWN, NORTH, EAST, SOUTH, WEST = 0:4
+
+"""
+    coverage(geom, xmin, xmax, ymin, ymax, [T = Float64])::T
+
+Returns the area of intersection between given geometry and grid cell defined by its minimum
+and maximum x and y-values. This is computed differently for different geometries:
+
+- The signed area of a point is always zero.
+- The signed area of a curve is always zero.
+- The signed area of a polygon is calculated by tracing along its edges and switching to the
+    cell edges if needed.
+- The coverage of a geometry collection, multi-geometry, feature collection of
+    array/iterable is the sum of the coverages of all of the sub-geometries.
+
+Result will be of type T, where T is an optional argument with a default value
+of Float64.
+"""
+function coverage(geom, xmin, xmax, ymin, ymax,::Type{T} = Float64; threaded=false) where T <: AbstractFloat
+    applyreduce(+, _COVERAGE_TARGETS, geom; threaded, init=zero(T)) do g
+        _coverage(T, GI.trait(g), g, T(xmin), T(xmax), T(ymin), T(ymax))
+    end
+end
+
+function coverage(geom, cell_ext::Extents.Extent, ::Type{T} = Float64; threaded=false) where T <: AbstractFloat
+    (xmin, xmax), (ymin, ymax) = values(cell_ext)
+    return coverage(geom, xmin, xmax, ymin, ymax, T; threaded = threaded)
+end

Points, MultiPoints, Curves, MultiCurves

julia
_coverage(::Type{T}, ::GI.AbstractGeometryTrait, geom, xmin, xmax, ymin, ymax; kwargs...) where T = zero(T)

Polygons

julia
function _coverage(::Type{T}, ::GI.PolygonTrait, poly, xmin, xmax, ymin, ymax; exact = _False()) where T
+    GI.isempty(poly) && return zero(T)
+    cov_area = _coverage(T, GI.getexterior(poly), xmin, xmax, ymin, ymax; exact)
+    cov_area == 0 && return cov_area

Remove hole coverage from total

julia
    for hole in GI.gethole(poly)
+        cov_area -= _coverage(T, hole, xmin, xmax, ymin, ymax; exact)
+    end
+    return cov_area
+end
+
+#= Calculates the area of the filled ring within the cell defined by corners with (xmin, ymin),
+(xmin, ymax), (xmax, ymax), and (xmax, ymin). =#
+function _coverage(::Type{T}, ring, xmin, xmax, ymin, ymax; exact) where T
+    cov_area = zero(T)
+    unmatched_out_wall, unmatched_out_point = UNKNOWN, (zero(T), zero(T))
+    unmatched_in_wall, unmatched_in_point = unmatched_out_wall, unmatched_out_point

Loop over edges of polygon

julia
    start_idx = 1
+    for (i, p) in enumerate(GI.getpoint(ring))
+        if !_point_in_cell(p, xmin, xmax, ymin, ymax)
+            start_idx = i
+            break
+        end
+    end
+    ring_cw = isclockwise(ring)
+    p1 = _tuple_point(GI.getpoint(ring, start_idx), T)

Must rotate clockwise for the algorithm to work

julia
    point_idx = ring_cw ? Iterators.flatten((start_idx + 1:GI.npoint(ring), 1:start_idx)) :
+        Iterators.flatten((start_idx - 1:-1:1, GI.npoint(ring):-1:start_idx))
+    for i in point_idx
+        p2 = _tuple_point(GI.getpoint(ring, i), T)

Determine if edge points are within the cell

julia
        p1_in_cell = _point_in_cell(p1, xmin, xmax, ymin, ymax)
+        p2_in_cell = _point_in_cell(p2, xmin, xmax, ymin, ymax)

If entire line segment is inside cell

julia
        if p1_in_cell && p2_in_cell
+            cov_area += _area_component(p1, p2)
+            p1 = p2
+            continue
+        end

If edge passes outside of rectangle, determine which edge segments are added

julia
        inter1, inter2 = _line_intersect_cell(T, p1, p2, xmin, xmax, ymin, ymax)

Endpoints of segment within the cell and wall they are on if known

julia
        (start_wall, start_point), (end_wall, end_point) =
+            if p1_in_cell
+                ((UNKNOWN, p1), inter1)
+            elseif p2_in_cell
+                (inter1, (UNKNOWN, p2))
+            else
+                i1_to_p1 = _squared_euclid_distance(T, inter1[2], p1)
+                i2_to_p1 = _squared_euclid_distance(T, inter2[2], p1)
+                i1_to_p1 < i2_to_p1 ? (inter1, inter2) : (inter2, inter1)
+            end

Add edge component

julia
        cov_area += _area_component(start_point, end_point)
+
+        if start_wall != UNKNOWN  # p1 out of cell
+            if unmatched_out_wall == UNKNOWN
+                unmatched_in_point = start_point
+                unmatched_in_wall = start_wall
+            else
+                check_point = find_point_on_cell(unmatched_out_point, start_point,
+                    unmatched_out_wall, start_wall,xmin, xmax, ymin, ymax)
+                if _point_filled_curve_orientation(check_point, ring; in = true, on = false, out = false, exact)
+                    cov_area += connect_edges(T, unmatched_out_point, start_point,
+                        unmatched_out_wall, start_wall,xmin, xmax, ymin, ymax)
+                else
+                    cov_area += connect_edges(T, unmatched_out_point, unmatched_in_point,
+                        unmatched_out_wall, unmatched_in_wall,xmin, xmax, ymin, ymax)
+                    unmatched_out_wall == UNKNOWN
+                end
+            end
+        end
+        if end_wall != UNKNOWN  # p2 out of cell
+            unmatched_out_wall, unmatched_out_point = end_wall, end_point
+        end
+        p1 = p2
+    end

if unmatched in-point at beginning, close polygon with last out point

julia
    if unmatched_in_wall != UNKNOWN
+        cov_area += connect_edges(T, unmatched_out_point, unmatched_in_point,
+            unmatched_out_wall, unmatched_in_wall,xmin, xmax, ymin, ymax)
+    end
+    cov_area = abs(cov_area) / 2

if grid cell is within polygon then the area is grid cell area

julia
    if cov_area == 0
+        if _point_filled_curve_orientation((xmin, ymin), ring; in = true, on = true, out = false, exact)
+            cov_area = abs((xmax - xmin) * (ymax - ymin))
+        end
+    end
+    return cov_area
+end

Returns true of the given point is within the bounding box determined by x and y values

julia
_point_in_cell(p, xmin, xmax, ymin, ymax) = xmin <= GI.x(p) <= xmax && ymin <= GI.y(p) <= ymax

Returns true if b is between a and c, exclusive of the maximum value, else false.

julia
_between(b, a, c) = a  b < c || c  b < a
+
+#= Determine intersections of the line from (x1, y1) to (x2, y2) with the bounding box
+defined by the minimum and maximum x/y values. Since we are dealing with a single line
+segment, we know that there is at maximum two intersection points.
+
+For each intersection point that we find, return the wall that it passes through, as well as
+the intersection point itself as a a tuple. If an intersection point isn't found, return the
+wall as UNKNOWN and the point as a pair of zeros. =#
+function _line_intersect_cell(::Type{T}, (x1, y1), (x2, y2), xmin, xmax, ymin, ymax) where T
+    Δx, Δy = x2 - x1, y2 - y1
+    inter1 = (UNKNOWN, (zero(T), zero(T)))
+    inter2 = inter1
+    if Δx == 0  # If line is vertical, only consider north and south
+        if xmin  x1  xmax
+            inter1 = _between(ymax, y1, y2) ? (NORTH, (x1, ymax)) : inter1
+            inter2 = _between(ymin, y1, y2) ? (SOUTH, (x1, ymin)) : inter2
+        end
+    elseif Δy == 0 # If line is horizontal, only consider east and west
+        if ymin  y1  ymax
+            inter1 = _between(xmax, x1, x2) ? (EAST, (xmax, y1)) : inter1
+            inter2 = _between(xmin, x1, x2) ? (WEST, (xmin, y1)) : inter2
+        end
+    else  # Line is tilted, must consider all edges, but only two can intersect
+        m = Δy / Δx
+        b = y1 - m * x1

Calculate and check potential intersections

julia
        xn = (ymax - b) / m
+        if xmin  xn  xmax && _between(xn, x1, x2) && _between(ymax, y1, y2)
+            inter1 = (NORTH, (xn, ymax))
+        end
+        xs = (ymin - b) / m
+        if xmin  xs  xmax && _between(xs, x1, x2) && _between(ymin, y1, y2)
+            new_intr = (SOUTH, (xs, ymin))
+            (inter1[1] == UNKNOWN) ? (inter1 = new_intr) : (inter2 = new_intr)
+        end
+        ye =  m * xmax + b
+        if ymin  ye  ymax && _between(ye, y1, y2) && _between(xmax, x1, x2)
+            new_intr = (EAST, (xmax, ye))
+            (inter1[1] == UNKNOWN) ? (inter1 = new_intr) : (inter2 = new_intr)
+        end
+        yw = m * xmin + b
+        if ymin  yw  ymax && _between(yw, y1, y2) && _between(xmin, x1, x2)
+            new_intr = (WEST, (xmin, yw))
+            (inter1[1] == UNKNOWN) ? (inter1 = new_intr) : (inter2 = new_intr)
+        end
+    end
+    if inter1[1] == UNKNOWN  # first intersection must be known, if one exists
+        inter1, inter2 = inter2, inter1
+    end
+    return inter1, inter2
+end

Finds point of cell edge between p1 and p2 given which walls they are on

julia
function find_point_on_cell(p1, p2, wall1, wall2, xmin, xmax, ymin, ymax)
+    x1, y1 = p1
+    x2, y2 = p2
+    mid_point = if wall1 == wall2 && _is_clockwise_from(p1, p2, wall1)
+        (x1 + x2) / 2, (y1 + y2) / 2
+    elseif wall1 == NORTH
+        (xmax, ymax)
+    elseif wall1 == EAST
+        (xmax, ymin)
+    elseif wall1 == SOUTH
+        (xmin, ymin)
+    else
+        (xmin, ymax)
+    end
+    return mid_point
+end
+
+#= Area component of shoelace formula coming from the distance between point 1 and point 2
+along grid cell walls in between the two points. =#
+function connect_edges(::Type{T}, p1, p2, wall1, wall2, xmin, xmax, ymin, ymax) where {T}
+    connect_area = zero(T)
+    if wall1 == wall2 && _is_clockwise_from(p1, p2, wall1)
+        connect_area += _area_component(p1, p2)
+    else

From the point to the corner of wall 1

julia
        connect_area += _partial_edge_out_area(p1, xmin, xmax, ymin, ymax, wall1)

Any intermediate walls (full length)

julia
        next_wall, last_wall = wall1 + 1, wall2 - 1
+        if wall2 > wall1
+            for wall in next_wall:last_wall
+                connect_area += _full_edge_area(xmin, xmax, ymin, ymax, wall)
+            end
+        else
+            for wall in Iterators.flatten((next_wall:WEST, NORTH:last_wall))
+                connect_area += _full_edge_area(xmin, xmax, ymin, ymax, wall)
+            end
+        end

From the corner of wall 2 to the point

julia
        connect_area += _partial_edge_in_area(p2, xmin, xmax, ymin, ymax, wall2)
+    end
+    return connect_area
+end

True if (x1, y1) is clockwise from (x2, y2) on the same wall

julia
_is_clockwise_from((x1, y1), (x2, y2), wall) = (wall == NORTH && x2 > x1) ||
+    (wall == EAST && y2 < y1) || (wall == SOUTH && x2 < x1) || (wall == WEST && y2 > y1)
+
+#= Returns the area component of a full edge of the bounding box defined by the min and max
+values and the wall. =#
+_full_edge_area(xmin, xmax, ymin, ymax, wall) = if wall == NORTH
+        ymax * (xmin - xmax)
+    elseif wall == EAST
+        xmax * (ymin - ymax)
+    elseif wall == SOUTH
+        ymin * (xmax - xmin)
+    else
+        xmin * (ymax - ymin)
+    end
+
+#= Returns the area component of part of one wall, from its "starting corner" (going
+clockwise) to the point (x2, y2). =#
+function _partial_edge_in_area((x2, y2), xmin, xmax, ymin, ymax, wall)
+    x_wall = (wall == NORTH || wall == WEST) ? xmin : xmax
+    y_wall = (wall == NORTH || wall == EAST) ? ymax : ymin
+    return x_wall * y2 - x2 * y_wall
+end
+
+#= Returns the area component of part of one wall, from the point (x1, y1) to its
+"ending corner" (going clockwise). =#
+function _partial_edge_out_area((x1, y1), xmin, xmax, ymin, ymax, wall)
+    x_wall = (wall == NORTH || wall == EAST) ? xmax : xmin
+    y_wall = (wall == NORTH || wall == WEST) ? ymax : ymin
+    return x1 * y_wall - x_wall * y1
+end

This page was generated using Literate.jl.

`,58),p=[k];function t(e,E,r,d,g,y){return a(),i("div",null,p)}const o=s(l,[["render",t]]);export{c as __pageData,o as default}; diff --git a/previews/PR195/assets/source_methods_clipping_coverage.md.CbA11gxz.lean.js b/previews/PR195/assets/source_methods_clipping_coverage.md.CbA11gxz.lean.js new file mode 100644 index 000000000..f319376d5 --- /dev/null +++ b/previews/PR195/assets/source_methods_clipping_coverage.md.CbA11gxz.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const h="/GeometryOps.jl/previews/PR195/assets/tvdutpc.Cb0_DiYE.png",c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/clipping/coverage.md","filePath":"source/methods/clipping/coverage.md","lastUpdated":null}'),l={name:"source/methods/clipping/coverage.md"},k=n("",58),p=[k];function t(e,E,r,d,g,y){return a(),i("div",null,p)}const o=s(l,[["render",t]]);export{c as __pageData,o as default}; diff --git a/previews/PR195/assets/source_methods_clipping_cut.md.n40IAodq.js b/previews/PR195/assets/source_methods_clipping_cut.md.n40IAodq.js new file mode 100644 index 000000000..8469349d9 --- /dev/null +++ b/previews/PR195/assets/source_methods_clipping_cut.md.n40IAodq.js @@ -0,0 +1,87 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const h="/GeometryOps.jl/previews/PR195/assets/wtvkxng.DNlR-NUq.png",c=JSON.parse('{"title":"Polygon cutting","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/clipping/cut.md","filePath":"source/methods/clipping/cut.md","lastUpdated":null}'),t={name:"source/methods/clipping/cut.md"},l=n(`

Polygon cutting

julia
export cut

What is cut?

The cut function cuts a polygon through a line segment. This is inspired by functions such as Matlab's cutpolygon function.

To provide an example, consider the following polygon and line:

julia
import GeoInterface as GI, GeometryOps as GO
+using CairoMakie
+using Makie
+
+poly = GI.Polygon([[(0.0, 0.0), (10.0, 0.0), (10.0, 10.0), (0.0, 10.0), (0.0, 0.0)]])
+line = GI.Line([(5.0, -5.0), (5.0, 15.0)])
+cut_polys = GO.cut(poly, line)
+
+f, a, p1 = Makie.poly(collect(GI.getpoint(cut_polys[1])); color = (:blue, 0.5))
+Makie.poly!(collect(GI.getpoint(cut_polys[2])); color = (:orange, 0.5))
+Makie.lines!(GI.getpoint(line); color = :black)
+f

Implementation

This function depends on polygon clipping helper function and is inspired by the Greiner-Hormann clipping algorithm used elsewhere in this library. The inspiration came from this Stack Overflow discussion.

julia
"""
+    cut(geom, line, [T::Type])
+
+Return given geom cut by given line as a list of geometries of the same type as the input
+geom. Return the original geometry as only list element if none are found. Line must cut
+fully through given geometry or the original geometry will be returned.
+
+Note: This currently doesn't work for degenerate cases there line crosses through vertices.
+
+# Example
+
+\`\`\`jldoctest
+import GeoInterface as GI, GeometryOps as GO
+
+poly = GI.Polygon([[(0.0, 0.0), (10.0, 0.0), (10.0, 10.0), (0.0, 10.0), (0.0, 0.0)]])
+line = GI.Line([(5.0, -5.0), (5.0, 15.0)])
+cut_polys = GO.cut(poly, line)
+GI.coordinates.(cut_polys)

output

julia
2-element Vector{Vector{Vector{Vector{Float64}}}}:
+ [[[0.0, 0.0], [5.0, 0.0], [5.0, 10.0], [0.0, 10.0], [0.0, 0.0]]]
+ [[[5.0, 0.0], [10.0, 0.0], [10.0, 10.0], [5.0, 10.0], [5.0, 0.0]]]
+\`\`\`
+"""
+cut(geom, line, ::Type{T} = Float64) where {T <: AbstractFloat} =
+    _cut(T, GI.trait(geom), geom, GI.trait(line), line; exact = _True())
+
+#= Cut a given polygon by given line. Add polygon holes back into resulting pieces if there
+are any holes. =#
+function _cut(::Type{T}, ::GI.PolygonTrait, poly, ::GI.LineTrait, line; exact) where T
+    ext_poly = GI.getexterior(poly)
+    poly_list, intr_list = _build_a_list(T, ext_poly, line; exact)
+    n_intr_pts = length(intr_list)

If an impossible number of intersection points, return original polygon

julia
    if n_intr_pts < 2 || isodd(n_intr_pts)
+        return [tuples(poly)]
+    end

Cut polygon by line

julia
    cut_coords = _cut(T, ext_poly, line, poly_list, intr_list, n_intr_pts; exact)

Close coords and create polygons

julia
    for c in cut_coords
+        push!(c, c[1])
+    end
+    cut_polys = [GI.Polygon([c]) for c in cut_coords]

Add original polygon holes back in

julia
    remove_idx = falses(length(cut_polys))
+    _add_holes_to_polys!(T, cut_polys, GI.gethole(poly), remove_idx; exact)
+    return cut_polys
+end

Many types aren't implemented

julia
function _cut(::Type{T}, trait::GI.AbstractTrait, geom, line; kwargs...) where T
+    @assert(
+        false,
+        "Cutting of $trait isn't implemented yet.",
+    )
+    return nothing
+end
+
+#= Cutting algorithm inspired by Greiner and Hormann clipping algorithm. Returns coordinates
+of cut geometry in Vector{Vector{Tuple}} format.
+
+Note: degenerate cases where intersection points are vertices do not work right now. =#
+function _cut(::Type{T}, geom, line, geom_list, intr_list, n_intr_pts; exact) where T

Sort and categorize the intersection points

julia
    sort!(intr_list, by = x -> geom_list[x].fracs[2])
+    _flag_ent_exit!(GI.LineTrait(), line, geom_list; exact)

Add first point to output list

julia
    return_coords = [[geom_list[1].point]]
+    cross_backs = [(T(Inf),T(Inf))]
+    poly_idx = 1
+    n_polys = 1

Walk around original polygon to find split polygons

julia
    for (pt_idx, curr) in enumerate(geom_list)
+        if pt_idx > 1
+            push!(return_coords[poly_idx], curr.point)
+        end
+        if curr.inter

Find cross back point for current polygon

julia
            intr_idx = findfirst(x -> equals(curr.point, geom_list[x].point), intr_list)
+            cross_idx = intr_idx + (curr.ent_exit ? 1 : -1)
+            cross_idx = cross_idx < 1 ? n_intr_pts : cross_idx
+            cross_idx = cross_idx > n_intr_pts ? 1 : cross_idx
+            cross_backs[poly_idx] = geom_list[intr_list[cross_idx]].point

Check if current point is a cross back point

julia
            next_poly_idx = findfirst(x -> equals(x, curr.point), cross_backs)
+            if isnothing(next_poly_idx)
+                push!(return_coords, [curr.point])
+                push!(cross_backs, curr.point)
+                n_polys += 1
+                poly_idx = n_polys
+            else
+                push!(return_coords[next_poly_idx], curr.point)
+                poly_idx = next_poly_idx
+            end
+        end
+    end
+    return return_coords
+end

This page was generated using Literate.jl.

`,34),p=[l];function k(e,r,E,d,g,y){return a(),i("div",null,p)}const F=s(t,[["render",k]]);export{c as __pageData,F as default}; diff --git a/previews/PR195/assets/source_methods_clipping_cut.md.n40IAodq.lean.js b/previews/PR195/assets/source_methods_clipping_cut.md.n40IAodq.lean.js new file mode 100644 index 000000000..7234abd2e --- /dev/null +++ b/previews/PR195/assets/source_methods_clipping_cut.md.n40IAodq.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const h="/GeometryOps.jl/previews/PR195/assets/wtvkxng.DNlR-NUq.png",c=JSON.parse('{"title":"Polygon cutting","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/clipping/cut.md","filePath":"source/methods/clipping/cut.md","lastUpdated":null}'),t={name:"source/methods/clipping/cut.md"},l=n("",34),p=[l];function k(e,r,E,d,g,y){return a(),i("div",null,p)}const F=s(t,[["render",k]]);export{c as __pageData,F as default}; diff --git a/previews/PR195/assets/source_methods_clipping_difference.md.CrhFy5Cm.js b/previews/PR195/assets/source_methods_clipping_difference.md.CrhFy5Cm.js new file mode 100644 index 000000000..8d002ab94 --- /dev/null +++ b/previews/PR195/assets/source_methods_clipping_difference.md.CrhFy5Cm.js @@ -0,0 +1,166 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const o=JSON.parse('{"title":"Difference Polygon Clipping","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/clipping/difference.md","filePath":"source/methods/clipping/difference.md","lastUpdated":null}'),l={name:"source/methods/clipping/difference.md"},p=n(`

Difference Polygon Clipping

julia
export difference
+
+
+"""
+    difference(geom_a, geom_b, [T::Type]; target::Type, fix_multipoly = UnionIntersectingPolygons())
+
+Return the difference between two geometries as a list of geometries. Return an empty list
+if none are found. The type of the list will be constrained as much as possible given the
+input geometries. Furthermore, the user can provide a \`taget\` type as a keyword argument and
+a list of target geometries found in the difference will be returned. The user can also
+provide a float type that they would like the points of returned geometries to be. If the
+user is taking a intersection involving one or more multipolygons, and the multipolygon
+might be comprised of polygons that intersect, if \`fix_multipoly\` is set to an
+\`IntersectingPolygons\` correction (the default is \`UnionIntersectingPolygons()\`), then the
+needed multipolygons will be fixed to be valid before performing the intersection to ensure
+a correct answer. Only set \`fix_multipoly\` to false if you know that the multipolygons are
+valid, as it will avoid unneeded computation.
+
+# Example
+
+\`\`\`jldoctest
+import GeoInterface as GI, GeometryOps as GO
+
+poly1 = GI.Polygon([[[0.0, 0.0], [5.0, 5.0], [10.0, 0.0], [5.0, -5.0], [0.0, 0.0]]])
+poly2 = GI.Polygon([[[3.0, 0.0], [8.0, 5.0], [13.0, 0.0], [8.0, -5.0], [3.0, 0.0]]])
+diff_poly = GO.difference(poly1, poly2; target = GI.PolygonTrait())
+GI.coordinates.(diff_poly)

output

julia
1-element Vector{Vector{Vector{Vector{Float64}}}}:
+ [[[6.5, 3.5], [5.0, 5.0], [0.0, 0.0], [5.0, -5.0], [6.5, -3.5], [3.0, 0.0], [6.5, 3.5]]]
+\`\`\`
+"""
+function difference(
+    geom_a, geom_b, ::Type{T} = Float64; target=nothing, kwargs...,
+) where {T<:AbstractFloat}
+    return _difference(
+        TraitTarget(target), T, GI.trait(geom_a), geom_a, GI.trait(geom_b), geom_b;
+        exact = _True(), kwargs...,
+    )
+end
+
+#= The 'difference' function returns the difference of two polygons as a list of polygons.
+The algorithm to determine the difference was adapted from "Efficient clipping of efficient
+polygons," by Greiner and Hormann (1998). DOI: https://doi.org/10.1145/274363.274364 =#
+function _difference(
+    ::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.PolygonTrait, poly_a,
+    ::GI.PolygonTrait, poly_b;
+    exact, kwargs...
+) where T

Get the exterior of the polygons

julia
    ext_a = GI.getexterior(poly_a)
+    ext_b = GI.getexterior(poly_b)

Find the difference of the exterior of the polygons

julia
    a_list, b_list, a_idx_list = _build_ab_list(T, ext_a, ext_b, _diff_delay_cross_f, _diff_delay_bounce_f; exact)
+    polys = _trace_polynodes(T, a_list, b_list, a_idx_list, _diff_step, poly_a, poly_b)

if no crossing points, determine if either poly is inside of the other

julia
    if isempty(polys)
+        a_in_b, b_in_a = _find_non_cross_orientation(a_list, b_list, ext_a, ext_b; exact)

add case for if they polygons are the same (all intersection points!) add a find_first check to find first non-inter poly!

julia
        if b_in_a && !a_in_b  # b in a and can't be the same polygon
+            poly_a_b_hole = GI.Polygon([tuples(ext_a), tuples(ext_b)])
+            push!(polys, poly_a_b_hole)
+        elseif !b_in_a && !a_in_b # polygons don't intersect
+            push!(polys, tuples(poly_a))
+            return polys
+        end
+    end
+    remove_idx = falses(length(polys))

If the original polygons had holes, take that into account.

julia
    if GI.nhole(poly_a) != 0
+        _add_holes_to_polys!(T, polys, GI.gethole(poly_a), remove_idx; exact)
+    end
+    if GI.nhole(poly_b) != 0
+        for hole in GI.gethole(poly_b)
+            hole_poly = GI.Polygon(StaticArrays.SVector(hole))
+            new_polys = intersection(hole_poly, poly_a, T; target = GI.PolygonTrait)
+            if length(new_polys) > 0
+                append!(polys, new_polys)
+            end
+        end
+    end

Remove unneeded collinear points on same edge

julia
    _remove_collinear_points!(polys, remove_idx, poly_a, poly_b)
+    return polys
+end

Helper functions for Differences with Greiner and Hormann Polygon Clipping

julia
#= When marking the crossing status of a delayed crossing, the chain start point is crossing
+when the start point is a entry point and is a bouncing point when the start point is an
+exit point. The end of the chain has the opposite crossing / bouncing status. =#
+_diff_delay_cross_f(x) = (x, !x)
+#= When marking the crossing status of a delayed bouncing, the chain start and end points
+are crossing if the current polygon's adjacent edges are within the non-tracing polygon and
+we are tracing b_list or if the edges are outside and we are on a_list. Otherwise the
+endpoints are marked as crossing. x is a boolean representing if the edges are inside or
+outside of the polygon and y is a variable that is true if we are on a_list and false if we
+are on b_list. =#
+_diff_delay_bounce_f(x, y) = x  y
+#= When tracing polygons, step forwards if the most recent intersection point was an entry
+point and we are currently tracing b_list or if it was an exit point and we are currently
+tracing a_list, else step backwards, where x is the entry/exit status and y is a variable
+that is true if we are on a_list and false if we are on b_list. =#
+_diff_step(x, y) = (x  y) ? 1 : (-1)
+
+#= Polygon with multipolygon difference - note that all intersection regions between
+\`poly_a\` and any of the sub-polygons of \`multipoly_b\` are removed from \`poly_a\`. =#
+function _difference(
+    target::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.PolygonTrait, poly_a,
+    ::GI.MultiPolygonTrait, multipoly_b;
+    kwargs...,
+) where T
+    polys = [tuples(poly_a, T)]
+    for poly_b in GI.getpolygon(multipoly_b)
+        isempty(polys) && break
+        polys = mapreduce(p -> difference(p, poly_b; target), append!, polys)
+    end
+    return polys
+end
+
+#= Multipolygon with polygon difference - note that all intersection regions between
+sub-polygons of \`multipoly_a\` and \`poly_b\` will be removed from the corresponding
+sub-polygon. Unless specified with \`fix_multipoly = nothing\`, \`multipolygon_a\` will be
+validated using the given (default is \`UnionIntersectingPolygons()\`) correction. =#
+function _difference(
+    target::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.MultiPolygonTrait, multipoly_a,
+    ::GI.PolygonTrait, poly_b;
+    fix_multipoly = UnionIntersectingPolygons(), kwargs...,
+) where T
+    if !isnothing(fix_multipoly) # Fix multipoly_a to prevent returning an invalid multipolygon
+        multipoly_a = fix_multipoly(multipoly_a)
+    end
+    polys = Vector{_get_poly_type(T)}()
+    sizehint!(polys, GI.npolygon(multipoly_a))
+    for poly_a in GI.getpolygon(multipoly_a)
+        append!(polys, difference(poly_a, poly_b; target))
+    end
+    return polys
+end
+
+#= Multipolygon with multipolygon difference - note that all intersection regions between
+sub-polygons of \`multipoly_a\` and sub-polygons of \`multipoly_b\` will be removed from the
+corresponding sub-polygon of \`multipoly_a\`. Unless specified with \`fix_multipoly = nothing\`,
+\`multipolygon_a\` will be validated using the given (default is \`UnionIntersectingPolygons()\`)
+correction. =#
+function _difference(
+    target::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.MultiPolygonTrait, multipoly_a,
+    ::GI.MultiPolygonTrait, multipoly_b;
+    fix_multipoly = UnionIntersectingPolygons(), kwargs...,
+) where T
+    if !isnothing(fix_multipoly) # Fix multipoly_a to prevent returning an invalid multipolygon
+        multipoly_a = fix_multipoly(multipoly_a)
+        fix_multipoly = nothing
+    end
+    local polys
+    for (i, poly_b) in enumerate(GI.getpolygon(multipoly_b))
+        #= Removing intersections of \`multipoly_a\`\` with pieces of \`multipoly_b\`\` - as
+        pieces of \`multipolygon_a\`\` are removed, continue to take difference with new shape
+        \`polys\` =#
+        polys = if i == 1
+            difference(multipoly_a, poly_b; target, fix_multipoly)
+        else
+            difference(GI.MultiPolygon(polys), poly_b; target, fix_multipoly)
+        end
+        #= One multipoly_a has been completely covered (and thus removed) there is no need to
+        continue taking the difference =#
+        isempty(polys) && break
+    end
+    return polys
+end

Many type and target combos aren't implemented

julia
function _difference(
+    ::TraitTarget{Target}, ::Type{T},
+    trait_a::GI.AbstractTrait, geom_a,
+    trait_b::GI.AbstractTrait, geom_b,
+) where {Target, T}
+    @assert(
+        false,
+        "Difference between $trait_a and $trait_b with target $Target isn't implemented yet.",
+    )
+    return nothing
+end

This page was generated using Literate.jl.

`,22),t=[p];function h(e,k,r,d,g,y){return a(),i("div",null,t)}const F=s(l,[["render",h]]);export{o as __pageData,F as default}; diff --git a/previews/PR195/assets/source_methods_clipping_difference.md.CrhFy5Cm.lean.js b/previews/PR195/assets/source_methods_clipping_difference.md.CrhFy5Cm.lean.js new file mode 100644 index 000000000..b1164575a --- /dev/null +++ b/previews/PR195/assets/source_methods_clipping_difference.md.CrhFy5Cm.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const o=JSON.parse('{"title":"Difference Polygon Clipping","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/clipping/difference.md","filePath":"source/methods/clipping/difference.md","lastUpdated":null}'),l={name:"source/methods/clipping/difference.md"},p=n("",22),t=[p];function h(e,k,r,d,g,y){return a(),i("div",null,t)}const F=s(l,[["render",h]]);export{o as __pageData,F as default}; diff --git a/previews/PR195/assets/source_methods_clipping_intersection.md.xm82NmdL.js b/previews/PR195/assets/source_methods_clipping_intersection.md.xm82NmdL.js new file mode 100644 index 000000000..bfcfa3083 --- /dev/null +++ b/previews/PR195/assets/source_methods_clipping_intersection.md.xm82NmdL.js @@ -0,0 +1,383 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const o=JSON.parse('{"title":"Geometry Intersection","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/clipping/intersection.md","filePath":"source/methods/clipping/intersection.md","lastUpdated":null}'),t={name:"source/methods/clipping/intersection.md"},h=n(`

Geometry Intersection

julia
export intersection, intersection_points
+
+"""
+    Enum LineOrientation
+Enum for the orientation of a line with respect to a curve. A line can be
+\`line_cross\` (crossing over the curve), \`line_hinge\` (crossing the endpoint of the curve),
+\`line_over\` (collinear with the curve), or \`line_out\` (not interacting with the curve).
+"""
+@enum LineOrientation line_cross=1 line_hinge=2 line_over=3 line_out=4
+
+"""
+    intersection(geom_a, geom_b, [T::Type]; target::Type, fix_multipoly = UnionIntersectingPolygons())
+
+Return the intersection between two geometries as a list of geometries. Return an empty list
+if none are found. The type of the list will be constrained as much as possible given the
+input geometries. Furthermore, the user can provide a \`target\` type as a keyword argument and
+a list of target geometries found in the intersection will be returned. The user can also
+provide a float type that they would like the points of returned geometries to be. If the
+user is taking a intersection involving one or more multipolygons, and the multipolygon
+might be comprised of polygons that intersect, if \`fix_multipoly\` is set to an
+\`IntersectingPolygons\` correction (the default is \`UnionIntersectingPolygons()\`), then the
+needed multipolygons will be fixed to be valid before performing the intersection to ensure
+a correct answer. Only set \`fix_multipoly\` to nothing if you know that the multipolygons are
+valid, as it will avoid unneeded computation.
+
+# Example
+
+\`\`\`jldoctest
+import GeoInterface as GI, GeometryOps as GO
+
+line1 = GI.Line([(124.584961,-12.768946), (126.738281,-17.224758)])
+line2 = GI.Line([(123.354492,-15.961329), (127.22168,-14.008696)])
+inter_points = GO.intersection(line1, line2; target = GI.PointTrait())
+GI.coordinates.(inter_points)

output

julia
1-element Vector{Vector{Float64}}:
+ [125.58375366067548, -14.83572303404496]
+\`\`\`
+"""
+function intersection(
+    geom_a, geom_b, ::Type{T}=Float64; target=nothing, kwargs...,
+) where {T<:AbstractFloat}
+    return _intersection(
+        TraitTarget(target), T, GI.trait(geom_a), geom_a, GI.trait(geom_b), geom_b;
+        exact = _True(), kwargs...,
+    )
+end

Curve-Curve Intersections with target Point

julia
_intersection(
+    ::TraitTarget{GI.PointTrait}, ::Type{T},
+    trait_a::Union{GI.LineTrait, GI.LineStringTrait, GI.LinearRingTrait}, geom_a,
+    trait_b::Union{GI.LineTrait, GI.LineStringTrait, GI.LinearRingTrait}, geom_b;
+    kwargs...,
+) where T = _intersection_points(T, trait_a, geom_a, trait_b, geom_b)
+
+#= Polygon-Polygon Intersections with target Polygon
+The algorithm to determine the intersection was adapted from "Efficient clipping
+of efficient polygons," by Greiner and Hormann (1998).
+DOI: https://doi.org/10.1145/274363.274364 =#
+function _intersection(
+    ::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.PolygonTrait, poly_a,
+    ::GI.PolygonTrait, poly_b;
+    exact, kwargs...,
+) where {T}

First we get the exteriors of 'poly_a' and 'poly_b'

julia
    ext_a = GI.getexterior(poly_a)
+    ext_b = GI.getexterior(poly_b)

Then we find the intersection of the exteriors

julia
    a_list, b_list, a_idx_list = _build_ab_list(T, ext_a, ext_b, _inter_delay_cross_f, _inter_delay_bounce_f; exact)
+    polys = _trace_polynodes(T, a_list, b_list, a_idx_list, _inter_step, poly_a, poly_b)
+    if isempty(polys) # no crossing points, determine if either poly is inside the other
+        a_in_b, b_in_a = _find_non_cross_orientation(a_list, b_list, ext_a, ext_b; exact)
+        if a_in_b
+            push!(polys, GI.Polygon([tuples(ext_a)]))
+        elseif b_in_a
+            push!(polys, GI.Polygon([tuples(ext_b)]))
+        end
+    end
+    remove_idx = falses(length(polys))

If the original polygons had holes, take that into account.

julia
    if GI.nhole(poly_a) != 0 || GI.nhole(poly_b) != 0
+        hole_iterator = Iterators.flatten((GI.gethole(poly_a), GI.gethole(poly_b)))
+        _add_holes_to_polys!(T, polys, hole_iterator, remove_idx; exact)
+    end

Remove unneeded collinear points on same edge

julia
    _remove_collinear_points!(polys, remove_idx, poly_a, poly_b)
+    return polys
+end

Helper functions for Intersections with Greiner and Hormann Polygon Clipping

julia
#= When marking the crossing status of a delayed crossing, the chain start point is bouncing
+when the start point is a entry point and is a crossing point when the start point is an
+exit point. The end of the chain has the opposite crossing / bouncing status. x is the
+entry/exit status. =#
+_inter_delay_cross_f(x) = (!x, x)
+#= When marking the crossing status of a delayed bouncing, the chain start and end points
+are crossing if the current polygon's adjacent edges are within the non-tracing polygon. If
+the edges are outside then the chain endpoints are marked as bouncing. x is a boolean
+representing if the edges are inside or outside of the polygon. =#
+_inter_delay_bounce_f(x, _) = x
+#= When tracing polygons, step forward if the most recent intersection point was an entry
+point, else step backwards where x is the entry/exit status. =#
+_inter_step(x, _) =  x ? 1 : (-1)
+
+#= Polygon with multipolygon intersection - note that all intersection regions between
+\`poly_a\` and any of the sub-polygons of \`multipoly_b\` are counted as intersection polygons.
+Unless specified with \`fix_multipoly = nothing\`, \`multipolygon_b\` will be validated using
+the given (default is \`UnionIntersectingPolygons()\`) correction. =#
+function _intersection(
+    target::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.PolygonTrait, poly_a,
+    ::GI.MultiPolygonTrait, multipoly_b;
+    fix_multipoly = UnionIntersectingPolygons(), kwargs...,
+) where T
+    if !isnothing(fix_multipoly) # Fix multipoly_b to prevent duplicated intersection regions
+        multipoly_b = fix_multipoly(multipoly_b)
+    end
+    polys = Vector{_get_poly_type(T)}()
+    for poly_b in GI.getpolygon(multipoly_b)
+        append!(polys, intersection(poly_a, poly_b; target))
+    end
+    return polys
+end
+
+#= Multipolygon with polygon intersection is equivalent to taking the intersection of the
+polygon with the multipolygon and thus simply switches the order of operations and calls the
+above method. =#
+_intersection(
+    target::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.MultiPolygonTrait, multipoly_a,
+    ::GI.PolygonTrait, poly_b;
+    kwargs...,
+) where T = intersection(poly_b, multipoly_a; target , kwargs...)
+
+#= Multipolygon with multipolygon intersection - note that all intersection regions between
+any sub-polygons of \`multipoly_a\` and any of the sub-polygons of \`multipoly_b\` are counted
+as intersection polygons. Unless specified with \`fix_multipoly = nothing\`, both
+\`multipolygon_a\` and \`multipolygon_b\` will be validated using the given (default is
+\`UnionIntersectingPolygons()\`) correction. =#
+function _intersection(
+    target::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.MultiPolygonTrait, multipoly_a,
+    ::GI.MultiPolygonTrait, multipoly_b;
+    fix_multipoly = UnionIntersectingPolygons(), kwargs...,
+) where T
+    if !isnothing(fix_multipoly) # Fix both multipolygons to prevent duplicated regions
+        multipoly_a = fix_multipoly(multipoly_a)
+        multipoly_b = fix_multipoly(multipoly_b)
+        fix_multipoly = nothing
+    end
+    polys = Vector{_get_poly_type(T)}()
+    for poly_a in GI.getpolygon(multipoly_a)
+        append!(polys, intersection(poly_a, multipoly_b; target, fix_multipoly))
+    end
+    return polys
+end

Many type and target combos aren't implemented

julia
function _intersection(
+    ::TraitTarget{Target}, ::Type{T},
+    trait_a::GI.AbstractTrait, geom_a,
+    trait_b::GI.AbstractTrait, geom_b;
+    kwargs...,
+) where {Target, T}
+    @assert(
+        false,
+        "Intersection between $trait_a and $trait_b with target $Target isn't implemented yet.",
+    )
+    return nothing
+end
+
+"""
+    intersection_points(geom_a, geom_b, [T::Type])
+
+Return a list of intersection tuple points between two geometries. If no intersection points
+exist, returns an empty list.
+
+# Example
+
+\`\`\`jldoctest
+import GeoInterface as GI, GeometryOps as GO
+
+line1 = GI.Line([(124.584961,-12.768946), (126.738281,-17.224758)])
+line2 = GI.Line([(123.354492,-15.961329), (127.22168,-14.008696)])
+inter_points = GO.intersection_points(line1, line2)

output

julia
1-element Vector{Tuple{Float64, Float64}}:
+ (125.58375366067548, -14.83572303404496)
+"""
+intersection_points(geom_a, geom_b, ::Type{T} = Float64) where T <: AbstractFloat =
+    _intersection_points(T, GI.trait(geom_a), geom_a, GI.trait(geom_b), geom_b)
+
+
+#= Calculates the list of intersection points between two geometries, including line
+segments, line strings, linear rings, polygons, and multipolygons. =#
+function _intersection_points(::Type{T}, ::GI.AbstractTrait, a, ::GI.AbstractTrait, b; exact = _True()) where T

Initialize an empty list of points

julia
    result = Tuple{T, T}[]

Check if the geometries extents even overlap

julia
    Extents.intersects(GI.extent(a), GI.extent(b)) || return result

Create a list of edges from the two input geometries

julia
    edges_a, edges_b = map(sort!  to_edges, (a, b))

Loop over pairs of edges and add any unique intersection points to results

julia
    for a_edge in edges_a, b_edge in edges_b
+        line_orient, intr1, intr2 = _intersection_point(T, a_edge, b_edge; exact)
+        line_orient == line_out && continue  # no intersection points
+        pt1, _ = intr1
+        push!(result, pt1)  # if not line_out, there is at least one intersection point
+        if line_orient == line_over # if line_over, there are two intersection points
+            pt2, _ = intr2
+            push!(result, pt2)
+        end
+    end
+    #= TODO: We might be able to just add unique points with checks on the α and β values
+    returned from \`_intersection_point\`, but this would be different for curves vs polygons
+    vs multipolygons depending on if the shape is closed. This then wouldn't allow using the
+    \`to_edges\` functionality.  =#
+    unique!(sort!(result))
+    return result
+end
+
+#= Calculates the intersection points between two lines if they exists and the fractional
+component of each line from the initial end point to the intersection point where α is the
+fraction along (a1, a2) and β is the fraction along (b1, b2).
+
+Note that the first return is the type of intersection (line_cross, line_hinge, line_over,
+or line_out). The type of intersection determines how many intersection points there are.
+If the intersection is line_out, then there are no intersection points and the two
+intersections aren't valid and shouldn't be used. If the intersection is line_cross or
+line_hinge then the lines meet at one point and the first intersection is valid, while the
+second isn't. Finally, if the intersection is line_over, then both points are valid and they
+are the two points that define the endpoints of the overlapping region between the two
+lines.
+
+Also note again that each intersection is a tuple of two tuples. The first is the
+intersection point (x,y) while the second is the ratio along the initial lines (α, β) for
+that point.
+
+Calculation derivation can be found here: https://stackoverflow.com/questions/563198/ =#
+function _intersection_point(::Type{T}, (a1, a2)::Edge, (b1, b2)::Edge; exact) where T

Default answer for no intersection

julia
    line_orient = line_out
+    intr1 = ((zero(T), zero(T)), (zero(T), zero(T)))
+    intr2 = intr1
+    no_intr_result = (line_orient, intr1, intr2)

Seperate out line segment points

julia
    (a1x, a1y), (a2x, a2y) = _tuple_point(a1, T), _tuple_point(a2, T)
+    (b1x, b1y), (b2x, b2y) = _tuple_point(b1, T), _tuple_point(b2, T)

Check if envelopes of lines intersect

julia
    a_ext = Extent(X = minmax(a1x, a2x), Y = minmax(a1y, a2y))
+    b_ext = Extent(X = minmax(b1x, b2x), Y = minmax(b1y, b2y))
+    !Extents.intersects(a_ext, b_ext) && return no_intr_result

Check orientation of two line segments with respect to one another

julia
    a1_orient = Predicates.orient(b1, b2, a1; exact)
+    a2_orient = Predicates.orient(b1, b2, a2; exact)
+    a1_orient != 0 && a1_orient == a2_orient && return no_intr_result  # α < 0 or α > 1
+    b1_orient = Predicates.orient(a1, a2, b1; exact)
+    b2_orient = Predicates.orient(a1, a2, b2; exact)
+    b1_orient != 0 && b1_orient == b2_orient && return no_intr_result  # β < 0 or β > 1

Determine intersection type and intersection point(s)

julia
    if a1_orient == a2_orient == b1_orient == b2_orient == 0

Intersection is collinear if all endpoints lie on the same line

julia
        line_orient, intr1, intr2 = _find_collinear_intersection(T, a1, a2, b1, b2, a_ext, b_ext, no_intr_result)
+    elseif a1_orient == 0 || a2_orient == 0 || b1_orient == 0 || b2_orient == 0

Intersection is a hinge if the intersection point is an endpoint

julia
        line_orient = line_hinge
+        intr1 = _find_hinge_intersection(T, a1, a2, b1, b2, a1_orient, a2_orient, b1_orient)
+    else

Intersection is a cross if there is only one non-endpoint intersection point

julia
        line_orient = line_cross
+        intr1 = _find_cross_intersection(T, a1, a2, b1, b2, a_ext, b_ext)
+    end
+    return line_orient, intr1, intr2
+end
+
+#= If lines defined by (a1, a2) and (b1, b2) are collinear, find endpoints of overlapping
+region if they exist. This could result in three possibilities. First, there could be no
+overlapping region, in which case, the default 'no_intr_result' intersection information is
+returned. Second, the two regions could just meet at one shared endpoint, in which case it
+is a hinge intersection with one intersection point. Otherwise, it is a overlapping
+intersection defined by two of the endpoints of the line segments. =#
+function _find_collinear_intersection(::Type{T}, a1, a2, b1, b2, a_ext, b_ext, no_intr_result) where T

Define default return for no intersection points

julia
    line_orient, intr1, intr2 = no_intr_result

Determine collinear line overlaps

julia
    a1_in_b = _point_in_extent(a1, b_ext)
+    a2_in_b = _point_in_extent(a2, b_ext)
+    b1_in_a = _point_in_extent(b1, a_ext)
+    b2_in_a = _point_in_extent(b2, a_ext)

Determine line distances

julia
    a_dist, b_dist = distance(a1, a2, T), distance(b1, b2, T)

Set collinear intersection points if they exist

julia
    if a1_in_b && a2_in_b      # 1st vertex of a and 2nd vertex of a form overlap
+        line_orient = line_over
+        β1 = _clamped_frac(distance(a1, b1, T), b_dist)
+        β2 = _clamped_frac(distance(a2, b1, T), b_dist)
+        intr1 = (_tuple_point(a1, T), (zero(T), β1))
+        intr2 = (_tuple_point(a2, T), (one(T), β2))
+    elseif b1_in_a && b2_in_a  # 1st vertex of b and 2nd vertex of b form overlap
+        line_orient = line_over
+        α1 = _clamped_frac(distance(b1, a1, T), a_dist)
+        α2 = _clamped_frac(distance(b2, a1, T), a_dist)
+        intr1 = (_tuple_point(b1, T), (α1, zero(T)))
+        intr2 = (_tuple_point(b2, T), (α2, one(T)))
+    elseif a1_in_b && b1_in_a  # 1st vertex of a and 1st vertex of b form overlap
+        if equals(a1, b1)
+            line_orient = line_hinge
+            intr1 = (_tuple_point(a1, T), (zero(T), zero(T)))
+        else
+            line_orient = line_over
+            intr1, intr2 = _set_ab_collinear_intrs(T, a1, b1, zero(T), zero(T), a1, b1, a_dist, b_dist)
+        end
+    elseif a1_in_b && b2_in_a  # 1st vertex of a and 2nd vertex of b form overlap
+        if equals(a1, b2)
+            line_orient = line_hinge
+            intr1 = (_tuple_point(a1, T), (zero(T), one(T)))
+        else
+            line_orient = line_over
+            intr1, intr2 = _set_ab_collinear_intrs(T, a1, b2, zero(T), one(T), a1, b1, a_dist, b_dist)
+        end
+    elseif a2_in_b && b1_in_a  # 2nd vertex of a and 1st vertex of b form overlap
+        if equals(a2, b1)
+            line_orient = line_hinge
+            intr1 = (_tuple_point(a2, T), (one(T), zero(T)))
+        else
+            line_orient = line_over
+            intr1, intr2 = _set_ab_collinear_intrs(T, a2, b1, one(T), zero(T), a1, b1, a_dist, b_dist)
+        end
+    elseif a2_in_b && b2_in_a  # 2nd vertex of a and 2nd vertex of b form overlap
+        if equals(a2, b2)
+            line_orient = line_hinge
+            intr1 = (_tuple_point(a2, T), (one(T), one(T)))
+        else
+            line_orient = line_over
+            intr1, intr2 = _set_ab_collinear_intrs(T, a2, b2, one(T), one(T), a1, b1, a_dist, b_dist)
+        end
+    end
+    return line_orient, intr1, intr2
+end
+
+#= Determine intersection points and segment fractions when overlap is made up one one
+endpoint of segment (a1, a2) and one endpoint of segment (b1, b2). =#
+_set_ab_collinear_intrs(::Type{T}, a_pt, b_pt, a_pt_α, b_pt_β, a1, b1, a_dist, b_dist) where T =
+    (
+        (_tuple_point(a_pt, T), (a_pt_α, _clamped_frac(distance(a_pt, b1, T), b_dist))),
+        (_tuple_point(b_pt, T), (_clamped_frac(distance(b_pt, a1, T), a_dist), b_pt_β))
+    )
+
+#= If lines defined by (a1, a2) and (b1, b2) are just touching at one of those endpoints and
+are not collinear, then they form a hinge, with just that one shared intersection point.
+Point equality is checked before segment orientation to have maximal accurary on fractions
+to avoid floating point errors. If the points are not equal, we know that the hinge does not
+take place at an endpoint and the fractions must be between 0 or 1 (exclusive). =#
+function _find_hinge_intersection(::Type{T}, a1, a2, b1, b2, a1_orient, a2_orient, b1_orient) where T
+    pt, α, β = if equals(a1, b1)
+        _tuple_point(a1, T), zero(T), zero(T)
+    elseif equals(a1, b2)
+        _tuple_point(a1, T), zero(T), one(T)
+    elseif equals(a2, b1)
+        _tuple_point(a2, T), one(T), zero(T)
+    elseif equals(a2, b2)
+        _tuple_point(a2, T), one(T), one(T)
+    elseif a1_orient == 0
+        β_val = _clamped_frac(distance(b1, a1, T), distance(b1, b2, T), eps(T))
+        _tuple_point(a1, T), zero(T), β_val
+    elseif a2_orient == 0
+        β_val = _clamped_frac(distance(b1, a2, T), distance(b1, b2, T), eps(T))
+        _tuple_point(a2, T), one(T), β_val
+    elseif b1_orient == 0
+        α_val = _clamped_frac(distance(a1, b1, T), distance(a1, a2, T), eps(T))
+        _tuple_point(b1, T), α_val, zero(T)
+    else  # b2_orient == 0
+        α_val = _clamped_frac(distance(a1, b2, T), distance(a1, a2, T), eps(T))
+        _tuple_point(b2, T), α_val, one(T)
+    end
+    return pt, (α, β)
+end
+
+#= If lines defined by (a1, a2) and (b1, b2) meet at one point that is not an endpoint of
+either segment, they form a crossing intersection with a singular intersection point. That
+point is calculated by finding the fractional distance along each segment the point occurs
+at (α, β). If the point is too close to an endpoint to be distinct, the point shares a value
+with the endpoint, but with a non-zero and non-one fractional value. If the intersection
+point calculated is outside of the envelope of the two segments due to floating point error,
+it is set to the endpoint of the two segments that is closest to the other segment.
+Regardless of point value, we know that it does not actually occur at an endpoint so the
+fractions must be between 0 or 1 (exclusive). =#
+function _find_cross_intersection(::Type{T}, a1, a2, b1, b2, a_ext, b_ext) where T

First line runs from a to a + Δa

julia
    (a1x, a1y), (a2x, a2y) = _tuple_point(a1, T), _tuple_point(a2, T)
+    Δax, Δay = a2x - a1x, a2y - a1y

Second line runs from b to b + Δb

julia
    (b1x, b1y), (b2x, b2y) = _tuple_point(b1, T), _tuple_point(b2, T)
+    Δbx, Δby = b2x - b1x, b2y - b1y

Differences between starting points

julia
    Δbax = b1x - a1x
+    Δbay = b1y - a1y
+    a_cross_b = Δax * Δby - Δay * Δbx

Determine α value where 0 < α < 1 and β value where 0 < β < 1

julia
    α = _clamped_frac(Δbax * Δby - Δbay * Δbx, a_cross_b, eps(T))
+    β = _clamped_frac(Δbax * Δay - Δbay * Δax, a_cross_b, eps(T))
+
+    #= Intersection will be where a1 + α * Δa = b1 + β * Δb. However, due to floating point
+    inaccuracies, α and β calculations may yield different intersection points. Average
+    both points together to minimize difference from real value, as long as segment isn't
+    vertical or horizontal as this will almost certainly lead to the point being outside the
+    envelope due to floating point error. Also note that floating point limitations could
+    make intersection be endpoint if α≈0 or α≈1.=#
+    x = if Δax == 0
+        a1x
+    elseif Δbx == 0
+        b1x
+    else
+        (a1x + α * Δax + b1x + β * Δbx) / 2
+    end
+    y = if Δay == 0
+        a1y
+    elseif Δby == 0
+        b1y
+    else
+        (a1y + α * Δay + b1y + β * Δby) / 2
+    end
+    pt = (x, y)

Check if point is within segment envelopes and adjust to endpoint if not

julia
    if !_point_in_extent(pt, a_ext) || !_point_in_extent(pt, b_ext)
+        pt, α, β = _nearest_endpoint(T, a1, a2, b1, b2)
+    end
+    return (pt, (α, β))
+end

Find endpoint of either segment that is closest to the opposite segment

julia
function _nearest_endpoint(::Type{T}, a1, a2, b1, b2) where T

Create lines from segments and calculate segment length

julia
    a_line, a_dist = GI.Line(StaticArrays.SVector(a1, a2)), distance(a1, a2, T)
+    b_line, b_dist = GI.Line(StaticArrays.SVector(b1, b2)), distance(b1, b2, T)

Determine distance from a1 to segment b

julia
    min_pt, min_dist = a1, distance(a1, b_line, T)
+    α, β = eps(T), _clamped_frac(distance(min_pt, b1, T), b_dist, eps(T))

Determine distance from a2 to segment b

julia
    dist = distance(a2, b_line, T)
+    if dist < min_dist
+        min_pt, min_dist = a2, dist
+        α, β = one(T) - eps(T), _clamped_frac(distance(min_pt, b1, T), b_dist, eps(T))
+    end

Determine distance from b1 to segment a

julia
    dist = distance(b1, a_line, T)
+    if dist < min_dist
+        min_pt, min_dist = b1, dist
+        α, β = _clamped_frac(distance(min_pt, a1, T), a_dist, eps(T)), eps(T)
+    end

Determine distance from b2 to segment a

julia
    dist = distance(b2, a_line, T)
+    if dist < min_dist
+        min_pt, min_dist = b2, dist
+        α, β = _clamped_frac(distance(min_pt, a2, T), a_dist, eps(T)), one(T) - eps(T)
+    end

Return point with smallest distance

julia
    return _tuple_point(min_pt, T), α, β
+end

Return value of x/y clamped between ϵ and 1 - ϵ

julia
_clamped_frac(x::T, y::T, ϵ = zero(T)) where T = clamp(x / y, ϵ, one(T) - ϵ)

This page was generated using Literate.jl.

`,80),l=[h];function p(k,e,r,E,d,g){return a(),i("div",null,l)}const c=s(t,[["render",p]]);export{o as __pageData,c as default}; diff --git a/previews/PR195/assets/source_methods_clipping_intersection.md.xm82NmdL.lean.js b/previews/PR195/assets/source_methods_clipping_intersection.md.xm82NmdL.lean.js new file mode 100644 index 000000000..4c15bf0a6 --- /dev/null +++ b/previews/PR195/assets/source_methods_clipping_intersection.md.xm82NmdL.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const o=JSON.parse('{"title":"Geometry Intersection","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/clipping/intersection.md","filePath":"source/methods/clipping/intersection.md","lastUpdated":null}'),t={name:"source/methods/clipping/intersection.md"},h=n("",80),l=[h];function p(k,e,r,E,d,g){return a(),i("div",null,l)}const c=s(t,[["render",p]]);export{o as __pageData,c as default}; diff --git a/previews/PR195/assets/source_methods_clipping_predicates.md.DXSSIe8m.js b/previews/PR195/assets/source_methods_clipping_predicates.md.DXSSIe8m.js new file mode 100644 index 000000000..4a8bacfcc --- /dev/null +++ b/previews/PR195/assets/source_methods_clipping_predicates.md.DXSSIe8m.js @@ -0,0 +1,44 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const o=JSON.parse('{"title":"If we want to inject adaptivity, we would do something like:","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/clipping/predicates.md","filePath":"source/methods/clipping/predicates.md","lastUpdated":null}'),t={name:"source/methods/clipping/predicates.md"},h=n(`
julia
module Predicates
+    using ExactPredicates, ExactPredicates.Codegen
+    import ExactPredicates: ext
+    import ExactPredicates.Codegen: group!, @genpredicate
+    import GeometryOps: _False, _True, _booltype, _tuple_point
+    import GeoInterface as GI
+
+    #= Determine the orientation of c with regards to the oriented segment (a, b).
+    Return 1 if c is to the left of (a, b).
+    Return -1 if c is to the right of (a, b).
+    Return 0 if c is on (a, b) or if a == b. =#
+    orient(a, b, c; exact) = _orient(_booltype(exact), a, b, c)

If exact is true, use ExactPredicates to calculate the orientation.

julia
    _orient(::_True, a, b, c) = ExactPredicates.orient(_tuple_point(a, Float64), _tuple_point(b, Float64), _tuple_point(c, Float64))

If exact is false, calculate the orientation without using ExactPredicates.

julia
    function _orient(exact::_False, a, b, c)
+        a = a .- c
+        b = b .- c
+        return _cross(exact, a, b)
+    end
+
+    #= Determine the sign of the cross product of a and b.
+    Return 1 if the cross product is positive.
+    Return -1 if the cross product is negative.
+    Return 0 if the cross product is 0. =#
+    cross(a, b; exact) = _cross(_booltype(exact), a, b)
+
+    #= If \`exact\` is \`true\`, use exact cross product calculation created using
+    \`ExactPredicates\`generated predicate. Note that as of now \`ExactPredicates\` requires
+    Float64 so we must convert points a and b. =#
+    _cross(::_True, a, b) = _cross_exact(_tuple_point(a, Float64), _tuple_point(b, Float64))

Exact cross product calculation using ExactPredicates.

julia
    @genpredicate function _cross_exact(a :: 2, b :: 2)
+        group!(a...)
+        group!(b...)
+        ext(a, b)
+    end

If exact is false, calculate the cross product without using ExactPredicates.

julia
    function _cross(::_False, a, b)
+        c_t1 = GI.x(a) * GI.y(b)
+        c_t2 = GI.y(a) * GI.x(b)
+        c_val = if isapprox(c_t1, c_t2)
+            0
+        else
+            sign(c_t1 - c_t2)
+        end
+        return c_val
+    end
+
+end
+
+import .Predicates

If we want to inject adaptivity, we would do something like:

function cross(a, b, c) # try Predicates._cross_naive(a, b, c) # check the error bound there # then try Predicates._cross_adaptive(a, b, c) # then try Predicates._cross_exact end


This page was generated using Literate.jl.

`,13),e=[h];function p(l,k,r,d,E,c){return a(),i("div",null,e)}const y=s(t,[["render",p]]);export{o as __pageData,y as default}; diff --git a/previews/PR195/assets/source_methods_clipping_predicates.md.DXSSIe8m.lean.js b/previews/PR195/assets/source_methods_clipping_predicates.md.DXSSIe8m.lean.js new file mode 100644 index 000000000..070fd2bef --- /dev/null +++ b/previews/PR195/assets/source_methods_clipping_predicates.md.DXSSIe8m.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const o=JSON.parse('{"title":"If we want to inject adaptivity, we would do something like:","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/clipping/predicates.md","filePath":"source/methods/clipping/predicates.md","lastUpdated":null}'),t={name:"source/methods/clipping/predicates.md"},h=n("",13),e=[h];function p(l,k,r,d,E,c){return a(),i("div",null,e)}const y=s(t,[["render",p]]);export{o as __pageData,y as default}; diff --git a/previews/PR195/assets/source_methods_clipping_union.md.CXn4Lc-2.js b/previews/PR195/assets/source_methods_clipping_union.md.CXn4Lc-2.js new file mode 100644 index 000000000..25ee071d2 --- /dev/null +++ b/previews/PR195/assets/source_methods_clipping_union.md.CXn4Lc-2.js @@ -0,0 +1,250 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const o=JSON.parse('{"title":"Union Polygon Clipping","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/clipping/union.md","filePath":"source/methods/clipping/union.md","lastUpdated":null}'),l={name:"source/methods/clipping/union.md"},h=n(`

Union Polygon Clipping

julia
export union
+
+"""
+    union(geom_a, geom_b, [::Type{T}]; target::Type, fix_multipoly = UnionIntersectingPolygons())
+
+Return the union between two geometries as a list of geometries. Return an empty list if
+none are found. The type of the list will be constrained as much as possible given the input
+geometries. Furthermore, the user can provide a \`taget\` type as a keyword argument and a
+list of target geometries found in the difference will be returned. The user can also
+provide a float type 'T' that they would like the points of returned geometries to be. If
+the user is taking a intersection involving one or more multipolygons, and the multipolygon
+might be comprised of polygons that intersect, if \`fix_multipoly\` is set to an
+\`IntersectingPolygons\` correction (the default is \`UnionIntersectingPolygons()\`), then the
+needed multipolygons will be fixed to be valid before performing the intersection to ensure
+a correct answer. Only set \`fix_multipoly\` to false if you know that the multipolygons are
+valid, as it will avoid unneeded computation.
+
+Calculates the union between two polygons.
+# Example
+
+\`\`\`jldoctest
+import GeoInterface as GI, GeometryOps as GO
+
+p1 = GI.Polygon([[(0.0, 0.0), (5.0, 5.0), (10.0, 0.0), (5.0, -5.0), (0.0, 0.0)]])
+p2 = GI.Polygon([[(3.0, 0.0), (8.0, 5.0), (13.0, 0.0), (8.0, -5.0), (3.0, 0.0)]])
+union_poly = GO.union(p1, p2; target = GI.PolygonTrait())
+GI.coordinates.(union_poly)

output

julia
1-element Vector{Vector{Vector{Vector{Float64}}}}:
+ [[[6.5, 3.5], [5.0, 5.0], [0.0, 0.0], [5.0, -5.0], [6.5, -3.5], [8.0, -5.0], [13.0, 0.0], [8.0, 5.0], [6.5, 3.5]]]
+\`\`\`
+"""
+function union(
+    geom_a, geom_b, ::Type{T}=Float64; target=nothing, kwargs...
+) where {T<:AbstractFloat}
+    return _union(
+        TraitTarget(target), T, GI.trait(geom_a), geom_a, GI.trait(geom_b), geom_b;
+        exact = _True(), kwargs...,
+    )
+end
+
+#= This 'union' implementation returns the union of two polygons. The algorithm to determine
+the union was adapted from "Efficient clipping of efficient polygons," by Greiner and
+Hormann (1998). DOI: https://doi.org/10.1145/274363.274364 =#
+function _union(
+    ::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.PolygonTrait, poly_a,
+    ::GI.PolygonTrait, poly_b;
+    exact, kwargs...,
+) where T

First, I get the exteriors of the two polygons

julia
    ext_a = GI.getexterior(poly_a)
+    ext_b = GI.getexterior(poly_b)

Then, I get the union of the exteriors

julia
    a_list, b_list, a_idx_list = _build_ab_list(T, ext_a, ext_b, _union_delay_cross_f, _union_delay_bounce_f; exact)
+    polys = _trace_polynodes(T, a_list, b_list, a_idx_list, _union_step, poly_a, poly_b)
+    n_pieces = length(polys)

Check if one polygon totally within other and if so, return the larger polygon

julia
    a_in_b, b_in_a = false, false
+    if n_pieces == 0 # no crossing points, determine if either poly is inside the other
+        a_in_b, b_in_a = _find_non_cross_orientation(a_list, b_list, ext_a, ext_b; exact)
+        if a_in_b
+            push!(polys, GI.Polygon([tuples(ext_b)]))
+        elseif b_in_a
+            push!(polys,  GI.Polygon([tuples(ext_a)]))
+        else
+            push!(polys, tuples(poly_a))
+            push!(polys, tuples(poly_b))
+            return polys
+        end
+    elseif n_pieces > 1
+        #= extra polygons are holes (n_pieces == 1 is the desired state) and since
+        holes are formed by regions exterior to both poly_a and poly_b, they can't interact
+        with pre-existing holes =#
+        sort!(polys, by = area, rev = true)  # sort by area so first element is the exterior

the first element is the exterior, the rest are holes

julia
        @views append!(polys[1].geom, (GI.getexterior(p) for p in polys[2:end]))
+        keepat!(polys, 1)
+    end

Add in holes

julia
    if GI.nhole(poly_a) != 0 || GI.nhole(poly_b) != 0
+        _add_union_holes!(polys, a_in_b, b_in_a, poly_a, poly_b; exact)
+    end

Remove unneeded collinear points on same edge

julia
    _remove_collinear_points!(polys, [false], poly_a, poly_b)
+    return polys
+end

Helper functions for Unions with Greiner and Hormann Polygon Clipping

julia
#= When marking the crossing status of a delayed crossing, the chain start point is crossing
+when the start point is a entry point and is a bouncing point when the start point is an
+exit point. The end of the chain has the opposite crossing / bouncing status. =#
+_union_delay_cross_f(x) = (x, !x)
+
+#= When marking the crossing status of a delayed bouncing, the chain start and end points
+are bouncing if the current polygon's adjacent edges are within the non-tracing polygon. If
+the edges are outside then the chain endpoints are marked as crossing. x is a boolean
+representing if the edges are inside or outside of the polygon. =#
+_union_delay_bounce_f(x, _) = !x
+
+#= When tracing polygons, step backwards if the most recent intersection point was an entry
+point, else step forwards where x is the entry/exit status. =#
+_union_step(x, _) = x ? (-1) : 1
+
+#= Add holes from two polygons to the exterior polygon formed by their union. If adding the
+the holes reveals that the polygons aren't actually intersecting, return the original
+polygons. =#
+function _add_union_holes!(polys, a_in_b, b_in_a, poly_a, poly_b; exact)
+    if a_in_b
+        _add_union_holes_contained_polys!(polys, poly_a, poly_b; exact)
+    elseif b_in_a
+        _add_union_holes_contained_polys!(polys, poly_b, poly_a; exact)
+    else  # Polygons intersect, but neither is contained in the other
+        n_a_holes = GI.nhole(poly_a)
+        ext_poly_a = GI.Polygon(StaticArrays.SVector(GI.getexterior(poly_a)))
+        ext_poly_b = GI.Polygon(StaticArrays.SVector(GI.getexterior(poly_b)))
+        #= Start with poly_b when comparing with holes from poly_a and then switch to poly_a
+        to compare with holes from poly_b. For current_poly, use ext_poly_b to avoid
+        repeating overlapping holes in poly_a and poly_b =#
+        curr_exterior_poly = n_a_holes > 0 ? ext_poly_b : ext_poly_a
+        current_poly = n_a_holes > 0 ? ext_poly_b : poly_a

Loop over all holes in both original polygons

julia
        for (i, ih) in enumerate(Iterators.flatten((GI.gethole(poly_a), GI.gethole(poly_b))))
+            in_ext, _, _ = _line_polygon_interactions(ih, curr_exterior_poly; exact, closed_line = true)
+            if !in_ext
+                #= if the hole isn't in the overlapping region between the two polygons, add
+                the hole to the resulting polygon as we know it can't interact with any
+                other holes =#
+                push!(polys[1].geom, ih)
+            else
+                #= if the hole is at least partially in the overlapping region, take the
+                difference of the hole from the polygon it didn't originate from - note that
+                when current_poly is poly_a this includes poly_a holes so overlapping holes
+                between poly_a and poly_b within the overlap are added, in addition to all
+                holes in non-overlapping regions =#
+                h_poly = GI.Polygon(StaticArrays.SVector(ih))
+                new_holes = difference(h_poly, current_poly; target = GI.PolygonTrait())
+                append!(polys[1].geom, (GI.getexterior(new_h) for new_h in new_holes))
+            end
+            if i == n_a_holes
+                curr_exterior_poly = ext_poly_a
+                current_poly = poly_a
+            end
+        end
+    end
+    return
+end
+
+#= Add holes holes to the union of two polygons where one of the original polygons was
+inside of the other. If adding the the holes reveal that the polygons aren't actually
+intersecting, return the original polygons.=#
+function _add_union_holes_contained_polys!(polys, interior_poly, exterior_poly; exact)
+    union_poly = polys[1]
+    ext_int_ring = GI.getexterior(interior_poly)
+    for (i, ih) in enumerate(GI.gethole(exterior_poly))
+        poly_ih = GI.Polygon(StaticArrays.SVector(ih))
+        in_ih, on_ih, out_ih = _line_polygon_interactions(ext_int_ring, poly_ih; exact, closed_line = true)
+        if in_ih  # at least part of interior polygon exterior is within the ith hole
+            if !on_ih && !out_ih
+                #= interior polygon is completely within the ith hole - polygons aren't
+                touching and do not actually form a union =#
+                polys[1] = tuples(interior_poly)
+                push!(polys, tuples(exterior_poly))
+                return polys
+            else
+                #= interior polygon is partially within the ith hole - area of interior
+                polygon reduces the size of the hole =#
+                new_holes = difference(poly_ih, interior_poly; target = GI.PolygonTrait())
+                append!(union_poly.geom, (GI.getexterior(new_h) for new_h in new_holes))
+            end
+        else  # none of interior polygon exterior is within the ith hole
+            if !out_ih
+                #= interior polygon's exterior is the same as the ith hole - polygons do
+                form a union, but do not overlap so all holes stay in final polygon =#
+                append!(union_poly.geom, Iterators.drop(GI.gethole(exterior_poly), i))
+                append!(union_poly.geom, GI.gethole(interior_poly))
+                return polys
+            else
+                #= interior polygon's exterior is outside of the ith hole - the interior
+                polygon could either be disjoint from the hole, or contain the hole =#
+                ext_int_poly = GI.Polygon(StaticArrays.SVector(ext_int_ring))
+                in_int, _, _ = _line_polygon_interactions(ih, ext_int_poly; exact, closed_line = true)
+                if in_int
+                    #= interior polygon contains the hole - overlapping holes between the
+                    interior and exterior polygons will be added =#
+                    for jh in GI.gethole(interior_poly)
+                        poly_jh = GI.Polygon(StaticArrays.SVector(jh))
+                        if intersects(poly_ih, poly_jh)
+                            new_holes = intersection(poly_ih, poly_jh; target = GI.PolygonTrait())
+                            append!(union_poly.geom, (GI.getexterior(new_h) for new_h in new_holes))
+                        end
+                    end
+                else
+                    #= interior polygon and the exterior polygon are disjoint - add the ith
+                    hole as it is not covered by the interior polygon =#
+                    push!(union_poly.geom, ih)
+                end
+            end
+        end
+    end
+    return
+end
+
+#= Polygon with multipolygon union - note that all sub-polygons of \`multipoly_b\` will be
+included, unioning these sub-polygons with \`poly_a\` where they intersect. Unless specified
+with \`fix_multipoly = nothing\`, \`multipolygon_b\` will be validated using the given (default
+is \`UnionIntersectingPolygons()\`) correction. =#
+function _union(
+    target::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.PolygonTrait, poly_a,
+    ::GI.MultiPolygonTrait, multipoly_b;
+    fix_multipoly = UnionIntersectingPolygons(), kwargs...,
+) where T
+    if !isnothing(fix_multipoly) # Fix multipoly_b to prevent repeated regions in the output
+        multipoly_b = fix_multipoly(multipoly_b)
+    end
+    polys = [tuples(poly_a, T)]
+    for poly_b in GI.getpolygon(multipoly_b)
+        if intersects(polys[1], poly_b)

If polygons intersect and form a new polygon, swap out polygon

julia
            new_polys = union(polys[1], poly_b; target)
+            if length(new_polys) > 1 # case where they intersect by just one point
+                push!(polys, tuples(poly_b, T))  # add poly_b to list
+            else
+                polys[1] = new_polys[1]
+            end
+        else

If they don't intersect, poly_b is now a part of the union as its own polygon

julia
            push!(polys, tuples(poly_b, T))
+        end
+    end
+    return polys
+end
+
+#= Multipolygon with polygon union is equivalent to taking the union of the polygon with the
+multipolygon and thus simply switches the order of operations and calls the above method. =#
+_union(
+    target::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.MultiPolygonTrait, multipoly_a,
+    ::GI.PolygonTrait, poly_b;
+    kwargs...,
+) where T = union(poly_b, multipoly_a; target, kwargs...)
+
+#= Multipolygon with multipolygon union - note that all of the sub-polygons of \`multipoly_a\`
+and the sub-polygons of \`multipoly_b\` are included and combined together where there are
+intersections. Unless specified with \`fix_multipoly = nothing\`, \`multipolygon_b\` will be
+validated using the given (default is \`UnionIntersectingPolygons()\`) correction. =#
+function _union(
+    target::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.MultiPolygonTrait, multipoly_a,
+    ::GI.MultiPolygonTrait, multipoly_b;
+    fix_multipoly = UnionIntersectingPolygons(), kwargs...,
+) where T
+    if !isnothing(fix_multipoly) # Fix multipoly_b to prevent repeated regions in the output
+        multipoly_b = fix_multipoly(multipoly_b)
+        fix_multipoly = nothing
+    end
+    multipolys = multipoly_b
+    local polys
+    for poly_a in GI.getpolygon(multipoly_a)
+        polys = union(poly_a, multipolys; target, fix_multipoly)
+        multipolys = GI.MultiPolygon(polys)
+    end
+    return polys
+end

Many type and target combos aren't implemented

julia
function _union(
+    ::TraitTarget{Target}, ::Type{T},
+    trait_a::GI.AbstractTrait, geom_a,
+    trait_b::GI.AbstractTrait, geom_b;
+    kwargs...
+) where {Target,T}
+    throw(ArgumentError("Union between $trait_a and $trait_b with target $Target isn't implemented yet."))
+    return nothing
+end

This page was generated using Literate.jl.

`,28),p=[h];function t(k,e,r,E,g,y){return a(),i("div",null,p)}const F=s(l,[["render",t]]);export{o as __pageData,F as default}; diff --git a/previews/PR195/assets/source_methods_clipping_union.md.CXn4Lc-2.lean.js b/previews/PR195/assets/source_methods_clipping_union.md.CXn4Lc-2.lean.js new file mode 100644 index 000000000..838711bdd --- /dev/null +++ b/previews/PR195/assets/source_methods_clipping_union.md.CXn4Lc-2.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const o=JSON.parse('{"title":"Union Polygon Clipping","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/clipping/union.md","filePath":"source/methods/clipping/union.md","lastUpdated":null}'),l={name:"source/methods/clipping/union.md"},h=n("",28),p=[h];function t(k,e,r,E,g,y){return a(),i("div",null,p)}const F=s(l,[["render",t]]);export{o as __pageData,F as default}; diff --git a/previews/PR195/assets/source_methods_convex_hull.md.BBbSUADr.js b/previews/PR195/assets/source_methods_convex_hull.md.BBbSUADr.js new file mode 100644 index 000000000..267f22345 --- /dev/null +++ b/previews/PR195/assets/source_methods_convex_hull.md.BBbSUADr.js @@ -0,0 +1,57 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const l="/GeometryOps.jl/previews/PR195/assets/yvkfndx.pdNjstNw.png",t="/GeometryOps.jl/previews/PR195/assets/kxmqmyj.mCtKcWOr.png",h="/GeometryOps.jl/previews/PR195/assets/mqsazcv.oE7dclz5.png",F=JSON.parse('{"title":"Convex hull","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/convex_hull.md","filePath":"source/methods/convex_hull.md","lastUpdated":null}'),e={name:"source/methods/convex_hull.md"},p=n(`

Convex hull

The convex hull of a set of points is the smallest convex polygon that contains all the points.

GeometryOps.jl provides a number of methods for computing the convex hull of a set of points, usually linked to other Julia packages.

For now, we expose one algorithm, MonotoneChainMethod, which uses the DelaunayTriangulation.jl package. The GEOS() interface also supports convex hulls.

Future work could include other algorithms, such as Quickhull.jl, or similar, via package extensions.

Example

Simple hull

julia
import GeometryOps as GO, GeoInterface as GI
+using CairoMakie # to plot
+
+points = randn(GO.Point2f, 100)
+f, a, p = plot(points; label = "Points")
+hull_poly = GO.convex_hull(points)
+lines!(a, hull_poly; label = "Convex hull", color = Makie.wong_colors()[2])
+axislegend(a)
+f

Convex hull of the USA

julia
import GeometryOps as GO, GeoInterface as GI
+using CairoMakie # to plot
+using NaturalEarth # for data
+
+all_adm0 = naturalearth("admin_0_countries", 110)
+usa = all_adm0.geometry[findfirst(==("USA"), all_adm0.ADM0_A3)]
+f, a, p = lines(usa)
+lines!(a, GO.convex_hull(usa); color = Makie.wong_colors()[2])
+f

Investigating the winding order

The winding order of the monotone chain method is counterclockwise, while the winding order of the GEOS method is clockwise.

GeometryOps' convexity detection says that the GEOS hull is convex, while the monotone chain method hull is not. However, they are both going over the same points (we checked), it's just that the winding order is different.

In reality, both sets are convex, but we need to fix the GeometryOps convexity detector (isconcave)!

We may also decide at a later date to change the returned winding order of the polygon, but most algorithms are robust to that, and you can always fix it...

julia
import GeoInterface as GI, GeometryOps as GO, LibGEOS as LG
+using CairoMakie # to plot
+
+points = rand(Point2{Float64}, 100)
+go_hull = GO.convex_hull(GO.MonotoneChainMethod(), points)
+lg_hull = GO.convex_hull(GO.GEOS(), points)
+
+fig = Figure()
+a1, p1 = lines(fig[1, 1], go_hull; color = 1:GI.npoint(go_hull), axis = (; title = "MonotoneChainMethod()"))
+a2, p2 = lines(fig[2, 1], lg_hull; color = 1:GI.npoint(lg_hull), axis = (; title = "GEOS()"))
+cb = Colorbar(fig[1:2, 2], p1; label = "Vertex number")
+fig

Implementation

julia
"""
+    convex_hull([method], geometries)
+
+Compute the convex hull of the points in \`geometries\`.
+Returns a \`GI.Polygon\` representing the convex hull.
+
+Note that the polygon returned is wound counterclockwise
+as in the Simple Features standard by default.  If you
+choose GEOS, the winding order will be inverted.
+
+!!! warning
+    This interface only computes the 2-dimensional convex hull!
+
+    For higher dimensional hulls, use the relevant package (Qhull.jl, Quickhull.jl, or similar).
+"""
+function convex_hull end
+
+"""
+    MonotoneChainMethod()
+
+This is an algorithm for the \`convex_hull\` function.
+
+Uses [\`DelaunayTriangulation.jl\`](https://github.com/JuliaGeometry/DelaunayTriangulation.jl) to compute the convex hull.
+This is a pure Julia algorithm which provides an optimal Delaunay triangulation.
+
+See also \`convex_hull\`
+"""
+struct MonotoneChainMethod end

GrahamScanMethod, etc. can be implemented in GO as well, if someone wants to. If we add an extension on Quickhull.jl, then that would be another algorithm.

julia
convex_hull(geometries) = convex_hull(MonotoneChainMethod(), geometries)

TODO: have this respect the CRS by pulling it out of geometries.

julia
function convex_hull(::MonotoneChainMethod, geometries)

Extract all points as tuples. We have to collect and allocate here, because DelaunayTriangulation only accepts vectors of point-like geoms.

Cleanest would be to use the iterable from GO.flatten directly, but that would require us to implement the convex hull algorithm directly.

TODO: create a specialized method that extracts only the information required, GeometryBasics points can be passed through directly.

julia
    points = collect(flatten(tuples, GI.PointTrait, geometries))

Compute the convex hull using DelTri (shorthand for DelaunayTriangulation.jl).

julia
    hull = DelaunayTriangulation.convex_hull(points)

Convert the result to a GI.Polygon and return it. View would be more efficient here, but re-allocating is cleaner.

julia
    point_vec = DelaunayTriangulation.get_points(hull)[DelaunayTriangulation.get_vertices(hull)]
+    return GI.Polygon([GI.LinearRing(point_vec)])
+end

This page was generated using Literate.jl.

`,35),k=[p];function r(o,d,E,g,y,c){return a(),i("div",null,k)}const C=s(e,[["render",r]]);export{F as __pageData,C as default}; diff --git a/previews/PR195/assets/source_methods_convex_hull.md.BBbSUADr.lean.js b/previews/PR195/assets/source_methods_convex_hull.md.BBbSUADr.lean.js new file mode 100644 index 000000000..7cdbf9b73 --- /dev/null +++ b/previews/PR195/assets/source_methods_convex_hull.md.BBbSUADr.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const l="/GeometryOps.jl/previews/PR195/assets/yvkfndx.pdNjstNw.png",t="/GeometryOps.jl/previews/PR195/assets/kxmqmyj.mCtKcWOr.png",h="/GeometryOps.jl/previews/PR195/assets/mqsazcv.oE7dclz5.png",F=JSON.parse('{"title":"Convex hull","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/convex_hull.md","filePath":"source/methods/convex_hull.md","lastUpdated":null}'),e={name:"source/methods/convex_hull.md"},p=n("",35),k=[p];function r(o,d,E,g,y,c){return a(),i("div",null,k)}const C=s(e,[["render",r]]);export{F as __pageData,C as default}; diff --git a/previews/PR195/assets/source_methods_distance.md.Dw2LmtDw.js b/previews/PR195/assets/source_methods_distance.md.Dw2LmtDw.js new file mode 100644 index 000000000..9339f20a4 --- /dev/null +++ b/previews/PR195/assets/source_methods_distance.md.Dw2LmtDw.js @@ -0,0 +1,181 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const h="/GeometryOps.jl/previews/PR195/assets/unjmjvt.DiwGEg2f.png",t="/GeometryOps.jl/previews/PR195/assets/wmnledk.DuBHk1fh.png",c=JSON.parse('{"title":"Distance and signed distance","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/distance.md","filePath":"source/methods/distance.md","lastUpdated":null}'),k={name:"source/methods/distance.md"},p=n(`

Distance and signed distance

julia
export distance, signed_distance

What is distance? What is signed distance?

Distance is the distance of a point to another geometry. This is always a positive number. If a point is inside of geometry, so on a curve or inside of a polygon, the distance will be zero. Signed distance is mainly used for polygons and multipolygons. If a point is outside of a geometry, signed distance has the same value as distance. However, points within the geometry have a negative distance representing the distance of a point to the closest boundary. Therefore, for all "non-filled" geometries, like curves, the distance will either be positive or 0.

To provide an example, consider this rectangle:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+rect = GI.Polygon([[(0,0), (0,1), (1,1), (1,0), (0, 0)]])
+point_in = (0.5, 0.5)
+point_out = (0.5, 1.5)
+f, a, p = poly(collect(GI.getpoint(rect)); axis = (; aspect = DataAspect()))
+scatter!(GI.x(point_in), GI.y(point_in); color = :red)
+scatter!(GI.x(point_out), GI.y(point_out); color = :orange)
+f

This is clearly a rectangle with one point inside and one point outside. The points are both an equal distance to the polygon. The distance to point_in is negative while the distance to point_out is positive.

julia
(
+GO.distance(point_in, rect),  # == 0
+GO.signed_distance(point_in, rect),  # < 0
+GO.signed_distance(point_out, rect)  # > 0
+)
(0.0, -0.5, 0.5)

Consider also a heatmap of signed distances around this object:

julia
xrange = yrange = LinRange(-0.5, 1.5, 300)
+f, a, p = heatmap(xrange, yrange, GO.signed_distance.(Point2f.(xrange, yrange'), Ref(rect)); colormap = :RdBu, colorrange = (-0.75, 0.75))
+a.aspect = DataAspect(); Colorbar(f[1, 2], p, label = "Signed distance"); lines!(a, GI.convert(GO.GeometryBasics, rect)); f

Implementation

This is the GeoInterface-compatible implementation. First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait. This is also used in the implementation, since it's a lot less work!

Distance and signed distance are only implemented for points to other geometries right now. This could be extended to include distance from other geometries in the future.

The distance calculated is the Euclidean distance using the Pythagorean theorem. Also note that singed_distance only makes sense for "filled-in" shapes, like polygons, so it isn't implemented for curves.

julia
const _DISTANCE_TARGETS = TraitTarget{Union{GI.AbstractPolygonTrait,GI.LineStringTrait,GI.LinearRingTrait,GI.LineTrait,GI.PointTrait}}()
+
+"""
+    distance(point, geom, ::Type{T} = Float64)::T
+
+Calculates the  ditance from the geometry \`g1\` to the \`point\`. The distance
+will always be positive or zero.
+
+The method will differ based on the type of the geometry provided:
+    - The distance from a point to a point is just the Euclidean distance
+    between the points.
+    - The distance from a point to a line is the minimum distance from the point
+    to the closest point on the given line.
+    - The distance from a point to a linestring is the minimum distance from the
+    point to the closest segment of the linestring.
+    - The distance from a point to a linear ring is the minimum distance from
+    the point to the closest segment of the linear ring.
+    - The distance from a point to a polygon is zero if the point is within the
+    polygon and otherwise is the minimum distance from the point to an edge of
+    the polygon. This includes edges created by holes.
+    - The distance from a point to a multigeometry or a geometry collection is
+    the minimum distance between the point and any of the sub-geometries.
+
+Result will be of type T, where T is an optional argument with a default value
+of Float64.
+"""
+function distance(
+    geom1, geom2, ::Type{T} = Float64; threaded=false
+) where T<:AbstractFloat
+    distance(GI.trait(geom1), geom1, GI.trait(geom2), geom2, T; threaded)
+end
+function distance(
+    trait1, geom, trait2::GI.PointTrait, point, ::Type{T} = Float64;
+    threaded=false
+) where T<:AbstractFloat
+    distance(trait2, point, trait1, geom, T) # Swap order
+end
+function distance(
+    trait1::GI.PointTrait, point, trait2, geom, ::Type{T} = Float64;
+    threaded=false
+) where T<:AbstractFloat
+    applyreduce(min, _DISTANCE_TARGETS, geom; threaded, init=typemax(T)) do g
+        _distance(T, trait1, point, GI.trait(g), g)
+    end
+end

Needed for method ambiguity

julia
function distance(
+    trait1::GI.PointTrait, point1, trait2::GI.PointTrait, point2, ::Type{T} = Float64;
+    threaded=false
+) where T<:AbstractFloat
+    _distance(T, trait1, point1, trait2, point2)
+end

Point-Point, Point-Line, Point-LineString, Point-LinearRing

julia
_distance(::Type{T}, ::GI.PointTrait, point, ::GI.PointTrait, geom) where T =
+    _euclid_distance(T, point, geom)
+_distance(::Type{T}, ::GI.PointTrait, point, ::GI.LineTrait, geom) where T =
+    _distance_line(T, point, GI.getpoint(geom, 1), GI.getpoint(geom, 2))
+_distance(::Type{T}, ::GI.PointTrait, point, ::GI.LineStringTrait, geom) where T =
+    _distance_curve(T, point, geom; close_curve = false)
+_distance(::Type{T}, ::GI.PointTrait, point, ::GI.LinearRingTrait, geom) where T =
+    _distance_curve(T, point, geom; close_curve = true)

Point-Polygon

julia
function _distance(::Type{T}, ::GI.PointTrait, point, ::GI.PolygonTrait, geom) where T
+    within(point, geom) && return zero(T)
+    return _distance_polygon(T, point, geom)
+end
+
+"""
+    signed_distance(point, geom, ::Type{T} = Float64)::T
+
+Calculates the signed distance from the geometry \`geom\` to the given point.
+Points within \`geom\` have a negative signed distance, and points outside of
+\`geom\` have a positive signed distance.
+    - The signed distance from a point to a point, line, linestring, or linear
+    ring is equal to the distance between the two.
+    - The signed distance from a point to a polygon is negative if the point is
+    within the polygon and is positive otherwise. The value of the distance is
+    the minimum distance from the point to an edge of the polygon. This includes
+    edges created by holes.
+    - The signed distance from a point to a multigeometry or a geometry
+    collection is the minimum signed distance between the point and any of the
+    sub-geometries.
+
+Result will be of type T, where T is an optional argument with a default value
+of Float64.
+"""
+function signed_distance(
+    geom1, geom2, ::Type{T} = Float64; threaded=false
+) where T<:AbstractFloat
+    signed_distance(GI.trait(geom1), geom1, GI.trait(geom2), geom2, T; threaded)
+end
+function signed_distance(
+    trait1, geom, trait2::GI.PointTrait, point, ::Type{T} = Float64;
+    threaded=false
+) where T<:AbstractFloat
+    signed_distance(trait2, point, trait1, geom, T; threaded) # Swap order
+end
+function signed_distance(
+    trait1::GI.PointTrait, point, trait2, geom, ::Type{T} = Float64;
+    threaded=false
+) where T<:AbstractFloat
+    applyreduce(min, _DISTANCE_TARGETS, geom; threaded, init=typemax(T)) do g
+        _signed_distance(T, trait1, point, GI.trait(g), g)
+    end
+end

Needed for method ambiguity

julia
function signed_distance(
+    trait1::GI.PointTrait, point1, trait2::GI.PointTrait, point2, ::Type{T} = Float64;
+    threaded=false
+) where T<:AbstractFloat
+    _signed_distance(T, trait1, point1, trait2, point2)
+end

Point-Geom (just calls _distance)

julia
function _signed_distance(
+    ::Type{T}, ptrait::GI.PointTrait, point, gtrait::GI.AbstractGeometryTrait, geom
+) where T
+    _distance(T, ptrait, point, gtrait, geom)
+end

Point-Polygon

julia
function _signed_distance(::Type{T}, ::GI.PointTrait, point, ::GI.PolygonTrait, geom) where T
+    min_dist = _distance_polygon(T, point, geom)
+    return within(point, geom) ? -min_dist : min_dist

negative if point is inside polygon

julia
end

Returns the Euclidean distance between two points.

julia
Base.@propagate_inbounds _euclid_distance(::Type{T}, p1, p2) where T =
+    sqrt(_squared_euclid_distance(T, p1, p2))

Returns the square of the euclidean distance between two points

julia
Base.@propagate_inbounds _squared_euclid_distance(::Type{T}, p1, p2) where T =
+    _squared_euclid_distance(
+        T,
+        GeoInterface.x(p1), GeoInterface.y(p1),
+        GeoInterface.x(p2), GeoInterface.y(p2),
+    )

Returns the Euclidean distance between two points given their x and y values.

julia
Base.@propagate_inbounds _euclid_distance(::Type{T}, x1, y1, x2, y2) where T =
+    sqrt(_squared_euclid_distance(T, x1, y1, x2, y2))

Returns the squared Euclidean distance between two points given their x and y values.

julia
Base.@propagate_inbounds _squared_euclid_distance(::Type{T}, x1, y1, x2, y2) where T =
+    T((x2 - x1)^2 + (y2 - y1)^2)

Returns the minimum distance from point p0 to the line defined by endpoints p1 and p2.

julia
_distance_line(::Type{T}, p0, p1, p2) where T =
+    sqrt(_squared_distance_line(T, p0, p1, p2))

Returns the squared minimum distance from point p0 to the line defined by endpoints p1 and p2.

julia
function _squared_distance_line(::Type{T}, p0, p1, p2) where T
+    x0, y0 = GeoInterface.x(p0), GeoInterface.y(p0)
+    x1, y1 = GeoInterface.x(p1), GeoInterface.y(p1)
+    x2, y2 = GeoInterface.x(p2), GeoInterface.y(p2)
+
+    xfirst, yfirst, xlast, ylast = x1 < x2 ? (x1, y1, x2, y2) : (x2, y2, x1, y1)
+
+    #=
+    Vectors from first point to last point (v) and from first point to point of
+    interest (w) to find the projection of w onto v to find closest point
+    =#
+    v = (xlast - xfirst, ylast - yfirst)
+    w = (x0 - xfirst, y0 - yfirst)
+
+    c1 = sum(w .* v)
+    if c1 <= 0  # p0 is closest to first endpoint
+        return _squared_euclid_distance(T, x0, y0, xfirst, yfirst)
+    end
+
+    c2 = sum(v .* v)
+    if c2 <= c1 # p0 is closest to last endpoint
+        return _squared_euclid_distance(T, x0, y0, xlast, ylast)
+    end
+
+    b2 = c1 / c2  # projection fraction
+    return _squared_euclid_distance(T, x0, y0, xfirst + (b2 * v[1]), yfirst + (b2 * v[2]))
+end

Returns the minimum distance from the given point to the given curve. If close_curve is true, make sure to include the edge from the first to last point of the curve, even if it isn't explicitly repeated.

julia
function _distance_curve(::Type{T}, point, curve; close_curve = false) where T

see if linear ring has explicitly repeated last point in coordinates

julia
    np = GI.npoint(curve)
+    first_last_equal = equals(GI.getpoint(curve, 1), GI.getpoint(curve, np))
+    close_curve &= first_last_equal
+    np -= first_last_equal ? 1 : 0

find minimum distance

julia
    min_dist = typemax(T)
+    p1 = GI.getpoint(curve, close_curve ? np : 1)
+    for i in (close_curve ? 1 : 2):np
+        p2 = GI.getpoint(curve, i)
+        dist = _distance_line(T, point, p1, p2)
+        min_dist = dist < min_dist ? dist : min_dist
+        p1 = p2
+    end
+    return min_dist
+end

Returns the minimum distance from the given point to an edge of the given polygon, including from edges created by holes. Assumes polygon isn't filled and treats the exterior and each hole as a linear ring.

julia
function _distance_polygon(::Type{T}, point, poly) where T
+    min_dist = _distance_curve(T, point, GI.getexterior(poly); close_curve = true)
+    @inbounds for hole in GI.gethole(poly)
+        dist = _distance_curve(T, point, hole; close_curve = true)
+        min_dist = dist < min_dist ? dist : min_dist
+    end
+    return min_dist
+end

This page was generated using Literate.jl.

`,54),l=[p];function e(d,E,r,g,y,F){return a(),i("div",null,l)}const C=s(k,[["render",e]]);export{c as __pageData,C as default}; diff --git a/previews/PR195/assets/source_methods_distance.md.Dw2LmtDw.lean.js b/previews/PR195/assets/source_methods_distance.md.Dw2LmtDw.lean.js new file mode 100644 index 000000000..3c2dce7c3 --- /dev/null +++ b/previews/PR195/assets/source_methods_distance.md.Dw2LmtDw.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const h="/GeometryOps.jl/previews/PR195/assets/unjmjvt.DiwGEg2f.png",t="/GeometryOps.jl/previews/PR195/assets/wmnledk.DuBHk1fh.png",c=JSON.parse('{"title":"Distance and signed distance","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/distance.md","filePath":"source/methods/distance.md","lastUpdated":null}'),k={name:"source/methods/distance.md"},p=n("",54),l=[p];function e(d,E,r,g,y,F){return a(),i("div",null,l)}const C=s(k,[["render",e]]);export{c as __pageData,C as default}; diff --git a/previews/PR195/assets/source_methods_equals.md.DSTnK05y.js b/previews/PR195/assets/source_methods_equals.md.DSTnK05y.js new file mode 100644 index 000000000..d2fb7a5b8 --- /dev/null +++ b/previews/PR195/assets/source_methods_equals.md.DSTnK05y.js @@ -0,0 +1,265 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const l="/GeometryOps.jl/previews/PR195/assets/mifutmo.CgiryX2p.png",y=JSON.parse('{"title":"Equals","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/equals.md","filePath":"source/methods/equals.md","lastUpdated":null}'),t={name:"source/methods/equals.md"},h=n(`

Equals

julia
export equals

What is equals?

The equals function checks if two geometries are equal. They are equal if they share the same set of points and edges to define the same shape.

To provide an example, consider these two lines:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+l1 = GI.LineString([(0.0, 0.0), (0.0, 10.0)])
+l2 = GI.LineString([(0.0, -10.0), (0.0, 3.0)])
+f, a, p = lines(GI.getpoint(l1), color = :blue)
+scatter!(GI.getpoint(l1), color = :blue)
+lines!(GI.getpoint(l2), color = :orange)
+scatter!(GI.getpoint(l2), color = :orange)
+f

We can see that the two lines do not share a common set of points and edges in the plot, so they are not equal:

julia
GO.equals(l1, l2)  # returns false
false

Implementation

This is the GeoInterface-compatible implementation.

First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait. This is also used in the implementation, since it's a lot less work!

Note that while we need the same set of points and edges, they don't need to be provided in the same order for polygons. For for example, we need the same set points for two multipoints to be equal, but they don't have to be saved in the same order. The winding order also doesn't have to be the same to represent the same geometry. This requires checking every point against every other point in the two geometries we are comparing. Also, some geometries must be "closed" like polygons and linear rings. These will be assumed to be closed, even if they don't have a repeated last point explicitly written in the coordinates. Additionally, geometries and multi-geometries can be equal if the multi-geometry only includes that single geometry.

julia
"""
+    equals(geom1, geom2)::Bool
+
+Compare two Geometries return true if they are the same geometry.
+
+# Examples
+\`\`\`jldoctest
+import GeometryOps as GO, GeoInterface as GI
+poly1 = GI.Polygon([[(0,0), (0,5), (5,5), (5,0), (0,0)]])
+poly2 = GI.Polygon([[(0,0), (0,5), (5,5), (5,0), (0,0)]])
+
+GO.equals(poly1, poly2)

output

julia
true
+\`\`\`
+"""
+equals(geom_a, geom_b) = equals(
+    GI.trait(geom_a), geom_a,
+    GI.trait(geom_b), geom_b,
+)
+
+"""
+    equals(::T, geom_a, ::T, geom_b)::Bool
+
+Two geometries of the same type, which don't have a equals function to dispatch
+off of should throw an error.
+"""
+equals(::T, geom_a, ::T, geom_b) where T = error("Cant compare $T yet")
+
+"""
+    equals(trait_a, geom_a, trait_b, geom_b)
+
+Two geometries which are not of the same type cannot be equal so they always
+return false.
+"""
+equals(trait_a, geom_a, trait_b, geom_b) = false
+
+"""
+    equals(::GI.PointTrait, p1, ::GI.PointTrait, p2)::Bool
+
+Two points are the same if they have the same x and y (and z if 3D) coordinates.
+"""
+function equals(::GI.PointTrait, p1, ::GI.PointTrait, p2)
+    GI.ncoord(p1) == GI.ncoord(p2) || return false
+    GI.x(p1) == GI.x(p2) || return false
+    GI.y(p1) == GI.y(p2) || return false
+    if GI.is3d(p1)
+        GI.z(p1) == GI.z(p2) || return false
+    end
+    return true
+end
+
+"""
+    equals(::GI.PointTrait, p1, ::GI.MultiPointTrait, mp2)::Bool
+
+A point and a multipoint are equal if the multipoint is composed of a single
+point that is equivalent to the given point.
+"""
+function equals(::GI.PointTrait, p1, ::GI.MultiPointTrait, mp2)
+    GI.npoint(mp2) == 1 || return false
+    return equals(p1, GI.getpoint(mp2, 1))
+end
+
+"""
+    equals(::GI.MultiPointTrait, mp1, ::GI.PointTrait, p2)::Bool
+
+A point and a multipoint are equal if the multipoint is composed of a single
+point that is equivalent to the given point.
+"""
+equals(trait1::GI.MultiPointTrait, mp1, trait2::GI.PointTrait, p2) =
+    equals(trait2, p2, trait1, mp1)
+
+"""
+    equals(::GI.MultiPointTrait, mp1, ::GI.MultiPointTrait, mp2)::Bool
+
+Two multipoints are equal if they share the same set of points.
+"""
+function equals(::GI.MultiPointTrait, mp1, ::GI.MultiPointTrait, mp2)
+    GI.npoint(mp1) == GI.npoint(mp2) || return false
+    for p1 in GI.getpoint(mp1)
+        has_match = false  # if point has a matching point in other multipoint
+        for p2 in GI.getpoint(mp2)
+            if equals(p1, p2)
+                has_match = true
+                break
+            end
+        end
+        has_match || return false  # if no matching point, can't be equal
+    end
+    return true  # all points had a match
+end
+
+"""
+    _equals_curves(c1, c2, closed_type1, closed_type2)::Bool
+
+Two curves are equal if they share the same set of point, representing the same
+geometry. Both curves must must be composed of the same set of points, however,
+they do not have to wind in the same direction, or start on the same point to be
+equivalent.
+Inputs:
+    c1 first geometry
+    c2 second geometry
+    closed_type1::Bool true if c1 is closed by definition (polygon, linear ring)
+    closed_type2::Bool true if c2 is closed by definition (polygon, linear ring)
+"""
+function _equals_curves(c1, c2, closed_type1, closed_type2)

Check if both curves are closed or not

julia
    n1 = GI.npoint(c1)
+    n2 = GI.npoint(c2)
+    c1_repeat_point = GI.getpoint(c1, 1) == GI.getpoint(c1, n1)
+    n2 = GI.npoint(c2)
+    c2_repeat_point = GI.getpoint(c2, 1) == GI.getpoint(c2, n2)
+    closed1 = closed_type1 || c1_repeat_point
+    closed2 = closed_type2 || c2_repeat_point
+    closed1 == closed2 || return false

How many points in each curve

julia
    n1 -= c1_repeat_point ? 1 : 0
+    n2 -= c2_repeat_point ? 1 : 0
+    n1 == n2 || return false
+    n1 == 0 && return true

Find offset between curves

julia
    jstart = nothing
+    p1 = GI.getpoint(c1, 1)
+    for i in 1:n2
+        if equals(p1, GI.getpoint(c2, i))
+            jstart = i
+            break
+        end
+    end

no point matches the first point

julia
    isnothing(jstart) && return false

found match for only point

julia
    n1 == 1 && return true

if isn't closed and first or last point don't match, not same curve

julia
    !closed_type1 && (jstart != 1 && jstart != n1) && return false

Check if curves are going in same direction

julia
    i = 2
+    j = jstart + 1
+    j -= j > n2 ? n2 : 0
+    same_direction = equals(GI.getpoint(c1, i), GI.getpoint(c2, j))

if only 2 points, we have already compared both

julia
    n1 == 2 && return same_direction

Check all remaining points are the same wrapping around line

julia
    jstep = same_direction ? 1 : -1
+    for i in 2:n1
+        ip = GI.getpoint(c1, i)
+        j = jstart + (i - 1) * jstep
+        j += (0 < j <= n2) ? 0 : (n2 * -jstep)
+        jp = GI.getpoint(c2, j)
+        equals(ip, jp) || return false
+    end
+    return true
+end
+
+"""
+    equals(
+        ::Union{GI.LineTrait, GI.LineStringTrait}, l1,
+        ::Union{GI.LineTrait, GI.LineStringTrait}, l2,
+    )::Bool
+
+Two lines/linestrings are equal if they share the same set of points going
+along the curve. Note that lines/linestrings aren't closed by definition.
+"""
+equals(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l2,
+) = _equals_curves(l1, l2, false, false)
+
+"""
+    equals(
+        ::Union{GI.LineTrait, GI.LineStringTrait}, l1,
+        ::GI.LinearRingTrait, l2,
+    )::Bool
+
+A line/linestring and a linear ring are equal if they share the same set of
+points going along the curve. Note that lines aren't closed by definition, but
+rings are, so the line must have a repeated last point to be equal
+"""
+equals(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l1,
+    ::GI.LinearRingTrait, l2,
+) = _equals_curves(l1, l2, false, true)
+
+"""
+    equals(
+        ::GI.LinearRingTrait, l1,
+        ::Union{GI.LineTrait, GI.LineStringTrait}, l2,
+    )::Bool
+
+A linear ring and a line/linestring are equal if they share the same set of
+points going along the curve. Note that lines aren't closed by definition, but
+rings are, so the line must have a repeated last point to be equal
+"""
+equals(
+    ::GI.LinearRingTrait, l1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l2,
+) = _equals_curves(l1, l2, true, false)
+
+"""
+    equals(
+        ::GI.LinearRingTrait, l1,
+        ::GI.LinearRingTrait, l2,
+    )::Bool
+
+Two linear rings are equal if they share the same set of points going along the
+curve. Note that rings are closed by definition, so they can have, but don't
+need, a repeated last point to be equal.
+"""
+equals(
+    ::GI.LinearRingTrait, l1,
+    ::GI.LinearRingTrait, l2,
+) = _equals_curves(l1, l2, true, true)
+
+"""
+    equals(::GI.PolygonTrait, geom_a, ::GI.PolygonTrait, geom_b)::Bool
+
+Two polygons are equal if they share the same exterior edge and holes.
+"""
+function equals(::GI.PolygonTrait, geom_a, ::GI.PolygonTrait, geom_b)

Check if exterior is equal

julia
    _equals_curves(
+        GI.getexterior(geom_a), GI.getexterior(geom_b),
+        true, true,  # linear rings are closed by definition
+    ) || return false

Check if number of holes are equal

julia
    GI.nhole(geom_a) == GI.nhole(geom_b) || return false

Check if holes are equal

julia
    for ihole in GI.gethole(geom_a)
+        has_match = false
+        for jhole in GI.gethole(geom_b)
+            if _equals_curves(
+                ihole, jhole,
+                true, true,  # linear rings are closed by definition
+            )
+                has_match = true
+                break
+            end
+        end
+        has_match || return false
+    end
+    return true
+end
+
+"""
+    equals(::GI.PolygonTrait, geom_a, ::GI.MultiPolygonTrait, geom_b)::Bool
+
+A polygon and a multipolygon are equal if the multipolygon is composed of a
+single polygon that is equivalent to the given polygon.
+"""
+function equals(::GI.PolygonTrait, geom_a, ::MultiPolygonTrait, geom_b)
+    GI.npolygon(geom_b) == 1 || return false
+    return equals(geom_a, GI.getpolygon(geom_b, 1))
+end
+
+"""
+    equals(::GI.MultiPolygonTrait, geom_a, ::GI.PolygonTrait, geom_b)::Bool
+
+A polygon and a multipolygon are equal if the multipolygon is composed of a
+single polygon that is equivalent to the given polygon.
+"""
+equals(trait_a::GI.MultiPolygonTrait, geom_a, trait_b::PolygonTrait, geom_b) =
+    equals(trait_b, geom_b, trait_a, geom_a)
+
+"""
+    equals(::GI.PolygonTrait, geom_a, ::GI.PolygonTrait, geom_b)::Bool
+
+Two multipolygons are equal if they share the same set of polygons.
+"""
+function equals(::GI.MultiPolygonTrait, geom_a, ::GI.MultiPolygonTrait, geom_b)

Check if same number of polygons

julia
    GI.npolygon(geom_a) == GI.npolygon(geom_b) || return false

Check if each polygon has a matching polygon

julia
    for poly_a in GI.getpolygon(geom_a)
+        has_match = false
+        for poly_b in GI.getpolygon(geom_b)
+            if equals(poly_a, poly_b)
+                has_match = true
+                break
+            end
+        end
+        has_match || return false
+    end
+    return true
+end

This page was generated using Literate.jl.

`,47),p=[h];function k(e,r,d,g,E,F){return a(),i("div",null,p)}const c=s(t,[["render",k]]);export{y as __pageData,c as default}; diff --git a/previews/PR195/assets/source_methods_equals.md.DSTnK05y.lean.js b/previews/PR195/assets/source_methods_equals.md.DSTnK05y.lean.js new file mode 100644 index 000000000..53052429c --- /dev/null +++ b/previews/PR195/assets/source_methods_equals.md.DSTnK05y.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const l="/GeometryOps.jl/previews/PR195/assets/mifutmo.CgiryX2p.png",y=JSON.parse('{"title":"Equals","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/equals.md","filePath":"source/methods/equals.md","lastUpdated":null}'),t={name:"source/methods/equals.md"},h=n("",47),p=[h];function k(e,r,d,g,E,F){return a(),i("div",null,p)}const c=s(t,[["render",k]]);export{y as __pageData,c as default}; diff --git a/previews/PR195/assets/source_methods_geom_relations_contains.md.C6qh7KbG.js b/previews/PR195/assets/source_methods_geom_relations_contains.md.C6qh7KbG.js new file mode 100644 index 000000000..5a9d90fc5 --- /dev/null +++ b/previews/PR195/assets/source_methods_geom_relations_contains.md.C6qh7KbG.js @@ -0,0 +1,33 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const t="/GeometryOps.jl/previews/PR195/assets/eveaplj._0R9BbFk.png",y=JSON.parse('{"title":"Contains","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/geom_relations/contains.md","filePath":"source/methods/geom_relations/contains.md","lastUpdated":null}'),e={name:"source/methods/geom_relations/contains.md"},h=n(`

Contains

julia
export contains

What is contains?

The contains function checks if a given geometry completely contains another geometry, or in other words, that the second geometry is completely within the first. This requires that the two interiors intersect and that the interior and boundary of the second geometry is not in the exterior of the first geometry.

To provide an example, consider these two lines:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+l1 = GI.LineString([(0.0, 0.0), (1.0, 0.0), (0.0, 0.1)])
+l2 = GI.LineString([(0.25, 0.0), (0.75, 0.0)])
+f, a, p = lines(GI.getpoint(l1), color = :blue)
+scatter!(GI.getpoint(l1), color = :blue)
+lines!(GI.getpoint(l2), color = :orange)
+scatter!(GI.getpoint(l2), color = :orange)
+f

We can see that all of the points and edges of l2 are within l1, so l1 contains l2. However, l2 does not contain l1.

julia
GO.contains(l1, l2)  # returns true
+GO.contains(l2, l1)  # returns false
false

Implementation

This is the GeoInterface-compatible implementation.

Given that contains is the exact opposite of within, we simply pass the two inputs variables, swapped in order, to within.

julia
"""
+    contains(g1::AbstractGeometry, g2::AbstractGeometry)::Bool
+
+Return true if the second geometry is completely contained by the first
+geometry. The interiors of both geometries must intersect and the interior and
+boundary of the secondary (g2) must not intersect the exterior of the first
+(g1).
+
+\`contains\` returns the exact opposite result of \`within\`.
+
+# Examples
+
+\`\`\`jldoctest
+import GeometryOps as GO, GeoInterface as GI
+line = GI.LineString([(1, 1), (1, 2), (1, 3), (1, 4)])
+point = GI.Point((1, 2))
+
+GO.contains(line, point)

output

julia
true
+\`\`\`
+"""
+contains(g1, g2) = GeometryOps.within(g2, g1)

This page was generated using Literate.jl.

`,18),l=[h];function p(k,r,o,d,g,E){return a(),i("div",null,l)}const F=s(e,[["render",p]]);export{y as __pageData,F as default}; diff --git a/previews/PR195/assets/source_methods_geom_relations_contains.md.C6qh7KbG.lean.js b/previews/PR195/assets/source_methods_geom_relations_contains.md.C6qh7KbG.lean.js new file mode 100644 index 000000000..d5d76755a --- /dev/null +++ b/previews/PR195/assets/source_methods_geom_relations_contains.md.C6qh7KbG.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const t="/GeometryOps.jl/previews/PR195/assets/eveaplj._0R9BbFk.png",y=JSON.parse('{"title":"Contains","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/geom_relations/contains.md","filePath":"source/methods/geom_relations/contains.md","lastUpdated":null}'),e={name:"source/methods/geom_relations/contains.md"},h=n("",18),l=[h];function p(k,r,o,d,g,E){return a(),i("div",null,l)}const F=s(e,[["render",p]]);export{y as __pageData,F as default}; diff --git a/previews/PR195/assets/source_methods_geom_relations_coveredby.md.DKl5czuP.js b/previews/PR195/assets/source_methods_geom_relations_coveredby.md.DKl5czuP.js new file mode 100644 index 000000000..17491deaa --- /dev/null +++ b/previews/PR195/assets/source_methods_geom_relations_coveredby.md.DKl5czuP.js @@ -0,0 +1,183 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const e="/GeometryOps.jl/previews/PR195/assets/uxbpgyh.DC3TvBOO.png",c=JSON.parse('{"title":"CoveredBy","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/geom_relations/coveredby.md","filePath":"source/methods/geom_relations/coveredby.md","lastUpdated":null}'),l={name:"source/methods/geom_relations/coveredby.md"},h=n(`

CoveredBy

julia
export coveredby

What is coveredby?

The coveredby function checks if one geometry is covered by another geometry. This is an extension of within that does not require the interiors of the two geometries to intersect, but still does require that the interior and boundary of the first geometry isn't outside of the second geometry.

To provide an example, consider this point and line:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+p1 = (0.0, 0.0)
+l1 = GI.Line([p1, (1.0, 1.0)])
+f, a, p = lines(GI.getpoint(l1))
+scatter!(p1, color = :red)
+f

As we can see, p1 is on the endpoint of l1. This means it is not within, but it does meet the definition of coveredby.

julia
GO.coveredby(p1, l1)  # true
true

Implementation

This is the GeoInterface-compatible implementation.

First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait.

Each of these calls a method in the geom_geom_processors file. The methods in this file determine if the given geometries meet a set of criteria. For the coveredby function and arguments g1 and g2, this criteria is as follows: - points of g1 are allowed to be in the interior of g2 (either through overlap or crossing for lines) - points of g1 are allowed to be on the boundary of g2 - points of g1 are not allowed to be in the exterior of g2 - no points of g1 are required to be in the interior of g2 - no points of g1 are required to be on the boundary of g2 - no points of g1 are required to be in the exterior of g2

The code for the specific implementations is in the geom_geom_processors file.

julia
const COVEREDBY_ALLOWS = (in_allow = true, on_allow = true, out_allow = false)
+const COVEREDBY_CURVE_ALLOWS = (over_allow = true, cross_allow = true, on_allow = true, out_allow = false)
+const COVEREDBY_CURVE_REQUIRES = (in_require = false, on_require = false, out_require = false)
+const COVEREDBY_POLYGON_REQUIRES = (in_require = true, on_require = false, out_require = false,)
+const COVEREDBY_EXACT = (exact = _False(),)
+
+"""
+    coveredby(g1, g2)::Bool
+
+Return \`true\` if the first geometry is completely covered by the second
+geometry. The interior and boundary of the primary geometry (g1) must not
+intersect the exterior of the secondary geometry (g2).
+
+Furthermore, \`coveredby\` returns the exact opposite result of \`covers\`. They are
+equivalent with the order of the arguments swapped.
+
+# Examples
+\`\`\`jldoctest setup=:(using GeometryOps, GeometryBasics)
+import GeometryOps as GO, GeoInterface as GI
+p1 = GI.Point(0.0, 0.0)
+p2 = GI.Point(1.0, 1.0)
+l1 = GI.Line([p1, p2])
+
+GO.coveredby(p1, l1)

output

julia
true
+\`\`\`
+"""
+coveredby(g1, g2) = _coveredby(trait(g1), g1, trait(g2), g2)

Convert features to geometries

julia
_coveredby(::GI.FeatureTrait, g1, ::Any, g2) = coveredby(GI.geometry(g1), g2)
+_coveredby(::Any, g1, t2::GI.FeatureTrait, g2) = coveredby(g1, GI.geometry(g2))
+_coveredby(::FeatureTrait, g1, ::FeatureTrait, g2) = coveredby(GI.geometry(g1), GI.geometry(g2))

Points coveredby geometries

Point is coveredby another point if those points are equal

julia
_coveredby(
+    ::GI.PointTrait, g1,
+    ::GI.PointTrait, g2,
+) = equals(g1, g2)

Point is coveredby a line/linestring if it is on a line vertex or an edge

julia
_coveredby(
+    ::GI.PointTrait, g1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _point_curve_process(
+    g1, g2;
+    COVEREDBY_ALLOWS...,
+    closed_curve = false,
+)

Point is coveredby a linearring if it is on a vertex or an edge of ring

julia
_coveredby(
+    ::GI.PointTrait, g1,
+    ::GI.LinearRingTrait, g2,
+) = _point_curve_process(
+    g1, g2;
+    COVEREDBY_ALLOWS...,
+    closed_curve = true,
+)

Point is coveredby a polygon if it is inside polygon, including edges/vertices

julia
_coveredby(
+    ::GI.PointTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _point_polygon_process(
+    g1, g2;
+    COVEREDBY_ALLOWS...,
+    COVEREDBY_EXACT...,
+)

Points cannot cover any geometry other than points

julia
_coveredby(
+    ::Union{GI.AbstractCurveTrait, GI.PolygonTrait}, g1,
+    ::GI.PointTrait, g2,
+) = false

Lines coveredby geometries

julia
#= Linestring is coveredby a line if all interior and boundary points of the
+first line are on the interior/boundary points of the second line. =#
+_coveredby(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _line_curve_process(
+    g1, g2;
+    COVEREDBY_CURVE_ALLOWS...,
+    COVEREDBY_CURVE_REQUIRES...,
+    COVEREDBY_EXACT...,
+    closed_line = false,
+    closed_curve = false,
+)
+
+#= Linestring is coveredby a ring if all interior and boundary points of the
+line are on the edges of the ring. =#
+_coveredby(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::GI.LinearRingTrait, g2,
+) = _line_curve_process(
+    g1, g2;
+    COVEREDBY_CURVE_ALLOWS...,
+    COVEREDBY_CURVE_REQUIRES...,
+    COVEREDBY_EXACT...,
+    closed_line = false,
+    closed_curve = true,
+)
+
+#= Linestring is coveredby a polygon if all interior and boundary points of the
+line are in the polygon interior or on its edges, including hole edges. =#
+_coveredby(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::GI.PolygonTrait, g2,
+) = _line_polygon_process(
+    g1, g2;
+    COVEREDBY_ALLOWS...,
+    COVEREDBY_CURVE_REQUIRES...,
+    COVEREDBY_EXACT...,
+    closed_line = false,
+)

Rings covered by geometries

julia
#= Linearring is covered by a line if all vertices and edges of the ring are on
+the edges and vertices of the line. =#
+_coveredby(
+    ::GI.LinearRingTrait, g1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _line_curve_process(
+    g1, g2;
+    COVEREDBY_CURVE_ALLOWS...,
+    COVEREDBY_CURVE_REQUIRES...,
+    COVEREDBY_EXACT...,
+    closed_line = true,
+    closed_curve = false,
+)
+
+#= Linearring is covered by another linear ring if all vertices and edges of the
+first ring are on the edges/vertices of the second ring. =#
+_coveredby(
+    ::GI.LinearRingTrait, g1,
+    ::GI.LinearRingTrait, g2,
+) = _line_curve_process(
+    g1, g2;
+    COVEREDBY_CURVE_ALLOWS...,
+    COVEREDBY_CURVE_REQUIRES...,
+    COVEREDBY_EXACT...,
+    closed_line = true,
+    closed_curve = true,
+)
+
+#= Linearring is coveredby a polygon if all vertices and edges of the ring are
+in the polygon interior or on the polygon edges, including hole edges. =#
+_coveredby(
+    ::GI.LinearRingTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _line_polygon_process(
+    g1, g2;
+    COVEREDBY_ALLOWS...,
+    COVEREDBY_CURVE_REQUIRES...,
+    COVEREDBY_EXACT...,
+    closed_line = true,
+)

Polygons covered by geometries

julia
#= Polygon is covered by another polygon if if the interior and edges of the
+first polygon are in the second polygon interior or on polygon edges, including
+hole edges.=#
+_coveredby(
+    ::GI.PolygonTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _polygon_polygon_process(
+    g1, g2;
+    COVEREDBY_ALLOWS...,
+    COVEREDBY_POLYGON_REQUIRES...,
+    COVEREDBY_EXACT...,
+)

Polygons cannot covered by any curves

julia
_coveredby(
+    ::GI.PolygonTrait, g1,
+    ::GI.AbstractCurveTrait, g2,
+) = false

Geometries coveredby multi-geometry/geometry collections

julia
#= Geometry is covered by a multi-geometry or a collection if one of the elements
+of the collection cover the geometry. =#
+function _coveredby(
+    ::Union{GI.PointTrait, GI.AbstractCurveTrait, GI.PolygonTrait}, g1,
+    ::Union{
+        GI.MultiPointTrait, GI.AbstractMultiCurveTrait,
+        GI.MultiPolygonTrait, GI.GeometryCollectionTrait,
+    }, g2,
+)
+    for sub_g2 in GI.getgeom(g2)
+        coveredby(g1, sub_g2) && return true
+    end
+    return false
+end

Multi-geometry/geometry collections coveredby geometries

julia
#= Multi-geometry or a geometry collection is covered by a geometry if all
+elements of the collection are covered by the geometry. =#
+function _coveredby(
+    ::Union{
+        GI.MultiPointTrait, GI.AbstractMultiCurveTrait,
+        GI.MultiPolygonTrait, GI.GeometryCollectionTrait,
+    }, g1,
+    ::GI.AbstractGeometryTrait, g2,
+)
+    for sub_g1 in GI.getgeom(g1)
+        !coveredby(sub_g1, g2) && return false
+    end
+    return true
+end

This page was generated using Literate.jl.

`,45),t=[h];function p(k,r,E,d,g,o){return a(),i("div",null,t)}const F=s(l,[["render",p]]);export{c as __pageData,F as default}; diff --git a/previews/PR195/assets/source_methods_geom_relations_coveredby.md.DKl5czuP.lean.js b/previews/PR195/assets/source_methods_geom_relations_coveredby.md.DKl5czuP.lean.js new file mode 100644 index 000000000..19a201477 --- /dev/null +++ b/previews/PR195/assets/source_methods_geom_relations_coveredby.md.DKl5czuP.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const e="/GeometryOps.jl/previews/PR195/assets/uxbpgyh.DC3TvBOO.png",c=JSON.parse('{"title":"CoveredBy","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/geom_relations/coveredby.md","filePath":"source/methods/geom_relations/coveredby.md","lastUpdated":null}'),l={name:"source/methods/geom_relations/coveredby.md"},h=n("",45),t=[h];function p(k,r,E,d,g,o){return a(),i("div",null,t)}const F=s(l,[["render",p]]);export{c as __pageData,F as default}; diff --git a/previews/PR195/assets/source_methods_geom_relations_covers.md.EwhGx2oH.js b/previews/PR195/assets/source_methods_geom_relations_covers.md.EwhGx2oH.js new file mode 100644 index 000000000..272964610 --- /dev/null +++ b/previews/PR195/assets/source_methods_geom_relations_covers.md.EwhGx2oH.js @@ -0,0 +1,33 @@ +import{_ as s,c as i,o as a,a7 as e}from"./chunks/framework.BjTE4JnT.js";const n="/GeometryOps.jl/previews/PR195/assets/uxbpgyh.DC3TvBOO.png",y=JSON.parse('{"title":"Covers","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/geom_relations/covers.md","filePath":"source/methods/geom_relations/covers.md","lastUpdated":null}'),t={name:"source/methods/geom_relations/covers.md"},p=e(`

Covers

julia
export covers

What is covers?

The covers function checks if a given geometry completely covers another geometry. For this to be true, the "contained" geometry's interior and boundaries must be covered by the "covering" geometry's interior and boundaries. The interiors do not need to overlap.

To provide an example, consider these two lines:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+p1 = (0.0, 0.0)
+p2 = (1.0, 1.0)
+l1 = GI.Line([p1, p2])
+
+f, a, p = lines(GI.getpoint(l1))
+scatter!(p1, color = :red)
+f

julia
GO.covers(l1, p1)  # returns true
+GO.covers(p1, l1)  # returns false
false

Implementation

This is the GeoInterface-compatible implementation.

Given that covers is the exact opposite of coveredby, we simply pass the two inputs variables, swapped in order, to coveredby.

julia
"""
+    covers(g1::AbstractGeometry, g2::AbstractGeometry)::Bool
+
+Return true if the first geometry is completely covers the second geometry,
+The exterior and boundary of the second geometry must not be outside of the
+interior and boundary of the first geometry. However, the interiors need not
+intersect.
+
+\`covers\` returns the exact opposite result of \`coveredby\`.
+
+# Examples
+
+\`\`\`jldoctest
+import GeometryOps as GO, GeoInterface as GI
+l1 = GI.LineString([(1.0, 1.0), (1.0, 2.0), (1.0, 3.0), (1.0, 4.0)])
+l2 = GI.LineString([(1.0, 1.0), (1.0, 2.0)])
+
+GO.covers(l1, l2)

output

julia
true
+\`\`\`
+"""
+covers(g1, g2)::Bool = GeometryOps.coveredby(g2, g1)

This page was generated using Literate.jl.

`,17),l=[p];function h(k,r,o,d,c,g){return a(),i("div",null,l)}const u=s(t,[["render",h]]);export{y as __pageData,u as default}; diff --git a/previews/PR195/assets/source_methods_geom_relations_covers.md.EwhGx2oH.lean.js b/previews/PR195/assets/source_methods_geom_relations_covers.md.EwhGx2oH.lean.js new file mode 100644 index 000000000..45e8d6665 --- /dev/null +++ b/previews/PR195/assets/source_methods_geom_relations_covers.md.EwhGx2oH.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as e}from"./chunks/framework.BjTE4JnT.js";const n="/GeometryOps.jl/previews/PR195/assets/uxbpgyh.DC3TvBOO.png",y=JSON.parse('{"title":"Covers","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/geom_relations/covers.md","filePath":"source/methods/geom_relations/covers.md","lastUpdated":null}'),t={name:"source/methods/geom_relations/covers.md"},p=e("",17),l=[p];function h(k,r,o,d,c,g){return a(),i("div",null,l)}const u=s(t,[["render",h]]);export{y as __pageData,u as default}; diff --git a/previews/PR195/assets/source_methods_geom_relations_crosses.md.BHrKZtR2.js b/previews/PR195/assets/source_methods_geom_relations_crosses.md.BHrKZtR2.js new file mode 100644 index 000000000..e7c198b5b --- /dev/null +++ b/previews/PR195/assets/source_methods_geom_relations_crosses.md.BHrKZtR2.js @@ -0,0 +1,120 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const y=JSON.parse('{"title":"Crossing checks","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/geom_relations/crosses.md","filePath":"source/methods/geom_relations/crosses.md","lastUpdated":null}'),l={name:"source/methods/geom_relations/crosses.md"},p=n(`

Crossing checks

julia
"""
+     crosses(geom1, geom2)::Bool
+
+Return \`true\` if the intersection results in a geometry whose dimension is one less than
+the maximum dimension of the two source geometries and the intersection set is interior to
+both source geometries.
+
+TODO: broken
+
+# Examples
+\`\`\`julia
+import GeoInterface as GI, GeometryOps as GO

TODO: Add working example

julia
\`\`\`
+"""
+crosses(g1, g2)::Bool = crosses(trait(g1), g1, trait(g2), g2)::Bool
+crosses(t1::FeatureTrait, g1, t2, g2)::Bool = crosses(GI.geometry(g1), g2)
+crosses(t1, g1, t2::FeatureTrait, g2)::Bool = crosses(g1, geometry(g2))
+crosses(::MultiPointTrait, g1, ::LineStringTrait, g2)::Bool = multipoint_crosses_line(g1, g2)
+crosses(::MultiPointTrait, g1, ::PolygonTrait, g2)::Bool = multipoint_crosses_poly(g1, g2)
+crosses(::LineStringTrait, g1, ::MultiPointTrait, g2)::Bool = multipoint_crosses_lines(g2, g1)
+crosses(::LineStringTrait, g1, ::PolygonTrait, g2)::Bool = line_crosses_poly(g1, g2)
+crosses(::LineStringTrait, g1, ::LineStringTrait, g2)::Bool = line_crosses_line(g1, g2)
+crosses(::PolygonTrait, g1, ::MultiPointTrait, g2)::Bool = multipoint_crosses_poly(g2, g1)
+crosses(::PolygonTrait, g1, ::LineStringTrait, g2)::Bool = line_crosses_poly(g2, g1)
+
+function multipoint_crosses_line(geom1, geom2)
+    int_point = false
+    ext_point = false
+    i = 1
+    np2 = GI.npoint(geom2)
+
+    while i < GI.npoint(geom1) && !int_point && !ext_point
+        for j in 1:GI.npoint(geom2) - 1
+            exclude_boundary = (j === 1 || j === np2 - 2) ? :none : :both
+            if _point_on_segment(GI.getpoint(geom1, i), (GI.getpoint(geom2, j), GI.getpoint(geom2, j + 1)); exclude_boundary)
+                int_point = true
+            else
+                ext_point = true
+            end
+        end
+        i += 1
+    end
+    return int_point && ext_point
+end
+
+function line_crosses_line(line1, line2)
+    np2 = GI.npoint(line2)
+    if GeometryOps.intersects(line1, line2)
+        for i in 1:GI.npoint(line1) - 1
+            for j in 1:GI.npoint(line2) - 1
+                exclude_boundary = (j === 1 || j === np2 - 2) ? :none : :both
+                pa = GI.getpoint(line1, i)
+                pb = GI.getpoint(line1, i + 1)
+                p = GI.getpoint(line2, j)
+                _point_on_segment(p, (pa, pb); exclude_boundary) && return true
+            end
+        end
+    end
+    return false
+end
+
+function line_crosses_poly(line, poly)
+    for l in flatten(AbstractCurveTrait, poly)
+        intersects(line, l) && return true
+    end
+    return false
+end
+
+function multipoint_crosses_poly(mp, poly)
+    int_point = false
+    ext_point = false
+
+    for p in GI.getpoint(mp)
+        if _point_polygon_process(
+            p, poly;
+            in_allow = true, on_allow = true, out_allow = false, exact = _False()
+        )
+            int_point = true
+        else
+            ext_point = true
+        end
+        int_point && ext_point && return true
+    end
+    return false
+end
+
+#= TODO: Once crosses is swapped over to use the geom relations workflow, can
+delete these helpers. =#
+
+function _point_on_segment(point, (start, stop); exclude_boundary::Symbol=:none)::Bool
+    x, y = GI.x(point), GI.y(point)
+    x1, y1 = GI.x(start), GI.y(start)
+    x2, y2 = GI.x(stop), GI.y(stop)
+
+    dxc = x - x1
+    dyc = y - y1
+    dx1 = x2 - x1
+    dy1 = y2 - y1

TODO use better predicate for crossing here

julia
    cross = dxc * dy1 - dyc * dx1
+    cross != 0 && return false

Will constprop optimise these away?

julia
    if exclude_boundary === :none
+        if abs(dx1) >= abs(dy1)
+            return dx1 > 0 ? x1 <= x && x <= x2 : x2 <= x && x <= x1
+        end
+        return dy1 > 0 ? y1 <= y && y <= y2 : y2 <= y && y <= y1
+    elseif exclude_boundary === :start
+        if abs(dx1) >= abs(dy1)
+             return dx1 > 0 ? x1 < x && x <= x2 : x2 <= x && x < x1
+        end
+        return dy1 > 0 ? y1 < y && y <= y2 : y2 <= y && y < y1
+    elseif exclude_boundary === :end
+        if abs(dx1) >= abs(dy1)
+            return dx1 > 0 ? x1 <= x && x < x2 : x2 < x && x <= x1
+        end
+        return dy1 > 0 ? y1 <= y && y < y2 : y2 < y && y <= y1
+    elseif exclude_boundary === :both
+        if abs(dx1) >= abs(dy1)
+            return dx1 > 0 ? x1 < x && x < x2 : x2 < x && x < x1
+        end
+        return dy1 > 0 ? y1 < y && y < y2 : y2 < y && y < y1
+    end
+    return false
+end

This page was generated using Literate.jl.

`,10),h=[p];function t(k,e,r,E,g,d){return a(),i("div",null,h)}const o=s(l,[["render",t]]);export{y as __pageData,o as default}; diff --git a/previews/PR195/assets/source_methods_geom_relations_crosses.md.BHrKZtR2.lean.js b/previews/PR195/assets/source_methods_geom_relations_crosses.md.BHrKZtR2.lean.js new file mode 100644 index 000000000..f790d2696 --- /dev/null +++ b/previews/PR195/assets/source_methods_geom_relations_crosses.md.BHrKZtR2.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const y=JSON.parse('{"title":"Crossing checks","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/geom_relations/crosses.md","filePath":"source/methods/geom_relations/crosses.md","lastUpdated":null}'),l={name:"source/methods/geom_relations/crosses.md"},p=n("",10),h=[p];function t(k,e,r,E,g,d){return a(),i("div",null,h)}const o=s(l,[["render",t]]);export{y as __pageData,o as default}; diff --git a/previews/PR195/assets/source_methods_geom_relations_disjoint.md.Cx5AfXIW.js b/previews/PR195/assets/source_methods_geom_relations_disjoint.md.Cx5AfXIW.js new file mode 100644 index 000000000..5f193cc86 --- /dev/null +++ b/previews/PR195/assets/source_methods_geom_relations_disjoint.md.Cx5AfXIW.js @@ -0,0 +1,178 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const t="/GeometryOps.jl/previews/PR195/assets/raeppvv.C3SxJ3x-.png",c=JSON.parse('{"title":"Disjoint","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/geom_relations/disjoint.md","filePath":"source/methods/geom_relations/disjoint.md","lastUpdated":null}'),h={name:"source/methods/geom_relations/disjoint.md"},l=n(`

Disjoint

julia
export disjoint

What is disjoint?

The disjoint function checks if one geometry is outside of another geometry, without sharing any boundaries or interiors.

To provide an example, consider these two lines:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+l1 = GI.LineString([(0.0, 0.0), (1.0, 0.0), (0.0, 0.1)])
+l2 = GI.LineString([(2.0, 0.0), (2.75, 0.0)])
+f, a, p = lines(GI.getpoint(l1), color = :blue)
+scatter!(GI.getpoint(l1), color = :blue)
+lines!(GI.getpoint(l2), color = :orange)
+scatter!(GI.getpoint(l2), color = :orange)
+f

We can see that none of the edges or vertices of l1 interact with l2 so they are disjoint.

julia
GO.disjoint(l1, l2)  # returns true
true

Implementation

This is the GeoInterface-compatible implementation.

First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait.

Each of these calls a method in the geom_geom_processors file. The methods in this file determine if the given geometries meet a set of criteria. For the disjoint function and arguments g1 and g2, this criteria is as follows: - points of g1 are not allowed to be in the interior of g2 - points of g1 are not allowed to be on the boundary of g2 - points of g1 are allowed to be in the exterior of g2 - no points required to be in the interior of g2 - no points of g1 are required to be on the boundary of g2 - no points of g1 are required to be in the exterior of g2

The code for the specific implementations is in the geom_geom_processors file.

julia
const DISJOINT_ALLOWS = (in_allow = false, on_allow = false, out_allow = true)
+const DISJOINT_CURVE_ALLOWS = (over_allow = false, cross_allow = false, on_allow = false, out_allow = true)
+const DISJOINT_REQUIRES = (in_require = false, on_require = false, out_require = false)
+const DISJOINT_EXACT = (exact = _False(),)
+
+"""
+    disjoint(geom1, geom2)::Bool
+
+Return \`true\` if the first geometry is disjoint from the second geometry.
+
+Return \`true\` if the first geometry is disjoint from the second geometry. The
+interiors and boundaries of both geometries must not intersect.
+
+# Examples
+\`\`\`jldoctest setup=:(using GeometryOps, GeoInterface)
+import GeometryOps as GO, GeoInterface as GI
+
+line = GI.LineString([(1, 1), (1, 2), (1, 3), (1, 4)])
+point = (2, 2)
+GO.disjoint(point, line)

output

julia
true
+\`\`\`
+"""
+disjoint(g1, g2) = _disjoint(trait(g1), g1, trait(g2), g2)

Convert features to geometries

julia
_disjoint(::FeatureTrait, g1, ::Any, g2) = disjoint(GI.geometry(g1), g2)
+_disjoint(::Any, g1, ::FeatureTrait, g2) = disjoint(g1, geometry(g2))
+_disjoint(::FeatureTrait, g1, ::FeatureTrait, g2) = disjoint(GI.geometry(g1), GI.geometry(g2))

Point disjoint geometries

Point is disjoint from another point if the points are not equal.

julia
_disjoint(
+    ::GI.PointTrait, g1,
+    ::GI.PointTrait, g2,
+) = !equals(g1, g2)

Point is disjoint from a linestring if it is not on the line's edges/vertices.

julia
_disjoint(
+    ::GI.PointTrait, g1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _point_curve_process(
+    g1, g2;
+    DISJOINT_ALLOWS...,
+    closed_curve = false,
+)

Point is disjoint from a linearring if it is not on the ring's edges/vertices.

julia
_disjoint(
+    ::GI.PointTrait, g1,
+    ::GI.LinearRingTrait, g2,
+) = _point_curve_process(
+    g1, g2;
+    DISJOINT_ALLOWS...,
+    closed_curve = true,
+)
+
+#= Point is disjoint from a polygon if it is not on any edges, vertices, or
+within the polygon's interior. =#
+_disjoint(
+    ::GI.PointTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _point_polygon_process(
+    g1, g2;
+    DISJOINT_ALLOWS...,
+    DISJOINT_EXACT...,
+)
+
+#= Geometry is disjoint from a point if the point is not in the interior or on
+the boundary of the geometry. =#
+_disjoint(
+    trait1::Union{GI.AbstractCurveTrait, GI.PolygonTrait}, g1,
+    trait2::GI.PointTrait, g2,
+) = _disjoint(trait2, g2, trait1, g1)

Lines disjoint geometries

julia
#= Linestring is disjoint from another line if they do not share any interior
+edge/vertex points or boundary points. =#
+_disjoint(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _line_curve_process(
+    g1, g2;
+    DISJOINT_CURVE_ALLOWS...,
+    DISJOINT_REQUIRES...,
+    DISJOINT_EXACT...,
+    closed_line = false,
+    closed_curve = false,
+)
+
+#= Linestring is disjoint from a linearring if they do not share any interior
+edge/vertex points or boundary points. =#
+_disjoint(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::GI.LinearRingTrait, g2,
+) = _line_curve_process(
+    g1, g2;
+    DISJOINT_CURVE_ALLOWS...,
+    DISJOINT_REQUIRES...,
+    DISJOINT_EXACT...,
+    closed_line = false,
+    closed_curve = true,
+)
+
+#= Linestring is disjoint from a polygon if the interior and boundary points of
+the line are not in the polygon's interior or on the polygon's boundary. =#
+_disjoint(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::GI.PolygonTrait, g2,
+) = _line_polygon_process(
+    g1, g2;
+    DISJOINT_ALLOWS...,
+    DISJOINT_REQUIRES...,
+    DISJOINT_EXACT...,
+    closed_line = false,
+)
+
+#= Geometry is disjoint from a linestring if the line's interior and boundary
+points don't intersect with the geometry's interior and boundary points. =#
+_disjoint(
+    trait1::Union{GI.LinearRingTrait, GI.PolygonTrait}, g1,
+    trait2::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _disjoint(trait2, g2, trait1, g1)

Rings disjoint geometries

julia
#= Linearrings is disjoint from another linearring if they do not share any
+interior edge/vertex points or boundary points.=#
+_disjoint(
+    ::GI.LinearRingTrait, g1,
+    ::GI.LinearRingTrait, g2,
+) = _line_curve_process(
+    g1, g2;
+    DISJOINT_CURVE_ALLOWS...,
+    DISJOINT_REQUIRES...,
+    DISJOINT_EXACT...,
+    closed_line = true,
+    closed_curve = true,
+)
+
+#= Linearring is disjoint from a polygon if the interior and boundary points of
+the ring are not in the polygon's interior or on the polygon's boundary. =#
+_disjoint(
+    ::GI.LinearRingTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _line_polygon_process(
+    g1, g2;
+    DISJOINT_ALLOWS...,
+    DISJOINT_REQUIRES...,
+    DISJOINT_EXACT...,
+    closed_line = true,
+)

Polygon disjoint geometries

julia
#= Polygon is disjoint from another polygon if they do not share any edges or
+vertices and if their interiors do not intersect, excluding any holes. =#
+_disjoint(
+    ::GI.PolygonTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _polygon_polygon_process(
+    g1, g2;
+    DISJOINT_ALLOWS...,
+    DISJOINT_REQUIRES...,
+    DISJOINT_EXACT...,
+)

Geometries disjoint multi-geometry/geometry collections

julia
#= Geometry is disjoint from a multi-geometry or a collection if all of the
+elements of the collection are disjoint from the geometry. =#
+function _disjoint(
+    ::Union{GI.PointTrait, GI.AbstractCurveTrait, GI.PolygonTrait}, g1,
+    ::Union{
+        GI.MultiPointTrait, GI.AbstractMultiCurveTrait,
+        GI.MultiPolygonTrait, GI.GeometryCollectionTrait,
+    }, g2,
+)
+    for sub_g2 in GI.getgeom(g2)
+        !disjoint(g1, sub_g2) && return false
+    end
+    return true
+end

Multi-geometry/geometry collections coveredby geometries

julia
#= Multi-geometry or a geometry collection is covered by a geometry if all
+elements of the collection are covered by the geometry. =#
+function _disjoint(
+    ::Union{
+        GI.MultiPointTrait, GI.AbstractMultiCurveTrait,
+        GI.MultiPolygonTrait, GI.GeometryCollectionTrait,
+    }, g1,
+    ::GI.AbstractGeometryTrait, g2,
+)
+    for sub_g1 in GI.getgeom(g1)
+        !disjoint(sub_g1, g2) && return false
+    end
+    return true
+end

This page was generated using Literate.jl.

`,39),p=[l];function k(e,r,E,g,d,o){return a(),i("div",null,p)}const F=s(h,[["render",k]]);export{c as __pageData,F as default}; diff --git a/previews/PR195/assets/source_methods_geom_relations_disjoint.md.Cx5AfXIW.lean.js b/previews/PR195/assets/source_methods_geom_relations_disjoint.md.Cx5AfXIW.lean.js new file mode 100644 index 000000000..4784324d1 --- /dev/null +++ b/previews/PR195/assets/source_methods_geom_relations_disjoint.md.Cx5AfXIW.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const t="/GeometryOps.jl/previews/PR195/assets/raeppvv.C3SxJ3x-.png",c=JSON.parse('{"title":"Disjoint","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/geom_relations/disjoint.md","filePath":"source/methods/geom_relations/disjoint.md","lastUpdated":null}'),h={name:"source/methods/geom_relations/disjoint.md"},l=n("",39),p=[l];function k(e,r,E,g,d,o){return a(),i("div",null,p)}const F=s(h,[["render",k]]);export{c as __pageData,F as default}; diff --git a/previews/PR195/assets/source_methods_geom_relations_geom_geom_processors.md.C9HuuL9H.js b/previews/PR195/assets/source_methods_geom_relations_geom_geom_processors.md.C9HuuL9H.js new file mode 100644 index 000000000..5eb98e3a1 --- /dev/null +++ b/previews/PR195/assets/source_methods_geom_relations_geom_geom_processors.md.C9HuuL9H.js @@ -0,0 +1,437 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const o=JSON.parse('{"title":"Line-curve interaction","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/geom_relations/geom_geom_processors.md","filePath":"source/methods/geom_relations/geom_geom_processors.md","lastUpdated":null}'),h={name:"source/methods/geom_relations/geom_geom_processors.md"},l=n(`

Line-curve interaction

julia
#= Code is based off of DE-9IM Standards (https://en.wikipedia.org/wiki/DE-9IM)
+and attempts a standardized solution for most of the functions.
+=#
+
+"""
+    Enum PointOrientation
+
+Enum for the orientation of a point with respect to a curve. A point can be
+\`point_in\` the curve, \`point_on\` the curve, or \`point_out\` of the curve.
+"""
+@enum PointOrientation point_in=1 point_on=2 point_out=3

Determines if a point meets the given checks with respect to a curve.

If in_allow is true, the point can be on the curve interior. If on_allow is true, the point can be on the curve boundary. If out_allow is true, the point can be disjoint from the curve.

If the point is in an "allowed" location, return true. Else, return false.

If closed_curve is true, curve is treated as a closed curve where the first and last point are connected by a segment.

julia
function _point_curve_process(
+    point, curve;
+    in_allow, on_allow, out_allow,
+    closed_curve = false,
+)

Determine if curve is closed

julia
    n = GI.npoint(curve)
+    first_last_equal = equals(GI.getpoint(curve, 1), GI.getpoint(curve, n))
+    closed_curve |= first_last_equal
+    n -= first_last_equal ? 1 : 0

Loop through all curve segments

julia
    p_start = GI.getpoint(curve, closed_curve ? n : 1)
+    @inbounds for i in (closed_curve ? 1 : 2):n
+        p_end = GI.getpoint(curve, i)
+        seg_val = _point_segment_orientation(point, p_start, p_end)
+        seg_val == point_in && return in_allow
+        if seg_val == point_on
+            if !closed_curve  # if point is on curve endpoints, it is "on"
+                i == 2 && equals(point, p_start) && return on_allow
+                i == n && equals(point, p_end) && return on_allow
+            end
+            return in_allow
+        end
+        p_start = p_end
+    end
+    return out_allow
+end

Determines if a point meets the given checks with respect to a polygon.

If in_allow is true, the point can be within the polygon interior If on_allow is true, the point can be on the polygon boundary. If out_allow is true, the point can be disjoint from the polygon.

If the point is in an "allowed" location, return true. Else, return false.

julia
function _point_polygon_process(
+    point, polygon;
+    in_allow, on_allow, out_allow, exact,
+)

Check interaction of geom with polygon's exterior boundary

julia
    ext_val = _point_filled_curve_orientation(point, GI.getexterior(polygon); exact)

If a point is outside, it isn't interacting with any holes

julia
    ext_val == point_out && return out_allow

if a point is on an external boundary, it isn't interacting with any holes

julia
    ext_val == point_on && return on_allow

If geom is within the polygon, need to check interactions with holes

julia
    for hole in GI.gethole(polygon)
+        hole_val = _point_filled_curve_orientation(point, hole; exact)

If a point in in a hole, it is outside of the polygon

julia
        hole_val == point_in && return out_allow

If a point in on a hole edge, it is on the edge of the polygon

julia
        hole_val == point_on && return on_allow
+    end

Point is within external boundary and on in/on any holes

julia
    return in_allow
+end

Determines if a line meets the given checks with respect to a curve.

If over_allow is true, segments of the line and curve can be co-linear. If cross_allow is true, segments of the line and curve can cross. If on_allow is true, endpoints of either the line or curve can intersect a segment of the other geometry. If cross_allow is true, segments of the line and curve can be disjoint.

If in_require is true, the interiors of the line and curve must meet in at least one point. If on_require is true, the boundary of one of the two geometries can meet the interior or boundary of the other geometry in at least one point. If out_require is true, there must be at least one point of the given line that is exterior of the curve.

If the point is in an "allowed" location and meets all requirements, return true. Else, return false.

If closed_line is true, line is treated as a closed line where the first and last point are connected by a segment. Same with closed_curve.

julia
@inline function _line_curve_process(line, curve;
+    over_allow, cross_allow, kw...
+)
+    skip, returnval = _maybe_skip_disjoint_extents(line, curve;
+        in_allow=(over_allow | cross_allow), kw...
+    )
+    skip && return returnval
+
+    return _inner_line_curve_process(line, curve; over_allow, cross_allow, kw...)
+end
+
+function _inner_line_curve_process(
+    line, curve;
+    over_allow, cross_allow, on_allow, out_allow,
+    in_require, on_require, out_require,
+    closed_line = false, closed_curve = false,
+    exact,
+)

Set up requirements

julia
    in_req_met = !in_require
+    on_req_met = !on_require
+    out_req_met = !out_require

Determine curve endpoints

julia
    nl = GI.npoint(line)
+    nc = GI.npoint(curve)
+    first_last_equal_line = equals(GI.getpoint(line, 1), GI.getpoint(line, nl))
+    first_last_equal_curve = equals(GI.getpoint(curve, 1), GI.getpoint(curve, nc))
+    nl -= first_last_equal_line ? 1 : 0
+    nc -= first_last_equal_curve ? 1 : 0
+    closed_line |= first_last_equal_line
+    closed_curve |= first_last_equal_curve

Loop over each line segment

julia
    l_start = _tuple_point(GI.getpoint(line, closed_line ? nl : 1))
+    i = closed_line ? 1 : 2
+    while i  nl
+        l_end = _tuple_point(GI.getpoint(line, i))
+        c_start = _tuple_point(GI.getpoint(curve, closed_curve ? nc : 1))

Loop over each curve segment

julia
        for j in (closed_curve ? 1 : 2):nc
+            c_end = _tuple_point(GI.getpoint(curve, j))

Check if line and curve segments meet

julia
            seg_val, intr1, _ = _intersection_point(Float64, (l_start, l_end), (c_start, c_end); exact)

If segments are co-linear

julia
            if seg_val == line_over
+                !over_allow && return false

at least one point in, meets requirements

julia
                in_req_met = true
+                point_val = _point_segment_orientation(l_start, c_start, c_end)

If entire segment isn't covered, consider remaining section

julia
                if point_val != point_out
+                    i, l_start, break_off = _find_new_seg(i, l_start, l_end, c_start, c_end)
+                    break_off && break
+                end
+            else
+                if seg_val == line_cross
+                    !cross_allow && return false
+                    in_req_met = true
+                elseif seg_val == line_hinge  # could cross or overlap

Determine location of intersection point on each segment

julia
                    (_, (α, β)) = intr1
+                    if ( # Don't consider edges of curves as they can't cross
+                        (!closed_line && ((α == 0 && i == 2) ||== 1 && i == nl))) ||
+                        (!closed_curve && ((β == 0 && j == 2) ||== 1 && j == nc)))
+                    )
+                        !on_allow && return false
+                        on_req_met = true
+                    else
+                        in_req_met = true

If needed, determine if hinge actually crosses

julia
                        if (!cross_allow || !over_allow) && α != 0 && β != 0

Find next pieces of hinge to see if line and curve cross

julia
                            l, c = _find_hinge_next_segments(
+                                α, β, l_start, l_end, c_start, c_end,
+                                i, line, j, curve,
+                            )
+                            next_val, _, _ = _intersection_point(Float64, l, c; exact)
+                            if next_val == line_hinge
+                                !cross_allow && return false
+                            else
+                                !over_allow && return false
+                            end
+                        end
+                    end
+                end

no overlap for a give segment, some of segment must be out of curve

julia
                if j == nc
+                    !out_allow && return false
+                    out_req_met = true
+                end
+            end
+            c_start = c_end  # consider next segment of curve
+            if j == nc  # move on to next line segment
+                i += 1
+                l_start = l_end
+            end
+        end
+    end
+    return in_req_met && on_req_met && out_req_met
+end
+
+#= If entire segment (le to ls) isn't covered by segment (cs to ce), find remaining section
+part of section outside of cs to ce. If completely covered, increase segment index i. =#
+function _find_new_seg(i, ls, le, cs, ce)
+    break_off = true
+    if _point_segment_orientation(le, cs, ce) != point_out
+        ls = le
+        i += 1
+    elseif !equals(ls, cs) && _point_segment_orientation(cs, ls, le) != point_out
+        ls = cs
+    elseif !equals(ls, ce) && _point_segment_orientation(ce, ls, le) != point_out
+        ls = ce
+    else
+        break_off = false
+    end
+    return i, ls, break_off
+end
+
+#= Find next set of segments needed to determine if given hinge segments cross or not.=#
+function _find_hinge_next_segments(α, β, ls, le, cs, ce, i, line, j, curve)
+    next_seg = if β == 1
+        if α == 1  # hinge at endpoints, so next segment of both is needed
+            ((le, _tuple_point(GI.getpoint(line, i + 1))), (ce, _tuple_point(GI.getpoint(curve, j + 1))))
+        else  # hinge at curve endpoint and line interior point, curve next segment needed
+            ((ls, le), (ce, _tuple_point(GI.getpoint(curve, j + 1))))
+        end
+    else  # hinge at curve interior point and line endpoint, line next segment needed
+        ((le, _tuple_point(GI.getpoint(line, i + 1))), (cs, ce))
+    end
+    return next_seg
+end

Determines if a line meets the given checks with respect to a polygon.

If in_allow is true, segments of the line can be in the polygon interior. If on_allow is true, segments of the line can be on the polygon's boundary. If out_allow is true, segments of the line can be outside of the polygon.

If in_require is true, the interiors of the line and polygon must meet in at least one point. If on_require is true, the line must have at least one point on the polygon'same boundary. If out_require is true, the line must have at least one point outside of the polygon.

If the point is in an "allowed" location and meets all requirements, return true. Else, return false.

If closed_line is true, line is treated as a closed line where the first and last point are connected by a segment.

julia
@inline function _line_polygon_process(line, polygon; kw...)
+    skip, returnval = _maybe_skip_disjoint_extents(line, polygon; kw...)
+    skip && return returnval
+    return _inner_line_polygon_process(line, polygon; kw...)
+end
+
+function _inner_line_polygon_process(
+    line, polygon;
+    in_allow, on_allow, out_allow,
+    in_require, on_require, out_require,
+    exact, closed_line = false,
+)
+    in_req_met = !in_require
+    on_req_met = !on_require
+    out_req_met = !out_require

Check interaction of line with polygon's exterior boundary

julia
    in_curve, on_curve, out_curve = _line_filled_curve_interactions(
+        line, GI.getexterior(polygon);
+        exact, closed_line = closed_line,
+    )
+    if on_curve
+        !on_allow && return false
+        on_req_met = true
+    end
+    if out_curve
+        !out_allow && return false
+        out_req_met = true
+    end

If no points within the polygon, the line is disjoint and we are done

julia
    !in_curve && return in_req_met && on_req_met && out_req_met

Loop over polygon holes

julia
    for hole in GI.gethole(polygon)
+        in_hole, on_hole, out_hole =_line_filled_curve_interactions(
+            line, hole;
+            exact, closed_line = closed_line,
+        )
+        if in_hole  # line in hole is equivalent to being out of polygon
+            !out_allow && return false
+            out_req_met = true
+        end
+        if on_hole  # hole boundary is polygon boundary
+            !on_allow && return false
+            on_req_met = true
+        end
+        if !out_hole  # entire line is in/on hole, can't be in/on other holes
+            in_curve = false
+            break
+        end
+    end
+    if in_curve  # entirely of curve isn't within a hole
+        !in_allow && return false
+        in_req_met = true
+    end
+    return in_req_met && on_req_met && out_req_met
+end

Determines if a polygon meets the given checks with respect to a polygon.

If in_allow is true, the polygon's interiors must intersect. If on_allow is true, the one of the polygon's boundaries must either interact with the other polygon's boundary or interior. If out_allow is true, the first polygon must have interior regions outside of the second polygon.

If in_require is true, the polygon interiors must meet in at least one point. If on_require is true, one of the polygon's must have at least one boundary point in or on the other polygon. If out_require is true, the first polygon must have at least one interior point outside of the second polygon.

If the point is in an "allowed" location and meets all requirements, return true. Else, return false.

julia
@inline function _polygon_polygon_process(poly1, poly2; kw...)
+    skip, returnval = _maybe_skip_disjoint_extents(poly1, poly2; kw...)
+    skip && return returnval
+    return _inner_polygon_polygon_process(poly1, poly2; kw...)
+end
+
+function _inner_polygon_polygon_process(
+    poly1, poly2;
+    in_allow, on_allow, out_allow,
+    in_require, on_require, out_require,
+    exact,
+)
+    in_req_met = !in_require
+    on_req_met = !on_require
+    out_req_met = !out_require

Check if exterior of poly1 is within poly2

julia
    ext1 = GI.getexterior(poly1)
+    ext2 = GI.getexterior(poly2)

Check if exterior of poly1 is in polygon 2

julia
    e1_in_p2, e1_on_p2, e1_out_p2 = _line_polygon_interactions(
+        ext1, poly2;
+        exact, closed_line = true,
+    )
+    if e1_on_p2
+        !on_allow && return false
+        on_req_met = true
+    end
+    if e1_out_p2
+        !out_allow && return false
+        out_req_met = true
+    end
+
+    if !e1_in_p2

if exterior ring isn't in poly2, check if it surrounds poly2

julia
        _, _, e2_out_e1 = _line_filled_curve_interactions(
+            ext2, ext1;
+            exact, closed_line = true,
+        )  # if they really are disjoint, we are done
+        e2_out_e1 && return in_req_met && on_req_met && out_req_met
+    end

If interiors interact, check if poly2 interacts with any of poly1's holes

julia
    for h1 in GI.gethole(poly1)
+        h1_in_p2, h1_on_p2, h1_out_p2 = _line_polygon_interactions(
+            h1, poly2;
+            exact, closed_line = true,
+        )
+        if h1_on_p2
+            !on_allow && return false
+            on_req_met = true
+        end
+        if h1_out_p2
+            !out_allow && return false
+            out_req_met = true
+        end
+        if !h1_in_p2

If hole isn't in poly2, see if poly2 is in hole

julia
            _, _, e2_out_h1 = _line_filled_curve_interactions(
+                ext2, h1;
+                exact, closed_line = true,
+            )

hole encompasses all of poly2

julia
            !e2_out_h1 && return in_req_met && on_req_met && out_req_met
+            break
+        end
+    end
+    #=
+    poly2 isn't outside of poly1 and isn't in a hole, poly1 interior must
+    interact with poly2 interior
+    =#
+    !in_allow && return false
+    in_req_met = true

If any of poly2 holes are within poly1, part of poly1 is exterior to poly2

julia
    for h2 in GI.gethole(poly2)
+        h2_in_p1, h2_on_p1, _ = _line_polygon_interactions(
+            h2, poly1;
+            exact, closed_line = true,
+        )
+        if h2_on_p1
+            !on_allow && return false
+            on_req_met = true
+        end
+        if h2_in_p1
+            !out_allow && return false
+            out_req_met = true
+        end
+    end
+    return in_req_met && on_req_met && out_req_met
+end

Determines if a point is in, on, or out of a segment. If the point is on the segment it is on one of the segments endpoints. If it is in, it is on any other point of the segment. If the point is not on any part of the segment, it is out of the segment.

Point should be an object of point trait and curve should be an object with a linestring or linearring trait.

Can provide values of in, on, and out keywords, which determines return values for each scenario.

julia
function _point_segment_orientation(
+    point, start, stop;
+    in::T = point_in, on::T = point_on, out::T = point_out,
+) where {T}

Parse out points

julia
    x, y = GI.x(point), GI.y(point)
+    x1, y1 = GI.x(start), GI.y(start)
+    x2, y2 = GI.x(stop), GI.y(stop)
+    Δx_seg = x2 - x1
+    Δy_seg = y2 - y1
+    Δx_pt = x - x1
+    Δy_pt = y - y1
+    if (Δx_pt == 0 && Δy_pt == 0) || (Δx_pt == Δx_seg && Δy_pt == Δy_seg)

If point is equal to the segment start or end points

julia
        return on
+    else
+        #=
+        Determine if the point is on the segment -> see if vector from segment
+        start to point is parallel to segment and if point is between the
+        segment endpoints
+        =#
+        on_line = _isparallel(Δx_seg, Δy_seg, Δx_pt, Δy_pt)
+        !on_line && return out
+        between_endpoints =
+            (x2 > x1 ? x1 <= x <= x2 : x2 <= x <= x1) &&
+            (y2 > y1 ? y1 <= y <= y2 : y2 <= y <= y1)
+        !between_endpoints && return out
+    end
+    return in
+end

Determine if point is in, on, or out of a closed curve, which includes the space enclosed by the closed curve.

In means the point is within the closed curve (excluding edges and vertices). On means the point is on an edge or a vertex of the closed curve. Out means the point is outside of the closed curve.

Point should be an object of point trait and curve should be an object with a linestring or linearring trait, that is assumed to be closed, regardless of repeated last point.

Can provide values of in, on, and out keywords, which determines return values for each scenario.

Note that this uses the Algorithm by Hao and Sun (2018): https://doi.org/10.3390/sym10100477 Paper separates orientation of point and edge into 26 cases. For each case, it is either a case where the point is on the edge (returns on), where a ray from the point (x, y) to infinity along the line y = y cut through the edge (k += 1), or the ray does not pass through the edge (do nothing and continue). If the ray passes through an odd number of edges, it is within the curve, else outside of of the curve if it didn't return 'on'. See paper for more information on cases denoted in comments.

julia
function _point_filled_curve_orientation(
+    point, curve;
+    in::T = point_in, on::T = point_on, out::T = point_out, exact,
+) where {T}
+    x, y = GI.x(point), GI.y(point)
+    n = GI.npoint(curve)
+    n -= equals(GI.getpoint(curve, 1), GI.getpoint(curve, n)) ? 1 : 0
+    k = 0  # counter for ray crossings
+    p_start = GI.getpoint(curve, n)
+    for (i, p_end) in enumerate(GI.getpoint(curve))
+        i > n && break
+        v1 = GI.y(p_start) - y
+        v2 = GI.y(p_end) - y
+        if !((v1 < 0 && v2 < 0) || (v1 > 0 && v2 > 0)) # if not cases 11 or 26
+            u1, u2 = GI.x(p_start) - x, GI.x(p_end) - x
+            f = Predicates.cross((u1, u2), (v1, v2); exact)
+            if v2 > 0 && v1  0                # Case 3, 9, 16, 21, 13, or 24
+                f == 0 && return on         # Case 16 or 21
+                f > 0 && (k += 1)              # Case 3 or 9
+            elseif v1 > 0 && v2  0            # Case 4, 10, 19, 20, 12, or 25
+                f == 0 && return on         # Case 19 or 20
+                f < 0 && (k += 1)              # Case 4 or 10
+            elseif v2 == 0 && v1 < 0           # Case 7, 14, or 17
+                f == 0 && return on         # Case 17
+            elseif v1 == 0 && v2 < 0           # Case 8, 15, or 18
+                f == 0 && return on         # Case 18
+            elseif v1 == 0 && v2 == 0          # Case 1, 2, 5, 6, 22, or 23
+                u2  0 && u1  0 && return on  # Case 1
+                u1  0 && u2  0 && return on  # Case 2
+            end
+        end
+        p_start = p_end
+    end
+    return iseven(k) ? out : in
+end

Determines the types of interactions of a line with a filled-in curve. By filled-in curve, I am referring to the exterior ring of a poylgon, for example.

Returns a tuple of booleans: (in_curve, on_curve, out_curve).

If in_curve is true, some of the lines interior points interact with the curve's interior points. If on_curve is true, endpoints of either the line intersect with the curve or the line interacts with the polygon boundary. If out_curve is true, at least one segments of the line is outside the curve.

If closed_line is true, line is treated as a closed line where the first and last point are connected by a segment.

julia
function _line_filled_curve_interactions(
+    line, curve;
+    exact, closed_line = false,
+)
+    in_curve = false
+    on_curve = false
+    out_curve = false

Determine number of points in curve and line

julia
    nl = GI.npoint(line)
+    nc = GI.npoint(curve)
+    first_last_equal_line = equals(GI.getpoint(line, 1), GI.getpoint(line, nl))
+    first_last_equal_curve = equals(GI.getpoint(curve, 1), GI.getpoint(curve, nc))
+    nl -= first_last_equal_line ? 1 : 0
+    nc -= first_last_equal_curve ? 1 : 0
+    closed_line |= first_last_equal_line

See if first point is in an acceptable orientation

julia
    l_start = _tuple_point(GI.getpoint(line, closed_line ? nl : 1))
+    point_val = _point_filled_curve_orientation(l_start, curve; exact)
+    if point_val == point_in
+        in_curve = true
+    elseif point_val == point_on
+        on_curve = true
+    else  # point_val == point_out
+        out_curve = true
+    end

Check for any intersections between line and curve

julia
    for i in (closed_line ? 1 : 2):nl
+        l_end = _tuple_point(GI.getpoint(line, i))
+        c_start = _tuple_point(GI.getpoint(curve, nc))

If already interacted with all regions of curve, can stop

julia
        in_curve && on_curve && out_curve && break

Check next segment of line against curve

julia
        for j in 1:nc
+            c_end = _tuple_point(GI.getpoint(curve, j))

Check if two line and curve segments meet

julia
            seg_val, _, _ = _intersection_point(Float64, (l_start, l_end), (c_start, c_end); exact)
+            if seg_val != line_out

If line and curve meet, then at least one point is on boundary

julia
                on_curve = true
+                if seg_val == line_cross

When crossing boundary, line is both in and out of curve

julia
                    in_curve = true
+                    out_curve = true
+                else
+                    if seg_val == line_over
+                        sp = _point_segment_orientation(l_start, c_start, c_end)
+                        lp = _point_segment_orientation(l_end, c_start, c_end)
+                        if sp != point_in || lp != point_in
+                            #=
+                            Line crosses over segment endpoint, creating a hinge
+                            with another segment.
+                            =#
+                            seg_val = line_hinge
+                        end
+                    end
+                    if seg_val == line_hinge
+                        #=
+                        Can't determine all types of interactions (in, out) with
+                        hinge as it could pass through multiple other segments
+                        so calculate if segment endpoints and intersections are
+                        in/out of filled curve
+                        =#
+                        ipoints = intersection_points(GI.Line(StaticArrays.SVector(l_start, l_end)), curve)
+                        npoints = length(ipoints)  # since hinge, at least one
+                        dist_from_lstart = let l_start = l_start
+                            x -> _euclid_distance(Float64, x, l_start)
+                        end
+                        sort!(ipoints, by = dist_from_lstart)
+                        p_start = _tuple_point(l_start)
+                        for i in 1:(npoints + 1)
+                            p_end = i  npoints ? _tuple_point(ipoints[i]) : l_end
+                            mid_val = _point_filled_curve_orientation((p_start .+ p_end) ./ 2, curve; exact)
+                            if mid_val == point_in
+                                in_curve = true
+                            elseif mid_val == point_out
+                                out_curve = true
+                            end
+                        end

already checked segment against whole filled curve

julia
                        l_start = l_end
+                        break
+                    end
+                end
+            end
+            c_start = c_end
+        end
+        l_start = l_end
+    end
+    return in_curve, on_curve, out_curve
+end

Determines the types of interactions of a line with a polygon.

Returns a tuple of booleans: (in_poly, on_poly, out_poly).

If in_poly is true, some of the lines interior points interact with the polygon interior points. If in_poly is true, endpoints of either the line intersect with the polygon or the line interacts with the polygon boundary, including hole boundaries. If out_curve is true, at least one segments of the line is outside the polygon, including inside of holes.

If closed_line is true, line is treated as a closed line where the first and last point are connected by a segment.

julia
function _line_polygon_interactions(
+    line, polygon;
+    exact, closed_line = false,
+)
+
+    in_poly, on_poly, out_poly = _line_filled_curve_interactions(
+        line, GI.getexterior(polygon);
+        exact, closed_line = closed_line,
+    )
+    !in_poly && return (in_poly, on_poly, out_poly)

Loop over polygon holes

julia
    for hole in GI.gethole(polygon)
+        in_hole, on_hole, out_hole =_line_filled_curve_interactions(
+            line, hole;
+            exact, closed_line = closed_line,
+        )
+        if in_hole
+            out_poly = true
+        end
+        if on_hole
+            on_poly = true
+        end
+        if !out_hole  # entire line is in/on hole, can't be in/on other holes
+            in_poly = false
+            return (in_poly, on_poly, out_poly)
+        end
+    end
+    return in_poly, on_poly, out_poly
+end

Disjoint extent optimisation: skip work based on geom extent intersection returns Tuple{Bool, Bool} for (skip, returnval)

julia
@inline function _maybe_skip_disjoint_extents(a, b;
+    in_allow, on_allow, out_allow,
+    in_require, on_require, out_require,
+    kw...
+)
+    ext_disjoint = Extents.disjoint(GI.extent(a), GI.extent(b))
+    skip, returnval = if !ext_disjoint

can't tell anything about this case

julia
        false, false
+    elseif out_allow # && ext_disjoint
+        if in_require || on_require
+            true, false
+        else
+            true, true
+        end
+    else  # !out_allow && ext_disjoint

points not allowed in exterior, but geoms are disjoint

julia
        true, false
+    end
+    return skip, returnval
+end

This page was generated using Literate.jl.

`,142),t=[l];function p(k,e,r,E,d,g){return a(),i("div",null,t)}const c=s(h,[["render",p]]);export{o as __pageData,c as default}; diff --git a/previews/PR195/assets/source_methods_geom_relations_geom_geom_processors.md.C9HuuL9H.lean.js b/previews/PR195/assets/source_methods_geom_relations_geom_geom_processors.md.C9HuuL9H.lean.js new file mode 100644 index 000000000..30a2b467c --- /dev/null +++ b/previews/PR195/assets/source_methods_geom_relations_geom_geom_processors.md.C9HuuL9H.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const o=JSON.parse('{"title":"Line-curve interaction","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/geom_relations/geom_geom_processors.md","filePath":"source/methods/geom_relations/geom_geom_processors.md","lastUpdated":null}'),h={name:"source/methods/geom_relations/geom_geom_processors.md"},l=n("",142),t=[l];function p(k,e,r,E,d,g){return a(),i("div",null,t)}const c=s(h,[["render",p]]);export{o as __pageData,c as default}; diff --git a/previews/PR195/assets/source_methods_geom_relations_intersects.md.BR3MeE8s.js b/previews/PR195/assets/source_methods_geom_relations_intersects.md.BR3MeE8s.js new file mode 100644 index 000000000..196ee0652 --- /dev/null +++ b/previews/PR195/assets/source_methods_geom_relations_intersects.md.BR3MeE8s.js @@ -0,0 +1,27 @@ +import{_ as s,c as i,o as a,a7 as e}from"./chunks/framework.BjTE4JnT.js";const n="/GeometryOps.jl/previews/PR195/assets/mwuaamn.DeeQUply.png",y=JSON.parse('{"title":"Intersection checks","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/geom_relations/intersects.md","filePath":"source/methods/geom_relations/intersects.md","lastUpdated":null}'),t={name:"source/methods/geom_relations/intersects.md"},p=e(`

Intersection checks

julia
export intersects

What is intersects?

The intersects function checks if a given geometry intersects with another geometry, or in other words, the either the interiors or boundaries of the two geometries intersect.

To provide an example, consider these two lines:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+line1 = GI.Line([(124.584961,-12.768946), (126.738281,-17.224758)])
+line2 = GI.Line([(123.354492,-15.961329), (127.22168,-14.008696)])
+f, a, p = lines(GI.getpoint(line1))
+lines!(GI.getpoint(line2))
+f

We can see that they intersect, so we expect intersects to return true, and we can visualize the intersection point in red.

julia
GO.intersects(line1, line2)  # true
true

Implementation

This is the GeoInterface-compatible implementation.

Given that intersects is the exact opposite of disjoint, we simply pass the two inputs variables, swapped in order, to disjoint.

julia
"""
+    intersects(geom1, geom2)::Bool
+
+Return true if the interiors or boundaries of the two geometries interact.
+
+\`intersects\` returns the exact opposite result of \`disjoint\`.
+
+# Example
+
+\`\`\`jldoctest
+import GeoInterface as GI, GeometryOps as GO
+
+line1 = GI.Line([(124.584961,-12.768946), (126.738281,-17.224758)])
+line2 = GI.Line([(123.354492,-15.961329), (127.22168,-14.008696)])
+GO.intersects(line1, line2)

output

julia
true
+\`\`\`
+"""
+intersects(geom1, geom2) = !disjoint(geom1, geom2)

This page was generated using Literate.jl.

`,18),l=[p];function h(k,r,o,d,c,g){return a(),i("div",null,l)}const F=s(t,[["render",h]]);export{y as __pageData,F as default}; diff --git a/previews/PR195/assets/source_methods_geom_relations_intersects.md.BR3MeE8s.lean.js b/previews/PR195/assets/source_methods_geom_relations_intersects.md.BR3MeE8s.lean.js new file mode 100644 index 000000000..fdbe38d2b --- /dev/null +++ b/previews/PR195/assets/source_methods_geom_relations_intersects.md.BR3MeE8s.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as e}from"./chunks/framework.BjTE4JnT.js";const n="/GeometryOps.jl/previews/PR195/assets/mwuaamn.DeeQUply.png",y=JSON.parse('{"title":"Intersection checks","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/geom_relations/intersects.md","filePath":"source/methods/geom_relations/intersects.md","lastUpdated":null}'),t={name:"source/methods/geom_relations/intersects.md"},p=e("",18),l=[p];function h(k,r,o,d,c,g){return a(),i("div",null,l)}const F=s(t,[["render",h]]);export{y as __pageData,F as default}; diff --git a/previews/PR195/assets/source_methods_geom_relations_overlaps.md.GC_xhoO1.js b/previews/PR195/assets/source_methods_geom_relations_overlaps.md.GC_xhoO1.js new file mode 100644 index 000000000..406373aef --- /dev/null +++ b/previews/PR195/assets/source_methods_geom_relations_overlaps.md.GC_xhoO1.js @@ -0,0 +1,212 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const l="/GeometryOps.jl/previews/PR195/assets/mifutmo.CgiryX2p.png",y=JSON.parse('{"title":"Overlaps","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/geom_relations/overlaps.md","filePath":"source/methods/geom_relations/overlaps.md","lastUpdated":null}'),p={name:"source/methods/geom_relations/overlaps.md"},t=n(`

Overlaps

julia
export overlaps

What is overlaps?

The overlaps function checks if two geometries overlap. Two geometries can only overlap if they have the same dimension, and if they overlap, but one is not contained, within, or equal to the other.

Note that this means it is impossible for a single point to overlap with a single point and a line only overlaps with another line if only a section of each line is collinear.

To provide an example, consider these two lines:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+l1 = GI.LineString([(0.0, 0.0), (0.0, 10.0)])
+l2 = GI.LineString([(0.0, -10.0), (0.0, 3.0)])
+f, a, p = lines(GI.getpoint(l1), color = :blue)
+scatter!(GI.getpoint(l1), color = :blue)
+lines!(GI.getpoint(l2), color = :orange)
+scatter!(GI.getpoint(l2), color = :orange)
+f

We can see that the two lines overlap in the plot:

julia
GO.overlaps(l1, l2)  # true
true

Implementation

This is the GeoInterface-compatible implementation.

First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait. This is also used in the implementation, since it's a lot less work!

Note that that since only elements of the same dimension can overlap, any two geometries with traits that are of different dimensions automatically can return false.

For geometries with the same trait dimension, we must make sure that they share a point, an edge, or area for points, lines, and polygons/multipolygons respectively, without being contained.

julia
"""
+    overlaps(geom1, geom2)::Bool
+
+Compare two Geometries of the same dimension and return true if their
+intersection set results in a geometry different from both but of the same
+dimension. This means one geometry cannot be within or contain the other and
+they cannot be equal
+
+# Examples
+\`\`\`jldoctest
+import GeometryOps as GO, GeoInterface as GI
+poly1 = GI.Polygon([[(0,0), (0,5), (5,5), (5,0), (0,0)]])
+poly2 = GI.Polygon([[(1,1), (1,6), (6,6), (6,1), (1,1)]])
+
+GO.overlaps(poly1, poly2)

output

julia
true
+\`\`\`
+"""
+overlaps(geom1, geom2)::Bool = overlaps(
+    GI.trait(geom1),
+    geom1,
+    GI.trait(geom2),
+    geom2,
+)
+
+"""
+    overlaps(::GI.AbstractTrait, geom1, ::GI.AbstractTrait, geom2)::Bool
+
+For any non-specified pair, all have non-matching dimensions, return false.
+"""
+overlaps(::GI.AbstractTrait, geom1, ::GI.AbstractTrait, geom2) = false
+
+"""
+    overlaps(
+        ::GI.MultiPointTrait, points1,
+        ::GI.MultiPointTrait, points2,
+    )::Bool
+
+If the multipoints overlap, meaning some, but not all, of the points within the
+multipoints are shared, return true.
+"""
+function overlaps(
+    ::GI.MultiPointTrait, points1,
+    ::GI.MultiPointTrait, points2,
+)
+    one_diff = false  # assume that all the points are the same
+    one_same = false  # assume that all points are different
+    for p1 in GI.getpoint(points1)
+        match_point = false
+        for p2 in GI.getpoint(points2)
+            if equals(p1, p2)  # Point is shared
+                one_same = true
+                match_point = true
+                break
+            end
+        end
+        one_diff |= !match_point  # Point isn't shared
+        one_same && one_diff && return true
+    end
+    return false
+end
+
+"""
+    overlaps(::GI.LineTrait, line1, ::GI.LineTrait, line)::Bool
+
+If the lines overlap, meaning that they are collinear but each have one endpoint
+outside of the other line, return true. Else false.
+"""
+overlaps(::GI.LineTrait, line1, ::GI.LineTrait, line) =
+    _overlaps((a1, a2), (b1, b2))
+
+"""
+    overlaps(
+        ::Union{GI.LineStringTrait, GI.LinearRing}, line1,
+        ::Union{GI.LineStringTrait, GI.LinearRing}, line2,
+    )::Bool
+
+If the curves overlap, meaning that at least one edge of each curve overlaps,
+return true. Else false.
+"""
+function overlaps(
+    ::Union{GI.LineStringTrait, GI.LinearRing}, line1,
+    ::Union{GI.LineStringTrait, GI.LinearRing}, line2,
+)
+    edges_a, edges_b = map(sort! ∘ to_edges, (line1, line2))
+    for edge_a in edges_a
+        for edge_b in edges_b
+            _overlaps(edge_a, edge_b) && return true
+        end
+    end
+    return false
+end
+
+"""
+    overlaps(
+        trait_a::GI.PolygonTrait, poly_a,
+        trait_b::GI.PolygonTrait, poly_b,
+    )::Bool
+
+If the two polygons intersect with one another, but are not equal, return true.
+Else false.
+"""
+function overlaps(
+    trait_a::GI.PolygonTrait, poly_a,
+    trait_b::GI.PolygonTrait, poly_b,
+)
+    edges_a, edges_b = map(sort! ∘ to_edges, (poly_a, poly_b))
+    return _line_intersects(edges_a, edges_b) &&
+        !equals(trait_a, poly_a, trait_b, poly_b)
+end
+
+"""
+    overlaps(
+        ::GI.PolygonTrait, poly1,
+        ::GI.MultiPolygonTrait, polys2,
+    )::Bool
+
+Return true if polygon overlaps with at least one of the polygons within the
+multipolygon. Else false.
+"""
+function overlaps(
+    ::GI.PolygonTrait, poly1,
+    ::GI.MultiPolygonTrait, polys2,
+)
+    for poly2 in GI.getgeom(polys2)
+        overlaps(poly1, poly2) && return true
+    end
+    return false
+end
+
+"""
+    overlaps(
+        ::GI.MultiPolygonTrait, polys1,
+        ::GI.PolygonTrait, poly2,
+    )::Bool
+
+Return true if polygon overlaps with at least one of the polygons within the
+multipolygon. Else false.
+"""
+overlaps(trait1::GI.MultiPolygonTrait, polys1, trait2::GI.PolygonTrait, poly2) =
+    overlaps(trait2, poly2, trait1, polys1)
+
+"""
+    overlaps(
+        ::GI.MultiPolygonTrait, polys1,
+        ::GI.MultiPolygonTrait, polys2,
+    )::Bool
+
+Return true if at least one pair of polygons from multipolygons overlap. Else
+false.
+"""
+function overlaps(
+    ::GI.MultiPolygonTrait, polys1,
+    ::GI.MultiPolygonTrait, polys2,
+)
+    for poly1 in GI.getgeom(polys1)
+        overlaps(poly1, polys2) && return true
+    end
+    return false
+end
+
+#= If the edges overlap, meaning that they are collinear but each have one endpoint
+outside of the other edge, return true. Else false. =#
+function _overlaps(
+    (a1, a2)::Edge,
+    (b1, b2)::Edge,
+    exact = _False(),
+)

meets in more than one point

julia
    seg_val, _, _ = _intersection_point(Float64, (a1, a2), (b1, b2); exact)

one end point is outside of other segment

julia
    a_fully_within = _point_on_seg(a1, b1, b2) && _point_on_seg(a2, b1, b2)
+    b_fully_within = _point_on_seg(b1, a1, a2) && _point_on_seg(b2, a1, a2)
+    return seg_val == line_over && (!a_fully_within && !b_fully_within)
+end
+
+#= TODO: Once overlaps is swapped over to use the geom relations workflow, can
+delete these helpers. =#

Checks if point is on a segment

julia
function _point_on_seg(point, start, stop)

Parse out points

julia
    x, y = GI.x(point), GI.y(point)
+    x1, y1 = GI.x(start), GI.y(start)
+    x2, y2 = GI.x(stop), GI.y(stop)
+    Δxl = x2 - x1
+    Δyl = y2 - y1

Determine if point is on segment

julia
    cross = (x - x1) * Δyl - (y - y1) * Δxl
+    if cross == 0  # point is on line extending to infinity

is line between endpoints

julia
        if abs(Δxl) >= abs(Δyl)  # is line between endpoints
+            return Δxl > 0 ? x1 <= x <= x2 : x2 <= x <= x1
+        else
+            return Δyl > 0 ? y1 <= y <= y2 : y2 <= y <= y1
+        end
+    end
+    return false
+end
+
+#= Returns true if there is at least one intersection between edges within the
+two lists of edges. =#
+function _line_intersects(
+    edges_a::Vector{<:Edge},
+    edges_b::Vector{<:Edge};
+)

Extents.intersects(to_extent(edges_a), to_extent(edges_b)) || return false

julia
    for edge_a in edges_a
+        for edge_b in edges_b
+            _line_intersects(edge_a, edge_b) && return true
+        end
+    end
+    return false
+end

Returns true if there is at least one intersection between two edges.

julia
function _line_intersects(edge_a::Edge, edge_b::Edge)
+    seg_val, _, _ = _intersection_point(Float64, edge_a, edge_b; exact = _False())
+    return seg_val != line_out
+end

This page was generated using Literate.jl.

`,37),e=[t];function h(k,r,d,o,g,F){return a(),i("div",null,e)}const c=s(p,[["render",h]]);export{y as __pageData,c as default}; diff --git a/previews/PR195/assets/source_methods_geom_relations_overlaps.md.GC_xhoO1.lean.js b/previews/PR195/assets/source_methods_geom_relations_overlaps.md.GC_xhoO1.lean.js new file mode 100644 index 000000000..ec34eb715 --- /dev/null +++ b/previews/PR195/assets/source_methods_geom_relations_overlaps.md.GC_xhoO1.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const l="/GeometryOps.jl/previews/PR195/assets/mifutmo.CgiryX2p.png",y=JSON.parse('{"title":"Overlaps","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/geom_relations/overlaps.md","filePath":"source/methods/geom_relations/overlaps.md","lastUpdated":null}'),p={name:"source/methods/geom_relations/overlaps.md"},t=n("",37),e=[t];function h(k,r,d,o,g,F){return a(),i("div",null,e)}const c=s(p,[["render",h]]);export{y as __pageData,c as default}; diff --git a/previews/PR195/assets/source_methods_geom_relations_touches.md.CI5Nxam0.js b/previews/PR195/assets/source_methods_geom_relations_touches.md.CI5Nxam0.js new file mode 100644 index 000000000..b128defe0 --- /dev/null +++ b/previews/PR195/assets/source_methods_geom_relations_touches.md.CI5Nxam0.js @@ -0,0 +1,174 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const t="/GeometryOps.jl/previews/PR195/assets/wxjoole.BEFUMtlf.png",c=JSON.parse('{"title":"Touches","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/geom_relations/touches.md","filePath":"source/methods/geom_relations/touches.md","lastUpdated":null}'),h={name:"source/methods/geom_relations/touches.md"},l=n(`

Touches

julia
export touches

What is touches?

The touches function checks if one geometry touches another geometry. In other words, the interiors of the two geometries don't interact, but one of the geometries must have a boundary point that interacts with either the other geometry's interior or boundary.

To provide an example, consider these two lines:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+l1 = GI.Line([(0.0, 0.0), (1.0, 0.0)])
+l2 = GI.Line([(1.0, 0.0), (1.0, -1.0)])
+
+f, a, p = lines(GI.getpoint(l1))
+lines!(GI.getpoint(l2))
+f

We can see that these two lines touch only at their endpoints.

julia
GO.touches(l1, l2)  # true
true

Implementation

This is the GeoInterface-compatible implementation.

First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait.

Each of these calls a method in the geom_geom_processors file. The methods in this file determine if the given geometries meet a set of criteria. For the touches function and arguments g1 and g2, this criteria is as follows: - points of g1 are not allowed to be in the interior of g2 - points of g1 are allowed to be on the boundary of g2 - points of g1 are allowed to be in the exterior of g2 - no points of g1 are required to be in the interior of g2 - at least one point of g1 is required to be on the boundary of g2 - no points of g1 are required to be in the exterior of g2

The code for the specific implementations is in the geom_geom_processors file.

julia
const TOUCHES_POINT_ALLOWED = (in_allow = false, on_allow = true, out_allow = false)
+const TOUCHES_CURVE_ALLOWED = (over_allow = false, cross_allow = false, on_allow = true, out_allow = true)
+const TOUCHES_POLYGON_ALLOWS = (in_allow = false, on_allow = true, out_allow = true)
+const TOUCHES_REQUIRES = (in_require = false, on_require = true, out_require = false)
+const TOUCHES_EXACT = (exact = _False(),)
+
+"""
+    touches(geom1, geom2)::Bool
+
+Return \`true\` if the first geometry touches the second geometry. In other words,
+the two interiors cannot interact, but one of the geometries must have a
+boundary point that interacts with either the other geometry's interior or
+boundary.
+
+# Examples
+\`\`\`jldoctest setup=:(using GeometryOps, GeometryBasics)
+import GeometryOps as GO, GeoInterface as GI
+
+l1 = GI.Line([(0.0, 0.0), (1.0, 0.0)])
+l2 = GI.Line([(1.0, 1.0), (1.0, -1.0)])
+
+GO.touches(l1, l2)

output

julia
true
+\`\`\`
+"""
+touches(g1, g2)::Bool = _touches(trait(g1), g1, trait(g2), g2)

Convert features to geometries

julia
_touches(::GI.FeatureTrait, g1, ::Any, g2) = touches(GI.geometry(g1), g2)
+_touches(::Any, g1, t2::GI.FeatureTrait, g2) = touches(g1, GI.geometry(g2))
+_touches(::FeatureTrait, g1, ::FeatureTrait, g2) = touches(GI.geometry(g1), GI.geometry(g2))

Point touches geometries

Point cannot touch another point as if they are equal, interiors interact

julia
_touches(
+    ::GI.PointTrait, g1,
+    ::GI.PointTrait, g2,
+) = false

Point touches a linestring if it equal to the first of last point of the line

julia
function _touches(
+    ::GI.PointTrait, g1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+)
+    n = GI.npoint(g2)
+    p1 = GI.getpoint(g2, 1)
+    pn = GI.getpoint(g2, n)
+    equals(p1, pn) && return false
+    return equals(g1, p1) || equals(g1, pn)
+end

Point cannot 'touch' a linearring given that the ring has no boundary points

julia
_touches(
+    ::GI.PointTrait, g1,
+    ::GI.LinearRingTrait, g2,
+) = false

Point touches a polygon if it is on the boundary of that polygon

julia
_touches(
+    ::GI.PointTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _point_polygon_process(
+    g1, g2;
+    TOUCHES_POINT_ALLOWED...,
+    TOUCHES_EXACT...,
+)
+
+#= Geometry touches a point if the point is on the geometry boundary. =#
+_touches(
+    trait1::Union{GI.AbstractCurveTrait, GI.PolygonTrait}, g1,
+    trait2::GI.PointTrait, g2,
+) = _touches(trait2, g2, trait1, g1)

Lines touching geometries

julia
#= Linestring touches another line if at least one boundary point interacts with
+the boundary of interior of the other line, but the interiors don't interact. =#
+_touches(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _line_curve_process(
+    g1, g2;
+    TOUCHES_CURVE_ALLOWED...,
+    TOUCHES_REQUIRES...,
+    TOUCHES_EXACT...,
+    closed_line = false,
+    closed_curve = false,
+)
+
+
+#= Linestring touches a linearring if at least one of the boundary points of the
+line interacts with the linear ring, but their interiors can't interact. =#
+_touches(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::GI.LinearRingTrait, g2,
+) = _line_curve_process(
+    g1, g2;
+    TOUCHES_CURVE_ALLOWED...,
+    TOUCHES_REQUIRES...,
+    TOUCHES_EXACT...,
+    closed_line = false,
+    closed_curve = true,
+)
+
+#= Linestring touches a polygon if at least one of the boundary points of the
+line interacts with the boundary of the polygon. =#
+_touches(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::GI.PolygonTrait, g2,
+) = _line_polygon_process(
+    g1, g2;
+    TOUCHES_POLYGON_ALLOWS...,
+    TOUCHES_REQUIRES...,
+    TOUCHES_EXACT...,
+    closed_line = false,
+)

Rings touch geometries

julia
#= Linearring touches a linestring if at least one of the boundary points of the
+line interacts with the linear ring, but their interiors can't interact. =#
+_touches(
+    trait1::GI.LinearRingTrait, g1,
+    trait2::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _touches(trait2, g2, trait1, g1)
+
+#= Linearring cannot touch another linear ring since they are both exclusively
+made up of interior points and no boundary points =#
+_touches(
+    ::GI.LinearRingTrait, g1,
+    ::GI.LinearRingTrait, g2,
+) = false
+
+#= Linearring touches a polygon if at least one of the points of the ring
+interact with the polygon boundary and non are in the polygon interior. =#
+_touches(
+    ::GI.LinearRingTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _line_polygon_process(
+    g1, g2;
+    TOUCHES_POLYGON_ALLOWS...,
+    TOUCHES_REQUIRES...,
+    TOUCHES_EXACT...,
+    closed_line = true,
+)

Polygons touch geometries

julia
#= Polygon touches a curve if at least one of the curve boundary points interacts
+with the polygon's boundary and no curve points interact with the interior.=#
+_touches(
+    trait1::GI.PolygonTrait, g1,
+    trait2::GI.AbstractCurveTrait, g2
+) = _touches(trait2, g2, trait1, g1)
+
+
+#= Polygon touches another polygon if they share at least one boundary point and
+no interior points. =#
+_touches(
+    ::GI.PolygonTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _polygon_polygon_process(
+    g1, g2;
+    TOUCHES_POLYGON_ALLOWS...,
+    TOUCHES_REQUIRES...,
+    TOUCHES_EXACT...,
+)

Geometries touch multi-geometry/geometry collections

julia
#= Geometry touch a multi-geometry or a collection if the geometry touches at
+least one of the elements of the collection. =#
+function _touches(
+    ::Union{GI.PointTrait, GI.AbstractCurveTrait, GI.PolygonTrait}, g1,
+    ::Union{
+        GI.MultiPointTrait, GI.AbstractMultiCurveTrait,
+        GI.MultiPolygonTrait, GI.GeometryCollectionTrait,
+    }, g2,
+)
+    for sub_g2 in GI.getgeom(g2)
+        !touches(g1, sub_g2) && return false
+    end
+    return true
+end

Multi-geometry/geometry collections cross geometries

julia
#= Multi-geometry or a geometry collection touches a geometry if at least one
+elements of the collection touches the geometry. =#
+function _touches(
+    ::Union{
+        GI.MultiPointTrait, GI.AbstractMultiCurveTrait,
+        GI.MultiPolygonTrait, GI.GeometryCollectionTrait,
+    }, g1,
+    ::GI.AbstractGeometryTrait, g2,
+)
+    for sub_g1 in GI.getgeom(g1)
+        !touches(sub_g1, g2) && return false
+    end
+    return true
+end

This page was generated using Literate.jl.

`,41),e=[l];function p(k,r,E,g,d,o){return a(),i("div",null,e)}const F=s(h,[["render",p]]);export{c as __pageData,F as default}; diff --git a/previews/PR195/assets/source_methods_geom_relations_touches.md.CI5Nxam0.lean.js b/previews/PR195/assets/source_methods_geom_relations_touches.md.CI5Nxam0.lean.js new file mode 100644 index 000000000..dae335240 --- /dev/null +++ b/previews/PR195/assets/source_methods_geom_relations_touches.md.CI5Nxam0.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const t="/GeometryOps.jl/previews/PR195/assets/wxjoole.BEFUMtlf.png",c=JSON.parse('{"title":"Touches","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/geom_relations/touches.md","filePath":"source/methods/geom_relations/touches.md","lastUpdated":null}'),h={name:"source/methods/geom_relations/touches.md"},l=n("",41),e=[l];function p(k,r,E,g,d,o){return a(),i("div",null,e)}const F=s(h,[["render",p]]);export{c as __pageData,F as default}; diff --git a/previews/PR195/assets/source_methods_geom_relations_within.md.DKPdlPzO.js b/previews/PR195/assets/source_methods_geom_relations_within.md.DKPdlPzO.js new file mode 100644 index 000000000..071aecaf4 --- /dev/null +++ b/previews/PR195/assets/source_methods_geom_relations_within.md.DKPdlPzO.js @@ -0,0 +1,193 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const h="/GeometryOps.jl/previews/PR195/assets/eveaplj._0R9BbFk.png",c=JSON.parse('{"title":"Within","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/geom_relations/within.md","filePath":"source/methods/geom_relations/within.md","lastUpdated":null}'),t={name:"source/methods/geom_relations/within.md"},l=n(`

Within

julia
export within

What is within?

The within function checks if one geometry is inside another geometry. This requires that the two interiors intersect and that the interior and boundary of the first geometry is not in the exterior of the second geometry.

To provide an example, consider these two lines:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+l1 = GI.LineString([(0.0, 0.0), (1.0, 0.0), (0.0, 0.1)])
+l2 = GI.LineString([(0.25, 0.0), (0.75, 0.0)])
+f, a, p = lines(GI.getpoint(l1), color = :blue)
+scatter!(GI.getpoint(l1), color = :blue)
+lines!(GI.getpoint(l2), color = :orange)
+scatter!(GI.getpoint(l2), color = :orange)
+f

We can see that all of the points and edges of l2 are within l1, so l2 is within l1, but l1 is not within l2

julia
GO.within(l1, l2)  # false
+GO.within(l2, l1)  # true
true

Implementation

This is the GeoInterface-compatible implementation.

First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait.

Each of these calls a method in the geom_geom_processors file. The methods in this file determine if the given geometries meet a set of criteria. For the within function and arguments g1 and g2, this criteria is as follows: - points of g1 are allowed to be in the interior of g2 (either through overlap or crossing for lines) - points of g1 are allowed to be on the boundary of g2 - points of g1 are not allowed to be in the exterior of g2 - at least one point of g1 is required to be in the interior of g2 - no points of g1 are required to be on the boundary of g2 - no points of g1 are required to be in the exterior of g2

The code for the specific implementations is in the geom_geom_processors file.

julia
const WITHIN_POINT_ALLOWS = (in_allow = true, on_allow = false, out_allow = false)
+const WITHIN_CURVE_ALLOWS = (over_allow = true, cross_allow = true, on_allow = true, out_allow = false)
+const WITHIN_POLYGON_ALLOWS = (in_allow = true, on_allow = true, out_allow = false)
+const WITHIN_REQUIRES = (in_require = true, on_require = false, out_require = false)
+const WITHIN_EXACT = (exact = _False(),)
+
+"""
+    within(geom1, geom2)::Bool
+
+Return \`true\` if the first geometry is completely within the second geometry.
+The interiors of both geometries must intersect and the interior and boundary of
+the primary geometry (geom1) must not intersect the exterior of the secondary
+geometry (geom2).
+
+Furthermore, \`within\` returns the exact opposite result of \`contains\`.
+
+# Examples
+\`\`\`jldoctest setup=:(using GeometryOps, GeometryBasics)
+import GeometryOps as GO, GeoInterface as GI
+
+line = GI.LineString([(1, 1), (1, 2), (1, 3), (1, 4)])
+point = (1, 2)
+GO.within(point, line)

output

julia
true
+\`\`\`
+"""
+within(g1, g2) = _within(trait(g1), g1, trait(g2), g2)

Convert features to geometries

julia
_within(::GI.FeatureTrait, g1, ::Any, g2) = within(GI.geometry(g1), g2)
+_within(::Any, g1, t2::GI.FeatureTrait, g2) = within(g1, GI.geometry(g2))
+_within(::FeatureTrait, g1, ::FeatureTrait, g2) = within(GI.geometry(g1), GI.geometry(g2))

Points within geometries

Point is within another point if those points are equal.

julia
_within(
+    ::GI.PointTrait, g1,
+    ::GI.PointTrait, g2,
+) = equals(g1, g2)
+
+#= Point is within a linestring if it is on a vertex or an edge of that line,
+excluding the start and end vertex if the line is not closed. =#
+_within(
+    ::GI.PointTrait, g1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _point_curve_process(
+    g1, g2;
+    WITHIN_POINT_ALLOWS...,
+    closed_curve = false,
+)

Point is within a linearring if it is on a vertex or an edge of that ring.

julia
_within(
+    ::GI.PointTrait, g1,
+    ::GI.LinearRingTrait, g2,
+) = _point_curve_process(
+    g1, g2;
+    WITHIN_POINT_ALLOWS...,
+    closed_curve = true,
+)
+
+#= Point is within a polygon if it is inside of that polygon, excluding edges,
+vertices, and holes. =#
+_within(
+    ::GI.PointTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _point_polygon_process(
+    g1, g2;
+    WITHIN_POINT_ALLOWS...,
+    WITHIN_EXACT...,
+)

No geometries other than points can be within points

julia
_within(
+    ::Union{GI.AbstractCurveTrait, GI.PolygonTrait}, g1,
+    ::GI.PointTrait, g2,
+) = false

Lines within geometries

julia
#= Linestring is within another linestring if their interiors intersect and no
+points of the first line are in the exterior of the second line. =#
+_within(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _line_curve_process(
+    g1, g2;
+    WITHIN_CURVE_ALLOWS...,
+    WITHIN_REQUIRES...,
+    WITHIN_EXACT...,
+    closed_line = false,
+    closed_curve = false,
+)
+
+#= Linestring is within a linear ring if their interiors intersect and no points
+of the line are in the exterior of the ring. =#
+_within(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::GI.LinearRingTrait, g2,
+) = _line_curve_process(
+    g1, g2;
+    WITHIN_CURVE_ALLOWS...,
+    WITHIN_REQUIRES...,
+    WITHIN_EXACT...,
+    closed_line = false,
+    closed_curve = true,
+)
+
+#= Linestring is within a polygon if their interiors intersect and no points of
+the line are in the exterior of the polygon, although they can be on an edge. =#
+_within(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::GI.PolygonTrait, g2,
+) = _line_polygon_process(
+    g1, g2;
+    WITHIN_POLYGON_ALLOWS...,
+    WITHIN_REQUIRES...,
+    WITHIN_EXACT...,
+    closed_line = false,
+)

Rings covered by geometries

julia
#= Linearring is within a linestring if their interiors intersect and no points
+of the ring are in the exterior of the line. =#
+_within(
+    ::GI.LinearRingTrait, g1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _line_curve_process(
+    g1, g2;
+    WITHIN_CURVE_ALLOWS...,
+    WITHIN_REQUIRES...,
+    WITHIN_EXACT...,
+    closed_line = true,
+    closed_curve = false,
+)
+
+#= Linearring is within another linearring if their interiors intersect and no
+points of the first ring are in the exterior of the second ring. =#
+_within(
+    ::GI.LinearRingTrait, g1,
+    ::GI.LinearRingTrait, g2,
+) = _line_curve_process(
+    g1, g2;
+    WITHIN_CURVE_ALLOWS...,
+    WITHIN_REQUIRES...,
+    WITHIN_EXACT...,
+    closed_line = true,
+    closed_curve = true,
+)
+
+#= Linearring is within a polygon if their interiors intersect and no points of
+the ring are in the exterior of the polygon, although they can be on an edge. =#
+_within(
+    ::GI.LinearRingTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _line_polygon_process(
+    g1, g2;
+    WITHIN_POLYGON_ALLOWS...,
+    WITHIN_REQUIRES...,
+    WITHIN_EXACT...,
+    closed_line = true,
+)

Polygons within geometries

julia
#= Polygon is within another polygon if the interior of the first polygon
+intersects with the interior of the second and no points of the first polygon
+are outside of the second polygon. =#
+_within(
+    ::GI.PolygonTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _polygon_polygon_process(
+    g1, g2;
+    WITHIN_POLYGON_ALLOWS...,
+    WITHIN_REQUIRES...,
+    WITHIN_EXACT...,
+)

Polygons cannot be within any curves

julia
_within(
+    ::GI.PolygonTrait, g1,
+    ::GI.AbstractCurveTrait, g2,
+) = false

Geometries within multi-geometry/geometry collections

julia
#= Geometry is within a multi-geometry or a collection if the geometry is within
+at least one of the collection elements. =#
+function _within(
+    ::Union{GI.PointTrait, GI.AbstractCurveTrait, GI.PolygonTrait}, g1,
+    ::Union{
+        GI.MultiPointTrait, GI.AbstractMultiCurveTrait,
+        GI.MultiPolygonTrait, GI.GeometryCollectionTrait,
+    }, g2,
+)
+    for sub_g2 in GI.getgeom(g2)
+        within(g1, sub_g2) && return true
+    end
+    return false
+end

Multi-geometry/geometry collections within geometries

julia
#= Multi-geometry or a geometry collection is within a geometry if all
+elements of the collection are within the geometry. =#
+function _within(
+    ::Union{
+        GI.MultiPointTrait, GI.AbstractMultiCurveTrait,
+        GI.MultiPolygonTrait, GI.GeometryCollectionTrait,
+    }, g1,
+    ::GI.AbstractGeometryTrait, g2,
+)
+    for sub_g1 in GI.getgeom(g1)
+        !within(sub_g1, g2) && return false
+    end
+    return true
+end

This page was generated using Literate.jl.

`,41),e=[l];function p(k,r,E,g,d,o){return a(),i("div",null,e)}const F=s(t,[["render",p]]);export{c as __pageData,F as default}; diff --git a/previews/PR195/assets/source_methods_geom_relations_within.md.DKPdlPzO.lean.js b/previews/PR195/assets/source_methods_geom_relations_within.md.DKPdlPzO.lean.js new file mode 100644 index 000000000..b6363425c --- /dev/null +++ b/previews/PR195/assets/source_methods_geom_relations_within.md.DKPdlPzO.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const h="/GeometryOps.jl/previews/PR195/assets/eveaplj._0R9BbFk.png",c=JSON.parse('{"title":"Within","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/geom_relations/within.md","filePath":"source/methods/geom_relations/within.md","lastUpdated":null}'),t={name:"source/methods/geom_relations/within.md"},l=n("",41),e=[l];function p(k,r,E,g,d,o){return a(),i("div",null,e)}const F=s(t,[["render",p]]);export{c as __pageData,F as default}; diff --git a/previews/PR195/assets/source_methods_orientation.md.CAyjPYQQ.js b/previews/PR195/assets/source_methods_orientation.md.CAyjPYQQ.js new file mode 100644 index 000000000..e16645e12 --- /dev/null +++ b/previews/PR195/assets/source_methods_orientation.md.CAyjPYQQ.js @@ -0,0 +1,100 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const y=JSON.parse('{"title":"Orientation","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/orientation.md","filePath":"source/methods/orientation.md","lastUpdated":null}'),l={name:"source/methods/orientation.md"},p=n(`

Orientation

julia
export isclockwise, isconcave

isclockwise

The orientation of a geometry is whether it runs clockwise or counter-clockwise.

This is defined for linestrings, linear rings, or vectors of points.

isconcave

A polygon is concave if it has at least one interior angle greater than 180 degrees, meaning that the interior of the polygon is not a convex set.

These are all adapted from Turf.jl.

The may not necessarily be what want in the end but work for now!

julia
"""
+    isclockwise(line::Union{LineString, Vector{Position}})::Bool
+
+Take a ring and return \`true\` if the line goes clockwise, or \`false\` if the line goes
+counter-clockwise.  "Going clockwise" means, mathematically,
+
+\`\`\`math
+\\\\left(\\\\sum_{i=2}^n (x_i - x_{i-1}) \\\\cdot (y_i + y_{i-1})\\\\right) > 0
+\`\`\`
+
+# Example
+
+\`\`\`julia
+julia> import GeoInterface as GI, GeometryOps as GO
+julia> ring = GI.LinearRing([(0, 0), (1, 1), (1, 0), (0, 0)]);
+julia> GO.isclockwise(ring)

output

julia
true
+\`\`\`
+"""
+isclockwise(geom)::Bool = isclockwise(GI.trait(geom), geom)
+
+function isclockwise(::AbstractCurveTrait, line)::Bool
+    sum = 0.0
+    prev = GI.getpoint(line, 1)
+    for p in GI.getpoint(line)

sum will be zero for the first point as x is subtracted from itself

julia
        sum += (GI.x(p) - GI.x(prev)) * (GI.y(p) + GI.y(prev))
+        prev = p
+    end
+
+    return sum > 0.0
+end
+
+"""
+    isconcave(poly::Polygon)::Bool
+
+Take a polygon and return true or false as to whether it is concave or not.
+
+# Examples
+\`\`\`jldoctest
+import GeoInterface as GI, GeometryOps as GO
+
+poly = GI.Polygon([[(0, 0), (0, 1), (1, 1), (1, 0), (0, 0)]])
+GO.isconcave(poly)

output

julia
false
+\`\`\`
+"""
+function isconcave(poly)::Bool
+    sign = false
+
+    exterior = GI.getexterior(poly)

FIXME handle not closed polygons

julia
    GI.npoint(exterior) <= 4 && return false
+    n = GI.npoint(exterior) - 1
+
+    for i in 1:n
+        j = ((i + 1) % n) === 0 ? 1 : (i + 1) % n
+        m = ((i + 2) % n) === 0 ? 1 : (i + 2) % n
+
+        pti = GI.getpoint(exterior, i)
+        ptj = GI.getpoint(exterior, j)
+        ptm = GI.getpoint(exterior, m)
+
+        dx1 = GI.x(ptm) - GI.x(ptj)
+        dy1 = GI.y(ptm) - GI.y(ptj)
+        dx2 = GI.x(pti) - GI.x(ptj)
+        dy2 = GI.y(pti) - GI.y(ptj)
+
+        cross = (dx1 * dy2) - (dy1 * dx2)
+
+        if i === 0
+            sign = cross > 0
+        elseif sign !== (cross > 0)
+            return true
+        end
+    end
+
+    return false
+end

This is commented out.

julia
"""
+    isparallel(line1::LineString, line2::LineString)::Bool
+
+Return \`true\` if each segment of \`line1\` is parallel to the correspondent segment of \`line2\`
+
+## Examples

julia import GeoInterface as GI, GeometryOps as GO julia> line1 = GI.LineString([(9.170356, 45.477985), (9.164434, 45.482551), (9.166644, 45.484003)]) GeoInterface.Wrappers.LineString{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}([(9.170356, 45.477985), (9.164434, 45.482551), (9.166644, 45.484003)], nothing, nothing)

julia> line2 = GI.LineString([(9.169356, 45.477985), (9.163434, 45.482551), (9.165644, 45.484003)]) GeoInterface.Wrappers.LineString{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}([(9.169356, 45.477985), (9.163434, 45.482551), (9.165644, 45.484003)], nothing, nothing)

julia> GO.isparallel(line1, line2) true

"""
+function isparallel(line1, line2)::Bool
+    seg1 = linesegment(line1)
+    seg2 = linesegment(line2)
+
+    for i in eachindex(seg1)
+        coors2 = nothing
+        coors1 = seg1[i]
+        coors2 = seg2[i]
+        _isparallel(coors1, coors2) == false && return false
+    end
+    return true
+end
+
+@inline function _isparallel(p1, p2)
+    slope1 = bearing_to_azimuth(rhumb_bearing(GI.x(p1), GI.x(p2)))
+    slope2 = bearing_to_azimuth(rhumb_bearing(GI.y(p1), GI.y(p2)))
+
+    return slope1 === slope2
+end

This is actual code:

julia
_isparallel(((ax, ay), (bx, by)), ((cx, cy), (dx, dy))) =
+    _isparallel(bx - ax, by - ay, dx - cx, dy - cy)
+
+_isparallel(Δx1, Δy1, Δx2, Δy2) = (Δx1 * Δy2 == Δy1 * Δx2)

This page was generated using Literate.jl.

`,28),h=[p];function t(e,k,r,d,g,E){return a(),i("div",null,h)}const c=s(l,[["render",t]]);export{y as __pageData,c as default}; diff --git a/previews/PR195/assets/source_methods_orientation.md.CAyjPYQQ.lean.js b/previews/PR195/assets/source_methods_orientation.md.CAyjPYQQ.lean.js new file mode 100644 index 000000000..fee887632 --- /dev/null +++ b/previews/PR195/assets/source_methods_orientation.md.CAyjPYQQ.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const y=JSON.parse('{"title":"Orientation","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/orientation.md","filePath":"source/methods/orientation.md","lastUpdated":null}'),l={name:"source/methods/orientation.md"},p=n("",28),h=[p];function t(e,k,r,d,g,E){return a(),i("div",null,h)}const c=s(l,[["render",t]]);export{y as __pageData,c as default}; diff --git a/previews/PR195/assets/source_methods_polygonize.md.Bajq04Cb.js b/previews/PR195/assets/source_methods_polygonize.md.Bajq04Cb.js new file mode 100644 index 000000000..ba36df8ce --- /dev/null +++ b/previews/PR195/assets/source_methods_polygonize.md.Bajq04Cb.js @@ -0,0 +1,289 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const o=JSON.parse('{"title":"Polygonizing raster data","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/polygonize.md","filePath":"source/methods/polygonize.md","lastUpdated":null}'),h={name:"source/methods/polygonize.md"},l=n(`

Polygonizing raster data

julia
export polygonize
+
+#=
+The methods in this file convert a raster image into a set of polygons,
+by contour detection using a clockwise Moore neighborhood method.
+
+The resulting polygons are snapped to the boundaries of the cells of the input raster,
+so they will look different from traditional contours from a plotting package.
+
+The main entry point is the \`polygonize\` function.
+
+\`\`\`@docs
+polygonize
+\`\`\`
+
+# Example
+
+Here's a basic example, using the \`Makie.peaks()\` function.  First, let's investigate the nature of the function:
+\`\`\`@example polygonize
+using Makie, GeometryOps
+n = 49
+xs, ys = LinRange(-3, 3, n), LinRange(-3, 3, n)
+zs = Makie.peaks(n)
+z_max_value = maximum(abs.(extrema(zs)))
+f, a, p = heatmap(
+    xs, ys, zs;
+    axis = (; aspect = DataAspect(), title = "Exact function")
+)
+cb = Colorbar(f[1, 2], p; label = "Z-value")
+f
+\`\`\`
+
+Now, we can use the \`polygonize\` function to convert the raster data into polygons.
+
+For this particular example, we chose a range of z-values between 0.8 and 3.2,
+which would provide two distinct polygons with holes.
+
+\`\`\`@example polygonize
+polygons = polygonize(xs, ys, 0.8 .< zs .< 3.2)
+\`\`\`
+This returns a \`GI.MultiPolygon\`, which is directly plottable.  Let's see how these look:
+
+\`\`\`@example polygonize
+f, a, p = poly(polygons; label = "Polygonized polygons", axis = (; aspect = DataAspect()))
+\`\`\`
+
+Finally, let's plot the Makie contour lines on top, to see how the polygonization compares:
+\`\`\`@example polygonize
+contour!(a, xs, ys, zs; labels = true, levels = [0.8, 3.2], label = "Contour lines")
+f
+\`\`\`
+
+# Implementation
+
+The implementation follows:
+=#
+
+"""
+    polygonize(A::AbstractMatrix{Bool}; kw...)
+    polygonize(f, A::AbstractMatrix; kw...)
+    polygonize(xs, ys, A::AbstractMatrix{Bool}; kw...)
+    polygonize(f, xs, ys, A::AbstractMatrix; kw...)
+
+Polygonize an \`AbstractMatrix\` of values, currently to a single class of polygons.
+
+Returns a \`MultiPolygon\` for \`Bool\` values and \`f\` return values, and
+a \`FeatureCollection\` of \`Feature\`s holding \`MultiPolygon\` for all other values.
+
+
+Function \`f\` should return either \`true\` or \`false\` or a transformation
+of values into simpler groups, especially useful for floating point arrays.
+
+If \`xs\` and \`ys\` are ranges, they are used as the pixel/cell center points.
+If they are \`Vector\` of \`Tuple\` they are used as the lower and upper bounds of each pixel/cell.

Keywords

julia
- \`minpoints\`: ignore polygons with less than \`minpoints\` points.
+- \`values\`: the values to turn into polygons. By default these are \`union(A)\`,
+    If function \`f\` is passed these refer to the return values of \`f\`, by
+    default \`union(map(f, A)\`. If values \`Bool\`, false is ignored and a single
+    \`MultiPolygon\` is returned rather than a \`FeatureCollection\`.

Example

julia
\`\`\`julia
+using GeometryOps
+A = rand(100, 100)
+multipolygon = polygonize(>(0.5), A);
+\`\`\`
+"""
+polygonize(A::AbstractMatrix{Bool}; kw...) = polygonize(identity, A; kw...)
+polygonize(f::Base.Callable, A::AbstractMatrix; kw...) = polygonize(f, axes(A)..., A; kw...)
+polygonize(A::AbstractMatrix; kw...) = polygonize(axes(A)..., A; kw...)
+polygonize(xs::AbstractVector, ys::AbstractVector, A::AbstractMatrix{Bool}; kw...) =
+    _polygonize(identity, xs, ys, A)
+function polygonize(xs::AbstractVector, ys::AbstractVector, A::AbstractMatrix;
+    values=sort!(Base.union(A)), kw...
+)
+    _polygonize_featurecollection(identity, xs, ys, A; values, kw...)
+end
+function polygonize(f::Base.Callable, xs::AbstractRange, ys::AbstractRange, A::AbstractMatrix;
+    values=_default_values(f, A), kw...
+)
+    if isnothing(values)
+        _polygonize(f, xs, ys, A; kw...)
+    else
+        _polygonize_featurecollection(f, xs, ys, A; kw...)
+    end
+end
+function _polygonize(f::Base.Callable, xs::AbstractRange, ys::AbstractRange, A::AbstractMatrix;
+    kw...
+)

Make vectors of pixel bounds

julia
    xhalf = step(xs) / 2
+    yhalf = step(ys) / 2

Make bounds ranges first to avoid floating point error making gaps or overlaps

julia
    xbounds = first(xs) - xhalf : step(xs) : last(xs) + xhalf
+    ybounds = first(ys) - yhalf : step(ys) : last(ys) + yhalf
+    Tx = eltype(xbounds)
+    Ty = eltype(ybounds)
+    xvec = similar(Vector{Tuple{Tx,Tx}}, xs)
+    yvec = similar(Vector{Tuple{Ty,Ty}}, ys)
+    for (xind, i) in enumerate(eachindex(xvec))
+        xvec[i] = xbounds[xind], xbounds[xind+1]
+    end
+    for (yind, i) in enumerate(eachindex(yvec))
+        yvec[i] = ybounds[yind], ybounds[yind+1]
+    end
+    return _polygonize(f, xvec, yvec, A; kw...)
+end
+function _polygonize(f, xs::AbstractVector{T}, ys::AbstractVector{T}, A::AbstractMatrix;
+    minpoints=0,
+) where T<:Tuple
+    (length(xs), length(ys)) == size(A) || throw(ArgumentError("length of xs and ys must match the array size"))

Extract the CRS of the array (if it is some kind of geo array / raster)

julia
    crs = GI.crs(A)

Define buffers for edges and rings

julia
    rings = Vector{T}[]
+
+    strait = true
+    turning = false

Get edges from the array A

julia
    edges = _pixel_edges(f, xs, ys, A)

Keep dict keys separately in a vector for performance

julia
    edgekeys = collect(keys(edges))

We don't delete keys we just reduce length with nkeys

julia
    nkeys = length(edgekeys)

Now create rings from the edges, looping until there are no edge keys left

julia
    while nkeys > 0
+        found = false
+        local firstnode, nextnodes, nodestatus

Loop until we find a key that hasn't been removed, decrementing nkeys as we go.

julia
        while nkeys > 0

Take the first node from the array

julia
            firstnode::T = edgekeys[nkeys]
+            nextnodes = edges[firstnode]
+            nodestatus = map(!=(typemax(first(firstnode)))  first, nextnodes)
+            if any(nodestatus)
+                found = true
+                break
+            else
+                nkeys -= 1
+            end
+        end

If we found nothing this time, we are done

julia
        found == false && break

Check if there are one or two lines going through this node and take one of them, then update the status

julia
        if nodestatus[2]
+            nextnode = nextnodes[2]
+            edges[firstnode] = (nextnodes[1], map(typemax, nextnode))
+        else
+            nkeys -= 1
+            nextnode = nextnodes[1]
+            edges[firstnode] = (map(typemax, nextnode), map(typemax, nextnode))
+        end

Start a new ring

julia
        currentnode = firstnode
+        ring = [currentnode, nextnode]
+        push!(rings, ring)

Loop until we close a the ring and break

julia
        while true

Find a node that matches the next node

julia
            (c1, c2) = possiblenodes = edges[nextnode]
+            nodestatus = map(!=(typemax(first(firstnode)))  first, possiblenodes)
+            if nodestatus[2]

When there are two possible node, choose the node that is the furthest to the left We also need to check if we are on a straight line to avoid adding unnecessary points.

julia
                selectednode, remainingnode, straightline = if currentnode[1] == nextnode[1] # vertical
+                    wasincreasing = nextnode[2] > currentnode[2]
+                    firstisstraight = nextnode[1] == c1[1]
+                    firstisleft = nextnode[1] > c1[1]
+                    secondisstraight = nextnode[1] == c2[1]
+                    secondisleft = nextnode[1] > c2[1]
+                    if firstisstraight
+                        if secondisleft
+                            if wasincreasing
+                                (c2, c1, turning)
+                            else
+                                (c1, c2, straight)
+                            end
+                        else
+                            if wasincreasing
+                                (c1, c2, straight)
+                            else
+                                (c2, c1, secondisstraight)
+                            end
+                        end
+                    elseif firstisleft
+                        if wasincreasing
+                            (c1, c2, turning)
+                        else
+                            (c2, c1, secondisstraight)
+                        end
+                    else # firstisright
+                        if wasincreasing
+                            (c2, c1, secondisstraight)
+                        else
+                            (c1, c2, turning)
+                        end
+                    end
+                else # horizontal
+                    wasincreasing = nextnode[1] > currentnode[1]
+                    firstisstraight = nextnode[2] == c1[2]
+                    firstisleft = nextnode[2] > c1[2]
+                    secondisleft = nextnode[2] > c2[2]
+                    secondisstraight = nextnode[2] == c2[2]
+                    if firstisstraight
+                        if secondisleft
+                            if wasincreasing
+                                (c1, c2, straight)
+                            else
+                                (c2, c1, turning)
+                            end
+                        else
+                            if wasincreasing
+                                (c2, c1, turning)
+                            else
+                                (c1, c2, straight)
+                            end
+                        end
+                    elseif firstisleft
+                        if wasincreasing
+                            (c2, c1, secondisstraight)
+                        else
+                            (c1, c2, turning)
+                        end
+                    else # firstisright
+                        if wasincreasing
+                            (c1, c2, turning)
+                        else
+                            (c2, c1, secondisstraight)
+                        end
+                    end
+                end

Update edges

julia
                edges[nextnode] = (remainingnode, map(typemax, remainingnode))
+            else

Here we simply choose the first (and only valid) node

julia
                selectednode = c1

Replace the edge nodes with empty nodes, they will be skipped later

julia
                edges[nextnode] = (map(typemax, c1), map(typemax, c1))

Check if we are on a straight line

julia
                straightline = currentnode[1] == nextnode[1] == c1[1] ||
+                               currentnode[2] == nextnode[2] == c1[2]
+            end

Update the current and next nodes with the next and selected nodes

julia
            currentnode, nextnode = nextnode, selectednode

Update the current node or add a new node to the ring

julia
            if straightline

replace the last node we don't need it

julia
                ring[end] = nextnode
+            else

add a new node, we have turned a corner

julia
                push!(ring, nextnode)
+            end

If the ring is closed, break the loop and start a new one

julia
            nextnode == firstnode && break
+        end
+    end

Define wrapped LinearRings, with embedded extents so we only calculate them once

julia
    linearrings = map(rings) do ring
+        extent = GI.extent(GI.LinearRing(ring))
+        GI.LinearRing(ring; extent, crs)
+    end

Separate exteriors from holes by winding direction

julia
    direction = (last(last(xs)) - first(first(xs))) * (last(last(ys)) - first(first(ys)))
+    exterior_inds = if direction > 0
+        .!isclockwise.(linearrings)
+    else
+        isclockwise.(linearrings)
+    end
+    holes = linearrings[.!exterior_inds]
+    polygons = map(view(linearrings, exterior_inds)) do lr
+        GI.Polygon([lr]; extent=GI.extent(lr), crs)
+    end

Then we add the holes to the polygons they are inside of

julia
    assigned = fill(false, length(holes))
+    for i in eachindex(holes)
+        hole = holes[i]
+        prepared_hole = GI.LinearRing(holes[i]; extent=GI.extent(holes[i]))
+        for poly in polygons
+            exterior = GI.Polygon(StaticArrays.SVector(GI.getexterior(poly)); extent=GI.extent(poly))
+            if covers(exterior, prepared_hole)

Hole is in the exterior, so add it to the polygon

julia
                push!(poly.geom, hole)
+                assigned[i] = true
+                break
+            end
+        end
+    end
+
+    assigned_holes = count(assigned)
+    assigned_holes == length(holes) || @warn "Not all holes were assigned to polygons, $(length(holes) - assigned_holes) where missed from $(length(holes)) holes and $(length(polygons)) polygons"
+
+    if isempty(polygons)

TODO: this really should return an empty MultiPolygon but GeoInterface wrappers cant do that yet, which is not ideal...

julia
        @warn "No polgons found, check your data or try another function for \`f\`"
+        return nothing
+    else

Otherwise return a wrapped MultiPolygon

julia
        return GI.MultiPolygon(polygons; crs, extent = mapreduce(GI.extent, Extents.union, polygons))
+    end
+end
+
+function _polygonize_featurecollection(f::Base.Callable, xs::AbstractRange, ys::AbstractRange, A::AbstractMatrix;
+    values=_default_values(f, A), kw...
+)
+    crs = GI.crs(A)

Create one feature per value

julia
    features = map(values) do value
+        multipolygon = _polygonize(x -> isequal(f(x), value), xs, ys, A; kw...)
+        GI.Feature(multipolygon; properties=(; value), extent = GI.extent(multipolygon), crs)
+    end
+
+    return GI.FeatureCollection(features; extent = mapreduce(GI.extent, Extents.union, features), crs)
+end
+
+function _default_values(f, A)

Get union of f return values with resolved eltype

julia
    values = map(identity, sort!(Base.union(Iterators.map(f, A))))

We ignore pure Bool

julia
    return eltype(values) == Bool ? nothing : collect(skipmissing(values))
+end
+
+function update_edge!(dict, key, node)
+    newnodes = (node, map(typemax, node))

Get or write in one go, to skip a hash lookup

julia
    existingnodes = get!(() -> newnodes, dict, key)

If we actually fetched an existing node, update it

julia
    if existingnodes[1] != node
+        dict[key] = (existingnodes[1], node)
+    end
+end
+
+function _pixel_edges(f, xs::AbstractVector{T}, ys::AbstractVector{T}, A) where T<:Tuple
+    edges = Dict{T,Tuple{T,T}}()

First we collect all the edges around target pixels

julia
    fi, fj = map(first, axes(A))
+    li, lj = map(last, axes(A))
+    for j in axes(A, 2)
+        y1, y2 = ys[j]
+        for i in axes(A, 1)
+            if f(A[i, j]) # This is a pixel inside a polygon

xs and ys hold pixel bounds

julia
                x1, x2 = xs[i]

We check the Von Neumann neighborhood to decide what edges are needed, if any.

julia
                (j == fi || !f(A[i, j-1])) && update_edge!(edges, (x1, y1), (x2, y1)) # S
+                (i == fj || !f(A[i-1, j])) && update_edge!(edges, (x1, y2), (x1, y1)) # W
+                (j == lj || !f(A[i, j+1])) && update_edge!(edges, (x2, y2), (x1, y2)) # N
+                (i == li || !f(A[i+1, j])) && update_edge!(edges, (x2, y1), (x2, y2)) # E
+            end
+        end
+    end
+    return edges
+end

This page was generated using Literate.jl.

`,86),p=[l];function t(k,e,d,E,r,g){return a(),i("div",null,p)}const c=s(h,[["render",t]]);export{o as __pageData,c as default}; diff --git a/previews/PR195/assets/source_methods_polygonize.md.Bajq04Cb.lean.js b/previews/PR195/assets/source_methods_polygonize.md.Bajq04Cb.lean.js new file mode 100644 index 000000000..04928527f --- /dev/null +++ b/previews/PR195/assets/source_methods_polygonize.md.Bajq04Cb.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const o=JSON.parse('{"title":"Polygonizing raster data","description":"","frontmatter":{},"headers":[],"relativePath":"source/methods/polygonize.md","filePath":"source/methods/polygonize.md","lastUpdated":null}'),h={name:"source/methods/polygonize.md"},l=n("",86),p=[l];function t(k,e,d,E,r,g){return a(),i("div",null,p)}const c=s(h,[["render",t]]);export{o as __pageData,c as default}; diff --git a/previews/PR195/assets/source_not_implemented_yet.md.Bz3ySMxN.js b/previews/PR195/assets/source_not_implemented_yet.md.Bz3ySMxN.js new file mode 100644 index 000000000..c1d1d37ff --- /dev/null +++ b/previews/PR195/assets/source_not_implemented_yet.md.Bz3ySMxN.js @@ -0,0 +1,4 @@ +import{_ as e,c as i,o as t,a7 as s}from"./chunks/framework.BjTE4JnT.js";const _=JSON.parse('{"title":"Not implemented yet","description":"","frontmatter":{},"headers":[],"relativePath":"source/not_implemented_yet.md","filePath":"source/not_implemented_yet.md","lastUpdated":null}'),a={name:"source/not_implemented_yet.md"},n=s(`

Not implemented yet

All of the functions in this file are not implemented in Julia yet. Some of them may have implementations in LibGEOS which we can use via an extension, but there is no native-Julia implementation for them.

julia
function symdifference end
+function buffer end
+function convexhull end
+function concavehull end

This page was generated using Literate.jl.

`,5),l=[n];function p(h,o,r,d,c,m){return t(),i("div",null,l)}const u=e(a,[["render",p]]);export{_ as __pageData,u as default}; diff --git a/previews/PR195/assets/source_not_implemented_yet.md.Bz3ySMxN.lean.js b/previews/PR195/assets/source_not_implemented_yet.md.Bz3ySMxN.lean.js new file mode 100644 index 000000000..0756be3f2 --- /dev/null +++ b/previews/PR195/assets/source_not_implemented_yet.md.Bz3ySMxN.lean.js @@ -0,0 +1 @@ +import{_ as e,c as i,o as t,a7 as s}from"./chunks/framework.BjTE4JnT.js";const _=JSON.parse('{"title":"Not implemented yet","description":"","frontmatter":{},"headers":[],"relativePath":"source/not_implemented_yet.md","filePath":"source/not_implemented_yet.md","lastUpdated":null}'),a={name:"source/not_implemented_yet.md"},n=s("",5),l=[n];function p(h,o,r,d,c,m){return t(),i("div",null,l)}const u=e(a,[["render",p]]);export{_ as __pageData,u as default}; diff --git a/previews/PR195/assets/source_primitives.md.CwLE6hnK.js b/previews/PR195/assets/source_primitives.md.CwLE6hnK.js new file mode 100644 index 000000000..5a600e26d --- /dev/null +++ b/previews/PR195/assets/source_primitives.md.CwLE6hnK.js @@ -0,0 +1,305 @@ +import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.BjTE4JnT.js";const o=JSON.parse('{"title":"Primitive functions","description":"","frontmatter":{},"headers":[],"relativePath":"source/primitives.md","filePath":"source/primitives.md","lastUpdated":null}'),n={name:"source/primitives.md"},h=t(`

Primitive functions

julia
export apply, applyreduce, TraitTarget

This file mainly defines the apply and applyreduce functions, and some related functionality.

In general, the idea behind the apply framework is to take as input any geometry, vector of geometries, or feature collection, deconstruct it to the given trait target (any arbitrary GI.AbstractTrait or TraitTarget union thereof, like PointTrait or PolygonTrait) and perform some operation on it.

This allows for a simple and consistent framework within which users can define their own operations trivially easily, and removes a lot of the complexity involved with handling complex geometry structures.

For example, a simple way to flip the x and y coordinates of a geometry is:

julia
flipped_geom = GO.apply(GI.PointTrait(), geom) do p
+    (GI.y(p), GI.x(p))
+end

As simple as that. There's no need to implement your own decomposition because it's done for you.

Functions like flip, reproject, transform, even segmentize and simplify have been implemented using the apply framework. Similarly, centroid, area and distance have been implemented using the applyreduce framework.

Docstrings

Functions

Missing docstring.

Missing docstring for apply. Check Documenter's build log for details.

Missing docstring.

Missing docstring for applyreduce. Check Documenter's build log for details.

Missing docstring.

Missing docstring for GeometryOps.unwrap. Check Documenter's build log for details.

# GeometryOps.flattenFunction.
julia
flatten(target::Type{<:GI.AbstractTrait}, obj)
+flatten(f, target::Type{<:GI.AbstractTrait}, obj)

Lazily flatten any AbstractArray, iterator, FeatureCollectionTrait, FeatureTrait or AbstractGeometryTrait object obj, so that objects with the target trait are returned by the iterator.

If f is passed in it will be applied to the target geometries.

source


# GeometryOps.reconstructFunction.
julia
reconstruct(geom, components)

Reconstruct geom from an iterable of component objects that match its structure.

All objects in components must have the same GeoInterface.trait.

Usually used in combination with flatten.

source


# GeometryOps.rebuildFunction.
julia
rebuild(geom, child_geoms)

Rebuild a geometry from child geometries.

By default geometries will be rebuilt as a GeoInterface.Wrappers geometry, but rebuild can have methods added to it to dispatch on geometries from other packages and specify how to rebuild them.

(Maybe it should go into GeoInterface.jl)

source


Types

Missing docstring.

Missing docstring for TraitTarget. Check Documenter's build log for details.

Implementation

julia
const THREADED_KEYWORD = "- \`threaded\`: \`true\` or \`false\`. Whether to use multithreading. Defaults to \`false\`."
+const CRS_KEYWORD = "- \`crs\`: The CRS to attach to geometries. Defaults to \`nothing\`."
+const CALC_EXTENT_KEYWORD = "- \`calc_extent\`: \`true\` or \`false\`. Whether to calculate the extent. Defaults to \`false\`."
+
+const APPLY_KEYWORDS = """
+$THREADED_KEYWORD
+$CRS_KEYWORD
+$CALC_EXTENT_KEYWORD
+"""

What is apply?

apply applies some function to every geometry matching the Target GeoInterface trait, in some arbitrarily nested object made up of:

  • AbstractArrays (we also try to iterate other non-GeoInteface compatible object)

  • FeatureCollectionTrait objects

  • FeatureTrait objects

  • AbstractGeometryTrait objects

apply recursively calls itself through these nested layers until it reaches objects with the Target GeoInterface trait. When found apply applies the function f, and stops.

The outer recursive functions then progressively rebuild the object using GeoInterface objects matching the original traits.

If PointTrait is found but it is not the Target, an error is thrown. This likely means the object contains a different geometry trait to the target, such as MultiPointTrait when LineStringTrait was specified.

To handle this possibility it may be necessary to make Target a Union of traits found at the same level of nesting, and define methods of f to handle all cases.

Be careful making a union across "levels" of nesting, e.g. Union{FeatureTrait,PolygonTrait}, as _apply will just never reach PolygonTrait when all the polygons are wrapped in a FeatureTrait object.

Embedding:

extent and crs can be embedded in all geometries, features, and feature collections as part of apply. Geometries deeper than Target will of course not have new extent or crs embedded.

  • calc_extent signals to recalculate an Extent and embed it.

  • crs will be embedded as-is

Threading

Threading is used at the outermost level possible - over an array, feature collection, or e.g. a MultiPolygonTrait where each PolygonTrait sub-geometry may be calculated on a different thread.

Currently, threading defaults to false for all objects, but can be turned on by passing the keyword argument threaded=true to apply.

julia
"""
+    apply(f, target::Union{TraitTarget, GI.AbstractTrait}, obj; kw...)
+
+Reconstruct a geometry, feature, feature collection, or nested vectors of
+either using the function \`f\` on the \`target\` trait.
+
+\`f(target_geom) => x\` where \`x\` also has the \`target\` trait, or a trait that can
+be substituted. For example, swapping \`PolgonTrait\` to \`MultiPointTrait\` will fail
+if the outer object has \`MultiPolygonTrait\`, but should work if it has \`FeatureTrait\`.
+
+Objects "shallower" than the target trait are always completely rebuilt, like
+a \`Vector\` of \`FeatureCollectionTrait\` of \`FeatureTrait\` when the target
+has \`PolygonTrait\` and is held in the features. These will always be GeoInterface
+geometries/feature/feature collections. But "deeper" objects may remain
+unchanged or be whatever GeoInterface compatible objects \`f\` returns.
+
+The result is a functionally similar geometry with values depending on \`f\`.
+
+$APPLY_KEYWORDS
+
+# Example
+
+Flipped point the order in any feature or geometry, or iterables of either:
+
+\`\`\`julia
+import GeoInterface as GI
+import GeometryOps as GO
+geom = GI.Polygon([GI.LinearRing([(1, 2), (3, 4), (5, 6), (1, 2)]),
+                   GI.LinearRing([(3, 4), (5, 6), (6, 7), (3, 4)])])
+
+flipped_geom = GO.apply(GI.PointTrait, geom) do p
+    (GI.y(p), GI.x(p))
+end
+\`\`\`
+"""
+@inline function apply(
+    f::F, target, geom; calc_extent=false, threaded=false, kw...
+) where F
+    threaded = _booltype(threaded)
+    calc_extent = _booltype(calc_extent)
+    _apply(f, TraitTarget(target), geom; threaded, calc_extent, kw...)
+end

Call _apply again with the trait of geom

julia
@inline _apply(f::F, target, geom; kw...)  where F =
+    _apply(f, target, GI.trait(geom), geom; kw...)

There is no trait and this is an AbstractArray - so just iterate over it calling _apply on the contents

julia
@inline function _apply(f::F, target, ::Nothing, A::AbstractArray; threaded, kw...) where F

For an Array there is nothing else to do but map _apply over all values _maptasks may run this level threaded if threaded==true, but deeper _apply called in the closure will not be threaded

julia
    apply_to_array(i) = _apply(f, target, A[i]; threaded=_False(), kw...)
+    _maptasks(apply_to_array, eachindex(A), threaded)
+end

There is no trait and this is not an AbstractArray. Try to call _apply over it. We can't use threading as we don't know if we can can index into it. So just map.

julia
@inline function _apply(f::F, target, ::Nothing, iterable::IterableType; threaded, kw...) where {F, IterableType}

Try the Tables.jl interface first

julia
    if Tables.istable(iterable)
+    _apply_table(f, target, iterable; threaded, kw...)
+    else # this is probably some form of iterable...
+        if threaded isa _True

collect first so we can use threads

julia
            _apply(f, target, collect(iterable); threaded, kw...)
+        else
+            apply_to_iterable(x) = _apply(f, target, x; kw...)
+            map(apply_to_iterable, iterable)
+        end
+    end
+end
+#=
+Doing this inline in \`_apply\` is _heavily_ type unstable, so it's best to separate this
+by a function barrier.
+
+This function operates \`apply\` on the \`geometry\` column of the table, and returns a new table
+with the same schema, but with the new geometry column.
+
+This new table may be of the same type as the old one iff \`Tables.materializer\` is defined for
+that table.  If not, then a \`NamedTuple\` is returned.
+=#
+function _apply_table(f::F, target, iterable::IterableType; threaded, kw...) where {F, IterableType}
+    _get_col_pair(colname) = colname => Tables.getcolumn(iterable, colname)

We extract the geometry column and run apply on it.

julia
    geometry_column = first(GI.geometrycolumns(iterable))
+    new_geometry = _apply(f, target, Tables.getcolumn(iterable, geometry_column); threaded, kw...)

Then, we obtain the schema of the table,

julia
    old_schema = Tables.schema(iterable)

filter the geometry column out,

julia
    new_names = filter(Base.Fix1(!==, geometry_column), old_schema.names)

and try to rebuild the same table as the best type - either the original type of iterable, or a named tuple which is the default fallback.

julia
    return Tables.materializer(iterable)(
+        merge(
+            NamedTuple{(geometry_column,), Base.Tuple{typeof(new_geometry)}}((new_geometry,)),
+            NamedTuple(Iterators.map(_get_col_pair, new_names))
+        )
+    )
+end

Rewrap all FeatureCollectionTrait feature collections as GI.FeatureCollection Maybe use threads to call _apply on component features

julia
@inline function _apply(f::F, target, ::GI.FeatureCollectionTrait, fc;
+    crs=GI.crs(fc), calc_extent=_False(), threaded
+) where F

Run _apply on all features in the feature collection, possibly threaded

julia
    apply_to_feature(i) =
+        _apply(f, target, GI.getfeature(fc, i); crs, calc_extent, threaded=_False())::GI.Feature
+    features = _maptasks(apply_to_feature, 1:GI.nfeature(fc), threaded)
+    if calc_extent isa _True

Calculate the extent of the features

julia
        extent = mapreduce(GI.extent, Extents.union, features)

Return a FeatureCollection with features, crs and calculated extent

julia
        return GI.FeatureCollection(features; crs, extent)
+    else

Return a FeatureCollection with features and crs

julia
        return GI.FeatureCollection(features; crs)
+    end
+end

Rewrap all FeatureTrait features as GI.Feature, keeping the properties

julia
@inline function _apply(f::F, target, ::GI.FeatureTrait, feature;
+    crs=GI.crs(feature), calc_extent=_False(), threaded
+) where F

Run _apply on the contained geometry

julia
    geometry = _apply(f, target, GI.geometry(feature); crs, calc_extent, threaded)

Get the feature properties

julia
    properties = GI.properties(feature)
+    if calc_extent isa _True

Calculate the extent of the geometry

julia
        extent = GI.extent(geometry)

Return a new Feature with the new geometry and calculated extent, but the original properties and crs

julia
        return GI.Feature(geometry; properties, crs, extent)
+    else

Return a new Feature with the new geometry, but the original properties and crs

julia
        return GI.Feature(geometry; properties, crs)
+    end
+end

Reconstruct nested geometries, maybe using threads to call _apply on component geoms

julia
@inline function _apply(f::F, target, trait, geom;
+    crs=GI.crs(geom), calc_extent=_False(), threaded
+)::(GI.geointerface_geomtype(trait)) where F

Map _apply over all sub geometries of geom to create a new vector of geometries TODO handle zero length

julia
    apply_to_geom(i) = _apply(f, target, GI.getgeom(geom, i); crs, calc_extent, threaded=_False())
+    geoms = _maptasks(apply_to_geom, 1:GI.ngeom(geom), threaded)
+    return _apply_inner(geom, geoms, crs, calc_extent)
+end
+function _apply_inner(geom, geoms, crs, calc_extent::_True)

Calculate the extent of the sub geometries

julia
    extent = mapreduce(GI.extent, Extents.union, geoms)

Return a new geometry of the same trait as geom, holding the new geoms with crs and calculated extent

julia
    return rebuild(geom, geoms; crs, extent)
+end
+function _apply_inner(geom, geoms, crs, calc_extent::_False)

Return a new geometry of the same trait as geom, holding the new geoms with crs

julia
    return rebuild(geom, geoms; crs)
+end

Fail loudly if we hit PointTrait without running f (after PointTrait there is no further to dig with _apply) @inline _apply(f, ::TraitTarget{Target}, trait::GI.PointTrait, geom; crs=nothing, kw...) where Target = throw(ArgumentError("target Target not found, but reached a PointTrait leaf")) Finally, these short methods are the main purpose of apply. The Trait is a subtype of the Target (or identical to it) So the Target is found. We apply f to geom and return it to previous _apply calls to be wrapped with the outer geometries/feature/featurecollection/array.

julia
_apply(f::F, ::TraitTarget{Target}, ::Trait, geom; crs=GI.crs(geom), kw...) where {F,Target,Trait<:Target} = f(geom)

Define some specific cases of this match to avoid method ambiguity

julia
for T in (
+    GI.PointTrait, GI.LinearRing, GI.LineString,
+    GI.MultiPoint, GI.FeatureTrait, GI.FeatureCollectionTrait
+)
+    @eval _apply(f::F, target::TraitTarget{<:$T}, trait::$T, x; kw...) where F = f(x)
+end
+
+"""
+    applyreduce(f, op, target::Union{TraitTarget, GI.AbstractTrait}, obj; threaded)
+
+Apply function \`f\` to all objects with the \`target\` trait,
+and reduce the result with an \`op\` like \`+\`.
+
+The order and grouping of application of \`op\` is not guaranteed.
+
+If \`threaded==true\` threads will be used over arrays and iterables,
+feature collections and nested geometries.
+"""
+@inline function applyreduce(
+    f::F, op::O, target, geom; threaded=false, init=nothing
+) where {F, O}
+    threaded = _booltype(threaded)
+    _applyreduce(f, op, TraitTarget(target), geom; threaded, init)
+end
+
+@inline _applyreduce(f::F, op::O, target, geom; threaded, init) where {F, O} =
+    _applyreduce(f, op, target, GI.trait(geom), geom; threaded, init)

Maybe use threads reducing over arrays

julia
@inline function _applyreduce(f::F, op::O, target, ::Nothing, A::AbstractArray; threaded, init) where {F, O}
+    applyreduce_array(i) = _applyreduce(f, op, target, A[i]; threaded=_False(), init)
+    _mapreducetasks(applyreduce_array, op, eachindex(A), threaded; init)
+end

Try to applyreduce over iterables

julia
@inline function _applyreduce(f::F, op::O, target, ::Nothing, iterable::IterableType; threaded, init) where {F, O, IterableType}
+    if Tables.istable(iterable)
+        _applyreduce_table(f, op, target, iterable; threaded, init)
+    else
+        applyreduce_iterable(i) = _applyreduce(f, op, target, i; threaded=_False(), init)
+        if threaded isa _True # Try to \`collect\` and reduce over the vector with threads
+            _applyreduce(f, op, target, collect(iterable); threaded, init)
+        else

Try to mapreduce the iterable as-is

julia
            mapreduce(applyreduce_iterable, op, iterable; init)
+        end
+    end
+end

In this case, we don't reconstruct the table, but only operate on the geometry column.

julia
function _applyreduce_table(f::F, op::O, target, iterable::IterableType; threaded, init) where {F, O, IterableType}

We extract the geometry column and run applyreduce on it.

julia
    geometry_column = first(GI.geometrycolumns(iterable))
+    return _applyreduce(f, op, target, Tables.getcolumn(iterable, geometry_column); threaded, init)
+end

If applyreduce wants features, then applyreduce over the rows as GI.Features.

julia
function _applyreduce_table(f::F, op::O, target::GI.FeatureTrait, iterable::IterableType; threaded, init) where {F, O, IterableType}

We extract the geometry column and run apply on it.

julia
    geometry_column = first(GI.geometrycolumns(iterable))
+    property_names = Iterators.filter(!=(geometry_column), Tables.schema(iterable).names)
+    features = map(Tables.rows(iterable)) do row
+        GI.Feature(Tables.getcolumn(row, geometry_column), properties=NamedTuple(Iterators.map(Base.Fix1(_get_col_pair, row), property_names)))
+    end
+    return _applyreduce(f, op, target, features; threaded, init)
+end

Maybe use threads reducing over features of feature collections

julia
@inline function _applyreduce(f::F, op::O, target, ::GI.FeatureCollectionTrait, fc; threaded, init) where {F, O}
+    applyreduce_fc(i) = _applyreduce(f, op, target, GI.getfeature(fc, i); threaded=_False(), init)
+    _mapreducetasks(applyreduce_fc, op, 1:GI.nfeature(fc), threaded; init)
+end

Features just applyreduce to their geometry

julia
@inline _applyreduce(f::F, op::O, target, ::GI.FeatureTrait, feature; threaded, init) where {F, O} =
+    _applyreduce(f, op, target, GI.geometry(feature); threaded, init)

Maybe use threads over components of nested geometries

julia
@inline function _applyreduce(f::F, op::O, target, trait, geom; threaded, init) where {F, O}
+    applyreduce_geom(i) = _applyreduce(f, op, target, GI.getgeom(geom, i); threaded=_False(), init)
+    _mapreducetasks(applyreduce_geom, op, 1:GI.ngeom(geom), threaded; init)
+end

Don't thread over points it won't pay off

julia
@inline function _applyreduce(
+    f::F, op::O, target, trait::Union{GI.LinearRing,GI.LineString,GI.MultiPoint}, geom;
+    threaded, init
+) where {F, O}
+    _applyreduce(f, op, target, GI.getgeom(geom); threaded=_False(), init)
+end

Apply f to the target

julia
@inline function _applyreduce(f::F, op::O, ::TraitTarget{Target}, ::Trait, x; kw...) where {F,O,Target,Trait<:Target}
+    f(x)
+end

Fail if we hit PointTrait _applyreduce(f, op, target::TraitTarget{Target}, trait::PointTrait, geom; kw...) where Target = throw(ArgumentError("target target not found")) Specific cases to avoid method ambiguity

julia
for T in (
+    GI.PointTrait, GI.LinearRing, GI.LineString,
+    GI.MultiPoint, GI.FeatureTrait, GI.FeatureCollectionTrait
+)
+    @eval _applyreduce(f::F, op::O, ::TraitTarget{<:$T}, trait::$T, x; kw...) where {F, O} = f(x)
+end
+
+"""
+    unwrap(target::Type{<:AbstractTrait}, obj)
+    unwrap(f, target::Type{<:AbstractTrait}, obj)
+
+Unwrap the object to vectors, down to the target trait.
+
+If \`f\` is passed in it will be applied to the target geometries
+as they are found.
+"""
+function unwrap end
+unwrap(target::Type, geom) = unwrap(identity, target, geom)

Add dispatch argument for trait

julia
unwrap(f, target::Type, geom) = unwrap(f, target, GI.trait(geom), geom)

Try to unwrap over iterables

julia
unwrap(f, target::Type, ::Nothing, iterable) =
+    map(x -> unwrap(f, target, x), iterable)

Rewrap feature collections

julia
unwrap(f, target::Type, ::GI.FeatureCollectionTrait, fc) =
+    map(x -> unwrap(f, target, x), GI.getfeature(fc))
+unwrap(f, target::Type, ::GI.FeatureTrait, feature) =
+    unwrap(f, target, GI.geometry(feature))
+unwrap(f, target::Type, trait, geom) = map(g -> unwrap(f, target, g), GI.getgeom(geom))

Apply f to the target geometry

julia
unwrap(f, ::Type{Target}, ::Trait, geom) where {Target,Trait<:Target} = f(geom)

Fail if we hit PointTrait

julia
unwrap(f, target::Type, trait::GI.PointTrait, geom) =
+    throw(ArgumentError("target $target not found, but reached a \`PointTrait\` leaf"))

Specific cases to avoid method ambiguity

julia
unwrap(f, target::Type{GI.PointTrait}, trait::GI.PointTrait, geom) = f(geom)
+unwrap(f, target::Type{GI.FeatureTrait}, ::GI.FeatureTrait, feature) = f(feature)
+unwrap(f, target::Type{GI.FeatureCollectionTrait}, ::GI.FeatureCollectionTrait, fc) = f(fc)
+
+"""
+    flatten(target::Type{<:GI.AbstractTrait}, obj)
+    flatten(f, target::Type{<:GI.AbstractTrait}, obj)
+
+Lazily flatten any \`AbstractArray\`, iterator, \`FeatureCollectionTrait\`,
+\`FeatureTrait\` or \`AbstractGeometryTrait\` object \`obj\`, so that objects
+with the \`target\` trait are returned by the iterator.
+
+If \`f\` is passed in it will be applied to the target geometries.
+"""
+flatten(::Type{Target}, geom) where {Target<:GI.AbstractTrait} = flatten(identity, Target, geom)
+flatten(f, ::Type{Target}, geom) where {Target<:GI.AbstractTrait} = _flatten(f, Target, geom)
+
+_flatten(f, ::Type{Target}, geom) where Target = _flatten(f, Target, GI.trait(geom), geom)

Try to flatten over iterables

julia
_flatten(f, ::Type{Target}, ::Nothing, iterable) where Target =
+    Iterators.flatten(Iterators.map(x -> _flatten(f, Target, x), iterable))

Flatten feature collections

julia
function _flatten(f, ::Type{Target}, ::GI.FeatureCollectionTrait, fc) where Target
+    Iterators.map(GI.getfeature(fc)) do feature
+        _flatten(f, Target, feature)
+    end |> Iterators.flatten
+end
+_flatten(f, ::Type{Target}, ::GI.FeatureTrait, feature) where Target =
+    _flatten(f, Target, GI.geometry(feature))

Apply f to the target geometry

julia
_flatten(f, ::Type{Target}, ::Trait, geom) where {Target,Trait<:Target} = (f(geom),)
+_flatten(f, ::Type{Target}, trait, geom) where Target =
+    Iterators.flatten(Iterators.map(g -> _flatten(f, Target, g), GI.getgeom(geom)))

Fail if we hit PointTrait without running f

julia
_flatten(f, ::Type{Target}, trait::GI.PointTrait, geom) where Target =
+    throw(ArgumentError("target $Target not found, but reached a \`PointTrait\` leaf"))

Specific cases to avoid method ambiguity

julia
_flatten(f, ::Type{<:GI.PointTrait}, ::GI.PointTrait, geom) = (f(geom),)
+_flatten(f, ::Type{<:GI.FeatureTrait}, ::GI.FeatureTrait, feature) = (f(feature),)
+_flatten(f, ::Type{<:GI.FeatureCollectionTrait}, ::GI.FeatureCollectionTrait, fc) = (f(fc),)
+
+
+"""
+    reconstruct(geom, components)
+
+Reconstruct \`geom\` from an iterable of component objects that match its structure.
+
+All objects in \`components\` must have the same \`GeoInterface.trait\`.
+
+Usually used in combination with \`flatten\`.
+"""
+function reconstruct(geom, components)
+    obj, iter = _reconstruct(geom, components)
+    return obj
+end
+
+_reconstruct(geom, components) =
+    _reconstruct(typeof(GI.trait(first(components))), geom, components, 1)
+_reconstruct(::Type{Target}, geom, components, iter) where Target =
+    _reconstruct(Target, GI.trait(geom), geom, components, iter)

Try to reconstruct over iterables

julia
function _reconstruct(::Type{Target}, ::Nothing, iterable, components, iter) where Target
+    vect = map(iterable) do x

iter is updated by _reconstruct here

julia
        obj, iter = _reconstruct(Target, x, components, iter)
+        obj
+    end
+    return vect, iter
+end

Reconstruct feature collections

julia
function _reconstruct(::Type{Target}, ::GI.FeatureCollectionTrait, fc, components, iter) where Target
+    features = map(GI.getfeature(fc)) do feature

iter is updated by _reconstruct here

julia
        newfeature, iter = _reconstruct(Target, feature, components, iter)
+        newfeature
+    end
+    return GI.FeatureCollection(features; crs=GI.crs(fc)), iter
+end
+function _reconstruct(::Type{Target}, ::GI.FeatureTrait, feature, components, iter) where Target
+    geom, iter = _reconstruct(Target, GI.geometry(feature), components, iter)
+    return GI.Feature(geom; properties=GI.properties(feature), crs=GI.crs(feature)), iter
+end
+function _reconstruct(::Type{Target}, trait, geom, components, iter) where Target
+    geoms = map(GI.getgeom(geom)) do subgeom

iter is updated by _reconstruct here

julia
        subgeom1, iter = _reconstruct(Target, GI.trait(subgeom), subgeom, components, iter)
+        subgeom1
+    end
+    return rebuild(geom, geoms), iter
+end

Apply f to the target geometry

julia
_reconstruct(::Type{Target}, ::Trait, geom, components, iter) where {Target,Trait<:Target} =
+    iterate(components, iter)

Specific cases to avoid method ambiguity

julia
_reconstruct(::Type{<:GI.PointTrait}, ::GI.PointTrait, geom, components, iter) = iterate(components, iter)
+_reconstruct(::Type{<:GI.FeatureTrait}, ::GI.FeatureTrait, feature, components, iter) = iterate(feature, iter)
+_reconstruct(::Type{<:GI.FeatureCollectionTrait}, ::GI.FeatureCollectionTrait, fc, components, iter) = iterate(fc, iter)

Fail if we hit PointTrait without running f

julia
_reconstruct(::Type{Target}, trait::GI.PointTrait, geom, components, iter) where Target =
+    throw(ArgumentError("target $Target not found, but reached a \`PointTrait\` leaf"))
+
+
+const BasicsGeoms = Union{GB.AbstractGeometry,GB.AbstractFace,GB.AbstractPoint,GB.AbstractMesh,
+    GB.AbstractPolygon,GB.LineString,GB.MultiPoint,GB.MultiLineString,GB.MultiPolygon,GB.Mesh}
+
+"""
+    rebuild(geom, child_geoms)
+
+Rebuild a geometry from child geometries.
+
+By default geometries will be rebuilt as a \`GeoInterface.Wrappers\`
+geometry, but \`rebuild\` can have methods added to it to dispatch
+on geometries from other packages and specify how to rebuild them.
+
+(Maybe it should go into GeoInterface.jl)
+"""
+rebuild(geom, child_geoms; kw...) = rebuild(GI.trait(geom), geom, child_geoms; kw...)
+function rebuild(trait::GI.AbstractTrait, geom, child_geoms; crs=GI.crs(geom), extent=nothing)
+    T = GI.geointerface_geomtype(trait)
+    if GI.is3d(geom)

The Boolean type parameters here indicate "3d-ness" and "measure" coordinate, respectively.

julia
        return T{true,false}(child_geoms; crs, extent)
+    else
+        return T{false,false}(child_geoms; crs, extent)
+    end
+end
+
+using Base.Threads: nthreads, @threads, @spawn

Threading utility, modified Mason Protters threading PSA run f over ntasks, where f receives an AbstractArray/range of linear indices

julia
@inline function _maptasks(f::F, taskrange, threaded::_True)::Vector where F
+    ntasks = length(taskrange)

Customize this as needed. More tasks have more overhead, but better load balancing

julia
    tasks_per_thread = 2
+    chunk_size = max(1, ntasks ÷ (tasks_per_thread * nthreads()))

partition the range into chunks

julia
    task_chunks = Iterators.partition(taskrange, chunk_size)

Map over the chunks

julia
    tasks = map(task_chunks) do chunk

Spawn a task to process this chunk

julia
        @spawn begin

Where we map f over the chunk indices

julia
            map(f, chunk)
+        end
+    end

Finally we join the results into a new vector

julia
    return mapreduce(fetch, vcat, tasks)
+end

Here we use the compiler directive @assume_effects :foldable to force the compiler to lookup through the closure. This alone makes e.g. flip 2.5x faster!

julia
Base.@assume_effects :foldable @inline function _maptasks(f::F, taskrange, threaded::_False)::Vector where F
+    map(f, taskrange)
+end

Threading utility, modified Mason Protters threading PSA run f over ntasks, where f receives an AbstractArray/range of linear indices

WARNING: this will not work for mean/median - only ops where grouping is possible

julia
@inline function _mapreducetasks(f::F, op, taskrange, threaded::_True; init) where F
+    ntasks = length(taskrange)

Customize this as needed. More tasks have more overhead, but better load balancing

julia
    tasks_per_thread = 2
+    chunk_size = max(1, ntasks ÷ (tasks_per_thread * nthreads()))

partition the range into chunks

julia
    task_chunks = Iterators.partition(taskrange, chunk_size)

Map over the chunks

julia
    tasks = map(task_chunks) do chunk

Spawn a task to process this chunk

julia
        @spawn begin

Where we map f over the chunk indices

julia
            mapreduce(f, op, chunk; init)
+        end
+    end

Finally we join the results into a new vector

julia
    return mapreduce(fetch, op, tasks; init)
+end
+Base.@assume_effects :foldable function _mapreducetasks(f::F, op, taskrange, threaded::_False; init) where F
+    mapreduce(f, op, taskrange; init)
+end

This page was generated using Literate.jl.

`,194),e=[h];function l(p,k,r,d,g,E){return a(),i("div",null,e)}const c=s(n,[["render",l]]);export{o as __pageData,c as default}; diff --git a/previews/PR195/assets/source_primitives.md.CwLE6hnK.lean.js b/previews/PR195/assets/source_primitives.md.CwLE6hnK.lean.js new file mode 100644 index 000000000..cbeef49dd --- /dev/null +++ b/previews/PR195/assets/source_primitives.md.CwLE6hnK.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.BjTE4JnT.js";const o=JSON.parse('{"title":"Primitive functions","description":"","frontmatter":{},"headers":[],"relativePath":"source/primitives.md","filePath":"source/primitives.md","lastUpdated":null}'),n={name:"source/primitives.md"},h=t("",194),e=[h];function l(p,k,r,d,g,E){return a(),i("div",null,e)}const c=s(n,[["render",l]]);export{o as __pageData,c as default}; diff --git a/previews/PR195/assets/source_transformations_correction_closed_ring.md.BDlXIhE4.js b/previews/PR195/assets/source_transformations_correction_closed_ring.md.BDlXIhE4.js new file mode 100644 index 000000000..788d92921 --- /dev/null +++ b/previews/PR195/assets/source_transformations_correction_closed_ring.md.BDlXIhE4.js @@ -0,0 +1,30 @@ +import{_ as t,c as i,j as s,a,a7 as e,o as n}from"./chunks/framework.BjTE4JnT.js";const Q=JSON.parse('{"title":"Closed Rings","description":"","frontmatter":{},"headers":[],"relativePath":"source/transformations/correction/closed_ring.md","filePath":"source/transformations/correction/closed_ring.md","lastUpdated":null}'),l={name:"source/transformations/correction/closed_ring.md"},h=e(`

Closed Rings

julia
export ClosedRing

A closed ring is a ring that has the same start and end point. This is a requirement for a valid polygon (technically, for a valid LinearRing). This correction is used to ensure that the polygon is valid.

The reason this operates on the polygon level is that several packages are loose about whether they return LinearRings (which is correct) or LineStrings (which is incorrect) for the contents of a polygon. Therefore, we decompose manually to ensure correctness.

Example

Many polygon providers do not close their polygons, which makes them invalid according to the specification. Quite a few geometry algorithms assume that polygons are closed, and leaving them open can lead to incorrect results!

For example, the following polygon is not valid:

julia
import GeoInterface as GI
+polygon = GI.Polygon([[(0, 0), (1, 0), (1, 1), (0, 1)]])
GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Int64, Int64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Int64, Int64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Int64, Int64}}, Nothing, Nothing}([(0, 0), (1, 0), (1, 1), (0, 1)], nothing, nothing)], nothing, nothing)

even though it will look correct when visualized, and indeed appears correct.

julia
import GeometryOps as GO
+GO.fix(polygon, corrections = [GO.ClosedRing()])
GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}([(0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0), (0.0, 0.0)], nothing, nothing)], nothing, nothing)
`,12),p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},r=s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1),o=[r],d=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"n")])],-1),g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.254ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 2322.4 748","aria-hidden":"true"},E=e('',1),y=[E],u=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"n"),s("mo",null,"+"),s("mn",null,"1")])],-1),F=e(`

Implementation

julia
"""
+    ClosedRing() <: GeometryCorrection
+
+This correction ensures that a polygon's exterior and interior rings are closed.
+
+It can be called on any geometry correction as usual.
+
+See also \`GeometryCorrection\`.
+"""
+struct ClosedRing <: GeometryCorrection end
+
+application_level(::ClosedRing) = GI.PolygonTrait
+
+function (::ClosedRing)(::GI.PolygonTrait, polygon)
+    exterior = _close_linear_ring(GI.getexterior(polygon))
+
+    holes = map(GI.gethole(polygon)) do hole
+        _close_linear_ring(hole) # TODO: make this more efficient, or use tuples!
+    end
+
+    return GI.Wrappers.Polygon([exterior, holes...])
+end
+
+function _close_linear_ring(ring)
+    if GI.getpoint(ring, 1) == GI.getpoint(ring, GI.npoint(ring))

the ring is closed, all hail the ring

julia
        return ring
+    else

Assemble the ring as a vector

julia
        tups = tuples.(GI.getpoint(ring))

Close the ring

julia
        push!(tups, tups[1])

Return an actual ring

julia
        return GI.LinearRing(tups)
+    end
+end

This page was generated using Literate.jl.

`,12);function m(C,_,v,T,b,f){return n(),i("div",null,[h,s("p",null,[a("You can see that the last point of the ring here is equal to the first point. For a polygon with "),s("mjx-container",p,[(n(),i("svg",k,o)),d]),a(" sides, there should be "),s("mjx-container",g,[(n(),i("svg",c,y)),u]),a(" vertices.")]),F])}const A=t(l,[["render",m]]);export{Q as __pageData,A as default}; diff --git a/previews/PR195/assets/source_transformations_correction_closed_ring.md.BDlXIhE4.lean.js b/previews/PR195/assets/source_transformations_correction_closed_ring.md.BDlXIhE4.lean.js new file mode 100644 index 000000000..ec325a54f --- /dev/null +++ b/previews/PR195/assets/source_transformations_correction_closed_ring.md.BDlXIhE4.lean.js @@ -0,0 +1 @@ +import{_ as t,c as i,j as s,a,a7 as e,o as n}from"./chunks/framework.BjTE4JnT.js";const Q=JSON.parse('{"title":"Closed Rings","description":"","frontmatter":{},"headers":[],"relativePath":"source/transformations/correction/closed_ring.md","filePath":"source/transformations/correction/closed_ring.md","lastUpdated":null}'),l={name:"source/transformations/correction/closed_ring.md"},h=e("",12),p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},r=s("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[s("g",{"data-mml-node":"math"},[s("g",{"data-mml-node":"mi"},[s("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1),o=[r],d=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"n")])],-1),g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.254ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 2322.4 748","aria-hidden":"true"},E=e("",1),y=[E],u=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"n"),s("mo",null,"+"),s("mn",null,"1")])],-1),F=e("",12);function m(C,_,v,T,b,f){return n(),i("div",null,[h,s("p",null,[a("You can see that the last point of the ring here is equal to the first point. For a polygon with "),s("mjx-container",p,[(n(),i("svg",k,o)),d]),a(" sides, there should be "),s("mjx-container",g,[(n(),i("svg",c,y)),u]),a(" vertices.")]),F])}const A=t(l,[["render",m]]);export{Q as __pageData,A as default}; diff --git a/previews/PR195/assets/source_transformations_correction_geometry_correction.md.VEdgiIPU.js b/previews/PR195/assets/source_transformations_correction_geometry_correction.md.VEdgiIPU.js new file mode 100644 index 000000000..899572d92 --- /dev/null +++ b/previews/PR195/assets/source_transformations_correction_geometry_correction.md.VEdgiIPU.js @@ -0,0 +1,31 @@ +import{_ as i,c as s,o as e,a7 as t}from"./chunks/framework.BjTE4JnT.js";const g=JSON.parse('{"title":"Geometry Corrections","description":"","frontmatter":{},"headers":[],"relativePath":"source/transformations/correction/geometry_correction.md","filePath":"source/transformations/correction/geometry_correction.md","lastUpdated":null}'),a={name:"source/transformations/correction/geometry_correction.md"},n=t(`

Geometry Corrections

julia
export fix

This file simply defines the GeometryCorrection abstract type, and the interface that any GeometryCorrection must implement.

A geometry correction is a transformation that is applied to a geometry to correct it in some way.

For example, a ClosedRing correction might be applied to a Polygon to ensure that its exterior ring is closed.

Interface

All GeometryCorrections are callable structs which, when called, apply the correction to the given geometry, and return either a copy or the original geometry (if nothing needed to be corrected).

See below for the full interface specification.

# GeometryOps.GeometryCorrectionType.
julia
abstract type GeometryCorrection

This abstract type represents a geometry correction.

Interface

Any GeometryCorrection must implement two functions: * application_level(::GeometryCorrection)::AbstractGeometryTrait: This function should return the GeoInterface trait that the correction is intended to be applied to, like PointTrait or LineStringTrait or PolygonTrait. * (::GeometryCorrection)(::AbstractGeometryTrait, geometry)::(some_geometry): This function should apply the correction to the given geometry, and return a new geometry.

source


Any geometry correction must implement the interface as given above.

julia
"""
+    abstract type GeometryCorrection
+
+This abstract type represents a geometry correction.
+
+# Interface
+
+Any \`GeometryCorrection\` must implement two functions:
+    * \`application_level(::GeometryCorrection)::AbstractGeometryTrait\`: This function should return the \`GeoInterface\` trait that the correction is intended to be applied to, like \`PointTrait\` or \`LineStringTrait\` or \`PolygonTrait\`.
+    * \`(::GeometryCorrection)(::AbstractGeometryTrait, geometry)::(some_geometry)\`: This function should apply the correction to the given geometry, and return a new geometry.
+"""
+abstract type GeometryCorrection end
+
+application_level(gc::GeometryCorrection) = error("Not implemented yet for $(gc)")
+
+(gc::GeometryCorrection)(geometry) = gc(GI.trait(geometry), geometry)
+
+(gc::GeometryCorrection)(trait::GI.AbstractGeometryTrait, geometry) = error("Not implemented yet for $(gc) and $(trait).")
+
+function fix(geometry; corrections = GeometryCorrection[ClosedRing(),], kwargs...)
+    traits = application_level.(corrections)
+    final_geometry = geometry
+    for Trait in (GI.PointTrait, GI.MultiPointTrait, GI.LineStringTrait, GI.LinearRingTrait, GI.MultiLineStringTrait, GI.PolygonTrait, GI.MultiPolygonTrait)
+        available_corrections = findall(x -> x == Trait, traits)
+        isempty(available_corrections) && continue
+        @debug "Correcting for $(Trait)"
+        net_function = reduce(, corrections[available_corrections])
+        final_geometry = apply(net_function, Trait, final_geometry; kwargs...)
+    end
+    return final_geometry
+end

Available corrections

# GeometryOps.ClosedRingType.
julia
ClosedRing() <: GeometryCorrection

This correction ensures that a polygon's exterior and interior rings are closed.

It can be called on any geometry correction as usual.

See also GeometryCorrection.

source


# GeometryOps.DiffIntersectingPolygonsType.
julia
DiffIntersectingPolygons() <: GeometryCorrection

This correction ensures that the polygons included in a multipolygon aren't intersecting. If any polygon's are intersecting, they will be made nonintersecting through the difference operation to create a unique set of disjoint (other than potentially connections by a single point) polygons covering the same area. See also GeometryCorrection, UnionIntersectingPolygons.

source


# GeometryOps.GeometryCorrectionType.
julia
abstract type GeometryCorrection

This abstract type represents a geometry correction.

Interface

Any GeometryCorrection must implement two functions: * application_level(::GeometryCorrection)::AbstractGeometryTrait: This function should return the GeoInterface trait that the correction is intended to be applied to, like PointTrait or LineStringTrait or PolygonTrait. * (::GeometryCorrection)(::AbstractGeometryTrait, geometry)::(some_geometry): This function should apply the correction to the given geometry, and return a new geometry.

source


# GeometryOps.UnionIntersectingPolygonsType.
julia
UnionIntersectingPolygons() <: GeometryCorrection

This correction ensures that the polygon's included in a multipolygon aren't intersecting. If any polygon's are intersecting, they will be combined through the union operation to create a unique set of disjoint (other than potentially connections by a single point) polygons covering the same area.

See also GeometryCorrection.

source



This page was generated using Literate.jl.

`,23),r=[n];function o(l,p,h,c,k,d){return e(),s("div",null,r)}const m=i(a,[["render",o]]);export{g as __pageData,m as default}; diff --git a/previews/PR195/assets/source_transformations_correction_geometry_correction.md.VEdgiIPU.lean.js b/previews/PR195/assets/source_transformations_correction_geometry_correction.md.VEdgiIPU.lean.js new file mode 100644 index 000000000..7865907ad --- /dev/null +++ b/previews/PR195/assets/source_transformations_correction_geometry_correction.md.VEdgiIPU.lean.js @@ -0,0 +1 @@ +import{_ as i,c as s,o as e,a7 as t}from"./chunks/framework.BjTE4JnT.js";const g=JSON.parse('{"title":"Geometry Corrections","description":"","frontmatter":{},"headers":[],"relativePath":"source/transformations/correction/geometry_correction.md","filePath":"source/transformations/correction/geometry_correction.md","lastUpdated":null}'),a={name:"source/transformations/correction/geometry_correction.md"},n=t("",23),r=[n];function o(l,p,h,c,k,d){return e(),s("div",null,r)}const m=i(a,[["render",o]]);export{g as __pageData,m as default}; diff --git a/previews/PR195/assets/source_transformations_correction_intersecting_polygons.md.CVZsm4oL.js b/previews/PR195/assets/source_transformations_correction_intersecting_polygons.md.CVZsm4oL.js new file mode 100644 index 000000000..6182d5e24 --- /dev/null +++ b/previews/PR195/assets/source_transformations_correction_intersecting_polygons.md.CVZsm4oL.js @@ -0,0 +1,97 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const y=JSON.parse('{"title":"Intersecting Polygons","description":"","frontmatter":{},"headers":[],"relativePath":"source/transformations/correction/intersecting_polygons.md","filePath":"source/transformations/correction/intersecting_polygons.md","lastUpdated":null}'),l={name:"source/transformations/correction/intersecting_polygons.md"},t=n(`

Intersecting Polygons

julia
export UnionIntersectingPolygons

If the sub-polygons of a multipolygon are intersecting, this makes them invalid according to specification. Each sub-polygon of a multipolygon being disjoint (other than by a single point) is a requirement for a valid multipolygon. However, different libraries may achieve this in different ways.

For example, taking the union of all sub-polygons of a multipolygon will create a new multipolygon where each sub-polygon is disjoint. This can be done with the UnionIntersectingPolygons correction.

The reason this operates on a multipolygon level is that it is easy for users to mistakenly create multipolygon's that overlap, which can then be detrimental to polygon clipping performance and even create wrong answers.

Example

Multipolygon providers may not check that the polygons making up their multipolygons do not intersect, which makes them invalid according to the specification.

For example, the following multipolygon is not valid:

julia
import GeoInterface as GI
+polygon = GI.Polygon([[(0.0, 0.0), (3.0, 0.0), (3.0, 3.0), (0.0, 3.0), (0.0, 0.0)]])
+multipolygon = GI.MultiPolygon([polygon, polygon])
GeoInterface.Wrappers.MultiPolygon{false, false, Vector{GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}[GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}([(0.0, 0.0), (3.0, 0.0), (3.0, 3.0), (0.0, 3.0), (0.0, 0.0)], nothing, nothing)], nothing, nothing), GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}([(0.0, 0.0), (3.0, 0.0), (3.0, 3.0), (0.0, 3.0), (0.0, 0.0)], nothing, nothing)], nothing, nothing)], nothing, nothing)

given that the two sub-polygons are the exact same shape.

julia
import GeometryOps as GO
+GO.fix(multipolygon, corrections = [GO.UnionIntersectingPolygons()])
GeoInterface.Wrappers.MultiPolygon{false, false, Vector{GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}[GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}([(0.0, 0.0), (3.0, 0.0), (3.0, 3.0), (0.0, 3.0), (0.0, 0.0)], nothing, nothing)], nothing, nothing)], nothing, nothing)

You can see that the the multipolygon now only contains one sub-polygon, rather than the two identical ones provided.

Implementation

julia
"""
+    UnionIntersectingPolygons() <: GeometryCorrection
+
+This correction ensures that the polygon's included in a multipolygon aren't intersecting.
+If any polygon's are intersecting, they will be combined through the union operation to
+create a unique set of disjoint (other than potentially connections by a single point)
+polygons covering the same area.
+
+See also \`GeometryCorrection\`.
+"""
+struct UnionIntersectingPolygons <: GeometryCorrection end
+
+application_level(::UnionIntersectingPolygons) = GI.MultiPolygonTrait
+
+function (::UnionIntersectingPolygons)(::GI.MultiPolygonTrait, multipoly)
+    union_multipoly = tuples(multipoly)
+    n_polys = GI.npolygon(multipoly)
+    if n_polys > 1
+        keep_idx = trues(n_polys)  # keep track of sub-polygons to remove

Combine any sub-polygons that intersect

julia
        for (curr_idx, _) in Iterators.filter(last, Iterators.enumerate(keep_idx))
+            curr_poly = union_multipoly.geom[curr_idx]
+            poly_disjoint = false
+            while !poly_disjoint
+                poly_disjoint = true  # assume current polygon is disjoint from others
+                for (next_idx, _) in Iterators.filter(last, Iterators.drop(Iterators.enumerate(keep_idx), curr_idx))
+                    next_poly = union_multipoly.geom[next_idx]
+                    if intersects(curr_poly, next_poly)  # if two polygons intersect
+                        new_polys = union(curr_poly, next_poly; target = GI.PolygonTrait())
+                        n_new_polys = length(new_polys)
+                        if n_new_polys == 1  # if polygons combined
+                            poly_disjoint = false
+                            union_multipoly.geom[curr_idx] = new_polys[1]
+                            curr_poly = union_multipoly.geom[curr_idx]
+                            keep_idx[next_idx] = false
+                        end
+                    end
+                end
+            end
+        end
+        keepat!(union_multipoly.geom, keep_idx)
+    end
+    return union_multipoly
+end
+
+"""
+    DiffIntersectingPolygons() <: GeometryCorrection
+This correction ensures that the polygons included in a multipolygon aren't intersecting.
+If any polygon's are intersecting, they will be made nonintersecting through the \`difference\`
+operation to create a unique set of disjoint (other than potentially connections by a single point)
+polygons covering the same area.
+See also \`GeometryCorrection\`, \`UnionIntersectingPolygons\`.
+"""
+struct DiffIntersectingPolygons <: GeometryCorrection end
+
+application_level(::DiffIntersectingPolygons) = GI.MultiPolygonTrait
+
+function (::DiffIntersectingPolygons)(::GI.MultiPolygonTrait, multipoly)
+    diff_multipoly = tuples(multipoly)
+    n_starting_polys = GI.npolygon(multipoly)
+    n_polys = n_starting_polys
+    if n_polys > 1
+        keep_idx = trues(n_polys)  # keep track of sub-polygons to remove

Break apart any sub-polygons that intersect

julia
        for curr_idx in 1:n_starting_polys
+            !keep_idx[curr_idx] && continue
+            for next_idx in (curr_idx + 1):n_starting_polys
+                !keep_idx[next_idx] && continue
+                next_poly = diff_multipoly.geom[next_idx]
+                n_new_polys = 0
+                curr_pieces_added = (n_polys + 1):(n_polys + n_new_polys)
+                for curr_piece_idx in Iterators.flatten((curr_idx:curr_idx, curr_pieces_added))
+                    !keep_idx[curr_piece_idx] && continue
+                    curr_poly = diff_multipoly.geom[curr_piece_idx]
+                    if intersects(curr_poly, next_poly)  # if two polygons intersect
+                        new_polys = difference(curr_poly, next_poly; target = GI.PolygonTrait())
+                        n_new_pieces = length(new_polys) - 1
+                        if n_new_pieces < 0  # current polygon is covered by next_polygon
+                            keep_idx[curr_piece_idx] = false
+                            break
+                        elseif n_new_pieces  0
+                            diff_multipoly.geom[curr_piece_idx] = new_polys[1]
+                            curr_poly = diff_multipoly.geom[curr_piece_idx]
+                            if n_new_pieces > 0 # current polygon breaks into several pieces
+                                append!(diff_multipoly.geom, @view new_polys[2:end])
+                                append!(keep_idx, trues(n_new_pieces))
+                                n_new_polys += n_new_pieces
+                            end
+                        end
+                    end
+                end
+                n_polys += n_new_polys
+            end
+        end
+        keepat!(diff_multipoly.geom, keep_idx)
+    end
+    return diff_multipoly
+end

This page was generated using Literate.jl.

`,22),h=[t];function p(e,k,r,g,o,E){return a(),i("div",null,h)}const c=s(l,[["render",p]]);export{y as __pageData,c as default}; diff --git a/previews/PR195/assets/source_transformations_correction_intersecting_polygons.md.CVZsm4oL.lean.js b/previews/PR195/assets/source_transformations_correction_intersecting_polygons.md.CVZsm4oL.lean.js new file mode 100644 index 000000000..127427898 --- /dev/null +++ b/previews/PR195/assets/source_transformations_correction_intersecting_polygons.md.CVZsm4oL.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const y=JSON.parse('{"title":"Intersecting Polygons","description":"","frontmatter":{},"headers":[],"relativePath":"source/transformations/correction/intersecting_polygons.md","filePath":"source/transformations/correction/intersecting_polygons.md","lastUpdated":null}'),l={name:"source/transformations/correction/intersecting_polygons.md"},t=n("",22),h=[t];function p(e,k,r,g,o,E){return a(),i("div",null,h)}const c=s(l,[["render",p]]);export{y as __pageData,c as default}; diff --git a/previews/PR195/assets/source_transformations_extent.md.BOfr-Fyq.js b/previews/PR195/assets/source_transformations_extent.md.BOfr-Fyq.js new file mode 100644 index 000000000..987e2d5a3 --- /dev/null +++ b/previews/PR195/assets/source_transformations_extent.md.BOfr-Fyq.js @@ -0,0 +1,13 @@ +import{_ as s,c as e,o as a,a7 as t}from"./chunks/framework.BjTE4JnT.js";const u=JSON.parse('{"title":"Extent embedding","description":"","frontmatter":{},"headers":[],"relativePath":"source/transformations/extent.md","filePath":"source/transformations/extent.md","lastUpdated":null}'),n={name:"source/transformations/extent.md"},i=t(`

Extent embedding

julia
"""
+    embed_extent(obj)
+
+Recursively wrap the object with a GeoInterface.jl geometry,
+calculating and adding an \`Extents.Extent\` to all objects.
+
+This can improve performance when extents need to be checked multiple times,
+such when needing to check if many points are in geometries, and using their extents
+as a quick filter for obviously exterior points.

Keywords

julia
$THREADED_KEYWORD
+$CRS_KEYWORD
+"""
+embed_extent(x; threaded=false, crs=nothing) =
+    apply(identity, GI.PointTrait(), x; calc_extent=true, threaded, crs)

This page was generated using Literate.jl.

`,6),l=[i];function p(r,h,d,o,c,k){return a(),e("div",null,l)}const m=s(n,[["render",p]]);export{u as __pageData,m as default}; diff --git a/previews/PR195/assets/source_transformations_extent.md.BOfr-Fyq.lean.js b/previews/PR195/assets/source_transformations_extent.md.BOfr-Fyq.lean.js new file mode 100644 index 000000000..90a9202e6 --- /dev/null +++ b/previews/PR195/assets/source_transformations_extent.md.BOfr-Fyq.lean.js @@ -0,0 +1 @@ +import{_ as s,c as e,o as a,a7 as t}from"./chunks/framework.BjTE4JnT.js";const u=JSON.parse('{"title":"Extent embedding","description":"","frontmatter":{},"headers":[],"relativePath":"source/transformations/extent.md","filePath":"source/transformations/extent.md","lastUpdated":null}'),n={name:"source/transformations/extent.md"},i=t("",6),l=[i];function p(r,h,d,o,c,k){return a(),e("div",null,l)}const m=s(n,[["render",p]]);export{u as __pageData,m as default}; diff --git a/previews/PR195/assets/source_transformations_flip.md.BXRIoP3a.js b/previews/PR195/assets/source_transformations_flip.md.BXRIoP3a.js new file mode 100644 index 000000000..76a0a3306 --- /dev/null +++ b/previews/PR195/assets/source_transformations_flip.md.BXRIoP3a.js @@ -0,0 +1,22 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const y=JSON.parse('{"title":"Coordinate flipping","description":"","frontmatter":{},"headers":[],"relativePath":"source/transformations/flip.md","filePath":"source/transformations/flip.md","lastUpdated":null}'),p={name:"source/transformations/flip.md"},t=n(`

Coordinate flipping

This is a simple example of how to use the apply functionality in a function, by flipping the x and y coordinates of a geometry.

julia
"""
+    flip(obj)
+
+Swap all of the x and y coordinates in obj, otherwise
+keeping the original structure (but not necessarily the
+original type).
+
+# Keywords
+
+$APPLY_KEYWORDS
+"""
+function flip(geom; kw...)
+    if _is3d(geom)
+        return apply(PointTrait(), geom; kw...) do p
+            (GI.y(p), GI.x(p), GI.z(p))
+        end
+    else
+        return apply(PointTrait(), geom; kw...) do p
+            (GI.y(p), GI.x(p))
+        end
+    end
+end

This page was generated using Literate.jl.

`,5),l=[t];function h(e,k,r,d,o,g){return a(),i("div",null,l)}const c=s(p,[["render",h]]);export{y as __pageData,c as default}; diff --git a/previews/PR195/assets/source_transformations_flip.md.BXRIoP3a.lean.js b/previews/PR195/assets/source_transformations_flip.md.BXRIoP3a.lean.js new file mode 100644 index 000000000..bfd74e618 --- /dev/null +++ b/previews/PR195/assets/source_transformations_flip.md.BXRIoP3a.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const y=JSON.parse('{"title":"Coordinate flipping","description":"","frontmatter":{},"headers":[],"relativePath":"source/transformations/flip.md","filePath":"source/transformations/flip.md","lastUpdated":null}'),p={name:"source/transformations/flip.md"},t=n("",5),l=[t];function h(e,k,r,d,o,g){return a(),i("div",null,l)}const c=s(p,[["render",h]]);export{y as __pageData,c as default}; diff --git a/previews/PR195/assets/source_transformations_reproject.md.AFBdSlqT.js b/previews/PR195/assets/source_transformations_reproject.md.AFBdSlqT.js new file mode 100644 index 000000000..624b3425b --- /dev/null +++ b/previews/PR195/assets/source_transformations_reproject.md.AFBdSlqT.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as e}from"./chunks/framework.BjTE4JnT.js";const y=JSON.parse('{"title":"Geometry reprojection","description":"","frontmatter":{},"headers":[],"relativePath":"source/transformations/reproject.md","filePath":"source/transformations/reproject.md","lastUpdated":null}'),n={name:"source/transformations/reproject.md"},t=e('

Geometry reprojection

julia
export reproject

This file is pretty simple - it simply reprojects a geometry pointwise from one CRS to another. It uses the Proj package for the transformation, but this could be moved to an extension if needed.

Note that the actual implementation is in the GeometryOpsProjExt extension module.

This works using the apply functionality.

julia
"""\n    reproject(geometry; source_crs, target_crs, transform, always_xy, time)\n    reproject(geometry, source_crs, target_crs; always_xy, time)\n    reproject(geometry, transform; always_xy, time)\n\nReproject any GeoInterface.jl compatible `geometry` from `source_crs` to `target_crs`.\n\nThe returned object will be constructed from `GeoInterface.WrapperGeometry`\ngeometries, wrapping views of a `Vector{Proj.Point{D}}`, where `D` is the dimension.\n\n!!! tip\n    The `Proj.jl` package must be loaded for this method to work,\n    since it is implemented in a package extension.\n\n# Arguments\n\n- `geometry`: Any GeoInterface.jl compatible geometries.\n- `source_crs`: the source coordinate reference system, as a GeoFormatTypes.jl object or a string.\n- `target_crs`: the target coordinate reference system, as a GeoFormatTypes.jl object or a string.\n\nIf these a passed as keywords, `transform` will take priority.\nWithout it `target_crs` is always needed, and `source_crs` is\nneeded if it is not retrievable from the geometry with `GeoInterface.crs(geometry)`.\n\n# Keywords\n\n- `always_xy`: force x, y coordinate order, `true` by default.\n    `false` will expect and return points in the crs coordinate order.\n- `time`: the time for the coordinates. `Inf` by default.\n$APPLY_KEYWORDS\n"""\nfunction reproject end

Method error handling

We also inject a method error handler, which prints a suggestion if the Proj extension is not loaded.

julia
function _reproject_error_hinter(io, exc, argtypes, kwargs)\n    if isnothing(Base.get_extension(GeometryOps, :GeometryOpsProjExt)) && exc.f == reproject\n        print(io, "\\n\\nThe `reproject` method requires the Proj.jl package to be explicitly loaded.\\n")\n        print(io, "You can do this by simply typing ")\n        printstyled(io, "using Proj"; color = :cyan, bold = true)\n        println(io, " in your REPL, \\nor otherwise loading Proj.jl via using or import.")\n    else # this is a more general error\n        nothing\n    end\nend

This page was generated using Literate.jl.

',11),p=[t];function l(r,h,o,k,d,c){return a(),i("div",null,p)}const F=s(n,[["render",l]]);export{y as __pageData,F as default}; diff --git a/previews/PR195/assets/source_transformations_reproject.md.AFBdSlqT.lean.js b/previews/PR195/assets/source_transformations_reproject.md.AFBdSlqT.lean.js new file mode 100644 index 000000000..fd9aa9969 --- /dev/null +++ b/previews/PR195/assets/source_transformations_reproject.md.AFBdSlqT.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as e}from"./chunks/framework.BjTE4JnT.js";const y=JSON.parse('{"title":"Geometry reprojection","description":"","frontmatter":{},"headers":[],"relativePath":"source/transformations/reproject.md","filePath":"source/transformations/reproject.md","lastUpdated":null}'),n={name:"source/transformations/reproject.md"},t=e("",11),p=[t];function l(r,h,o,k,d,c){return a(),i("div",null,p)}const F=s(n,[["render",l]]);export{y as __pageData,F as default}; diff --git a/previews/PR195/assets/source_transformations_segmentize.md.CgM0snro.js b/previews/PR195/assets/source_transformations_segmentize.md.CgM0snro.js new file mode 100644 index 000000000..907008738 --- /dev/null +++ b/previews/PR195/assets/source_transformations_segmentize.md.CgM0snro.js @@ -0,0 +1,154 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const h="/GeometryOps.jl/previews/PR195/assets/kvptgxo.BOOG5oTW.png",t="/GeometryOps.jl/previews/PR195/assets/uwghhoq.BhGrbaCK.png",c=JSON.parse('{"title":"Segmentize","description":"","frontmatter":{},"headers":[],"relativePath":"source/transformations/segmentize.md","filePath":"source/transformations/segmentize.md","lastUpdated":null}'),e={name:"source/transformations/segmentize.md"},l=n(`

Segmentize

julia
export segmentize
+export LinearSegments, GeodesicSegments

This function "segmentizes" or "densifies" a geometry by adding extra vertices to the geometry so that no segment is longer than a given distance. This is useful for plotting geometries with a limited number of vertices, or for ensuring that a geometry is not too "coarse" for a given application.

Info

We plan to add interpolated segmentization from DataInterpolations.jl in the future, which will be available to any vector of point-like objects.

For now, this function only works on 2D geometries. We will also support 3D geometries, as well as measure interpolation, in the future.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+rectangle = GI.Wrappers.Polygon([[(0.0, 50.0), (7.071, 57.07), (0, 64.14), (-7.07, 57.07), (0.0, 50.0)]])
+linear = GO.segmentize(rectangle; max_distance = 5)
+collect(GI.getpoint(linear))
9-element Vector{Tuple{Float64, Float64}}:
+ (0.0, 50.0)
+ (3.5355, 53.535)
+ (7.071, 57.07)
+ (3.5355, 60.605000000000004)
+ (0.0, 64.14)
+ (-3.535, 60.605000000000004)
+ (-7.07, 57.07)
+ (-3.535, 53.535)
+ (0.0, 50.0)

You can see that this geometry was segmentized correctly, and now has 8 vertices where it previously had only 4.

Now, we'll also segmentize this using the geodesic method, which is more accurate for lat/lon coordinates.

julia
using Proj # required to activate the \`GeodesicSegments\` method!
+geodesic = GO.segmentize(GO.GeodesicSegments(max_distance = 1000), rectangle)
+length(GI.getpoint(geodesic) |> collect)
3585

This has a lot of points! It's important to keep in mind that the max_distance is in meters, so this is a very fine-grained segmentation.

Now, let's see what they look like! To make this fair, we'll use approximately the same number of points for both.

julia
using CairoMakie
+linear = GO.segmentize(rectangle; max_distance = 0.01)
+geodesic = GO.segmentize(GO.GeodesicSegments(; max_distance = 1000), rectangle)
+f, a, p = poly(collect(GI.getpoint(linear)); label = "Linear", axis = (; aspect = DataAspect()))
+p2 = poly!(collect(GI.getpoint(geodesic)); label = "Geodesic")
+axislegend(a; position = :lt)
+f

There are two methods available for segmentizing geometries at the moment:

Missing docstring.

Missing docstring for LinearSegments. Check Documenter's build log for details.

Missing docstring.

Missing docstring for GeodesicSegments. Check Documenter's build log for details.

Benchmark

We benchmark our method against LibGEOS's GEOSDensify method, which is a similar method for densifying geometries.

julia
using BenchmarkTools: BenchmarkGroup
+using Chairmarks: @be
+using Main: plot_trials
+using CairoMakie
+
+import GeometryOps as GO, GeoInterface as GI, LibGEOS as LG
+
+segmentize_suite = BenchmarkGroup(["title:Segmentize", "subtitle:Segmentize a rectangle"])
+
+rectangle = GI.Wrappers.Polygon([[(0.0, 50.0), (7.071, 57.07), (0.0, 64.14), (-7.07, 57.07), (0.0, 50.0)]])
+lg_rectangle = GI.convert(LG, rectangle)
POLYGON ((0 50, 7.071 57.07, 0 64.14, -7.07 57.07, 0 50))
julia
# These are initial distances, which yield similar numbers of points
+# in the final geometry.
+init_lin = 0.01
+init_geo = 900
+
+# LibGEOS.jl doesn't offer this function, so we just wrap it ourselves!
+function densify(obj::LG.Geometry, tol::Real, context::LG.GEOSContext = LG.get_context(obj))
+    result = LG.GEOSDensify_r(context, obj, tol)
+    if result == C_NULL
+        error("LibGEOS: Error in GEOSDensify")
+    end
+    LG.geomFromGEOS(result, context)
+end
+# now, we get to the actual benchmarking:
+for scalefactor in exp10.(LinRange(log10(0.1), log10(10), 5))
+    lin_dist = init_lin * scalefactor
+    geo_dist = init_geo * scalefactor
+
+    npoints_linear = GI.npoint(GO.segmentize(rectangle; max_distance = lin_dist))
+    npoints_geodesic = GO.segmentize(GO.GeodesicSegments(; max_distance = geo_dist), rectangle) |> GI.npoint
+    npoints_libgeos = GI.npoint(densify(lg_rectangle, lin_dist))
+
+    segmentize_suite["Linear"][npoints_linear] = @be GO.segmentize(GO.LinearSegments(; max_distance = $lin_dist), $rectangle) seconds=1
+    segmentize_suite["Geodesic"][npoints_geodesic] = @be GO.segmentize(GO.GeodesicSegments(; max_distance = $geo_dist), $rectangle) seconds=1
+    segmentize_suite["LibGEOS"][npoints_libgeos] = @be densify($lg_rectangle, $lin_dist) seconds=1
+
+end
+
+plot_trials(segmentize_suite)

julia
abstract type SegmentizeMethod end
+"""
+    LinearSegments(; max_distance::Real)
+
+A method for segmentizing geometries by adding extra vertices to the geometry so that no segment is longer than a given distance.
+
+Here, \`max_distance\` is a purely nondimensional quantity and will apply in the input space.   This is to say, that if the polygon is
+provided in lat/lon coordinates then the \`max_distance\` will be in degrees of arc.  If the polygon is provided in meters, then the
+\`max_distance\` will be in meters.
+"""
+Base.@kwdef struct LinearSegments <: SegmentizeMethod
+    max_distance::Float64
+end
+
+"""
+    GeodesicSegments(; max_distance::Real, equatorial_radius::Real=6378137, flattening::Real=1/298.257223563)
+
+A method for segmentizing geometries by adding extra vertices to the geometry so that no segment is longer than a given distance.
+This method calculates the distance between points on the geodesic, and assumes input in lat/long coordinates.
+
+!!! warning
+    Any input geometries must be in lon/lat coordinates!  If not, the method may fail or error.
+
+# Arguments
+- \`max_distance::Real\`: The maximum distance, **in meters**, between vertices in the geometry.
+- \`equatorial_radius::Real=6378137\`: The equatorial radius of the Earth, in meters.  Passed to \`Proj.geod_geodesic\`.
+- \`flattening::Real=1/298.257223563\`: The flattening of the Earth, which is the ratio of the difference between the equatorial and polar radii to the equatorial radius.  Passed to \`Proj.geod_geodesic\`.
+
+One can also omit the \`equatorial_radius\` and \`flattening\` keyword arguments, and pass a \`geodesic\` object directly to the eponymous keyword.
+
+This method uses the Proj/GeographicLib API for geodesic calculations.
+"""
+struct GeodesicSegments{T} <: SegmentizeMethod
+    geodesic::T# ::Proj.geod_geodesic
+    max_distance::Float64
+end

Add an error hint for GeodesicSegments if Proj is not loaded!

julia
function _geodesic_segments_error_hinter(io, exc, argtypes, kwargs)
+    if isnothing(Base.get_extension(GeometryOps, :GeometryOpsProjExt)) && exc.f == GeodesicSegments
+        print(io, "\\n\\nThe \`GeodesicSegments\` method requires the Proj.jl package to be explicitly loaded.\\n")
+        print(io, "You can do this by simply typing ")
+        printstyled(io, "using Proj"; color = :cyan, bold = true)
+        println(io, " in your REPL, \\nor otherwise loading Proj.jl via using or import.")
+    end
+end

Implementation

julia
"""
+    segmentize([method = LinearSegments()], geom; max_distance::Real, threaded)
+
+Segmentize a geometry by adding extra vertices to the geometry so that no segment is longer than a given distance.
+This is useful for plotting geometries with a limited number of vertices, or for ensuring that a geometry is not too "coarse" for a given application.
+
+# Arguments
+- \`method::SegmentizeMethod = LinearSegments()\`: The method to use for segmentizing the geometry.  At the moment, only \`LinearSegments\` and \`GeodesicSegments\` are available.
+- \`geom\`: The geometry to segmentize.  Must be a \`LineString\`, \`LinearRing\`, or greater in complexity.
+- \`max_distance::Real\`: The maximum distance, **in the input space**, between vertices in the geometry.  Only used if you don't explicitly pass a \`method\`.
+
+Returns a geometry of similar type to the input geometry, but resampled.
+"""
+function segmentize(geom; max_distance, threaded::Union{Bool, BoolsAsTypes} = _False())
+    return segmentize(LinearSegments(; max_distance), geom; threaded = _booltype(threaded))
+end
+function segmentize(method::SegmentizeMethod, geom; threaded::Union{Bool, BoolsAsTypes} = _False())
+    @assert method.max_distance > 0 "\`max_distance\` should be positive and nonzero!  Found $(method.max_distance)."
+    segmentize_function = Base.Fix1(_segmentize, method)
+    return apply(segmentize_function, TraitTarget(GI.LinearRingTrait(), GI.LineStringTrait()), geom; threaded)
+end
+
+_segmentize(method, geom) = _segmentize(method, geom, GI.trait(geom))
+#=
+This is a method which performs the common functionality for both linear and geodesic algorithms,
+and calls out to the "kernel" function which we've defined per linesegment.
+=#
+function _segmentize(method::Union{LinearSegments, GeodesicSegments}, geom, T::Union{GI.LineStringTrait, GI.LinearRingTrait})
+    first_coord = GI.getpoint(geom, 1)
+    x1, y1 = GI.x(first_coord), GI.y(first_coord)
+    new_coords = NTuple{2, Float64}[]
+    sizehint!(new_coords, GI.npoint(geom))
+    push!(new_coords, (x1, y1))
+    for coord in Iterators.drop(GI.getpoint(geom), 1)
+        x2, y2 = GI.x(coord), GI.y(coord)
+        _fill_linear_kernel!(method, new_coords, x1, y1, x2, y2)
+        x1, y1 = x2, y2
+    end
+    return rebuild(geom, new_coords)
+end
+
+function _fill_linear_kernel!(method::LinearSegments, new_coords::Vector, x1, y1, x2, y2)
+    dx, dy = x2 - x1, y2 - y1
+    distance = hypot(dx, dy) # this is a more stable way to compute the Euclidean distance
+    if distance > method.max_distance
+        n_segments = ceil(Int, distance / method.max_distance)
+        for i in 1:(n_segments - 1)
+            t = i / n_segments
+            push!(new_coords, (x1 + t * dx, y1 + t * dy))
+        end
+    end

End the line with the original coordinate, to avoid any multiplication errors.

julia
    push!(new_coords, (x2, y2))
+    return nothing
+end

Note

The _fill_linear_kernel definition for GeodesicSegments is in the GeometryOpsProjExt extension module, in the segmentize.jl file.


This page was generated using Literate.jl.

`,34),k=[l];function p(r,E,d,g,y,o){return a(),i("div",null,k)}const C=s(e,[["render",p]]);export{c as __pageData,C as default}; diff --git a/previews/PR195/assets/source_transformations_segmentize.md.CgM0snro.lean.js b/previews/PR195/assets/source_transformations_segmentize.md.CgM0snro.lean.js new file mode 100644 index 000000000..b4b4acb99 --- /dev/null +++ b/previews/PR195/assets/source_transformations_segmentize.md.CgM0snro.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const h="/GeometryOps.jl/previews/PR195/assets/kvptgxo.BOOG5oTW.png",t="/GeometryOps.jl/previews/PR195/assets/uwghhoq.BhGrbaCK.png",c=JSON.parse('{"title":"Segmentize","description":"","frontmatter":{},"headers":[],"relativePath":"source/transformations/segmentize.md","filePath":"source/transformations/segmentize.md","lastUpdated":null}'),e={name:"source/transformations/segmentize.md"},l=n("",34),k=[l];function p(r,E,d,g,y,o){return a(),i("div",null,k)}const C=s(e,[["render",p]]);export{c as __pageData,C as default}; diff --git a/previews/PR195/assets/source_transformations_simplify.md.BSSKKuAL.js b/previews/PR195/assets/source_transformations_simplify.md.BSSKKuAL.js new file mode 100644 index 000000000..2e4cafdf9 --- /dev/null +++ b/previews/PR195/assets/source_transformations_simplify.md.BSSKKuAL.js @@ -0,0 +1,490 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const h="/GeometryOps.jl/previews/PR195/assets/rsbvlst.Bglvb-jp.png",l="/GeometryOps.jl/previews/PR195/assets/ckvmmvu.B94PsR1K.png",k="/GeometryOps.jl/previews/PR195/assets/gzcmhuv.BfqlazHQ.png",t="/GeometryOps.jl/previews/PR195/assets/pegfkke.P33ciVMf.png",u=JSON.parse('{"title":"Geometry simplification","description":"","frontmatter":{},"headers":[],"relativePath":"source/transformations/simplify.md","filePath":"source/transformations/simplify.md","lastUpdated":null}'),p={name:"source/transformations/simplify.md"},e=n(`

Geometry simplification

This file holds implementations for the RadialDistance, Douglas-Peucker, and Visvalingam-Whyatt algorithms for simplifying geometries (specifically for polygons and lines).

The GEOS extension also allows for GEOS's topology preserving simplification as well as Douglas-Peucker simplification implemented in GEOS. Call this by passing GEOS(; method = :TopologyPreserve) or GEOS(; method = :DouglasPeucker) to the algorithm.

Examples

A quick and dirty example is:

julia
using Makie, GeoInterfaceMakie
+import GeoInterface as GI
+import GeometryOps as GO
+
+original = GI.Polygon([[[-70.603637, -33.399918], [-70.614624, -33.395332], [-70.639343, -33.392466], [-70.659942, -33.394759], [-70.683975, -33.404504], [-70.697021, -33.419406], [-70.701141, -33.434306], [-70.700454, -33.446339], [-70.694274, -33.458369], [-70.682601, -33.465816], [-70.668869, -33.472117], [-70.646209, -33.473835], [-70.624923, -33.472117], [-70.609817, -33.468107], [-70.595397, -33.458369], [-70.587158, -33.442901], [-70.587158, -33.426283], [-70.590591, -33.414248], [-70.594711, -33.406224], [-70.603637, -33.399918]]])
+
+simple = GO.simplify(original; number=6)
+
+f, a, p = poly(original; label = "Original")
+poly!(simple; label = "Simplified")
+axislegend(a)
+f

Benchmark

We benchmark these methods against LibGEOS's simplify implementation, which uses the Douglas-Peucker algorithm.

julia
using BenchmarkTools, Chairmarks, GeoJSON, CairoMakie
+import GeometryOps as GO, LibGEOS as LG, GeoInterface as GI
+using CoordinateTransformations
+using NaturalEarth
+lg_and_go(geometry) = (GI.convert(LG, geometry), GO.tuples(geometry))
+# Load in the Natural Earth admin GeoJSON, then extract the USA's geometry
+fc = NaturalEarth.naturalearth("admin_0_countries", 10)
+usa_multipoly = fc.geometry[findfirst(==("United States of America"), fc.NAME)] |> x -> GI.convert(LG, x) |> LG.makeValid |> GO.tuples
+include(joinpath(dirname(dirname(pathof(GO))), "test", "data", "polygon_generation.jl"))
+
+usa_poly = GI.getgeom(usa_multipoly, findmax(GO.area.(GI.getgeom(usa_multipoly)))[2]) # isolate the poly with the most area
+usa_centroid = GO.centroid(usa_poly)
+usa_reflected = GO.transform(Translation(usa_centroid...)  LinearMap(Makie.rotmatrix2d(π))  Translation((-).(usa_centroid)...), usa_poly)
+f, a, p = plot(usa_poly; label = "Original", axis = (; aspect = DataAspect()))#; plot!(usa_reflected; label = "Reflected")

This is the complex polygon we'll be benchmarking.

julia
simplify_suite = BenchmarkGroup(["Simplify"])
+singlepoly_suite = BenchmarkGroup(["Polygon", "title:Polygon simplify", "subtitle:Random blob"])
+
+include(joinpath(dirname(dirname(pathof(GO))), "test", "data", "polygon_generation.jl"))
+
+for n_verts in round.(Int, exp10.(LinRange(log10(10), log10(10_000), 10)))
+    geom = GI.Wrappers.Polygon(generate_random_poly(0, 0, n_verts, 2, 0.2, 0.3))
+    geom_lg, geom_go = lg_and_go(LG.makeValid(GI.convert(LG, geom)))
+    singlepoly_suite["GO-DP"][GI.npoint(geom)] = @be GO.simplify($geom_go; tol = 0.1) seconds=1
+    singlepoly_suite["GO-VW"][GI.npoint(geom)] = @be GO.simplify($(GO.VisvalingamWhyatt(; tol = 0.1)), $geom_go) seconds=1
+    singlepoly_suite["GO-RD"][GI.npoint(geom)] = @be GO.simplify($(GO.RadialDistance(; tol = 0.1)), $geom_go) seconds=1
+    singlepoly_suite["LibGEOS"][GI.npoint(geom)] = @be LG.simplify($geom_lg, 0.1) seconds=1
+end
+
+plot_trials(singlepoly_suite; legend_position=(1, 1, TopRight()), legend_valign = -2, legend_halign = 1.2, legend_orientation = :horizontal)

julia
multipoly_suite = BenchmarkGroup(["MultiPolygon", "title:Multipolygon simplify", "subtitle:USA multipolygon"])
+
+for frac in exp10.(LinRange(log10(0.3), log10(1), 6)) # TODO: this example isn't the best.  How can we get this better?
+    geom = GO.simplify(usa_multipoly; ratio = frac)
+    geom_lg, geom_go = lg_and_go(geom)
+    _tol = 0.001
+    multipoly_suite["GO-DP"][GI.npoint(geom)] = @be GO.simplify($geom_go; tol = $_tol) seconds=1
+    # multipoly_suite["GO-VW"][GI.npoint(geom)] = @be GO.simplify($(GO.VisvalingamWhyatt(; tol = $_tol)), $geom_go) seconds=1
+    multipoly_suite["GO-RD"][GI.npoint(geom)] = @be GO.simplify($(GO.RadialDistance(; tol = _tol)), $geom_go) seconds=1
+    multipoly_suite["LibGEOS"][GI.npoint(geom)] = @be LG.simplify($geom_lg, $_tol) seconds=1
+    println("""
+    For $(GI.npoint(geom)) points, the algorithms generated polygons with the following number of vertices:
+    GO-DP : $(GI.npoint( GO.simplify(geom_go; tol = _tol)))
+    GO-RD : $(GI.npoint( GO.simplify((GO.RadialDistance(; tol = _tol)), geom_go)))
+    LGeos : $(GI.npoint( LG.simplify(geom_lg, _tol)))
+    """)
+    # GO-VW : $(GI.npoint( GO.simplify((GO.VisvalingamWhyatt(; tol = _tol)), geom_go)))
+    println()
+end
+plot_trials(multipoly_suite)

julia
export simplify, VisvalingamWhyatt, DouglasPeucker, RadialDistance
+
+const _SIMPLIFY_TARGET = TraitTarget{Union{GI.PolygonTrait, GI.AbstractCurveTrait, GI.MultiPointTrait, GI.PointTrait}}()
+const MIN_POINTS = 3
+const SIMPLIFY_ALG_KEYWORDS = """
+# Keywords
+
+- \`ratio\`: the fraction of points that should remain after \`simplify\`.
+    Useful as it will generalise for large collections of objects.
+- \`number\`: the number of points that should remain after \`simplify\`.
+    Less useful for large collections of mixed size objects.
+"""
+const DOUGLAS_PEUCKER_KEYWORDS = """
+$SIMPLIFY_ALG_KEYWORDS
+- \`tol\`: the minimum distance a point will be from the line
+    joining its neighboring points.
+"""
+
+"""
+    abstract type SimplifyAlg
+
+Abstract type for simplification algorithms.
+
+# API
+
+For now, the algorithm must hold the \`number\`, \`ratio\` and \`tol\` properties.
+
+Simplification algorithm types can hook into the interface by implementing
+the \`_simplify(trait, alg, geom)\` methods for whichever traits are necessary.
+"""
+abstract type SimplifyAlg end
+
+"""
+    simplify(obj; kw...)
+    simplify(::SimplifyAlg, obj; kw...)
+
+Simplify a geometry, feature, feature collection,
+or nested vectors or a table of these.
+
+\`RadialDistance\`, \`DouglasPeucker\`, or
+\`VisvalingamWhyatt\` algorithms are available,
+listed in order of increasing quality but decreasing performance.
+
+\`PoinTrait\` and \`MultiPointTrait\` are returned unchanged.
+
+The default behaviour is \`simplify(DouglasPeucker(; kw...), obj)\`.
+Pass in other \`SimplifyAlg\` to use other algorithms.

Keywords

julia
- \`prefilter_alg\`: \`SimplifyAlg\` algorithm used to pre-filter object before
+    using primary filtering algorithm.
+$APPLY_KEYWORDS
+
+
+Keywords for DouglasPeucker are allowed when no algorithm is specified:
+
+$DOUGLAS_PEUCKER_KEYWORDS

Example

julia
Simplify a polygon to have six points:
+
+\`\`\`jldoctest
+import GeoInterface as GI
+import GeometryOps as GO
+
+poly = GI.Polygon([[
+    [-70.603637, -33.399918],
+    [-70.614624, -33.395332],
+    [-70.639343, -33.392466],
+    [-70.659942, -33.394759],
+    [-70.683975, -33.404504],
+    [-70.697021, -33.419406],
+    [-70.701141, -33.434306],
+    [-70.700454, -33.446339],
+    [-70.694274, -33.458369],
+    [-70.682601, -33.465816],
+    [-70.668869, -33.472117],
+    [-70.646209, -33.473835],
+    [-70.624923, -33.472117],
+    [-70.609817, -33.468107],
+    [-70.595397, -33.458369],
+    [-70.587158, -33.442901],
+    [-70.587158, -33.426283],
+    [-70.590591, -33.414248],
+    [-70.594711, -33.406224],
+    [-70.603637, -33.399918]]])
+
+simple = GO.simplify(poly; number=6)
+GI.npoint(simple)

output

julia
6
+\`\`\`
+"""
+simplify(alg::SimplifyAlg, data; kw...) = _simplify(alg, data; kw...)
+simplify(alg::GEOS, data; kw...) = _simplify(alg, data; kw...)

Default algorithm is DouglasPeucker

julia
simplify(
+    data; prefilter_alg = nothing,
+    calc_extent=false, threaded=false, crs=nothing, kw...,
+ ) = _simplify(DouglasPeucker(; kw...), data; prefilter_alg, calc_extent, threaded, crs)
+
+
+#= For each algorithm, apply simplification to all curves, multipoints, and
+points, reconstructing everything else around them. =#
+function _simplify(alg::Union{SimplifyAlg, GEOS}, data; prefilter_alg=nothing, kw...)
+    simplifier(geom) = _simplify(GI.trait(geom), alg, geom; prefilter_alg)
+    return apply(simplifier, _SIMPLIFY_TARGET, data; kw...)
+end
+
+
+# For Point and MultiPoint traits we do nothing
+_simplify(::GI.PointTrait, alg, geom; kw...) = geom
+_simplify(::GI.MultiPointTrait, alg, geom; kw...) = geom
+
+# For curves, rings, and polygon we simplify
+function _simplify(
+    ::GI.AbstractCurveTrait, alg, geom;
+    prefilter_alg, preserve_endpoint = true,
+)
+    points = if isnothing(prefilter_alg)
+        tuple_points(geom)
+    else
+        _simplify(prefilter_alg, tuple_points(geom), preserve_endpoint)
+    end
+    return rebuild(geom, _simplify(alg, points, preserve_endpoint))
+end
+
+function _simplify(::GI.PolygonTrait, alg, geom;  kw...)
+    # Force treating children as LinearRing
+    simplifier(g) = _simplify(
+        GI.LinearRingTrait(), alg, g;
+        kw..., preserve_endpoint = false,
+    )
+    lrs = map(simplifier, GI.getgeom(geom))
+    return rebuild(geom, lrs)
+end

Simplify with RadialDistance Algorithm

julia
"""
+    RadialDistance <: SimplifyAlg
+
+Simplifies geometries by removing points less than
+\`tol\` distance from the line between its neighboring points.
+
+$SIMPLIFY_ALG_KEYWORDS
+- \`tol\`: the minimum distance between points.
+
+Note: user input \`tol\` is squared to avoid unnecessary computation in algorithm.
+"""
+@kwdef struct RadialDistance <: SimplifyAlg
+    number::Union{Int64,Nothing} = nothing
+    ratio::Union{Float64,Nothing} = nothing
+    tol::Union{Float64,Nothing} = nothing
+
+    function RadialDistance(number, ratio, tol)
+        _checkargs(number, ratio, tol)

square tolerance for reduced computation

julia
        tol = isnothing(tol) ? tol : tol^2
+        new(number, ratio, tol)
+    end
+end
+
+function _simplify(alg::RadialDistance, points::Vector, _)
+    previous = first(points)
+    distances = Array{Float64}(undef, length(points))
+    for i in eachindex(points)
+        point = points[i]
+        distances[i] = _squared_euclid_distance(Float64, point, previous)
+        previous = point
+    end
+    # Never remove the end points
+    distances[begin] = distances[end] = Inf
+    return _get_points(alg, points, distances)
+end

Simplify with DouglasPeucker Algorithm

julia
"""
+    DouglasPeucker <: SimplifyAlg
+
+    DouglasPeucker(; number, ratio, tol)
+
+Simplifies geometries by removing points below \`tol\`
+distance from the line between its neighboring points.
+
+$DOUGLAS_PEUCKER_KEYWORDS
+Note: user input \`tol\` is squared to avoid unnecessary computation in algorithm.
+"""
+@kwdef struct DouglasPeucker <: SimplifyAlg
+    number::Union{Int64,Nothing} = nothing
+    ratio::Union{Float64,Nothing} = nothing
+    tol::Union{Float64,Nothing} = nothing
+
+    function DouglasPeucker(number, ratio, tol)
+        _checkargs(number, ratio, tol)

square tolerance for reduced computation

julia
        tol = isnothing(tol) ? tol : tol^2
+        return new(number, ratio, tol)
+    end
+end
+
+#= Simplify using the DouglasPeucker algorithm - nice gif of process on wikipedia:
+(https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm). =#
+function _simplify(alg::DouglasPeucker, points::Vector, preserve_endpoint)
+    npoints = length(points)
+    npoints <= MIN_POINTS && return points

Determine stopping criteria

julia
    max_points = if !isnothing(alg.tol)
+        npoints
+    else
+        npts = !isnothing(alg.number) ? alg.number : max(3, round(Int, alg.ratio * npoints))
+        npts  npoints && return points
+        npts
+    end
+    max_tol = !isnothing(alg.tol) ? alg.tol : zero(Float64)

Set up queue

julia
    queue = Vector{Tuple{Int, Int, Int, Float64}}()
+    queue_idx, queue_dist = 0, zero(Float64)
+    len_queue = 0

Set up results vector

julia
    results = Vector{Int}(undef, max_points + (preserve_endpoint ? 0 : 1))
+    results[1], results[2] = 1, npoints

Loop through points until stopping criteria are fulfilled

julia
    i = 2  # already have first and last point added
+    start_idx, end_idx = 1, npoints
+    max_idx, max_dist = _find_max_squared_dist(points, start_idx, end_idx)
+    while i  min(MIN_POINTS + 1, max_points) || (i < max_points && max_dist > max_tol)

Add next point to results

julia
        i += 1
+        results[i] = max_idx

Determine which point to add next by checking left and right of point

julia
        left_idx, left_dist = _find_max_squared_dist(points, start_idx, max_idx)
+        right_idx, right_dist = _find_max_squared_dist(points, max_idx, end_idx)
+        left_vals = (start_idx, left_idx, max_idx, left_dist)
+        right_vals = (max_idx, right_idx, end_idx, right_dist)

Add and remove values from queue

julia
        if queue_dist > left_dist && queue_dist > right_dist

Value in queue is next value to add to results

julia
            start_idx, max_idx, end_idx, max_dist = queue[queue_idx]

Add left and/or right values to queue or delete used queue value

julia
            if left_dist > 0
+                queue[queue_idx] = left_vals
+                if right_dist > 0
+                    push!(queue, right_vals)
+                    len_queue += 1
+                end
+            elseif right_dist > 0
+                queue[queue_idx] = right_vals
+            else
+                deleteat!(queue, queue_idx)
+                len_queue -= 1
+            end

Determine new maximum queue value

julia
            queue_dist, queue_idx = !isempty(queue) ?
+                findmax(x -> x[4], queue) : (zero(Float64), 0)
+        elseif left_dist > right_dist  # use left value as next value to add to results
+            push!(queue, right_vals)  # add right value to queue
+            len_queue += 1
+            if right_dist > queue_dist
+                queue_dist = right_dist
+                queue_idx = len_queue
+            end
+            start_idx, max_idx, end_idx, max_dist = left_vals
+        else  # use right value as next value to add to results
+            push!(queue, left_vals)  # add left value to queue
+            len_queue += 1
+            if left_dist > queue_dist
+                queue_dist = left_dist
+                queue_idx = len_queue
+            end
+            start_idx, max_idx, end_idx, max_dist = right_vals
+        end
+    end
+    sorted_results = sort!(@view results[1:i])
+    if !preserve_endpoint && i > 3

Check start/endpoint distance to other points to see if it meets criteria

julia
        pre_pt, post_pt = points[sorted_results[end - 1]], points[sorted_results[2]]
+        endpt_dist = _squared_distance_line(Float64, points[1], pre_pt, post_pt)
+        if !isnothing(alg.tol)

Remove start point and replace with second point

julia
            if endpt_dist < max_tol
+                results[i] = results[2]
+                sorted_results = @view results[2:i]
+            end
+        else

Remove start point and add point with maximum distance still remaining

julia
            if endpt_dist < max_dist
+                insert!(results, searchsortedfirst(sorted_results, max_idx), max_idx)
+                results[i+1] = results[2]
+                sorted_results = @view results[2:i+1]
+            end
+        end
+    end
+    return points[sorted_results]
+end
+
+#= find maximum distance of any point between the start_idx and end_idx to the line formed
+by connecting the points at start_idx and end_idx. Note that the first index of maximum
+value will be used, which might cause differences in results from other algorithms.=#
+function _find_max_squared_dist(points, start_idx, end_idx)
+    max_idx = start_idx
+    max_dist = zero(Float64)
+    for i in (start_idx + 1):(end_idx - 1)
+        d = _squared_distance_line(Float64, points[i], points[start_idx], points[end_idx])
+        if d > max_dist
+            max_dist = d
+            max_idx = i
+        end
+    end
+    return max_idx, max_dist
+end

Simplify with VisvalingamWhyatt Algorithm

julia
"""
+    VisvalingamWhyatt <: SimplifyAlg
+
+    VisvalingamWhyatt(; kw...)
+
+Simplifies geometries by removing points below \`tol\`
+distance from the line between its neighboring points.
+
+$SIMPLIFY_ALG_KEYWORDS
+- \`tol\`: the minimum area of a triangle made with a point and
+    its neighboring points.
+Note: user input \`tol\` is doubled to avoid unnecessary computation in algorithm.
+"""
+@kwdef struct VisvalingamWhyatt <: SimplifyAlg
+    number::Union{Int,Nothing} = nothing
+    ratio::Union{Float64,Nothing} = nothing
+    tol::Union{Float64,Nothing} = nothing
+
+    function VisvalingamWhyatt(number, ratio, tol)
+        _checkargs(number, ratio, tol)

double tolerance for reduced computation

julia
        tol = isnothing(tol) ? tol : tol*2
+        return new(number, ratio, tol)
+    end
+end
+
+function _simplify(alg::VisvalingamWhyatt, points::Vector, _)
+    length(points) <= MIN_POINTS && return points
+    areas = _build_tolerances(_triangle_double_area, points)
+    return _get_points(alg, points, areas)
+end

Calculates double the area of a triangle given its vertices

julia
_triangle_double_area(p1, p2, p3) =
+    abs(p1[1] * (p2[2] - p3[2]) + p2[1] * (p3[2] - p1[2]) + p3[1] * (p1[2] - p2[2]))

Shared utils

julia
function _build_tolerances(f, points)
+    nmax = length(points)
+    real_tolerances = _flat_tolerances(f, points)
+
+    tolerances = copy(real_tolerances)
+    i = [n for n in 1:nmax]
+
+    this_tolerance, min_vert = findmin(tolerances)
+    _remove!(tolerances, min_vert)
+    deleteat!(i, min_vert)
+
+    while this_tolerance < Inf
+        skip = false
+
+        if min_vert < length(i)
+            right_tolerance = f(
+                points[i[min_vert - 1]],
+                points[i[min_vert]],
+                points[i[min_vert + 1]],
+            )
+            if right_tolerance <= this_tolerance
+                right_tolerance = this_tolerance
+                skip = min_vert == 1
+            end
+
+            real_tolerances[i[min_vert]] = right_tolerance
+            tolerances[min_vert] = right_tolerance
+        end
+
+        if min_vert > 2
+            left_tolerance = f(
+                points[i[min_vert - 2]],
+                points[i[min_vert - 1]],
+                points[i[min_vert]],
+            )
+            if left_tolerance <= this_tolerance
+                left_tolerance = this_tolerance
+                skip = min_vert == 2
+            end
+            real_tolerances[i[min_vert - 1]] = left_tolerance
+            tolerances[min_vert - 1] = left_tolerance
+        end
+
+        if !skip
+            min_vert = argmin(tolerances)
+        end
+        deleteat!(i, min_vert)
+        this_tolerance = tolerances[min_vert]
+        _remove!(tolerances, min_vert)
+    end
+
+    return real_tolerances
+end
+
+function tuple_points(geom)
+    points = Array{Tuple{Float64,Float64}}(undef, GI.npoint(geom))
+    for (i, p) in enumerate(GI.getpoint(geom))
+        points[i] = (GI.x(p), GI.y(p))
+    end
+    return points
+end
+
+function _get_points(alg, points, tolerances)
+    # This assumes that \`alg\` has the properties
+    # \`tol\`, \`number\`, and \`ratio\` available...
+    tol = alg.tol
+    number = alg.number
+    ratio = alg.ratio
+    bit_indices = if !isnothing(tol)
+        _tol_indices(alg.tol::Float64, points, tolerances)
+    elseif !isnothing(number)
+        _number_indices(alg.number::Int64, points, tolerances)
+    else
+        _ratio_indices(alg.ratio::Float64, points, tolerances)
+    end
+    return points[bit_indices]
+end
+
+function _tol_indices(tol, points, tolerances)
+    tolerances .>= tol
+end
+
+function _number_indices(n, points, tolerances)
+    tol = partialsort(tolerances, length(points) - n + 1)
+    bit_indices = _tol_indices(tol, points, tolerances)
+    nselected = sum(bit_indices)
+    # If there are multiple values exactly at \`tol\` we will get
+    # the wrong output length. So we need to remove some.
+    while nselected > n
+        min_tol = Inf
+        min_i = 0
+        for i in eachindex(bit_indices)
+            bit_indices[i] || continue
+            if tolerances[i] < min_tol
+                min_tol = tolerances[i]
+                min_i = i
+            end
+        end
+        nselected -= 1
+        bit_indices[min_i] = false
+    end
+    return bit_indices
+end
+
+function _ratio_indices(r, points, tolerances)
+    n = max(3, round(Int, r * length(points)))
+    return _number_indices(n, points, tolerances)
+end
+
+function _flat_tolerances(f, points)::Vector{Float64}
+    result = Vector{Float64}(undef, length(points))
+    result[1] = result[end] = Inf
+
+    for i in 2:length(result) - 1
+        result[i] = f(points[i-1], points[i], points[i+1])
+    end
+    return result
+end
+
+function _remove!(s, i)
+    for j in i:lastindex(s)-1
+        s[j] = s[j+1]
+    end
+end

Check SimplifyAlgs inputs to make sure they are valid for below algorithms

julia
function _checkargs(number, ratio, tol)
+    count(isnothing, (number, ratio, tol)) == 2 ||
+        error("Must provide one of \`number\`, \`ratio\` or \`tol\` keywords")
+    if !isnothing(number)
+        if number < MIN_POINTS
+            error("\`number\` must be $MIN_POINTS or larger. Got $number")
+        end
+    elseif !isnothing(ratio)
+        if ratio <= 0 || ratio > 1
+            error("\`ratio\` must be 0 < ratio <= 1. Got $ratio")
+        end
+    else  # !isnothing(tol)
+        if tol  0
+            error("\`tol\` must be a positive number. Got $tol")
+        end
+    end
+    return nothing
+end

This page was generated using Literate.jl.

`,71),E=[e];function r(d,g,y,F,o,c){return a(),i("div",null,E)}const D=s(p,[["render",r]]);export{u as __pageData,D as default}; diff --git a/previews/PR195/assets/source_transformations_simplify.md.BSSKKuAL.lean.js b/previews/PR195/assets/source_transformations_simplify.md.BSSKKuAL.lean.js new file mode 100644 index 000000000..24e2d1d3f --- /dev/null +++ b/previews/PR195/assets/source_transformations_simplify.md.BSSKKuAL.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const h="/GeometryOps.jl/previews/PR195/assets/rsbvlst.Bglvb-jp.png",l="/GeometryOps.jl/previews/PR195/assets/ckvmmvu.B94PsR1K.png",k="/GeometryOps.jl/previews/PR195/assets/gzcmhuv.BfqlazHQ.png",t="/GeometryOps.jl/previews/PR195/assets/pegfkke.P33ciVMf.png",u=JSON.parse('{"title":"Geometry simplification","description":"","frontmatter":{},"headers":[],"relativePath":"source/transformations/simplify.md","filePath":"source/transformations/simplify.md","lastUpdated":null}'),p={name:"source/transformations/simplify.md"},e=n("",71),E=[e];function r(d,g,y,F,o,c){return a(),i("div",null,E)}const D=s(p,[["render",r]]);export{u as __pageData,D as default}; diff --git a/previews/PR195/assets/source_transformations_transform.md.CQbjpjpu.js b/previews/PR195/assets/source_transformations_transform.md.CQbjpjpu.js new file mode 100644 index 000000000..55debe6d2 --- /dev/null +++ b/previews/PR195/assets/source_transformations_transform.md.CQbjpjpu.js @@ -0,0 +1,55 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const d=JSON.parse('{"title":"Pointwise transformation","description":"","frontmatter":{},"headers":[],"relativePath":"source/transformations/transform.md","filePath":"source/transformations/transform.md","lastUpdated":null}'),t={name:"source/transformations/transform.md"},l=n(`

Pointwise transformation

julia
"""
+    transform(f, obj)
+
+Apply a function \`f\` to all the points in \`obj\`.
+
+Points will be passed to \`f\` as an \`SVector\` to allow
+using CoordinateTransformations.jl and Rotations.jl
+without hassle.
+
+\`SVector\` is also a valid GeoInterface.jl point, so will
+work in all GeoInterface.jl methods.
+
+# Example
+
+\`\`\`julia
+julia> import GeoInterface as GI
+
+julia> import GeometryOps as GO
+
+julia> geom = GI.Polygon([GI.LinearRing([(1, 2), (3, 4), (5, 6), (1, 2)]), GI.LinearRing([(3, 4), (5, 6), (6, 7), (3, 4)])]);
+
+julia> f = CoordinateTransformations.Translation(3.5, 1.5)
+Translation(3.5, 1.5)
+
+julia> GO.transform(f, geom)
+GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.Linea
+rRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}(StaticArraysCo
+re.SVector{2, Float64}[[4.5, 3.5], [6.5, 5.5], [8.5, 7.5], [4.5, 3.5]], nothing, nothing), GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}(StaticA
+rraysCore.SVector{2, Float64}[[6.5, 5.5], [8.5, 7.5], [9.5, 8.5], [6.5, 5.5]], nothing, nothing)], nothing, nothing)
+\`\`\`
+
+With Rotations.jl you need to actually multiply the Rotation
+by the \`SVector\` point, which is easy using an anonymous function.
+
+\`\`\`julia
+julia> using Rotations
+
+julia> GO.transform(p -> one(RotMatrix{2}) * p, geom)
+GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearR
+ing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}(StaticArraysCore.SVe
+ctor{2, Int64}[[2, 1], [4, 3], [6, 5], [2, 1]], nothing, nothing), GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}(StaticArraysCore.SVector{2, Int64
+}[[4, 3], [6, 5], [7, 6], [4, 3]], nothing, nothing)], nothing, nothing)
+\`\`\`
+"""
+function transform(f, geom; kw...)
+    if _is3d(geom)
+        return apply(PointTrait(), geom; kw...) do p
+            f(StaticArrays.SVector{3}((GI.x(p), GI.y(p), GI.z(p))))
+        end
+    else
+        return apply(PointTrait(), geom; kw...) do p
+            f(StaticArrays.SVector{2}((GI.x(p), GI.y(p))))
+        end
+    end
+end

This page was generated using Literate.jl.

`,4),e=[l];function p(h,r,k,o,g,F){return a(),i("div",null,e)}const y=s(t,[["render",p]]);export{d as __pageData,y as default}; diff --git a/previews/PR195/assets/source_transformations_transform.md.CQbjpjpu.lean.js b/previews/PR195/assets/source_transformations_transform.md.CQbjpjpu.lean.js new file mode 100644 index 000000000..f479e90a0 --- /dev/null +++ b/previews/PR195/assets/source_transformations_transform.md.CQbjpjpu.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const d=JSON.parse('{"title":"Pointwise transformation","description":"","frontmatter":{},"headers":[],"relativePath":"source/transformations/transform.md","filePath":"source/transformations/transform.md","lastUpdated":null}'),t={name:"source/transformations/transform.md"},l=n("",4),e=[l];function p(h,r,k,o,g,F){return a(),i("div",null,e)}const y=s(t,[["render",p]]);export{d as __pageData,y as default}; diff --git a/previews/PR195/assets/source_transformations_tuples.md.De5DcGB5.js b/previews/PR195/assets/source_transformations_tuples.md.De5DcGB5.js new file mode 100644 index 000000000..f09954c95 --- /dev/null +++ b/previews/PR195/assets/source_transformations_tuples.md.De5DcGB5.js @@ -0,0 +1,19 @@ +import{_ as s,c as a,o as n,a7 as i}from"./chunks/framework.BjTE4JnT.js";const u=JSON.parse('{"title":"Tuple conversion","description":"","frontmatter":{},"headers":[],"relativePath":"source/transformations/tuples.md","filePath":"source/transformations/tuples.md","lastUpdated":null}'),e={name:"source/transformations/tuples.md"},t=i(`

Tuple conversion

julia
"""
+    tuples(obj)
+
+Convert all points in \`obj\` to \`Tuple\`s, wherever the are nested.
+
+Returns a similar object or collection of objects using GeoInterface.jl
+geometries wrapping \`Tuple\` points.

Keywords

julia
$APPLY_KEYWORDS
+"""
+function tuples(geom, ::Type{T} = Float64; kw...) where T
+    if _is3d(geom)
+        return apply(PointTrait(), geom; kw...) do p
+            (T(GI.x(p)), T(GI.y(p)), T(GI.z(p)))
+        end
+    else
+        return apply(PointTrait(), geom; kw...) do p
+            (T(GI.x(p)), T(GI.y(p)))
+        end
+    end
+end

This page was generated using Literate.jl.

`,6),p=[t];function l(o,r,h,c,k,d){return n(),a("div",null,p)}const g=s(e,[["render",l]]);export{u as __pageData,g as default}; diff --git a/previews/PR195/assets/source_transformations_tuples.md.De5DcGB5.lean.js b/previews/PR195/assets/source_transformations_tuples.md.De5DcGB5.lean.js new file mode 100644 index 000000000..41d94a32c --- /dev/null +++ b/previews/PR195/assets/source_transformations_tuples.md.De5DcGB5.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as n,a7 as i}from"./chunks/framework.BjTE4JnT.js";const u=JSON.parse('{"title":"Tuple conversion","description":"","frontmatter":{},"headers":[],"relativePath":"source/transformations/tuples.md","filePath":"source/transformations/tuples.md","lastUpdated":null}'),e={name:"source/transformations/tuples.md"},t=i("",6),p=[t];function l(o,r,h,c,k,d){return n(),a("div",null,p)}const g=s(e,[["render",l]]);export{u as __pageData,g as default}; diff --git a/previews/PR195/assets/source_types.md.Df5Ol6GF.js b/previews/PR195/assets/source_types.md.Df5Ol6GF.js new file mode 100644 index 000000000..c000075a5 --- /dev/null +++ b/previews/PR195/assets/source_types.md.Df5Ol6GF.js @@ -0,0 +1,67 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const y=JSON.parse('{"title":"Types","description":"","frontmatter":{},"headers":[],"relativePath":"source/types.md","filePath":"source/types.md","lastUpdated":null}'),t={name:"source/types.md"},e=n(`

Types

This file defines some fundamental types used in GeometryOps.

Warning

Unlike in other Julia packages, only some types are defined in this file, not all. This is because we define types in the files where they are used, to make it easier to understand the code.

julia
export TraitTarget, GEOS

TraitTarget

This struct holds a trait parameter or a union of trait parameters. It's essentially a way to construct unions.

julia
"""
+    TraitTarget{T}
+
+This struct holds a trait parameter or a union of trait parameters.
+
+It is primarily used for dispatch into methods which select trait levels,
+like \`apply\`, or as a parameter to \`target\`.
+
+# Constructors
+\`\`\`julia
+TraitTarget(GI.PointTrait())
+TraitTarget(GI.LineStringTrait(), GI.LinearRingTrait()) # and other traits as you may like
+TraitTarget(TraitTarget(...))

There are also type based constructors available, but that's not advised.

julia
TraitTarget(GI.PointTrait)
+TraitTarget(Union{GI.LineStringTrait, GI.LinearRingTrait})

etc.

julia
\`\`\`
+
+"""
+struct TraitTarget{T} end
+TraitTarget(::Type{T}) where T = TraitTarget{T}()
+TraitTarget(::T) where T<:GI.AbstractTrait = TraitTarget{T}()
+TraitTarget(::TraitTarget{T}) where T = TraitTarget{T}()
+TraitTarget(::Type{<:TraitTarget{T}}) where T = TraitTarget{T}()
+TraitTarget(traits::GI.AbstractTrait...) = TraitTarget{Union{map(typeof, traits)...}}()
+
+
+Base.in(::Trait, ::TraitTarget{Target}) where {Trait <: GI.AbstractTrait, Target} = Trait <: Target

BoolsAsTypes

In apply and applyreduce, we pass threading and calc_extent as types, not simple boolean values.

This is to help compilation - with a type to hold on to, it's easier for the compiler to separate threaded and non-threaded code paths.

Note that if we didn't include the parent abstract type, this would have been really type unstable, since the compiler couldn't tell what would be returned!

We had to add the type annotation on the _booltype(::Bool) method for this reason as well.

TODO: should we switch to Static.jl?

julia
abstract type BoolsAsTypes end
+struct _True <: BoolsAsTypes end
+struct _False <: BoolsAsTypes end
+
+@inline _booltype(x::Bool)::BoolsAsTypes = x ? _True() : _False()
+@inline _booltype(x::BoolsAsTypes)::BoolsAsTypes = x

GEOS

GEOS is a struct which instructs the method it's passed to as an algorithm to use the appropriate GEOS function via LibGEOS.jl for the operation.

It's generally a lot slower than the native Julia implementations, but it's useful for two reasons:

  1. Functionality which doesn't exist in GeometryOps can be accessed through the GeometryOps API, but use GEOS in the backend until someone implements a native Julia version.

  2. It's a good way to test the correctness of the native implementations.

julia
"""
+    GEOS(; params...)
+
+A struct which instructs the method it's passed to as an algorithm
+to use the appropriate GEOS function via \`LibGEOS.jl\` for the operation.
+
+Dispatch is generally carried out using the names of the keyword arguments.
+For example, \`segmentize\` will only accept a \`GEOS\` struct with only a
+\`max_distance\` keyword, and no other.
+
+It's generally a lot slower than the native Julia implementations, since
+it must convert to the LibGEOS implementation and back - so be warned!
+"""
+struct GEOS
+    params::NamedTuple
+end
+
+function GEOS(; params...)
+    nt = NamedTuple(params)
+    return GEOS(nt)
+end

These are definitions for convenience, so we don't have to type out alg.params every time.

julia
Base.get(alg::GEOS, key, value) = Base.get(alg.params, key, value)
+Base.get(f::Function, alg::GEOS, key) = Base.get(f, alg.params, key)
+
+"""
+    enforce(alg::GO.GEOS, kw::Symbol, f)
+
+Enforce the presence of a keyword argument in a \`GEOS\` algorithm, and return \`alg.params[kw]\`.
+
+Throws an error if the key is not present, and mentions \`f\` in the error message (since there isn't
+a good way to get the name of the function that called this method).
+"""
+function enforce(alg::GEOS, kw::Symbol, f)
+    if haskey(alg.params, kw)
+        return alg.params[kw]
+    else
+        error("$(f) requires a \`$(kw)\` keyword argument to the \`GEOS\` algorithm, which was not provided.")
+    end
+end

This page was generated using Literate.jl.

`,27),l=[e];function p(h,k,r,d,o,g){return a(),i("div",null,l)}const E=s(t,[["render",p]]);export{y as __pageData,E as default}; diff --git a/previews/PR195/assets/source_types.md.Df5Ol6GF.lean.js b/previews/PR195/assets/source_types.md.Df5Ol6GF.lean.js new file mode 100644 index 000000000..11f66c633 --- /dev/null +++ b/previews/PR195/assets/source_types.md.Df5Ol6GF.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const y=JSON.parse('{"title":"Types","description":"","frontmatter":{},"headers":[],"relativePath":"source/types.md","filePath":"source/types.md","lastUpdated":null}'),t={name:"source/types.md"},e=n("",27),l=[e];function p(h,k,r,d,o,g){return a(),i("div",null,l)}const E=s(t,[["render",p]]);export{y as __pageData,E as default}; diff --git a/previews/PR195/assets/source_utils.md.BvaNAnX0.js b/previews/PR195/assets/source_utils.md.BvaNAnX0.js new file mode 100644 index 000000000..a66fbe179 --- /dev/null +++ b/previews/PR195/assets/source_utils.md.BvaNAnX0.js @@ -0,0 +1,120 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const y=JSON.parse('{"title":"Utility functions","description":"","frontmatter":{},"headers":[],"relativePath":"source/utils.md","filePath":"source/utils.md","lastUpdated":null}'),t={name:"source/utils.md"},p=n(`

Utility functions

julia
_is3d(geom)::Bool = _is3d(GI.trait(geom), geom)
+_is3d(::GI.AbstractGeometryTrait, geom)::Bool = GI.is3d(geom)
+_is3d(::GI.FeatureTrait, feature)::Bool = _is3d(GI.geometry(feature))
+_is3d(::GI.FeatureCollectionTrait, fc)::Bool = _is3d(GI.getfeature(fc, 1))
+_is3d(::Nothing, geom)::Bool = _is3d(first(geom)) # Otherwise step into an itererable
+
+_npoint(x) = _npoint(trait(x), x)
+_npoint(::Nothing, xs::AbstractArray) = sum(_npoint, xs)
+_npoint(::GI.FeatureCollectionTrait, fc) = sum(_npoint, GI.getfeature(fc))
+_npoint(::GI.FeatureTrait, f) = _npoint(GI.geometry(f))
+_npoint(::GI.AbstractGeometryTrait, x) = GI.npoint(trait(x), x)
+
+_nedge(x) = _nedge(trait(x), x)
+_nedge(::Nothing, xs::AbstractArray) = sum(_nedge, xs)
+_nedge(::GI.FeatureCollectionTrait, fc) = sum(_nedge, GI.getfeature(fc))
+_nedge(::GI.FeatureTrait, f) = _nedge(GI.geometry(f))
+function _nedge(::GI.AbstractGeometryTrait, x)
+    n = 0
+    for g in GI.getgeom(x)
+        n += _nedge(g)
+    end
+    return n
+end
+_nedge(::GI.AbstractCurveTrait, x) = GI.npoint(x) - 1
+_nedge(::GI.PointTrait, x) = error("Cant get edges from points")
+
+
+"""
+    polygon_to_line(poly::Polygon)
+
+Converts a Polygon to LineString or MultiLineString

Examples

julia
\`\`\`jldoctest
+import GeometryOps as GO, GeoInterface as GI
+
+poly = GI.Polygon([[(-2.275543, 53.464547), (-2.275543, 53.489271), (-2.215118, 53.489271), (-2.215118, 53.464547), (-2.275543, 53.464547)]])
+GO.polygon_to_line(poly)

output

julia
GeoInterface.Wrappers.LineString{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}([(-2.275543, 53.464547), (-2.275543, 53.489271), (-2.215118, 53.489271), (-2.215118, 53.464547), (-2.275543, 53.464547)], nothing, nothing)
+\`\`\`
+"""
+function polygon_to_line(poly)
+    @assert GI.trait(poly) isa PolygonTrait
+    GI.ngeom(poly) > 1 && return GI.MultiLineString(collect(GI.getgeom(poly)))
+    return GI.LineString(collect(GI.getgeom(GI.getgeom(poly, 1))))
+end
+
+
+"""
+    to_edges()
+
+Convert any geometry or collection of geometries into a flat
+vector of \`Tuple{Tuple{Float64,Float64},Tuple{Float64,Float64}}\` edges.
+"""
+function to_edges(x, ::Type{T} = Float64) where T
+    edges = Vector{Edge{T}}(undef, _nedge(x))
+    _to_edges!(edges, x, 1)
+    return edges
+end
+
+_to_edges!(edges::Vector, x, n) = _to_edges!(edges, trait(x), x, n)
+function _to_edges!(edges::Vector, ::GI.FeatureCollectionTrait, fc, n)
+    for f in GI.getfeature(fc)
+        n = _to_edges!(edges, f, n)
+    end
+end
+_to_edges!(edges::Vector, ::GI.FeatureTrait, f, n) = _to_edges!(edges, GI.geometry(f), n)
+function _to_edges!(edges::Vector, ::GI.AbstractGeometryTrait, fc, n)
+    for f in GI.getgeom(fc)
+        n = _to_edges!(edges, f, n)
+    end
+end
+function _to_edges!(edges::Vector, ::GI.AbstractCurveTrait, geom, n)
+    p1 = GI.getpoint(geom, 1)
+    p1x, p1y = GI.x(p1), GI.y(p1)
+    for i in 2:GI.npoint(geom)
+        p2 = GI.getpoint(geom, i)
+        p2x, p2y = GI.x(p2), GI.y(p2)
+        edges[n] = (p1x, p1y), (p2x, p2y)
+        p1x, p1y = p2x, p2y
+        n += 1
+    end
+    return n
+end
+
+_tuple_point(p) = GI.x(p), GI.y(p)
+_tuple_point(p, ::Type{T}) where T = T(GI.x(p)), T(GI.y(p))
+
+function to_extent(edges::Vector{Edge})
+    x, y = extrema(first, edges)
+    Extents.Extent(X=x, Y=y)
+end
+
+function to_points(x, ::Type{T} = Float64) where T
+    points = Vector{TuplePoint{T}}(undef, _npoint(x))
+    _to_points!(points, x, 1)
+    return points
+end
+
+_to_points!(points::Vector, x, n) = _to_points!(points, trait(x), x, n)
+function _to_points!(points::Vector, ::FeatureCollectionTrait, fc, n)
+    for f in GI.getfeature(fc)
+        n = _to_points!(points, f, n)
+    end
+end
+_to_points!(points::Vector, ::FeatureTrait, f, n) = _to_points!(points, GI.geometry(f), n)
+function _to_points!(points::Vector, ::AbstractGeometryTrait, fc, n)
+    for f in GI.getgeom(fc)
+        n = _to_points!(points, f, n)
+    end
+end
+function _to_points!(points::Vector, ::Union{AbstractCurveTrait,MultiPointTrait}, geom, n)
+    n = 0
+    for p in GI.getpoint(geom)
+        n += 1
+        points[n] = _tuple_point(p)
+    end
+    return n
+end
+
+function _point_in_extent(p, extent::Extents.Extent)
+    (x1, x2), (y1, y2) = extent.X, extent.Y
+    return x1 ≤ GI.x(p) ≤ x2 && y1 ≤ GI.y(p) ≤ y2
+end

This page was generated using Literate.jl.

`,8),l=[p];function h(k,e,r,F,g,d){return a(),i("div",null,l)}const o=s(t,[["render",h]]);export{y as __pageData,o as default}; diff --git a/previews/PR195/assets/source_utils.md.BvaNAnX0.lean.js b/previews/PR195/assets/source_utils.md.BvaNAnX0.lean.js new file mode 100644 index 000000000..99330d9fa --- /dev/null +++ b/previews/PR195/assets/source_utils.md.BvaNAnX0.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const y=JSON.parse('{"title":"Utility functions","description":"","frontmatter":{},"headers":[],"relativePath":"source/utils.md","filePath":"source/utils.md","lastUpdated":null}'),t={name:"source/utils.md"},p=n("",8),l=[p];function h(k,e,r,F,g,d){return a(),i("div",null,l)}const o=s(t,[["render",h]]);export{y as __pageData,o as default}; diff --git a/previews/PR195/assets/style.DvPq--hK.css b/previews/PR195/assets/style.DvPq--hK.css new file mode 100644 index 000000000..cd6cd3b5c --- /dev/null +++ b/previews/PR195/assets/style.DvPq--hK.css @@ -0,0 +1 @@ +@import"https://fonts.googleapis.com/css?family=Space+Mono:regular,italic,700,700italic";@import"https://fonts.googleapis.com/css?family=Space+Grotesk:regular,italic,700,700italic";@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/GeometryOps.jl/previews/PR195/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/GeometryOps.jl/previews/PR195/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/GeometryOps.jl/previews/PR195/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/GeometryOps.jl/previews/PR195/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/GeometryOps.jl/previews/PR195/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/GeometryOps.jl/previews/PR195/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/GeometryOps.jl/previews/PR195/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/GeometryOps.jl/previews/PR195/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/GeometryOps.jl/previews/PR195/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/GeometryOps.jl/previews/PR195/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/GeometryOps.jl/previews/PR195/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/GeometryOps.jl/previews/PR195/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/GeometryOps.jl/previews/PR195/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/GeometryOps.jl/previews/PR195/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "Microsoft YaHei", "DengXian", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-b06cdb19]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-b06cdb19],.VPBackdrop.fade-leave-to[data-v-b06cdb19]{opacity:0}.VPBackdrop.fade-leave-active[data-v-b06cdb19]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-b06cdb19]{display:none}}.NotFound[data-v-951cab6c]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-951cab6c]{padding:96px 32px 168px}}.code[data-v-951cab6c]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-951cab6c]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-951cab6c]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-951cab6c]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-951cab6c]{padding-top:20px}.link[data-v-951cab6c]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-951cab6c]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-3f927ebe]{position:relative;z-index:1}.nested[data-v-3f927ebe]{padding-right:16px;padding-left:16px}.outline-link[data-v-3f927ebe]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-3f927ebe]:hover,.outline-link.active[data-v-3f927ebe]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-3f927ebe]{padding-left:13px}.VPDocAsideOutline[data-v-b38bf2ff]{display:none}.VPDocAsideOutline.has-outline[data-v-b38bf2ff]{display:block}.content[data-v-b38bf2ff]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-b38bf2ff]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-b38bf2ff]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-6d7b3c46]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-6d7b3c46]{flex-grow:1}.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-6d7b3c46] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-475f71b8]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-475f71b8]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-4f9813fa]{margin-top:64px}.edit-info[data-v-4f9813fa]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-4f9813fa]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-4f9813fa]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-4f9813fa]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-4f9813fa]{margin-right:8px}.prev-next[data-v-4f9813fa]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-4f9813fa]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-4f9813fa]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-4f9813fa]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-4f9813fa]{margin-left:auto;text-align:right}.desc[data-v-4f9813fa]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-4f9813fa]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-83890dd9]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-83890dd9]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-83890dd9]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-83890dd9]{display:flex;justify-content:center}.VPDoc .aside[data-v-83890dd9]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{max-width:1104px}}.container[data-v-83890dd9]{margin:0 auto;width:100%}.aside[data-v-83890dd9]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-83890dd9]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-83890dd9]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-83890dd9]::-webkit-scrollbar{display:none}.aside-curtain[data-v-83890dd9]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-83890dd9]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-83890dd9]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-83890dd9]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-83890dd9]{order:1;margin:0;min-width:640px}}.content-container[data-v-83890dd9]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-83890dd9]{max-width:688px}.VPButton[data-v-14206e74]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-14206e74]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-14206e74]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-14206e74]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-14206e74]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-14206e74]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-14206e74]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-14206e74]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-14206e74]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-14206e74]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-14206e74]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-14206e74]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-14206e74]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-35a7d0b8]{display:none}.dark .VPImage.light[data-v-35a7d0b8]{display:none}.VPHero[data-v-955009fc]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-955009fc]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-955009fc]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-955009fc]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-955009fc]{flex-direction:row}}.main[data-v-955009fc]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-955009fc]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-955009fc]{text-align:left}}@media (min-width: 960px){.main[data-v-955009fc]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-955009fc]{max-width:592px}}.name[data-v-955009fc],.text[data-v-955009fc]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-955009fc],.VPHero.has-image .text[data-v-955009fc]{margin:0 auto}.name[data-v-955009fc]{color:var(--vp-home-hero-name-color)}.clip[data-v-955009fc]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-955009fc],.text[data-v-955009fc]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-955009fc],.text[data-v-955009fc]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-955009fc],.VPHero.has-image .text[data-v-955009fc]{margin:0}}.tagline[data-v-955009fc]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-955009fc]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-955009fc]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-955009fc]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-955009fc]{margin:0}}.actions[data-v-955009fc]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-955009fc]{justify-content:center}@media (min-width: 640px){.actions[data-v-955009fc]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-955009fc]{justify-content:flex-start}}.action[data-v-955009fc]{flex-shrink:0;padding:6px}.image[data-v-955009fc]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-955009fc]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-955009fc]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-955009fc]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-955009fc]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-955009fc]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-955009fc]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-955009fc]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-955009fc]{width:320px;height:320px}}[data-v-955009fc] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-955009fc] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-955009fc] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-f5e9645b]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-f5e9645b]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-f5e9645b]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-f5e9645b]>.VPImage{margin-bottom:20px}.icon[data-v-f5e9645b]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-f5e9645b]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-f5e9645b]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-f5e9645b]{padding-top:8px}.link-text-value[data-v-f5e9645b]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-f5e9645b]{margin-left:6px}.VPFeatures[data-v-d0a190d7]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-d0a190d7]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-d0a190d7]{padding:0 64px}}.container[data-v-d0a190d7]{margin:0 auto;max-width:1152px}.items[data-v-d0a190d7]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-d0a190d7]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7]{width:50%}.item.grid-3[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-d0a190d7]{width:25%}}.container[data-v-7a48a447]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-7a48a447]{padding:0 48px}}@media (min-width: 960px){.container[data-v-7a48a447]{width:100%;padding:0 64px}}.vp-doc[data-v-7a48a447] .VPHomeSponsors,.vp-doc[data-v-7a48a447] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-7a48a447] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-7a48a447] .VPHomeSponsors a,.vp-doc[data-v-7a48a447] .VPTeamPage a{text-decoration:none}.VPHome[data-v-cbb6ec48]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-cbb6ec48]{margin-bottom:128px}}.VPContent[data-v-91765379]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-91765379]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-91765379]{margin:0}@media (min-width: 960px){.VPContent[data-v-91765379]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-91765379]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-91765379]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-c970a860]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-c970a860]{display:none}.VPFooter[data-v-c970a860] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-c970a860] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-c970a860]{padding:32px}}.container[data-v-c970a860]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-c970a860],.copyright[data-v-c970a860]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-bc9dc845]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-bc9dc845]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-bc9dc845]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-bc9dc845]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-bc9dc845]{color:var(--vp-c-text-1)}.icon[data-v-bc9dc845]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-bc9dc845]{font-size:14px}.icon[data-v-bc9dc845]{font-size:16px}}.open>.icon[data-v-bc9dc845]{transform:rotate(90deg)}.items[data-v-bc9dc845]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-bc9dc845]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-bc9dc845]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-bc9dc845]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-bc9dc845]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-bc9dc845]{transition:all .2s ease-out}.flyout-leave-active[data-v-bc9dc845]{transition:all .15s ease-in}.flyout-enter-from[data-v-bc9dc845],.flyout-leave-to[data-v-bc9dc845]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-070ab83d]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-070ab83d]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-070ab83d]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-070ab83d]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-070ab83d]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-070ab83d]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-070ab83d]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-070ab83d]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-070ab83d]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-070ab83d]{display:none}}.menu-icon[data-v-070ab83d]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-070ab83d]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-070ab83d]{padding:12px 32px 11px}}.VPSwitch[data-v-4a1c76db]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-4a1c76db]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-4a1c76db]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-4a1c76db]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-4a1c76db] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-4a1c76db] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-e40a8bb6]{opacity:1}.moon[data-v-e40a8bb6],.dark .sun[data-v-e40a8bb6]{opacity:0}.dark .moon[data-v-e40a8bb6]{opacity:1}.dark .VPSwitchAppearance[data-v-e40a8bb6] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-af096f4a]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-af096f4a]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-8b74d055]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-8b74d055]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-8b74d055]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-8b74d055]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-48c802d0]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-48c802d0]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-48c802d0]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-48c802d0]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-7dd3104a]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-7dd3104a] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-7dd3104a] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-7dd3104a] .group:last-child{padding-bottom:0}.VPMenu[data-v-7dd3104a] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-7dd3104a] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-7dd3104a] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-7dd3104a] .action{padding-left:24px}.VPFlyout[data-v-e5380155]{position:relative}.VPFlyout[data-v-e5380155]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-e5380155]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-e5380155]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-e5380155]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-e5380155]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-e5380155],.button[aria-expanded=true]+.menu[data-v-e5380155]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-e5380155]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-e5380155]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-e5380155]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-e5380155]{margin-right:0;font-size:16px}.text-icon[data-v-e5380155]{margin-left:4px;font-size:14px}.icon[data-v-e5380155]{font-size:20px;transition:fill .25s}.menu[data-v-e5380155]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-717b8b75]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-717b8b75]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-717b8b75]>svg,.VPSocialLink[data-v-717b8b75]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-ee7a9424]{display:flex;justify-content:center}.VPNavBarExtra[data-v-925effce]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-925effce]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-925effce]{display:none}}.trans-title[data-v-925effce]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-925effce],.item.social-links[data-v-925effce]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-925effce]{min-width:176px}.appearance-action[data-v-925effce]{margin-right:-2px}.social-links-list[data-v-925effce]{margin:-4px -8px}.VPNavBarHamburger[data-v-5dea55bf]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-5dea55bf]{display:none}}.container[data-v-5dea55bf]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-5dea55bf]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-5dea55bf]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-5dea55bf],.VPNavBarHamburger.active:hover .middle[data-v-5dea55bf],.VPNavBarHamburger.active:hover .bottom[data-v-5dea55bf]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-5dea55bf],.middle[data-v-5dea55bf],.bottom[data-v-5dea55bf]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-5dea55bf]{top:0;left:0;transform:translate(0)}.middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-ed5ac1f6]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-ed5ac1f6],.VPNavBarMenuLink[data-v-ed5ac1f6]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-e6d46098]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-e6d46098]{display:flex}}/*! @docsearch/css 3.6.1 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-164c457f]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-164c457f]{display:flex;align-items:center}}.title[data-v-28a961f9]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-28a961f9]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-28a961f9]{border-bottom-color:var(--vp-c-divider)}}[data-v-28a961f9] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-c80d9ad0]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-c80d9ad0]{display:flex;align-items:center}}.title[data-v-c80d9ad0]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-822684d1]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-822684d1]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-822684d1]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-822684d1]:not(.home){background-color:transparent}.VPNavBar[data-v-822684d1]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-822684d1]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-822684d1]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-822684d1]{padding:0}}.container[data-v-822684d1]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-822684d1],.container>.content[data-v-822684d1]{pointer-events:none}.container[data-v-822684d1] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-822684d1]{max-width:100%}}.title[data-v-822684d1]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-822684d1]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-822684d1]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-822684d1]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-822684d1]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-822684d1]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-822684d1]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-822684d1]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-822684d1]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-822684d1]{column-gap:.5rem}}.menu+.translations[data-v-822684d1]:before,.menu+.appearance[data-v-822684d1]:before,.menu+.social-links[data-v-822684d1]:before,.translations+.appearance[data-v-822684d1]:before,.appearance+.social-links[data-v-822684d1]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-822684d1]:before,.translations+.appearance[data-v-822684d1]:before{margin-right:16px}.appearance+.social-links[data-v-822684d1]:before{margin-left:16px}.social-links[data-v-822684d1]{margin-right:-8px}.divider[data-v-822684d1]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-822684d1]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-822684d1]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-822684d1]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-822684d1]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-822684d1]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-822684d1]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-ffb44008]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-ffb44008]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-27d04aeb]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-27d04aeb]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-7179dbb7]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-7179dbb7]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-4b8941ac]{display:block}.title[data-v-4b8941ac]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-875057a5]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-875057a5]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-875057a5]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-875057a5]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-875057a5]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-875057a5]{transform:rotate(45deg)}.button[data-v-875057a5]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-875057a5]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-875057a5]{transition:transform .25s}.group[data-v-875057a5]:first-child{padding-top:0}.group+.group[data-v-875057a5],.group+.item[data-v-875057a5]{padding-top:4px}.VPNavScreenTranslations[data-v-362991c2]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-362991c2]{height:auto}.title[data-v-362991c2]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-362991c2]{font-size:16px}.icon.lang[data-v-362991c2]{margin-right:8px}.icon.chevron[data-v-362991c2]{margin-left:4px}.list[data-v-362991c2]{padding:4px 0 0 24px}.link[data-v-362991c2]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-833aabba]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-833aabba],.VPNavScreen.fade-leave-active[data-v-833aabba]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-833aabba],.VPNavScreen.fade-leave-active .container[data-v-833aabba]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-833aabba],.VPNavScreen.fade-leave-to[data-v-833aabba]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-833aabba],.VPNavScreen.fade-leave-to .container[data-v-833aabba]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-833aabba]{display:none}}.container[data-v-833aabba]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-833aabba],.menu+.appearance[data-v-833aabba],.translations+.appearance[data-v-833aabba]{margin-top:24px}.menu+.social-links[data-v-833aabba]{margin-top:16px}.appearance+.social-links[data-v-833aabba]{margin-top:16px}.VPNav[data-v-f1e365da]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-f1e365da]{position:fixed}}.VPSidebarItem.level-0[data-v-196b2e5f]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-196b2e5f]{padding-bottom:10px}.item[data-v-196b2e5f]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-196b2e5f]{cursor:pointer}.indicator[data-v-196b2e5f]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-196b2e5f]{background-color:var(--vp-c-brand-1)}.link[data-v-196b2e5f]{display:flex;align-items:center;flex-grow:1}.text[data-v-196b2e5f]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-196b2e5f]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-196b2e5f],.VPSidebarItem.level-2 .text[data-v-196b2e5f],.VPSidebarItem.level-3 .text[data-v-196b2e5f],.VPSidebarItem.level-4 .text[data-v-196b2e5f],.VPSidebarItem.level-5 .text[data-v-196b2e5f]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-196b2e5f]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-1.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-2.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-3.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-4.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-5.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-196b2e5f]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-196b2e5f]{color:var(--vp-c-brand-1)}.caret[data-v-196b2e5f]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-196b2e5f]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-196b2e5f]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-196b2e5f]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-196b2e5f]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-196b2e5f],.VPSidebarItem.level-2 .items[data-v-196b2e5f],.VPSidebarItem.level-3 .items[data-v-196b2e5f],.VPSidebarItem.level-4 .items[data-v-196b2e5f],.VPSidebarItem.level-5 .items[data-v-196b2e5f]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-196b2e5f]{display:none}.no-transition[data-v-9e426adc] .caret-icon{transition:none}.group+.group[data-v-9e426adc]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-9e426adc]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-18756405]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-18756405]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-18756405]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-18756405]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-18756405]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-18756405]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-18756405]{outline:0}.VPSkipLink[data-v-c3508ec8]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-c3508ec8]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-c3508ec8]{top:14px;left:16px}}.Layout[data-v-a9a9e638]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-db81191c]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-db81191c]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{margin:128px 0}}.VPHomeSponsors[data-v-db81191c]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-db81191c]{padding:0 64px}}.container[data-v-db81191c]{margin:0 auto;max-width:1152px}.love[data-v-db81191c]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-db81191c]{display:inline-block}.message[data-v-db81191c]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-db81191c]{padding-top:32px}.action[data-v-db81191c]{padding-top:40px;text-align:center}.VPTeamPage[data-v-c2f8e101]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-c2f8e101]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-c2f8e101-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-c2f8e101-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:96px}}.VPTeamMembers[data-v-c2f8e101-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 64px}}.VPTeamPageTitle[data-v-e277e15c]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-e277e15c]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-e277e15c]{padding:80px 64px 48px}}.title[data-v-e277e15c]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-e277e15c]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-e277e15c]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-e277e15c]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-d43bc49d]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 64px}}.title[data-v-d43bc49d]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-d43bc49d]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-d43bc49d]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-d43bc49d]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-d43bc49d]{padding-top:40px}.VPTeamMembersItem[data-v-f9987cb6]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f9987cb6]{padding:32px}.VPTeamMembersItem.small .data[data-v-f9987cb6]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f9987cb6]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f9987cb6]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f9987cb6]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f9987cb6]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f9987cb6]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f9987cb6]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f9987cb6]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f9987cb6]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f9987cb6]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f9987cb6]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f9987cb6]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f9987cb6]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f9987cb6]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f9987cb6]{text-align:center}.avatar[data-v-f9987cb6]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f9987cb6]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-f9987cb6]{margin:0;font-weight:600}.affiliation[data-v-f9987cb6]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f9987cb6]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f9987cb6]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f9987cb6]{margin:0 auto}.desc[data-v-f9987cb6] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f9987cb6]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f9987cb6]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f9987cb6]:hover,.sp .sp-link.link[data-v-f9987cb6]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f9987cb6]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-fba19bad]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-fba19bad]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-fba19bad]{max-width:876px}.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-fba19bad]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-fba19bad]{max-width:760px}.container[data-v-fba19bad]{display:grid;gap:24px;margin:0 auto;max-width:1152px}:root{--vp-plugin-tabs-tab-text-color: var(--vp-c-text-2);--vp-plugin-tabs-tab-active-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-hover-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-bg: var(--vp-c-bg-soft);--vp-plugin-tabs-tab-divider: var(--vp-c-divider);--vp-plugin-tabs-tab-active-bar-color: var(--vp-c-brand-1)}.plugin-tabs{margin:16px 0;background-color:var(--vp-plugin-tabs-tab-bg);border-radius:8px}.plugin-tabs--tab-list{position:relative;padding:0 12px;overflow-x:auto;overflow-y:hidden}.plugin-tabs--tab-list:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background-color:var(--vp-plugin-tabs-tab-divider)}.plugin-tabs--tab{position:relative;padding:0 12px;line-height:48px;border-bottom:2px solid transparent;color:var(--vp-plugin-tabs-tab-text-color);font-size:14px;font-weight:500;white-space:nowrap;transition:color .25s}.plugin-tabs--tab[aria-selected=true]{color:var(--vp-plugin-tabs-tab-active-text-color)}.plugin-tabs--tab:hover{color:var(--vp-plugin-tabs-tab-hover-text-color)}.plugin-tabs--tab:after{content:"";position:absolute;bottom:-2px;left:8px;right:8px;height:2px;background-color:transparent;transition:background-color .25s;z-index:1}.plugin-tabs--tab[aria-selected=true]:after{background-color:var(--vp-plugin-tabs-tab-active-bar-color)}.plugin-tabs--content[data-v-9b0d03d2]{padding:16px}.plugin-tabs--content[data-v-9b0d03d2]>:first-child:first-child{margin-top:0}.plugin-tabs--content[data-v-9b0d03d2]>:last-child:last-child{margin-bottom:0}.plugin-tabs--content[data-v-9b0d03d2]>div[class*=language-]{border-radius:8px;margin:16px 0}:root:not(.dark) .plugin-tabs--content[data-v-9b0d03d2] div[class*=language-]{background-color:var(--vp-c-bg)}.VPHero .clip{white-space:pre;max-width:500px}:root{--vp-font-family-base: "Barlow", "Inter var experimental", "Inter var", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--vp-font-family-mono: "Space Mono", Menlo, Monaco, Consolas, "Courier New", monospace}:root{--julia-blue: #4063D8;--julia-purple: #9558B2;--julia-red: #CB3C33;--julia-green: #389826;--vp-c-brand: #389826;--vp-c-brand-light: #3dd027;--vp-c-brand-lighter: #9499ff;--vp-c-brand-lightest: #bcc0ff;--vp-c-brand-dark: #535bf2;--vp-c-brand-darker: #454ce1;--vp-c-brand-dimm: #212425}:root{--vp-button-brand-border: var(--vp-c-brand-light);--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand);--vp-button-brand-hover-border: var(--vp-c-brand-light);--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-light);--vp-button-brand-active-border: var(--vp-c-brand-light);--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-button-brand-bg)}:root{--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient( 120deg, #459c55 30%, #dccc50 );--vp-home-hero-image-background-image: linear-gradient( -45deg, #9558B2 30%, #389826 30%, #CB3C33 );--vp-home-hero-image-filter: blur(40px)}@media (min-width: 640px){:root{--vp-home-hero-image-filter: blur(56px)}}@media (min-width: 960px){:root{--vp-home-hero-image-filter: blur(72px)}}:root.dark{--vp-custom-block-tip-border: var(--vp-c-brand);--vp-custom-block-tip-text: var(--vp-c-brand-lightest);--vp-custom-block-tip-bg: var(--vp-c-brand-dimm);--vp-c-black: hsl(220 20% 9%);--vp-c-black-pure: hsl(220, 24%, 4%);--vp-c-black-soft: hsl(220 16% 13%);--vp-c-black-mute: hsl(220 14% 17%);--vp-c-gray: hsl(220 8% 56%);--vp-c-gray-dark-1: hsl(220 10% 39%);--vp-c-gray-dark-2: hsl(220 12% 28%);--vp-c-gray-dark-3: hsl(220 12% 23%);--vp-c-gray-dark-4: hsl(220 14% 17%);--vp-c-gray-dark-5: hsl(220 16% 13%);--vp-custom-block-info-bg: hsl(220 14% 17%)}.DocSearch{--docsearch-primary-color: var(--vp-c-brand) !important}mjx-container>svg{display:block;margin:auto}mjx-container{padding:.5rem 0}mjx-container{display:inline-block;margin:auto 2px -2px}mjx-container>svg{margin:auto;display:inline-block}:root{--vp-c-brand-1: #CB3C33;--vp-c-brand-2: #CB3C33;--vp-c-brand-3: #CB3C33;--vp-c-sponsor: #ca2971;--vitest-c-sponsor-hover: #c13071}.dark{--vp-c-brand-1: #91dd33;--vp-c-brand-2: #91dd33;--vp-c-brand-3: #91dd33;--vp-c-sponsor: #91dd33;--vitest-c-sponsor-hover: #e51370}.VPLocalSearchBox[data-v-f4c4f812]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-f4c4f812]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-f4c4f812]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-f4c4f812]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-f4c4f812]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-f4c4f812]{padding:0 8px}}.search-bar[data-v-f4c4f812]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-f4c4f812]{display:block;font-size:18px}.navigate-icon[data-v-f4c4f812]{display:block;font-size:14px}.search-icon[data-v-f4c4f812]{margin:8px}@media (max-width: 767px){.search-icon[data-v-f4c4f812]{display:none}}.search-input[data-v-f4c4f812]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-f4c4f812]{padding:6px 4px}}.search-actions[data-v-f4c4f812]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-f4c4f812]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-f4c4f812]{display:none}}.search-actions button[data-v-f4c4f812]{padding:8px}.search-actions button[data-v-f4c4f812]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-f4c4f812]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-f4c4f812]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-f4c4f812]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-f4c4f812]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-f4c4f812]{display:none}}.search-keyboard-shortcuts kbd[data-v-f4c4f812]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-f4c4f812]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-f4c4f812]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-f4c4f812]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-f4c4f812]{margin:8px}}.titles[data-v-f4c4f812]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-f4c4f812]{display:flex;align-items:center;gap:4px}.title.main[data-v-f4c4f812]{font-weight:500}.title-icon[data-v-f4c4f812]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-f4c4f812]{opacity:.5}.result.selected[data-v-f4c4f812]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-f4c4f812]{position:relative}.excerpt[data-v-f4c4f812]{opacity:75%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;opacity:.5;margin-top:4px}.result.selected .excerpt[data-v-f4c4f812]{opacity:1}.excerpt[data-v-f4c4f812] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-f4c4f812] mark,.excerpt[data-v-f4c4f812] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-f4c4f812] .vp-code-group .tabs{display:none}.excerpt[data-v-f4c4f812] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-f4c4f812]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-f4c4f812]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-f4c4f812],.result.selected .title-icon[data-v-f4c4f812]{color:var(--vp-c-brand-1)!important}.no-results[data-v-f4c4f812]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-f4c4f812]{flex:none} diff --git a/previews/PR195/assets/tutorials_creating_geometry.md.PsrBxXGz.js b/previews/PR195/assets/tutorials_creating_geometry.md.PsrBxXGz.js new file mode 100644 index 000000000..e21298736 --- /dev/null +++ b/previews/PR195/assets/tutorials_creating_geometry.md.PsrBxXGz.js @@ -0,0 +1,89 @@ +import{_ as s,c as i,o as a,a7 as e}from"./chunks/framework.BjTE4JnT.js";const t="/GeometryOps.jl/previews/PR195/assets/tysupqa.Dz86q2IX.png",n="/GeometryOps.jl/previews/PR195/assets/ethucql.Cx40vhB3.png",l="/GeometryOps.jl/previews/PR195/assets/tveteth.0OJvb21A.png",p="/GeometryOps.jl/previews/PR195/assets/xbxiuuf.DaovVbE6.png",h="/GeometryOps.jl/previews/PR195/assets/gktvnik.B9NpLJr_.png",o="/GeometryOps.jl/previews/PR195/assets/kvmquaf.CG4dr3Lx.png",k="/GeometryOps.jl/previews/PR195/assets/snugpka.3sfpQl2i.png",r="/GeometryOps.jl/previews/PR195/assets/kfdrove.Dab1-ETk.png",g="/GeometryOps.jl/previews/PR195/assets/icgbnns.lu4jwpi-.png",d="/GeometryOps.jl/previews/PR195/assets/kwhpuoi.DwqDxlAG.png",E="/GeometryOps.jl/previews/PR195/assets/hpfmrae.CLtpJ5Wb.png",D=JSON.parse('{"title":"Creating Geometry","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/creating_geometry.md","filePath":"tutorials/creating_geometry.md","lastUpdated":null}'),c={name:"tutorials/creating_geometry.md"},y=e(`

Creating Geometry

In this tutorial, we're going to:

  1. Create and plot geometries

  2. Plot geometries on a map using GeoMakie and coordinate reference system (CRS)

  3. Create geospatial geometries with embedded coordinate reference system information

  4. Assign attributes to geospatial geometries

  5. Save geospatial geometries to common geospatial file formats

First, we load some required packages.

julia
# Geospatial packages from Julia
+import GeoInterface as GI
+import GeometryOps as GO
+import GeoFormatTypes as GFT
+using GeoJSON # to load some data
+# Packages for coordinate transformation and projection
+import CoordinateTransformations
+import Proj
+# Plotting
+using CairoMakie
+using GeoMakie

Creating and plotting geometries

Let's start by making a single Point.

julia
point = GI.Point(0, 0)
GeoInterface.Wrappers.Point{false, false, Tuple{Int64, Int64}, Nothing}((0, 0), nothing)

Now, let's plot our point.

julia
fig, ax, plt = plot(point)

Let's create a set of points, and have a bit more fun with plotting.

julia
x = [-5, 0, 5, 0];
+y = [0, -5, 0, 5];
+points = GI.Point.(zip(x,y));
+plot!(ax, points; marker = '✈', markersize = 30)
+fig

Points can be combined into a single MultiPoint geometry.

julia
x = [-5, -5, 5, 5];
+y = [-5, 5, 5, -5];
+multipoint = GI.MultiPoint(GI.Point.(zip(x, y)));
+plot!(ax, multipoint; marker = '☁', markersize = 30)
+fig

Let's create a LineString connecting two points.

julia
p1 = GI.Point.(-5, 0);
+p2 = GI.Point.(5, 0);
+line = GI.LineString([p1,p2])
+plot!(ax, line; color = :red)
+fig

Now, let's create a line connecting multiple points (i.e. a LineString). This time we get a bit more fancy with point creation.

julia
r = 2;
+k = 10;
+ϴ = 0:0.01:2pi;
+x = r .* (k + 1) .* cos.(ϴ) .- r .* cos.((k + 1) .* ϴ);
+y = r .* (k + 1) .* sin.(ϴ) .- r .* sin.((k + 1) .* ϴ);
+lines = GI.LineString(GI.Point.(zip(x,y)));
+plot!(ax, lines; linewidth = 5)
+fig

We can also create a single LinearRing trait, the building block of a polygon. A LinearRing is simply a LineString with the same beginning and endpoint, i.e., an arbitrary closed shape composed of point pairs.

A LinearRing is composed of a series of points.

julia
ring1 = GI.LinearRing(GI.getpoint(lines));
GeoInterface.Wrappers.LinearRing{false, false, Vector{GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}[GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.0, 0.0), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.010987813253244, 0.0004397316773170068), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.043805248003498, 0.0035114210915891397), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.098016055420953, 0.011814947665167774), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.172899020101585, 0.027886421973952302), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.267456684570245, 0.05416726609360478), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.380427415579764, 0.09297443860091348), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.51030066635026, 0.1464721641710074), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.655335250260467, 0.21664550952386064), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.813580405100698, 0.30527612515520186), nothing)  …  GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.866418416586406, -0.3376428491230612), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.704405820024185, -0.24279488312757858), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.55494217175954, -0.16692537029320365), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.420040147662014, -0.10832215707812454), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.30151010318639, -0.0650624499034016), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.200938172182195, -0.03503632062070827), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.119667078681967, -0.01597247419241532), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.058779893613323, -0.005465967083412071), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.019086932781654, -0.0010075412835199304), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.001115954499138, -1.4219350464667047e-5), nothing)], nothing, nothing)

Now, let's make the LinearRing into a Polygon.

julia
polygon1 = GI.Polygon([ring1]);
GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearRing{false, false, Vector{GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}[GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.0, 0.0), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.010987813253244, 0.0004397316773170068), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.043805248003498, 0.0035114210915891397), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.098016055420953, 0.011814947665167774), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.172899020101585, 0.027886421973952302), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.267456684570245, 0.05416726609360478), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.380427415579764, 0.09297443860091348), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.51030066635026, 0.1464721641710074), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.655335250260467, 0.21664550952386064), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.813580405100698, 0.30527612515520186), nothing)  …  GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.866418416586406, -0.3376428491230612), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.704405820024185, -0.24279488312757858), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.55494217175954, -0.16692537029320365), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.420040147662014, -0.10832215707812454), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.30151010318639, -0.0650624499034016), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.200938172182195, -0.03503632062070827), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.119667078681967, -0.01597247419241532), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.058779893613323, -0.005465967083412071), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.019086932781654, -0.0010075412835199304), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.001115954499138, -1.4219350464667047e-5), nothing)], nothing, nothing)], nothing, nothing)

Now, we can use GeometryOps and CoordinateTransformations to shift polygon1 up, to avoid plotting over our earlier results. This is done through the GeometryOps.transform function.

julia
xoffset = 0.;
+yoffset = 50.;
+f = CoordinateTransformations.Translation(xoffset, yoffset);
+polygon1 = GO.transform(f, polygon1);
+plot!(polygon1)
+fig

Polygons can contain "holes". The first LinearRing in a polygon is the exterior, and all subsequent LinearRings are treated as holes in the leading LinearRing.

GeoInterface offers the GI.getexterior(poly) and GI.gethole(poly) methods to get the exterior ring and an iterable of holes, respectively.

julia
hole = GI.LinearRing(GI.getpoint(multipoint))
+polygon2 = GI.Polygon([ring1, hole])
GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, T, Nothing, Nothing} where T}, Nothing, Nothing}(GeoInterface.Wrappers.LinearRing{false, false, T, Nothing, Nothing} where T[GeoInterface.Wrappers.LinearRing{false, false, Vector{GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}[GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.0, 0.0), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.010987813253244, 0.0004397316773170068), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.043805248003498, 0.0035114210915891397), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.098016055420953, 0.011814947665167774), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.172899020101585, 0.027886421973952302), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.267456684570245, 0.05416726609360478), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.380427415579764, 0.09297443860091348), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.51030066635026, 0.1464721641710074), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.655335250260467, 0.21664550952386064), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.813580405100698, 0.30527612515520186), nothing)  …  GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.866418416586406, -0.3376428491230612), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.704405820024185, -0.24279488312757858), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.55494217175954, -0.16692537029320365), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.420040147662014, -0.10832215707812454), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.30151010318639, -0.0650624499034016), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.200938172182195, -0.03503632062070827), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.119667078681967, -0.01597247419241532), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.058779893613323, -0.005465967083412071), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.019086932781654, -0.0010075412835199304), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.001115954499138, -1.4219350464667047e-5), nothing)], nothing, nothing), GeoInterface.Wrappers.LinearRing{false, false, Vector{GeoInterface.Wrappers.Point{false, false, Tuple{Int64, Int64}, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.Point{false, false, Tuple{Int64, Int64}, Nothing}[GeoInterface.Wrappers.Point{false, false, Tuple{Int64, Int64}, Nothing}((-5, -5), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Int64, Int64}, Nothing}((-5, 5), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Int64, Int64}, Nothing}((5, 5), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Int64, Int64}, Nothing}((5, -5), nothing)], nothing, nothing)], nothing, nothing)

Shift polygon2 to the right, to avoid plotting over our earlier results.

julia
xoffset = 50.;
+yoffset = 0.;
+f = CoordinateTransformations.Translation(xoffset, yoffset);
+polygon2 = GO.transform(f, polygon2);
+plot!(polygon2)
+fig

Polygons can also be grouped together as a MultiPolygon.

julia
r = 5;
+x = cos.(reverse(ϴ)) .* r .+ xoffset;
+y = sin.(reverse(ϴ)) .* r .+ yoffset;
+ring2 =  GI.LinearRing(GI.Point.(zip(x,y)));
+polygon3 = GI.Polygon([ring2]);
+multipolygon = GI.MultiPolygon([polygon2, polygon3])
GeoInterface.Wrappers.MultiPolygon{false, false, Vector{GeoInterface.Wrappers.Polygon{false, false, _A, Nothing, Nothing} where _A}, Nothing, Nothing}(GeoInterface.Wrappers.Polygon{false, false, _A, Nothing, Nothing} where _A[GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}(StaticArraysCore.SVector{2, Float64}[[70.0, 0.0], [70.01098781325325, 0.0004397316773170068], [70.0438052480035, 0.0035114210915891397], [70.09801605542096, 0.011814947665167774], [70.17289902010158, 0.027886421973952302], [70.26745668457025, 0.05416726609360478], [70.38042741557976, 0.09297443860091348], [70.51030066635026, 0.1464721641710074], [70.65533525026046, 0.21664550952386064], [70.8135804051007, 0.30527612515520186]  …  [70.86641841658641, -0.3376428491230612], [70.70440582002419, -0.24279488312757858], [70.55494217175954, -0.16692537029320365], [70.42004014766201, -0.10832215707812454], [70.30151010318639, -0.0650624499034016], [70.20093817218219, -0.03503632062070827], [70.11966707868197, -0.01597247419241532], [70.05877989361332, -0.005465967083412071], [70.01908693278165, -0.0010075412835199304], [70.00111595449914, -1.4219350464667047e-5]], nothing, nothing), GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}(StaticArraysCore.SVector{2, Float64}[[45.0, -5.0], [45.0, 5.0], [55.0, 5.0], [55.0, -5.0]], nothing, nothing)], nothing, nothing), GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearRing{false, false, Vector{GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}[GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.999974634566875, -0.01592650896568995), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.999565375483215, -0.06592462566760626), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.99865616402829, -0.11591614996189725), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.997247091122496, -0.16589608273778408), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.99533829767195, -0.2158594260436434), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.99292997455441, -0.2658011835867806), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.990022362600165, -0.31571636123306385), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.98661575256801, -0.3655999675063154), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.98271048511609, -0.41544701408748197), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.9783069507679, -0.46525251631344455), nothing)  …  GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.97976366505997, 0.4493927459900552), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.9840085315131, 0.3995734698458635), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.9877550012664, 0.3497142366876638), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.991002699676024, 0.299820032397223), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.99375130197483, 0.24989584635339165), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.99600053330489, 0.1999466709331708), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.997750168744936, 0.1499775010124783), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.99900003333289, 0.0999933334666654), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.999750002083324, 0.049999166670833324), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((55.0, 0.0), nothing)], nothing, nothing)], nothing, nothing)], nothing, nothing)

Shift multipolygon up, to avoid plotting over our earlier results.

julia
xoffset = 0.;
+yoffset = 50.;
+f = CoordinateTransformations.Translation(xoffset, yoffset);
+multipolygon = GO.transform(f, multipolygon);
+plot!(multipolygon)
+fig

Great, now we can make Points, MultiPoints, Lines, LineStrings, Polygons (with holes), and MultiPolygons and modify them using [CoordinateTransformations] and [GeometryOps].

Plot geometries on a map using GeoMakie and coordinate reference system (CRS)

In geospatial sciences we often have data in one Coordinate Reference System (CRS) (source) and would like to display it in different (destination) CRS. GeoMakie allows us to do this by automatically projecting from source to destination CRS.

Here, our source CRS is common geographic (i.e. coordinates of latitude and longitude), WGS84.

julia
source_crs1 = GFT.EPSG(4326)
GeoFormatTypes.EPSG{1}((4326,))

Now let's pick a destination CRS for displaying our map. Here we'll pick natearth2.

julia
destination_crs = "+proj=natearth2"
"+proj=natearth2"

Let's add land area for context. First, download and open the Natural Earth global land polygons at 110 m resolution.GeoMakie ships with this particular dataset, so we will access it from there.

julia
land_path = GeoMakie.assetpath("ne_110m_land.geojson")
"/home/runner/.julia/packages/GeoMakie/2upVC/assets/ne_110m_land.geojson"

Note

Natural Earth has lots of other datasets, and there is a Julia package that provides an interface to it called NaturalEarth.jl.

Read the land MultiPolygons as a GeoJSON.FeatureCollection.

julia
land_geo = GeoJSON.read(land_path)
FeatureCollection with 127 Features

We then need to create a figure with a GeoAxis that can handle the projection between source and destination CRS. For GeoMakie, source is the CRS of the input and dest is the CRS you want to visualize in.

julia
fig = Figure(size=(1000, 500));
+ga = GeoAxis(
+    fig[1, 1];
+    source = source_crs1,
+    dest = destination_crs,
+    xticklabelsvisible = false,
+    yticklabelsvisible = false,
+);

Plot land for context.

julia
poly!(ga, land_geo, color=:black)
+fig

Now let's plot a Polygon like before, but this time with a CRS that differs from our source data

julia
plot!(multipolygon; color = :green)
+fig

But what if we want to plot geometries with a different source CRS on the same figure?

To show how to do this let's create a geometry with coordinates in UTM (Universal Transverse Mercator) zone 10N EPSG:32610.

julia
source_crs2 = GFT.EPSG(32610)
GeoFormatTypes.EPSG{1}((32610,))

Create a polygon (we're working in meters now, not latitude and longitude)

julia
r = 1000000;
+ϴ = 0:0.01:2pi;
+x = r .* cos.(ϴ).^3 .+ 500000;
+y = r .* sin.(ϴ) .^ 3 .+5000000;
629-element Vector{Float64}:
+ 5.0e6
+ 5.0e6
+ 5.00001e6
+
+ 5.0e6
+ 5.0e6

Now create a LinearRing from Points

julia
ring3 = GI.LinearRing(Point.(zip(x, y)))
GeoInterface.Wrappers.LinearRing{false, false, Vector{Point{2, Float64}}, Nothing, Nothing}(Point{2, Float64}[[1.5e6, 5.0e6], [1.4998500087497458e6, 5.000000999950001e6], [1.4994001399837343e6, 5.000007998400139e6], [1.4986507085647392e6, 5.000026987852369e6], [1.4976022389592e6, 5.000063948817746e6], [1.4962554647802354e6, 5.000124843834609e6], [1.4946113281484335e6, 5.000215611503127e6], [1.4926709788709967e6, 5.000342160541625e6], [1.4904357734399722e6, 5.000510363870095e6], [1.4879072738504685e6, 5.0007260527263e6]  …  [1.4870405593989636e6, 4.999194331880103e6], [1.4896621210021754e6, 4.999426363321033e6], [1.491990928929295e6, 4.999609061508909e6], [1.4940253560034204e6, 4.999748243174828e6], [1.4957639801366436e6, 4.999849768598615e6], [1.497205585568957e6, 4.999919535736425e6], [1.4983491639274692e6, 4.999963474314044e6], [1.4991939151049731e6, 4.999987539891298e6], [1.4997392479570867e6, 4.999997707902938e6], [1.499984780817334e6, 4.999999967681458e6]], nothing, nothing)

Now create a Polygon from the LineRing

julia
polygon3 = GI.Polygon([ring3])
GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Point{2, Float64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearRing{false, false, Vector{Point{2, Float64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{Point{2, Float64}}, Nothing, Nothing}(Point{2, Float64}[[1.5e6, 5.0e6], [1.4998500087497458e6, 5.000000999950001e6], [1.4994001399837343e6, 5.000007998400139e6], [1.4986507085647392e6, 5.000026987852369e6], [1.4976022389592e6, 5.000063948817746e6], [1.4962554647802354e6, 5.000124843834609e6], [1.4946113281484335e6, 5.000215611503127e6], [1.4926709788709967e6, 5.000342160541625e6], [1.4904357734399722e6, 5.000510363870095e6], [1.4879072738504685e6, 5.0007260527263e6]  …  [1.4870405593989636e6, 4.999194331880103e6], [1.4896621210021754e6, 4.999426363321033e6], [1.491990928929295e6, 4.999609061508909e6], [1.4940253560034204e6, 4.999748243174828e6], [1.4957639801366436e6, 4.999849768598615e6], [1.497205585568957e6, 4.999919535736425e6], [1.4983491639274692e6, 4.999963474314044e6], [1.4991939151049731e6, 4.999987539891298e6], [1.4997392479570867e6, 4.999997707902938e6], [1.499984780817334e6, 4.999999967681458e6]], nothing, nothing)], nothing, nothing)

Now plot on the existing GeoAxis.

Note

The keyword argument source is used to specify the source CRS of that particular plot, when plotting on an existing GeoAxis.

julia
plot!(ga,polygon3; color=:red, source = source_crs2)
+fig

Create geospatial geometries with embedded coordinate reference system information

Great, we can make geometries and plot them on a map... now let's export the data to common geospatial data formats. To do this we now need to create geometries with embedded CRS information, making it a geospatial geometry. All that's needed is to include ; crs = crs as a keyword argument when constructing the geometry.

Let's do this for a new Polygon

julia
r = 3;
+k = 7;
+ϴ = 0:0.01:2pi;
+x = r .* (k + 1) .* cos.(ϴ) .- r .* cos.((k + 1) .* ϴ);
+y = r .* (k + 1) .* sin.(ϴ) .- r .* sin.((k + 1) .* ϴ);
+ring4 = GI.LinearRing(Point.(zip(x, y)))
GeoInterface.Wrappers.LinearRing{false, false, Vector{Point{2, Float64}}, Nothing, Nothing}(Point{2, Float64}[[21.0, 0.0], [21.00839489109211, 0.00025191811248184703], [21.033518309870985, 0.0020133807972559925], [21.075186885419612, 0.006784125578492062], [21.13309630561615, 0.016044338630866517], [21.206823267470536, 0.031245035570328428], [21.29582819010705, 0.053798628882221644], [21.39945867303846, 0.08506974233813636], [21.516953677609987, 0.12636633117296836], [21.64744840486518, 0.17893116483784577]  …  [21.69159119078359, -0.19823293781563178], [21.557153362189904, -0.14182952335952814], [21.43541888381864, -0.09707519809793252], [21.327284472232776, -0.06274967861547665], [21.233544778745394, -0.03756486776283019], [21.15488729606723, -0.020173244847778715], [21.091887951911644, -0.0091766360295773], [21.045007417743918, -0.0031353088009582475], [21.01458815628695, -0.0005773323690041465], [21.00085222666982, -8.14404531208901e-6]], nothing, nothing)

But this time when we create the Polygon we need to specify the CRS at the time of creation, making it a geospatial polygon

julia
geopoly1 = GI.Polygon([ring4], crs = source_crs1)
GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Point{2, Float64}}, Nothing, Nothing}}, Nothing, GeoFormatTypes.EPSG{1}}(GeoInterface.Wrappers.LinearRing{false, false, Vector{Point{2, Float64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{Point{2, Float64}}, Nothing, Nothing}(Point{2, Float64}[[21.0, 0.0], [21.00839489109211, 0.00025191811248184703], [21.033518309870985, 0.0020133807972559925], [21.075186885419612, 0.006784125578492062], [21.13309630561615, 0.016044338630866517], [21.206823267470536, 0.031245035570328428], [21.29582819010705, 0.053798628882221644], [21.39945867303846, 0.08506974233813636], [21.516953677609987, 0.12636633117296836], [21.64744840486518, 0.17893116483784577]  …  [21.69159119078359, -0.19823293781563178], [21.557153362189904, -0.14182952335952814], [21.43541888381864, -0.09707519809793252], [21.327284472232776, -0.06274967861547665], [21.233544778745394, -0.03756486776283019], [21.15488729606723, -0.020173244847778715], [21.091887951911644, -0.0091766360295773], [21.045007417743918, -0.0031353088009582475], [21.01458815628695, -0.0005773323690041465], [21.00085222666982, -8.14404531208901e-6]], nothing, nothing)], nothing, GeoFormatTypes.EPSG{1}((4326,)))

Note

It is good practice to only include CRS information with the highest-level geometry. Not doing so can bloat the memory footprint of the geometry. CRS information can be included at the individual Point level but is discouraged.

And let's create second Polygon by shifting the first using CoordinateTransformations

julia
xoffset = 20.;
+yoffset = -25.;
+f = CoordinateTransformations.Translation(xoffset, yoffset);
+geopoly2 = GO.transform(f, geopoly1);
GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, GeoFormatTypes.EPSG{1}}}, Nothing, GeoFormatTypes.EPSG{1}}(GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, GeoFormatTypes.EPSG{1}}[GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, GeoFormatTypes.EPSG{1}}(StaticArraysCore.SVector{2, Float64}[[41.0, -25.0], [41.00839489109211, -24.999748081887518], [41.033518309870985, -24.997986619202745], [41.07518688541961, -24.99321587442151], [41.13309630561615, -24.983955661369134], [41.20682326747054, -24.96875496442967], [41.295828190107045, -24.946201371117777], [41.39945867303846, -24.914930257661865], [41.51695367760999, -24.873633668827033], [41.64744840486518, -24.821068835162155]  …  [41.69159119078359, -25.198232937815632], [41.55715336218991, -25.14182952335953], [41.43541888381864, -25.097075198097933], [41.327284472232776, -25.062749678615475], [41.2335447787454, -25.037564867762832], [41.15488729606723, -25.02017324484778], [41.091887951911644, -25.009176636029576], [41.04500741774392, -25.003135308800957], [41.01458815628695, -25.000577332369005], [41.00085222666982, -25.000008144045314]], nothing, GeoFormatTypes.EPSG{1}((4326,)))], nothing, GeoFormatTypes.EPSG{1}((4326,)))

Creating a table with attributes and geometry

Typically, you'll also want to include attributes with your geometries. Attributes are simply data that are attributed to each geometry. The easiest way to do this is to create a table with a :geometry column. Let's do this using DataFrames.

julia
using DataFrames
+df = DataFrame(geometry=[geopoly1, geopoly2])

Now let's add a couple of attributes to the geometries. We do this using DataFrames' ! mutation syntax that allows you to add a new column to an existing data frame.

julia
df[!,:id] = ["a", "b"]
+df[!, :name] = ["polygon 1", "polygon 2"]
+df

Saving your geospatial data

There are Julia packages for most commonly used geographic data formats. Below, we show how to export that data to each of these.

We begin with GeoJSON, which is a JSON format for geospatial feature collections. It's human-readable and widely supported by most web-based and desktop geospatial libraries.

julia
import GeoJSON
+fn = "shapes.json"
+GeoJSON.write(fn, df)
"shapes.json"

Now, let's save as a Shapefile. Shapefiles are actually a set of files (usually 4) that hold geometry information, a CRS, and additional attribute information as a separate table. When you give Shapefile.write a file name, it will write 4 files of the same name but with different extensions.

julia
import Shapefile
+fn = "shapes.shp"
+Shapefile.write(fn, df)
20340

Now, let's save as a GeoParquet. GeoParquet is a geospatial extension to the Parquet format, which is a high-performance data store. It's great for storing large amounts of data in a single file.

julia
import GeoParquet
+fn = "shapes.parquet"
+GeoParquet.write(fn, df, (:geometry,))
"shapes.parquet"

Finally, if there's no Julia-native package that can write data to your desired format (e.g. .gpkg, .gml, etc), you can use GeoDataFrames. This package uses the GDAL library under the hood which supports writing to nearly all geospatial formats.

julia
import GeoDataFrames
+fn = "shapes.gpkg"
+GeoDataFrames.write(fn, df)
"shapes.gpkg"

And there we go, you can now create mapped geometries from scratch, manipulate them, plot them on a map, and save them in multiple geospatial data formats.

`,120),F=[y];function u(f,C,m,b,v,G){return a(),i("div",null,F)}const P=s(c,[["render",u]]);export{D as __pageData,P as default}; diff --git a/previews/PR195/assets/tutorials_creating_geometry.md.PsrBxXGz.lean.js b/previews/PR195/assets/tutorials_creating_geometry.md.PsrBxXGz.lean.js new file mode 100644 index 000000000..45cd0aea3 --- /dev/null +++ b/previews/PR195/assets/tutorials_creating_geometry.md.PsrBxXGz.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as e}from"./chunks/framework.BjTE4JnT.js";const t="/GeometryOps.jl/previews/PR195/assets/tysupqa.Dz86q2IX.png",n="/GeometryOps.jl/previews/PR195/assets/ethucql.Cx40vhB3.png",l="/GeometryOps.jl/previews/PR195/assets/tveteth.0OJvb21A.png",p="/GeometryOps.jl/previews/PR195/assets/xbxiuuf.DaovVbE6.png",h="/GeometryOps.jl/previews/PR195/assets/gktvnik.B9NpLJr_.png",o="/GeometryOps.jl/previews/PR195/assets/kvmquaf.CG4dr3Lx.png",k="/GeometryOps.jl/previews/PR195/assets/snugpka.3sfpQl2i.png",r="/GeometryOps.jl/previews/PR195/assets/kfdrove.Dab1-ETk.png",g="/GeometryOps.jl/previews/PR195/assets/icgbnns.lu4jwpi-.png",d="/GeometryOps.jl/previews/PR195/assets/kwhpuoi.DwqDxlAG.png",E="/GeometryOps.jl/previews/PR195/assets/hpfmrae.CLtpJ5Wb.png",D=JSON.parse('{"title":"Creating Geometry","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/creating_geometry.md","filePath":"tutorials/creating_geometry.md","lastUpdated":null}'),c={name:"tutorials/creating_geometry.md"},y=e("",120),F=[y];function u(f,C,m,b,v,G){return a(),i("div",null,F)}const P=s(c,[["render",u]]);export{D as __pageData,P as default}; diff --git a/previews/PR195/assets/tutorials_geodesic_paths.md.BeBppPdH.js b/previews/PR195/assets/tutorials_geodesic_paths.md.BeBppPdH.js new file mode 100644 index 000000000..5fa3a37f5 --- /dev/null +++ b/previews/PR195/assets/tutorials_geodesic_paths.md.BeBppPdH.js @@ -0,0 +1,11 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const h="/GeometryOps.jl/previews/PR195/assets/kivzwfa.Danh069g.png",y=JSON.parse('{"title":"Geodesic paths","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/geodesic_paths.md","filePath":"tutorials/geodesic_paths.md","lastUpdated":null}'),t={name:"tutorials/geodesic_paths.md"},p=n(`

Geodesic paths

Geodesic paths are paths computed on an ellipsoid, as opposed to a plane.

julia
import GeometryOps as GO, GeoInterface as GI
+using CairoMakie, GeoMakie
+
+
+IAH = (-95.358421, 29.749907)
+AMS = (4.897070, 52.377956)
+
+
+fig, ga, _cp = lines(GeoMakie.coastlines(); axis = (; type = GeoAxis))
+lines!(ga, GO.segmentize(GO.GeodesicSegments(; max_distance = 100_000), GI.LineString([IAH, AMS])); color = Makie.wong_colors()[2])
+fig

',4),k=[p];function e(l,E,d,r,g,o){return a(),i("div",null,k)}const F=s(t,[["render",e]]);export{y as __pageData,F as default}; diff --git a/previews/PR195/assets/tutorials_geodesic_paths.md.BeBppPdH.lean.js b/previews/PR195/assets/tutorials_geodesic_paths.md.BeBppPdH.lean.js new file mode 100644 index 000000000..1fb4a55cf --- /dev/null +++ b/previews/PR195/assets/tutorials_geodesic_paths.md.BeBppPdH.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.BjTE4JnT.js";const h="/GeometryOps.jl/previews/PR195/assets/kivzwfa.Danh069g.png",y=JSON.parse('{"title":"Geodesic paths","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/geodesic_paths.md","filePath":"tutorials/geodesic_paths.md","lastUpdated":null}'),t={name:"tutorials/geodesic_paths.md"},p=n("",4),k=[p];function e(l,E,d,r,g,o){return a(),i("div",null,k)}const F=s(t,[["render",e]]);export{y as __pageData,F as default}; diff --git a/previews/PR195/assets/tutorials_spatial_joins.md.ysriZBMi.js b/previews/PR195/assets/tutorials_spatial_joins.md.ysriZBMi.js new file mode 100644 index 000000000..d4c78db31 --- /dev/null +++ b/previews/PR195/assets/tutorials_spatial_joins.md.ysriZBMi.js @@ -0,0 +1,42 @@ +import{_ as h,c as a,j as s,a as i,a7 as n,o as t}from"./chunks/framework.BjTE4JnT.js";const e="/GeometryOps.jl/previews/PR195/assets/zcalbmn.3UVIT8DR.png",l="/GeometryOps.jl/previews/PR195/assets/ksirytc.D53be7Ix.png",p="/GeometryOps.jl/previews/PR195/assets/arwwwgh.KQwENoaO.png",B=JSON.parse('{"title":"Spatial joins","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/spatial_joins.md","filePath":"tutorials/spatial_joins.md","lastUpdated":null}'),k={name:"tutorials/spatial_joins.md"},r=s("h1",{id:"Spatial-joins",tabindex:"-1"},[i("Spatial joins "),s("a",{class:"header-anchor",href:"#Spatial-joins","aria-label":'Permalink to "Spatial joins {#Spatial-joins}"'},"​")],-1),E=s("a",{href:"https://www.geeksforgeeks.org/sql-join-set-1-inner-left-right-and-full-joins/",target:"_blank",rel:"noreferrer"},"table joins",-1),d={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.307ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2787.7 1000","aria-hidden":"true"},g=n('',1),y=[g],c=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"p"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",null,","),s("mi",null,"y"),s("mo",{stretchy:"false"},")")])],-1),F=s("code",null,"true",-1),u=s("code",null,"false",-1),m=s("a",{href:"https://en.wikipedia.org/wiki/DE-9IM",target:"_blank",rel:"noreferrer"},[s("code",null,"DE-9IM")],-1),C=n(`

Spatial joins can be done between any geometry types (from geometrycollections to points), just as geometrical predicates can be evaluated on any geometries.

In this tutorial, we will show how to perform a spatial join on first a toy dataset and then two Natural Earth datasets, to show how this can be used in the real world.

In order to perform the spatial join, we use FlexiJoins.jl to perform the join, specifically using its by_pred joining method. This allows the user to specify a predicate in the following manner:

julia
[inner/left/right/outer/...]join((table1, table1),
+    by_pred(:table1_column, predicate_function, :table2_column) # & add other conditions here
+)

We have enabled the use of all of GeometryOps' boolean comparisons here. These are:

julia
GO.contains, GO.within, GO.intersects, GO.touches, GO.crosses, GO.disjoint, GO.overlaps, GO.covers, GO.coveredby, GO.equals

Tip

Always place the dataframe with more complex geometries second, as that is the one which will be sorted into a tree.

Simple example

This example demonstrates how to perform a spatial join between two datasets: a set of polygons and a set of randomly generated points.

The polygons are represented as a DataFrame with geometries and colors, while the points are stored in a separate DataFrame.

The spatial join is performed using the contains predicate from GeometryOps, which checks if each point is contained within any of the polygons. The resulting joined DataFrame is then used to plot the points, colored according to the containing polygon.

First, we generate our data. We create two triangle polygons which, together, span the rectangle (0, 0, 1, 1), and a set of points which are randomly distributed within this rectangle.

julia
import GeoInterface as GI, GeometryOps as GO
+using FlexiJoins, DataFrames
+
+using CairoMakie, GeoInterfaceMakie
+
+pl = GI.Polygon([GI.LinearRing([(0, 0), (1, 0), (1, 1), (0, 0)])])
+pu = GI.Polygon([GI.LinearRing([(0, 0), (0, 1), (1, 1), (0, 0)])])
+poly_df = DataFrame(geometry = [pl, pu], color = [:red, :blue])
+f, a, p = poly(poly_df.geometry; color = tuple.(poly_df.color, 0.3))

Here, the upper polygon is blue, and the lower polygon is red. Keep this in mind!

Now, we generate the points.

julia
points = tuple.(rand(1000), rand(1000))
+points_df = DataFrame(geometry = points)
+scatter!(points_df.geometry)
+f

You can see that they are evenly distributed around the box. But how do we know which points are in which polygons?

We have to join the two dataframes based on which polygon (if any) each point lies within.

Now, we can perform the "spatial join" using FlexiJoins. We are performing an outer join here

julia
@time joined_df = FlexiJoins.innerjoin(
+    (points_df, poly_df),
+    by_pred(:geometry, GO.within, :geometry)
+)
julia
scatter!(a, joined_df.geometry; color = joined_df.color)
+f

Here, you can see that the colors were assigned appropriately to the scattered points!

Real-world example

Suppose I have a list of polygons representing administrative regions (or mining sites, or what have you), and I have a list of polygons for each country. I want to find the country each region is in.

julia
import GeoInterface as GI, GeometryOps as GO
+using FlexiJoins, DataFrames, GADM # GADM gives us country and sublevel geometry
+
+using CairoMakie, GeoInterfaceMakie
+
+country_df = GADM.get.(["JPN", "USA", "IND", "DEU", "FRA"]) |> DataFrame
+country_df.geometry = GI.GeometryCollection.(GO.tuples.(country_df.geom))
+
+state_doublets = [
+    ("USA", "New York"),
+    ("USA", "California"),
+    ("IND", "Karnataka"),
+    ("DEU", "Berlin"),
+    ("FRA", "Grand Est"),
+    ("JPN", "Tokyo"),
+]
+
+state_full_df = (x -> GADM.get(x...)).(state_doublets) |> DataFrame
+state_full_df.geom = GO.tuples.(only.(state_full_df.geom))
+state_compact_df = state_full_df[:, [:geom, :NAME_1]]
julia
innerjoin((state_compact_df, country_df), by_pred(:geom, GO.within, :geometry))
+innerjoin((state_compact_df,  view(country_df, 1:1, :)), by_pred(:geom, GO.within, :geometry))

Warning

This is how you would do this, but it doesn't work yet, since the GeometryOps predicates are quite slow on large polygons. If you try this, the code will continue to run for a very, very long time (it took 12 hours on my laptop, but with minimal CPU usage).

Enabling custom predicates

In case you want to use a custom predicate, you only need to define a method to tell FlexiJoins how to use it.

For example, let's suppose you wanted to perform a spatial join on geometries which are some distance away from each other:

julia
my_predicate_function = <(5)  abs  GO.distance

You would need to define FlexiJoins.supports_mode on your predicate:

julia
FlexiJoins.supports_mode(
+    ::FlexiJoins.Mode.NestedLoopFast, 
+    ::FlexiJoins.ByPred{typeof(my_predicate_function)}, 
+    datas
+) = true

This will enable FlexiJoins to support your custom function, when it's passed to by_pred(:geometry, my_predicate_function, :geometry).

`,37);function T(_,b,f,D,w,Q){return t(),a("div",null,[r,s("p",null,[i("Spatial joins are "),E,i(" which are based not on equality, but on some predicate "),s("mjx-container",d,[(t(),a("svg",o,y)),c]),i(", which takes two geometries, and returns a value of either "),F,i(" or "),u,i(". For geometries, the "),m,i(" spatial relationship model is used to determine the spatial relationship between two geometries.")]),C])}const v=h(k,[["render",T]]);export{B as __pageData,v as default}; diff --git a/previews/PR195/assets/tutorials_spatial_joins.md.ysriZBMi.lean.js b/previews/PR195/assets/tutorials_spatial_joins.md.ysriZBMi.lean.js new file mode 100644 index 000000000..157a6abd9 --- /dev/null +++ b/previews/PR195/assets/tutorials_spatial_joins.md.ysriZBMi.lean.js @@ -0,0 +1 @@ +import{_ as h,c as a,j as s,a as i,a7 as n,o as t}from"./chunks/framework.BjTE4JnT.js";const e="/GeometryOps.jl/previews/PR195/assets/zcalbmn.3UVIT8DR.png",l="/GeometryOps.jl/previews/PR195/assets/ksirytc.D53be7Ix.png",p="/GeometryOps.jl/previews/PR195/assets/arwwwgh.KQwENoaO.png",B=JSON.parse('{"title":"Spatial joins","description":"","frontmatter":{},"headers":[],"relativePath":"tutorials/spatial_joins.md","filePath":"tutorials/spatial_joins.md","lastUpdated":null}'),k={name:"tutorials/spatial_joins.md"},r=s("h1",{id:"Spatial-joins",tabindex:"-1"},[i("Spatial joins "),s("a",{class:"header-anchor",href:"#Spatial-joins","aria-label":'Permalink to "Spatial joins {#Spatial-joins}"'},"​")],-1),E=s("a",{href:"https://www.geeksforgeeks.org/sql-join-set-1-inner-left-right-and-full-joins/",target:"_blank",rel:"noreferrer"},"table joins",-1),d={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.307ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2787.7 1000","aria-hidden":"true"},g=n("",1),y=[g],c=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"p"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",null,","),s("mi",null,"y"),s("mo",{stretchy:"false"},")")])],-1),F=s("code",null,"true",-1),u=s("code",null,"false",-1),m=s("a",{href:"https://en.wikipedia.org/wiki/DE-9IM",target:"_blank",rel:"noreferrer"},[s("code",null,"DE-9IM")],-1),C=n("",37);function T(_,b,f,D,w,Q){return t(),a("div",null,[r,s("p",null,[i("Spatial joins are "),E,i(" which are based not on equality, but on some predicate "),s("mjx-container",d,[(t(),a("svg",o,y)),c]),i(", which takes two geometries, and returns a value of either "),F,i(" or "),u,i(". For geometries, the "),m,i(" spatial relationship model is used to determine the spatial relationship between two geometries.")]),C])}const v=h(k,[["render",T]]);export{B as __pageData,v as default}; diff --git a/previews/PR195/assets/tvdutpc.Cb0_DiYE.png b/previews/PR195/assets/tvdutpc.Cb0_DiYE.png new file mode 100644 index 0000000000000000000000000000000000000000..6a6cda100e982fcf3b4e0d167563503e9398635a GIT binary patch literal 14120 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 literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/tveteth.0OJvb21A.png b/previews/PR195/assets/tveteth.0OJvb21A.png new file mode 100644 index 0000000000000000000000000000000000000000..38ed060781aec6333b0f4888c59a37f930117065 GIT binary patch literal 18310 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 F{{gAEmiPbw literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/unjmjvt.DiwGEg2f.png b/previews/PR195/assets/unjmjvt.DiwGEg2f.png new file mode 100644 index 0000000000000000000000000000000000000000..b9cc2026e0ce54e2cb4b69930300d7f9789e4599 GIT binary patch literal 13659 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 literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/uwghhoq.BhGrbaCK.png b/previews/PR195/assets/uwghhoq.BhGrbaCK.png new file mode 100644 index 0000000000000000000000000000000000000000..6f2753820510bd07503a04057ce831e962bea225 GIT binary patch literal 64163 zcmeEucR1Gn`?g9&nGJh{5|Necl|&(mLT1U{Dvdh{b)M&S2VGE8BHzQXhlq%X{M=au4I(1q zS42cR{7JUs85v5Wm-uU!v5Jxc(H7xjmol`h<$vx@Ykh#u&m34sy(ll*L zcIMA#r0(owJfFvLpL`&Xhl%k%xu@j)-U}Uh={m1yUp;oZz$~;s?W|(sO?V zw#;+AMcH%an{Qdpo=?3lpZshFjp+m&BcWbUH zoH^sYy1>T4k)D}(zvk-u&n{=qoVk4YvWiNJ?B?qA_o=7G#}`O9nCsuYQ%{je)^}Q6 zxTdY$^UI3zZxB%J(+}Ix$-~Dd<_2e22oFwx~`S$JG;>5cs z71!^B=jfRU=ZlEQ#~|Y8wm{X(mt%5s?NvHcv$Jhf7)6AIS65dHg{uzy{T-tBim3rq zfvpKA%ri4H8;^{SkAMIEz5AKEsE|-(RFt)i4KFWmNN}*E^R%j~t4NvIwQJWdTzEg; z5bSFgb=$(_>nGdxB=O08r%%_pTJ8P&mKHl1;#zFyMQ)AMzq(e}c#S1gQPO3WYUEOs zKA+pr>l-C@L+rG=y1K*VZn9ZC(uzb@iirG&MAEt*>1^vyXDwh?G}UROIJt7#bQH7#L`1?cKX~+s}rE24*Iv z#%*l!&!0T;x0mZ39Q2y&FFLCJsKV#Z!vMRg=guB8Qfzs4K(K3-ZFtLw?Wa#|`RFtE44oYKSoT^RETLBVrp z&#tbF_@<|)2PH(s#>RF(J)bCX<5(W=dX{$XojZ5fIXD)(=3FEUl$6XHBiM$AhxhE+ zb7x><#CL0`(o^)1Mx$9LhZ+Sxj%_!fWuWR`HTu(h?l zdiCnrvyBKT$Fj)C$h^G83Xf&QFs5^TO+UZ(T;bKac#%3oN=D|9dq(BWpS8Y9N=oy+ zd4Bq~^TU-QA|k8viK6z8q&zehcrtoR9n+(t_S>(mB>!DGqWAkqNN!s!@Cj~Bwb0fi zhA@hT?W0~ah!8k-%nCQNwzgKG?!AGPc^8hbHo*Ib(4Wwipo(jeb{Kv0Lh~6HsXeYK zmfvXe%f~F+f#QQSG?AWS*v7__9_zApFKv=q8YDW|DGE_Tvjp5c$KE4u!=K`lsO-z7LUS8 zuY4aWCt*`pS7$$z{qki7(}N0IQ_~|;efF97SM)|B>9)T|{8mlNKxEmL;=g`cqi$8CMq zmQ1T|KfikW_U)DV5&O@5@$vD;^@^Xrc#$mb{4_%XK`J976V56-J$K;zxpO$*Y91bC zw|2ei`xZ>gZ)RrpNaBXF+%E0xCr|1}MpE`oMM`@tDX6L0ZEgO!v(jy-;3NO{Qi*o8 zs1bFhc7MKk^XB9}ihu%>rpPkq85z%C*$5EHUu$D^0rrZ1{s^nZ(BFIpuMZz$I9z=G z>{*M;1H=k`Iu;fdSFfgyN|>6OuK$`#KOjU$hUKZLp=1*gamCRX$#$K6&$g}e5Df#v z@98$iYZSkuiW>e~C%PY0+aJ(NxNyxkzIje~aFLRd^6>CjTU)EBsNe^ja6D7vIpH9N zgYZ_fHBpWir5Dsg-dl&*gtt{iA;dZAZhr*Q7vxu)StPj1iH$jJPn zqN4nKWfc`{95c%xmr2E`v==Y>vb6avEkC=>4^K@`FTLd8ZeX^E35D7azeJBo}NZ>$u+E$aGE6Xkefy<=p(D>>k}6iym&#%rtqxW z^T+Hp6O#`gKK#I%Ra8hhG4sVSGBFK4Q)k^+7_IT+rTL1Tj&6#=S~5$y3&=M%HlBS$ z-SpaRo-fq{87aCam@4wY1GY`O;Qjw_i2zPjqx;R9C_}ea##z|vO@#LUeJq}Kbad3z z?8coUJVu(D>qtbc;gCF*7xNphClMSYh??*hUFrFge*EMaH|aPxH%{FMRr?uUzMJ zA0HMIE6vFXtJqIY9*Pq|$H+JlfC9NZ)1j`SvL4nW>ASg6WZg5~6lEjg*%Eua!r;N{ z*RPSQ3JMGBDRBa&q@)@+>Ez9{)8rFe%;J*Ox5o`zSEw<;#}=GK!Fi#^j; zqSEHMwJAN%PJ?uPI)I|Vw`AzQfFZdTvYlE(ON(O99w7mNRkQOn!7-7MPK)CWM^s{e z%nhu}S8wHHXFvH+<~XryEiE?oQ&)xx_l>t<%wNBKQ|-GS|E_V$iCZ$Q`*TfAje>9> z)t65%2ax=*wbgxQ_a8}n<``8!I-7C&S+}T7ubc_Z5mYX}z#1xfB;_d1^X%HAPGyq{ z{Ap=vZEbD!rx`+vufL;Ew$HqMyJl&srRhjeP|%APFShIQ@bmjFO`da7sc&fT_V&Kv z;?nrh$;ruQy7mcjVKB|{$7Dx~^YYl-z7%)<&tV|;mx~Sw4V@n{#I0QB?EjAZHH65CLJ~C*MxtjCVdh zBVQal`u)3FdMDTV=l&v|GKKT!+iGfV=d;=GSa3R^qp#1j#*L_VT2&sMOP^rAsZ7|b z({z(d=#D+7rWNn*@+WADQ{~#xBsYG#K^3O#D8$vk1buU z-o(^2?zrBs9wXl~s2XR^RC+9PN=yGq47#SQtQ?E~vbuO(%3VlOGI3wR*|TSX&KB(g z&EGvZa`>>0o*sw4dmLBlk9KNA)yAJcdNFJF?3K8Z)$DDV_c&b&p+cFSSl6@8s(PqZ4SIo=7;iu1a^r+kKAC}llr)!M=)umgfHMB&V8PpH8C^WQ{bx_f0tahe05u5+tbNnk2UOh9RJ21{IxavLGXFg_>%|Ld+w1-9$j*2C{J8I;emOWfJwD(X`7c?# z54%diw%T{;(xtZ{^v-{N-;kA+ZPp~)wPS_k!E#_B4K-Ed%ru*SeSLi(lR(9)+J%iK z_kij>^UvD;te*lb9V)V>&2T_rbe?VG>SHl@7{-wc{Ft?)~9v)sh$>5O@!-$(RII z7#X}TN~Wo;twfUW@S(;{_pa`4y@A6^`JQy9LC&?f94l*Uz4EPMIm>0YiZ5X=($cQs zz~M0|Z)!UA=8fF2om~FN&;Q<=>iuaFg}U~3J^_IUeW%S04^L0e;k&COWo2cZot=~W zaP3ljmvnXe`}-x>*lxRjX-}2}*sU-)hcM}QB+U``W43cgIK$k>tho4iI*(i9$&zk3 zQi>tm4Oo>hCUN%378`5t^!b zcWRQ|+E{iTPnmBVE<>4KSa47t1M&jESZ}kH-29g?S2J+76;5ktI88Oj08kyJ{nXRL zic9?Qxto)d^WnpXSe_d&j|0oO4-Q&l1xcVwR-HeS9 zu~|7ecEB61uBc=s+&eU-rKDcp_^K$CB<(3;8fJX$+SqJoI_es><%EzBQm_v1C(7!Z z4+H^poSfK8)|#S@0^X(oBm=ZPd1B(@v+29_hj!mS`QhddA6z~>zi8XZGF&K!g3T&u zO#CRNFGD5H{`(kV>C{u69#B4ajsT4R!oQDLkQ-k=rG>fugK0h|z)3tv5WKFaprD|t zN|uq-Wb*V0;XyJyI503!U+?eE#lbN#Gc)t~^SPX5Afo_E*5bn5DDVxzv{5S93&l_d zplU@vlY%~!DLn2BbQ_|f{QTvM@^?vq$SajMZ>ao4P8LD!OYiJ|EQp}QjZRLnqIlmU zXS_$X^y7zqx$B(hirkfr9oAM>;|6ylL!|Ovo&J~QZjF!~j@ibJ@~NII@w2Vbm{;SsyQH)I?uWF0N$HLKE;MS&xU^?#$^9kvtfpP5L^L!s+PQ`XRbJvF z=F-yAl&ms?Mb_HeJR>3^9NgThUFROg#?s6e7`%2NrJ$gR74i)h+Y&_q!UzDkA|g3HUZ*F=0N6A+ zDe0+Na&!6Qp@jT=C-mJY<@UoB^!xYwIbZCuC<;@2>R8E{YF)U$F?waxKzWqqt-MbCQ4YhT3xE??{JuNN83L5l%dU^x&C(Ni` zIC7!faRpq^)SS@MR8k7ih;oy5Lx3Rq4AE{QPVU~l`|;yPAv7#YOOx7}j~~nTg-1s2 z+dQqPcyB3Mz+HVPJn4TLzJ9mE4|b&k&Hwm1LI zHWleC8?mh#x@#@1;)!qPPo275;>&;hc<9E3%a?yDQLs7f+qdt|yEa!5hkxfoVf%LZ zg@I$-+}IGxGSoQ#iu|2yY;0+zrSba4K;^}uJO1YS)E&2OQEe1sAy}l`xmaD# z#qphqZPPCgA@z=r3wi(kfe+u@nEuy%zBdG&lzi6N*%^^}>eMOxiPcX^N_zbGF%CV- zpIffg-`Y;}CKrUqziS|xeFFIK-_QSVF`!3=hslYm)6m?5pfEExNAHqQb9MGJ;el*w zjWXpTQCX?CTQ0z1epq^!Und$s5P`q!_Ri`fu~Er4H#ZY{6&w%H8{ZA0&g@u>mlM(k;mX<|7Y}C}+k#3!xoPc&6&I18U zN=gdm*^e-x7zZQsq0wt^M<|QnWT9HPxS#-2J-wEE0f$pZrx#4k-aUKJDV)bcRrUAJ zug`LFhKJ9mXQCtK=6(=proX%@5>EhNT7MMf^rS2@qLt6L1r z6W=7c&1E}WA%6HUG24@z9GPpi#2g$P0DRbeG%jG~Ca0&tQvBFhTi&so!e&0!^$@>N zl@w}8Vc`!{9F+su2fzb%e-JnWxt7%eMn)r8RBp|uWUMk3l>^(~@bd}?ETEE;qyY@J zG&lRK_<%xC3T62DYff+D0)8J=OHpwe$vPn+0b7P6S&k!*YK{g*q5H>HA22#fOPM~O z{8=rnPoF*&gP8yVL5~mkj3f(y7l*3^JB+`$25?Egz7I)?iqf)uK+TerECOXx7g5q_Y!iJA(EFn`E>+phX7ZQTdt)Nh-QA57k62y#*5?cmPs?u@ zpO8>wujyL_GSb)A*FPdA=HvZ?JpJY3)oF!=!d~~{c(064Pk$P2TZ@qclA6Y6iZL)r z-~0hm!PLa0vBS*7r1jy+tir+%@7~Q27_92@WG&#J0`m@^N#(r@H^EW)_*8*l@DwE` zx^;|)2W;tr4ob^ApyXd)d%`!qZT?xOWR|#OWF%|e&Lk~exoyX;g&}np7Z-#aF;k%1 zfv*U6T(cjQ#^uXsL3#i=rzR&CH1+vJB_s%F2=@)392ORaeLVcAVY)3bAiV|n zy^Zo;NQqc@865h?2OOvGk_4mYP2n3~KK!zn z;IC_H;uaFx$99;Xe`MHp8_@6FT=}*Mkluy^lWt<*747j5Wa&Vm1n$*52 z@`xCNewEi++UWobVTQFUXcSPk#U&)dm?gmjI4(^#p&{@(x|g1gZgzH-#CH&TJ^p<= zD4xJTlICJz26XQPN)3(pOndS=@E!J2Ek)-1B_tOTa`H1I$AN4>)kG)jUAc1C-@muN z-v`|W$X90ZLna?hUS)Pu$DNN8jkxeV$ig=A!mFw(A7B%p5NHC3!iPepdou1MB=n)B zMNH$qAH~EJxqR*d@m73BMS>TBo0@vaKLSX_v*Zl1GNbkW=Dk+&p+hDIZf1RMd_UkT zV>?piy+~jD>XpTO@rE&BJ)@G6La4s<_JVa&m2;SA~4wYpv#k*KCgNzr?c)6z~MDaVIvs)#YEVKu{3 z9NsVHi49hE2<>1mX!-ImsJ800!LL$XGC{i;zG&8PXJcdI9R0F8R15-FZ{13ZL1G_4 zZbU{}US8&4XZP`XB^pq71u!$NC8PT@FvfB3^sdi8PMEhJK76>scS}Y%sy>%Fc&e*W|gKe4e)Xqx=m%;MtWCS-Lp zIXF3|XJ)i7Uc7eo>YH^N1%-M5sF6y~p20z0@UUiPBHq7UL`6j%9c5Cw0s{j<{@@lL zwV46Wl$Mpf)X95{V}xzT_N=eWzx#-0Ih;wn3kUh7UP;wIjut1_Mnuoh&<8CL7*K5u z4WtT5@cu}$=({qWJVAB!^73M0X7-@e)zsWiMMcHJVyL6T#mV_JEp2ReR?K(POW81g za&i(cned}IaDWM{v6NKB)2E7xif@7Ukp3ncAC#JTd2Jy1f?=eVM-;2X@}43gED-2? z{1c2hNg9~KQQm0xlI_EHaCsMVbp35!T?H^g(*~{?ygIHGfD~!IuC8uq$RNHn(47qg zG9VwC%Tl*_mc+L9#>Uku*LQx3tvMQN#l}X%s*)VbK3fC#^oD_->v%=Q}e$PtZ;_!Umzrpn3tkFi|K$ zckAmT@Js}dFC1QT_1j3bEH7_%MMaX@vlW0FL>go>rEnI42q0`3iQZ-O#M?0kh(@UC zF$oDlvcqU9ABx%=s`$;m$<2At;7A@4yn0EIJG>){!FBv&_5Pb1C*P+^_y6=I)a;0e z_t?2}QJjl1o=_#QUo(@FXO)$8b#z*j#Jj;EY6OsMUzr;?x~c;dJ6PrI>Fm6Wq~R-d zh>VmJf{Z*#Te76K1D_EZx1n;kaQYLw*jzw>LzftL8q5l!+9#0jSRY7@YDkg>NtD&* zRpUp_PyT)u|KkO)Ge2yXejxwrvh{fENm?atNyAgZ52kFu6M$ShP4Xf$Ge@sP&0z{# z=^qe)j&iulJ8@;HvZ`tmRK(cW7&zAZ_wS?3pD=5slX7=Z@ho?oc#Dg{@+7D}1uq=I zc6z!aMVC;4KubG)yT&IbK%mEC|FpHup_-YSmt3vc4kBUrAPcr5MA@mk-j>tzxss$BhwrCr%WsEzh{M z+U0ERkqHeJ)9Wyf-23%PtFNY!R8vPFQ)Ovl>qM2#u<;kWf5;mN<@l2wWW%Tih z4|aiF-kghR+qL0? z^GHrkew>#V%A9V|HEc7eku^@vWGFDWzcQhKI&qg-5Ng!+d%8i=AXp);`#opczaMhS z?Bt}&`Y&6^6{k<12Gwl59|Ajo2e2`o0BT#3f!@g->b3Gc+0So>{a!2+cT+YyJNv>Z zC=9?bepwH~J-_t|>Yq4#*xxMxsaBt_BqxVLHY6nE@VwTo7#?jOBfp)cE}u120tg!H ztqL#V@w@2l0DQM?*%})!dC#?WbR2b+had)i;NI8KZ^56Os-p_-PX4`Kg(i zy_&4g*e+kVaHy(JElKQl_}7`4qZ^Krfp06;cb+=?M)vLc5WCbM;MqbMSdkQgpNwd0 z7#JE^50d$wSvJfLqZ54m`t?JNGFS!BVphap$&tHNUZ@V<$cPtro`#+r>Yg8h#D*NO z6t)x*7dLZ0Pw&D7ITv0+EH%{EM_41tF|rlf4M{kSq2YphrPimVuTK!hYm-`2UXlIhM<~}RN;WEbH@6iIr7+=>C(kE| zIez)@0zd#2x0Wnn0MPU9URo-7K0dxxt5uL|qV~gHNI$q%bRi249N&;#SGDfLlmTQ1 z`vXcBu=oLb`g2~^7ouZgUK&*ox3}B<`TY}7BQ7qUC}MjPbh@(g{lvsXfB$*{l^M=* zoSWMNG9)xvNUpw{YXM%e`S5LkGR3X}a`0$n&vrix$5SXtfPLuhQR1Kua=p-moDJ|T zpWe9%Tz`AVZZLnie@MY7g@+Fvy4oDg4F?1T1qC{b;E)h0*KhIYUXVbj~Q#_nnFmov$RBpO-M}i1nk(_T;~@N`2`eH z+p%*9(x$O7yBh5&Ua?P^uK9i6P%?3^_k)9>rPyGt(6J#K3{?C2g4WN?%|)gwF8&2p zw!60%#|=$$7vUctKgP^9fll=O^OII4sib7(*0vqd(b2ejkSkPlbTDO%&(FhUC1<&Y zUTR`uVrXcHmRIMhv9X4Zj{EAu7?? zYU%rt5ucs7YXm-3J>ft3gaJm0rIZD!%>31nF?UyG^Na@F1C6k`jZH& zZvs#1_JEc@>(wFU%fCsVck{tLkd&N^>;Nl_or%d01R!`F+!7*3>(V8v6N`q`K0_Zq z_*3l@ni!#^*nSi$jkvtUn_JtqYjGY<6mv9oaS`^bfslnArj)mUBLk^`m&SVHZ78xW zc3wbGkoxj+KLdwj!04W$bDopgUKTE2elD&Ag@wKKC0SEkX1*F39}mv)4SEfJ{yC2l}oLE;B;lJ@*%bLC1OY9kyjJ5_5!gM*!2Tx_hYG&D7r z7ZzqwSFumH1zGRkg>LhPC=>{&JQ(_fCBd;hZT zJ?=+c9Ri2v^yDN^%@&XyfDvlZ%Fmxitl;+OYH8Wa_9QDy(zah1Z;7Ojdp0*WCkUjd z^ngul$3PO>0B`}a!5M=%2b@4o1DZpcF%h6c`6uXn28$nCTHxlQpk&(re*Mo00tPl4 ztG%0RR83go;D$XoYZMgUyE0m^pu52AA@rc`SLwkaU|8iv&o=q_a~Xtl{pVR(Uq?r; znwh!cl)y%KrlIc;fS@urRwW`Hmj>HA7i;87&R#n)C>QDsx+*}#xOR`ftK#+1xJ zPY+v3@9^-W2ID-PY}_*?y%2FvlEe)wC#NM8w8k9_)bhJ2m@I5;E@^31xy?U9LEuB4 zV-_^7FLj&%tSPo1VF8aH<^y*OgjY1CPoPSufS-rMsR}?vBr!QU8b$sIngmE3n!Q+$ zF_nl|f}3l+J}9~toy51{N=7yld;4nl#c@_kfm}#SG{HwWIGo37cN*I~f!vK)NlerO z=?rybVcXcB^_7{{gaV}frJY7u{Xt3uf*MT^l~L;N-@gGdot&Mo3(#Rr&|8~^vq-<+ z;^RTyXfi*^!Lft#J%S`RICwALhxhMa6&KrCS-o}`12W!j--5INxu*lBpRoY2@qpTG zt*sjiV>=8Ph|ApOsCNbn$M)Dwj6t}5K7$cpcD*)RI{8x9`|t-uCdWHELi_XQv|yl~I*fP-y5u0f8H!5OMa13yv z1d9%Z{Bo97+au|9rKjn8ISz}id7rs0aI(Ye_uH90Y=vXC@xiedO4J5_dTyk#fB5r| z)eXg*?esn1_<+WbqK@PBEYdf<)|QS)NhOhxAbB~?*9KB^fN@jY^hrEvtpz0?)D$l2 zjF&-@q+3{<8F)<2!-q%tS#2QZBa0#k0h@8uj+PvTM1~S=EdiAKiW%|SOfBm{^7 zTUaUFddP)~JuaZ?U<;#3JnG^*kLIr78?qQS!9$8&+0dP&FLn z+<_Lr%nAw$8W|Za4a!R-SGmshzk2m5)=Yp;uQ+7Gn?MJ7d;bCdNx;Z~yYj%<8-j%b z=xZ~Z5OzZ{)+-4k(G@s(vIvS1|CRj1$dc01$wGs^uwh19ublGR)%n@QxN3?L zjx&Q&hikZ0pb$VN`NLD|-*;&ucZZ<=hS5PtQ%zO1wYmA&$&)cUmdbQ!RbUx7WKLmY zD~W)-Pvzv|@?=o$>u}{de4NOg`&n7}OUcQ0T}LDBB9ZLIZiMViE$=l#3lP+N=OQ?$ z;o(i300nQ6L~k5A|A?$C9%^!9P=<7(c7teuc9xK{`IlFr$_H6cMMXsPR(h61MInea z-QC4nQTzt0EUyOF|nw6ru`aA*#^#-5<<|6mT z9gDvH^THMI(MjFAAD5fUZy#n#@Rz;3k3u>^Szoe$USTAb%5AY}#0I(~*oOhEv!Nl2 zJQpq+Nf?SYiWsP1LZ^*(%)@@GB)LC)U7Wn(alhX6>78uW%?Tc)6eNp`LtQ2&ZMIUb+#k9hKA5|SutrO}lu zYny*Ot0pd<;W{k(+4z&*#ksjNO*6DdQtrO6e4e`0y&bW*iJOQV@kXZz*o+NC5#4_m z?**5Vww4ySQ>nG}^M-~pTwJp_0N|&AZ>8bT;_GN_y>$6`S-~En{#M-lnOR&+!xkME=LQW1t~cAk z(g#WF#QYxLCMOj_cCZBo1(CBzi6KDG{)~-|_NV$XR4zJi;R#Y3U7}Z97&!2Q8N?&K zb(QBTrcBU)Fi`|3ro&hk;?{wJ4XTcbVg{HudiB23m2j#^fX~Rt%-r0Wfkv%s1%04H z(ZPX)k-G8afcV7$H_>=waGpQ~qn;M*J$Dx1K;ZV6)ce?u4F?!t_Yb@%VUnfw@}ZdH zxajUg+;DisZ+iNX;DgzKp%pD=8Zt+*ilvkh_RE}VNvmzQUOj!f%gAv_n$T&%BM9Zy zef`&QV*gYQI!RaFwciK7cBTgaG$2a^^4qe1+%r;s1AG`_b-a8Ftl-iv|B7W_u0Td# z_oQQ1ZFH9&zoXnTqn47EMn+l%S;?@~F&S)jQz0{R6@nPFT1S4Ge}_TUD7#mJNo7K$_u= z(BmUNiXDOt{4~jN-NL|?7B6&%U{Azkk1gsh6xH9^x!1ir^aqTFgM(7=S4l`PAWW}0 zAg(>0hoL1BtzKKq`qbGuMy`yo3Z8jIGQ5K-GC7%f{v@TEOzWSK4;DYF-Rj%gLRSx={yis@Haw8l8_Wu1y;iBHsU3lV zas48Rm9X4F0b%cYbNVDSb%iJ7hg8(nl}KQzA3e9TRLCPuPY6mw?DpE&d-Hn>nn$o^ z)bhahlNTpUP}gz4V)|^|Jw02~?bV4XDMptr9Y|KghX|PVkGYAK9t0x5fMZF;N3-1T7HDVm$1 z&Py-DNRqa&u+Wpc7SdGXJayN%M^3UUBCcOT|M_j_b9X}q&fUH9H88l-D}Z6IxXGpG zzk;@VxYArfWhV$g$;oX~PL{$9g0-juQEqn#nn_^m9vuUN;`UJA+2TecP?+r8ZI13_Aqt^VR#!(+JaW?j z5}F53OG^tQ9o>_sPsbmn+_|&e%d*{VP$*Qfps47`Zhu_lDti@XFzl~8yrZs?IYlBa zCT3w}g=EKfC4Uk{G3ux~YIJd7;Q_NW?hSd=NB7-#;lLfU+>pIpUR9K~{paNG~4h)enp}7Rj3uOY=;1<__7UJ#OJ-w8M?-6azg7UZchkdG9ue`hR%DN|KECV&&+as#N*UirZT`QA}ml!AK zy`+oi1u9@oMs+)c}*Jo0E3Fd>fr&^kt)|SNC0`uvk(=W2J zCemtazip#Tw+%Y`I_{KS_l1alk=kzqKdFvoSy#nr@VYaMaRui{Dm@H-Zpq%=6}pe< z=SgAV1GKbmUq6Me>TW_Wm>14O4|h?kATT6kl38z&8R;9>1v8XCYrC8(Gi{RpF7r)< z1^i#`4h{Z|xXMVPR6jAVc8~v(I0@K0`b(+ScEa8_ql9 z)eC!kgL#%~Lp=_!mh8GGi~ zGe4H2&MeSC8{E?Ob5pkF#>VfE;vT9migg`_TN_S8T&ogvA$Zix+Y2v+woGYhYwwq? zLj?vPnI&L6pN+Fm#1CeN=4ks8!(A&3)c6Y)98jL@f@C|@k_a|fuoRe}dGrV#@buJF z*q%!Dzh_@5Ab!U5#(EEeCIz(hkcJx3Vhu@ruokuk;UyK%cm7F9K_y1H5*YP`{XKBhP`x!xiNsd?V; z4>+9;1s_`Unh4AN`=fB|_4M?rJ(hPp>)Dd2f2fUYTS0mT)ul@OTL1~nNQ2y0Gp1u{ zdbU?{ofL06;zvet#s72jXz+5%{7BS(NB;H2O^ejI#>3}%~#N&TbSBq<0(DoBD5E%d;EynCngMtvR# zaZyUQ!Xmt|(1pOa1qY+8gSWrh#5QQ4Vi=0byWme!gzesW#m7fxK3S_?BX&PcD2QSChQkcM~c zitdWs^P0xO{hg$ryj@-tJd)UM9C2c26%h&>h6YZNz{dA5G4WYOhCzk9BS_;Brd#J# zWi}j<_p#-?$Bs#$nSvdDr*?Z=8z45XeB-B2G&5L*JOCQhfW*Lwkuu(4SOKmZ((^kQR2oI(dsU!g-YBoL8>V$gGptN z^*un;VPsm+hwVL5<_i=6QPkw3ePFtlZ3LpSyxG{0MuudZ`wp!ezc)-{Et4>=*$3yNHMo!=4O3vu2 zActJJQU+BT>SC?x@;bmLsG%kkA$T?aY;2$$R*83%)%`a8e(n|ph5AQRp@idY<8^^L zVRUkV)y=5;Z%TX+6c;W~wM*UG6wR3cRZ+2HhG6eB>@Fc@Ei5Zbh!>F40ziSZaNxj) z%;?0CXa7v`h*^xf0i)S}riePrkOaB=T^)$ryP^y>pLJhdhAs`)f!Ey{H;Y9?HUg3W zyHh#B>c&Q!MsWCNn9bMyas%lc6&_iu5&C%1l~lN=jjpOl9|q(k-?L|*K;@o|$4}}T zSojK;-HK+9ZEYExBNMpb^Sg(rW1Fqm!8IjR{e|PczkhJE8)$I&!yJ5%3cO8!MS`z` z{8?Dj;C+0qi}qH2Fue*ii#>&-QRU5(EOhe|6Mia)Xvd>7qFY|eX@G9y#0A@v&=ZLg*VgE%7&&4cKr+?$ za8OSyp64^r)xEz%enb4yg$r-un7pb}`fNm|#%p?e=_oBNUkF-STH=?nZ>!fpdZFbC zl-v#|58wfT76JH{`v**ndcSRJkE<#xkLz6nX@%THE8v=EK-MYjGf`}uos&UlIU1f+ zI=P2ueKn6q*reYozqNyH)p-@5y}n*S>OC!+%fwr9&M0n9PK+N+Kx2tWKSdG15$Uxg zOHQZ;Ab}UR{PF80Ke`9rzrPh1k9On8_t#@*Yyh6!=V@WfLGS(z%@gO-M-#&OxXH}G~fQ?6af=+bIAz_+~Ct7tPOK}5I+zu zEnC~N+g#*}T>jjBlugN(6x2Hy_X*Oo=#`#?kWV|6txj9RB}zOPYnG?uE=)4dgH~p% z#-9qqe(v1Ch?a>oj>(DfN4slgU4Db^p_V_YmNc5|Pj&EM5%f)Tr0cW{SBU+O@+s3Uh!8-VA25sC>g~xuj4;X8L5lkN%y@=HZF8}vv z!+;|`bQPm$x;OWMNLBdgL><|6<1*t))z^B}gK_K4r{|xCdXC(1%E?Zkl^(WKj z@>bjcW`U!lqU>Ng0$(@XqhP*I)!g1bofz%{;|#(A^D?!Rs1u7rlOX>VwJ;8K)!DfK zl$PT>rEmEo&_1I4J=jTZQDVX%+RA)5l>`VL`=r=MkA~BgC{bLEi-MqOQP2qxvEJD} zQ$+J>iP&&8Gd1`Zen<8H4$(ODbp7Xocr_4#@u+o-bME`%vZ3ovX1+T zMKzJ_*;AXYQrTt_Jg%jRAgc?x6KW zxDC#Hzt-N`nk4Hh!!q;f{riQX9pOk}$2mE*baf>_;u{~uR5YRpqf-Z`>&kBaw8E?& zVT^ifBdT;;PzNPTxiLonEG$8Lw*1Pc0BNoT8Fv1jF88mUIX#sTvc!)*!upb^ObH)^!5F6X6 zh4?NIH`{FAHX12I-m7)9l0SVKmYY__8hA@uQ)F5B?Vo37L(@FDbUp)t6&w`gST<bFPzrTALBgczRf-u63!x&lj z5}t`&#KedE&A@NAnhoZg218Ip=!19@FSmpY^}Xil8~#aTN1WXwBNJeBkU=C8+t7@& zMIIhIwTV^;;WC*FE5k&)G)l7yT-Vhsx{exto|6(6?`30DA;&2+f+KSQ2^@3}Im`Z|@_6)b#WM)Cmj; za2`1lN+&3F%SWx-z+)?NYKgjmHF8(@~#YyK+qZFDaf zDXB^P@#Uk6hQ<V0T1?>w>C8eaZ!?yJz*l?VE2zeeQNYr z9|i`&j2bg(d;?l1@rxVebkt1oesg2hQ6)%`oQw_;fMuWSKr4u#K#gVCxGEAlltSn(UbqkuAAff8W?*RO z)TaH-z4B)pTVACEy*+r5m50a#R4o|ICfEV^`R6~qOoXo-UIJ0t+jt5&6C)3ufCymK zDu^6miE(lgN^BDm6s#F}fS|h zgV_fSSZ%f$&l6UA2V@8|iEz?j_b^(Ww?HA!#ZUPD8qBEtare{vs3wy52RDF9f<48e z;gQr4ai_s}Y>@@J!sH&ZU6_?U0!x^(a&v9%oxzz4VE->(ye+v>wO)kb5a6?ew6s7Q zgxSJewoZf?>N$j(y-}y4Tc%JfF}^I6po;tlKi+U_29XylzMO!beyz<4r(*S?3|@=3 zzj(0|oPg}zcR7@F0&>dAgj0=_ghj)p!{~_gw>h0D0BFAJNil zYHZ}<;-UjLv^XLlDyqF&s19j#VtuZ2aF7X~hr|IL0#YenN*GD^+YPBnH-5_qQ4d`N zG&;cP+lda`!7%I9K@2KJp=P&-YKi1LLXi@R8@5QaQm~FZNpcwF#NHPWu^~q z0HnGGHW4e0yAKL#LW{I^Pp=o}3!V`Ioo*t8a*O^#0ye)`pBUVf-Ec+1qeqzc!Kp<- zvNAIRDZ7ke3``LZ>-<2^g_4KZ#CAj3Muaj!)){H~!b`&gA1DqL)<&OC8*bs+TI0b| z$7rJ{JpzJ)Xg%@a6yE%B zRj{ta3`rV{YB+A_lZUq&QSWdGgesbuS=$#0ZPmk>YV;wNL`_8{D?9r`XD2nlYm1$_~lW(l4NlP~+CXBr)18jpXnst$Q6mUKd`46j%CWDc`d-t0T z7~uK_2jS{zmK5bYdej`>Ga$?`2N~Kn+3WAPSn6fMfO!n~W={_fHiE60Yl0`gpnz4% z{T3CwT`SSTiJiN4VaTBic~bPuDyS_gc^E_P{2OCqKL74ZF0q_|aoQczme{dQP7*fG zs5K~D0O;dm>C7Umw5ye&%#t*0gy9`51{FOR2NlA++e|yNKh=XcGQxOT>clO!^ikTV z2M+{In-56Y>)<4uJNM%GbCO)yPJm{twY;IvdqXd8Z^ujtiR7H8Pr=_RDBQ!>H!Q8J z*!O(;J0`cVZ5!L_Pq_VX$uc*8JVztgW`p{JpUM)2Bzb^4w+|HKJ!WS8~fUZ@!=}zI}}rhRri1 z`CNi`6b0=lBNaj))z9)DRpj6cS79+yls;NhuMo<~&`|IE!Clo!;XP|9@#Cv<3XVH> z9=u2s;C(gzT5OJC<`(>EK7YxeC;1u4-(lE@|7ZTr zPW}7kRkxBx->tk8`J-*z)8b=OPIoP z{;kERgY@rCH)sZ{8CcLz?0u5iu6T&BKST2e>`Qv>z6G1(88GV z_P?*Gh?Q6{%$jjOdBn%dm*#$x(0@-qWh9TZj7$-G-xp)TI-o|lz((z=ENLbBvEn3a zg<#3@q;DMm-ugs;kD z`Vjx$A;By@r`$(H^DjEf{kwtJJ6?J(?jM(UeJwaOkjwP`!GkCI-`;+_=9eZ!SeMsA zFN;#%=WzJQ3)#DI3vx8)$Iz2MElyJUyKC={Sjuu6>X)l&9=}8VqV4vvi2m1m{w*?J zhU=vej{X*XA^GO~ui^Jkwfy&aL@z7**Kda^HE?NODUL4|A`zRb+u|pDR+;Ko7YZBU zV~WvftSxx+usTCPzrQhs6Hd&8F5PrpI`WJ$)H+fhuNd=f5ld z);)g2OZ1cbr4WsK@zjF0ri$BN@a9teO(Q1i!T6wimk%i_95{aGiu}L3U$b(H3O{+` z7-zHH((Qj&H7nfTos%xD^pNG?{>xgoxlRN&ANudN7YlR$_?L#+JwEgP08gf>9^JvH z9se#_BJfkcxh{R>-*qjQ%0d^zcVE=@;X<33TDD0L-$@2DtY09%gn zb3aqB#ibCg(+L;xX8wL$WC4MHmnZd%uC*+iVMWl;pHRec8hcZ@ zFpyx0J{+vdpS2EO8L!m^8Z|xix)4y@=KA51$wi0!$op5{m_zx1IlxM#MdxFf!Q-Eb zLwtnD1wmzn=K}@qfNA@2!&`7l2Ws zR2sfW>7DH6;)xC^&8^XE0nEQjs{h!+eP+9Hx$qN^MCC-7q||&%`9i0~54Y-df`gr+ z%pD(+I#(D+)nRFjU@-P4&youX!dFi4(s)jUijFU?e$+Oy zrF*OH`@5TB%@rSdi?dMp7$@)3m%ND=1wHOa`WG4J^+u`7c(fcZf$Jyutg{;ltJgw} zbxxV0LQcg}Gp1y@GZakV*fmdbR1`|U?T>rTSN43#ErOX56U!DakDh;6XxwlguD`%W z@Spf1JOW!}A&e&B6Wnh%7Tj<$Zb?0po|70C?{_;9NA_Rt@Ow^n`Oi2On^b2cy(c5vw3nrkIA-9ykY`Dk!@=afE-d`DX4*!H%hT#tB z6@3Zv`;EZ)k9;>hGA>E6_%77!uKwb-6L3iPY`ThRi_y4ZzT<1E6 z?cMLY-nE|fJokM+_j;_GS6kS-r!4Xhclzr+rzA$e60MaU zMzs5;=)%DJtd-1jO)k@^fxOl8CGa-3V{WN#cSd;rfs6HS3MDhcbI9CIE8Q6LOdE3A zn4S0-;42?n@`#30aQ+Ba&y7&^y9yW!NkJ~4s=##UnpZ89oFRO5y02YK|4@2uHGqW* z9|jub0CjBF1v|RmC1zj0L@*;_x$@<&fU?^FVS_2T`|%mb`K9l#!}qRRmk(dWfC`TT zDx*_7>>E+7*d>O1VFezGUK zV=zc7_?u%2rl2jwtPVU#E`3wnO^1#GEKI}+1{-I2%ODt}+`lTPlJZIq_Lsa4Te%A* z_m&%=3!XNLJ<0hV6#Q^Yhd(##Hrs^SYqrKhW>O6F^jy}yiT2mJ!$^Us;{fI>NP*qp zHSACFdAV$j2G;K{*oHKNG@G}6Z?&ukSu<}^3=?x#6Klnd-VW>f3S0PTRm7ti?_zhj zqJ0FmPTf)*G=a-u?0%R8id4S7$`tY$-v5Z{y?0(wzYA_T6#)q7N3Cj6ngPQPI1)m9 z&v3ZS=47cRNxHxT>d!&Wj`&b+4BDzCyKD?RfL>1kE&qHI9eL-r4Z43wb1_lPXKiZ) zAXNSN$X!@t2kKHF5@4N7oogz#uI@$lQmQlm4a%p|?{zQ`nMeSL9HKmY<|Vm96QEG~ zWPURtLCR2>f2Fg$ukAGSL}~wQ0@R31mmlc@v=6V>rgAcF=K(TD^}t~S^cRxtLN{+= zq1A^Q({%2siXnr_Zi|{{33LshIeBvtEc*PYbg0I&XrZ1pJ|Fwg zUcO$6E~k+9cj=0=2i={=AAw$Dj%ZSoTxneL+^mLW`x@@(X?tVYU8r3bJdn)|udsV< zW$fGhMP{_(=UEE7tt(BO}$ zaPtivsqzY@P*mM408IQA_R`mfsXj%Em~V#c9%yvSkF=t-JFYXC$(}ni5PzI^X0ozu zZ`cf$E%=Z!y}WFVH;Xs??PBEEihPfUz8gNj^SPjOomy6|LjSJTTNRqw)U^FD3on{k z*5HUgSM2v@ECYdg4Qhs(DdEl5i=P~0&1?}WOX?%53K>5SsKfX$7$s(pKeykNEdUt` z9R_QwU-@opY3|p(jGALKqHi2FzW&8Yw=5f;LWx>y0*T%wqkWpYzeh zoD#Z+4JLO>Ilif*Xuy6GWi89{D3Dt93Ty4hhVcmLq+%Rs0iXpSNZIxFCaqt?D6+9* z58%Z;Xv>0{RTrch2E1LYE%lzEQb> zw?gKR(};%?DDWR7du-%nCGE7ZCriRZ0((v#*x+@rmV9#jYiOeKd1%As!+=dv<>pVf zxp2fcDmSkH`jvkUJB=WASWmx;Wq~K_XNdiW`=HH ztZwI@j9^I{TvATr~ zb=_)sN6!Uun1NIQBM8d3KhyCSE%S|CCS#G20d+9U-2RMf(cgg^1z7jNo4D(lT_%Mo zDR&{lhZU}MDlzjw!vgH1Z!H09-S~8Z?;OO=vp0AE#T(I(+@6TO+5N8m&ri1{ZLrG( zofU}s*CPPQhwerrta;nZ)SmcuCIHL88sjdoXwaqtXj#)}AoEplxwxe&mKlb;9_WB-DJ9x3!Q4=bsE9W7jPc>B9^E2Hr;f($6 zGtV3}^!E$#N=T^0JG_2~4kd%_$bnGkc$eic(u@af2*!s-mON7YobvT=5yI1n&#Psg z&Jyg8$+={pVnFX+pcvoCd-B`euhHKx8QHJ)stSjK|S`l^sMbe z(d}ls>K5YRBZRvG@v(HKRMsmE0TZaQ24J3x$|D7pjOUu+g4oz+hwkc@!B(!jTI5yS zgi>Sm#YQO|U3(`K6xaS16uyh$(qr)D&D{DmeoJ3o)6-DHWH3J;^vN4Vco3MMNd68b z(T}3zjX^%`BqoM41dp$i1TE#ETK@h_xR87P6zNjON)Wp87e`U`+t9Fg1l;r z{+4qzY-w#lx@Cgt^A{-A&j{F<6oBfUitlHm&1za>Xf~c!78R&G)5fU+ zUnj#J9KScRN<(*jeBp>fsKue@gW8AdOx#d)&(MDSQr#lNb!?iS@TjH{bc2;k0|NMb z%f+L4n?F1sT%zmcn5T~uv^JyRhmXnZIlwK+Y&2f=Eb$kO(6@9*3U7H zJorKUUY#7ZNO)j_y%eV! zxW@E3e7}tfd#k;BvZ{8-2KKz*AA|flUU7HFDLPUaKf+t0c>6y|z3jq;x%`}GowtR5 zxYk8Y7ag)o{+dfPWb+o@U`6I`Q-`PK9i{4Uh+<>=!p-Vx@4_<<C9%P3_xx>Mua zuurUj#lC7S`HYMG_&_-&;TN9}3^o=!_vdM9nBwOkL73D4RFHS<6K-+!^~NbEJHtdP z6KYIoAP#vih9E;98Nb&<$MXzOB0sp288X#22~&RR)wDRRoU5ikQEtz#^7ggdBWU10z0fSVHr zcm={S3QZVedv1JhLHh8&VS+N{D)N*v{YaIJf0{9)AwYoFphT8YCA>>}J$%2X+#My+ zPK*Ttp+Oix>B}HNZTcau&r_~CeCwailLki>a_lKgMO{$Ve}5+kg%;n>Hk(zni59uH zBVl|eYW^QchumA95FDE|^xaA~i2>1hEf{MSV#)0r@f1bDc=!y4cY-0mTdb%v`;10_ zVER1>s7E?j38PghYqh}M7-A**v&UvNiqA2c)SH5EHL};qT}j<-*)NM;mLYK-HBC+! zL+`DEjdLqwRWrjAf0wRI7U8B$Z8#ew#9t|B+^6 z!nM9<*7`XU0J{I+W+wAwgei)q#){E>X>env&O zV`7_z0H!rG$c&rtM(oZZK{iF|q0;9oX|-(^*tDucSkmvI?9qfjy4;bpF*YWSS2IKA zR{A}B@bJVDdy&2OfK+r``WGgJk%1v@B_q{fKtXPdObfRE4V$4lN(u1X?8+_tjdHTf zKW`=>OXV!`Y44yV&nV)v5y8d(Vw0#UX5{D1#`8mYQvWl=GCIf?$S`#RFq-vTLjWSq<#$8^m^2IY(MUez-Lp{sUsw`ql?r)s zdt*o=*pkx!LZgH<0`N%`3p=tBWXjY3zxBgXPWX*eD(vL2>_SBKZ@HdS(Z@tTYsbS_voO2RY#X%SsYlrlEdwzrswlUPb6GMiw5GDLV1HPQj)?9Qu z2(}nh9Rb{L7C>P9Y62qqAMh9TcQLTATP!@Mqa!Rg1b5z=CPFbj_tJ(ZFT$xx)8YS% zi6Xbgj)Vd4yB2(`N$JDR(bX+yb$pPo5hp;>rt!%;X$nOv|FeE%90|{&W1&_Z?i{`` z{PzI~7<-D4rLo(Sl{e;!pRo|k(8tpN4Im81aRQKuK;eIrS@ZLePzX98uP=oSkoAIe z!>kq!0c0Ao#1pQs)Ir!XkhP=z_GSnREPZ4wwvOYn43*r%ktveXf8)3HsbRLy*16jJ>D*rn$si9FFlPhXsDAe#9x}&jzo^c0W@H|RS}IFbgj4d zW!Ndr&xv9@c2y4DOsC7SuyBLu`fX}*h9}rygQY}G+aQBwZ;-RU6vMNvIG)Jb6=S(6 zVHMlEn+@arpUneRB~bO@2x_{FYoxBY5)u&nQ}{30tcMI4vJIN4NdZ#o3Ok&6-oj+4 z;j>c671fNsZA|>s=1Gpe0!c`^!!GI0N|$dQUxcj}?>MFtJu)M; z(5{HPA|XPIBGeV$yr0x8+dB)o?=rif(f?tnZi@P5P`tYtBRQpGO{<|($i~*tegeL7 zFZc+m5~&DeY`T*mUcagO{ecgOudQ5EX2&$>Q7K>Vw{oCRV%K)@fLK`Yy(&(N;ndN3 z<#<*!4i>GV-T;5tM2WhnB?CfJr? znj^7bIaUCce}@S2!7HZ7SJ_)5H-Qg>iR-=SgM2(eM4C(SZ{Y-Um=;-?`GhMZAnT`t z9J#3~3FOE0XK08~&2-2G9{yeEfyiYfWg%slkU~DUN&`0^SxESt8+=YC3Aqx=7%BNy zk0Q6&jD-)|Km8US4DSF-_~3mpG}-vdmVs^U`tJl=IK@MPHe}dia~SG=JZNp8%zwt4 zPt#($3gCwH#*h1jRkOMB&f5Sc(LtlC*;m?bVWd?VLY=*9-Sy{zKAsiOYPE|^y#Yu* z)sU}8A3;#VB^H+@3m5MSGwcs9d5Qv-5Y9`DT7ABOo3m&K#17u&YwsnhgFji)9urYY zUB*fnbo<(!&99qF0J~4TxWPLBW^P^wQ(nik?%uf5k6gvcqOf+MY;dt=O%+{i?FLLl zvF?1B=+B_0@!Q58r6y;j_h-~3aGI!QV&tWz>_2nY`VAn?jjWG_Ui)((8w4GQIE=-d z&Qjg(;@Wo!HLT}Kh%vw)7mK(Oib01BsQV#cI1+yS(2jlpy}4mQDzAlepuY*^lh9su ziIYevyK#ib&d z>{9r;YK4iOTWa8G)%y?o8>-{}v&sB`Ap^wY2uKg+g@h9suwx?NlLdr^3a~psbObs^ zA^eLKC_a~_lH3a5h0XZF**vabeiW;@;=K2flzG15#gP=ZE>BH%N(AWQ02IdS+AB28 z%>C2kTBBFVDIlVd_(%y>0f7V~i^Vc|ZkaS#h{rPoJekWc=heqe11ZsNYBmy+%oY-o@$lmYz{lR*X&0QjtEV5uxjO;}+6%KPcXii>UCLwc`6IpOWs@UAT zJQ%Q8bTW~^!=7yWNlOHVO0caPDByl)Twe!jCoBRpeaS;uA9zyGFCx+}Ev=qU4j^uI z{wC5765ZJ!_amgH-aK^#vGmo0#p> zveUzJB`Sbtg8`~Ikk5r#;l8)hv;;Wvzs!o^2qVfqt`ABeOKvuH#RtTw4*#PYLRur6 z3K<8X-!392*z7BC#m@eDjb}N1oY6>47{ACK)wQWG8S*Z{1YoKeKER86;_~2=%R^7w zd-V~(+G{fQHoUx1z~w`lsnsL}Ksbz;2QImdxB&-g``{ktk2x~liV z9R@j$2l}gRt7hKT?@jViO7ATr)F^rYVgx+c&!0;aDDjsYrDwaJ3yyI1=H%{Js&n4* zKdy~SMlTe~NnP^=BKFybpI5=h_W}m=kIXQG_VonmyT(m1QOe__jMdp7?#`;eGGEld zP}s+aERs<_YW-R~DD$8-pa%Rr{v0OXQj>B35)PD~z51ZZasdz>dG$MO@7u3dgXjv5 z3R<_dM9$d(0oSSLH7j4vf>K{o1(+#F55@hlW_*K$=iub?hoK50b*R0Y!|+X z)~j~R4?6d>O~ApDe}P?k8#z2lAp>FsI5g(>b$r=Krls`w*Udwla>7lft~Jd zA|v;{bwGnj=Ibq)Tk&pSsB)I?3Mi{X*=Dj7)x>Ace=T8PrbFjjNt=VDF{ByL+&!4l zebP^Xf&;}gpq?fMT`VYfhwGA)z1b6$Ggw8IGb-h)D*X z2mqFekXo>P9RBj9{C;ITv?{@m{mtV~u=Klb23*e}WpYlL{3v92qiUh3GOihmi8{cX zvzhbMa}X#DYnrS6_3XqV^i?@adX7D32O4K2QN*ebL~9A|aiwO7`%fWq(juE1nbrs2 z%EIc!D){vq_th563jk~da-ahx@fgIHI-nQ44mZ6h%bLSuJvFrmq)wHuLwmSmE_9Vh zK|F^scw*=T0_hQ0CvbR@Viu2VDaD zAW@dy|I-a51LBVd>zVr0WE21X&sY2n^8meqfks$`@&!ZEoQJr&z^#{S+1s2lvN+qU0_ZiNJP$Itp~hB1Siv5my&Dr$M6n)W{|rtcS2TRfaRxgI6bGZh5Zf8H3}< z6Y#RYl)$lO-+75;oZkNb2d@Acd1RJLueQ{9Qqq&*37_%VqR#l zqHxbQ>~rxEOKXW9;@Uj;L%SBBh?wVFTu1#`j8 z5VgC9TJ+~&)6v1d=QLJ@UB3zzmVznhGJz?v9bQSWsj>t+Xt2-&`N$v=y8pv`!7=9F=hbBlgb-EY-!`kF9lYwm3wO9K#u+B@cP~l*T zb(mYwhOj>dksL$;m{s8NTpqF=#A4HOCJ0}`)V==DMW;(M{i zNnE#THGCmtlYQV|n3d$3djNu#XeO75C@`>kkbeecNP#TY>Did?dzLm+xr6uBvElIT z@agueyYKwhc)l`#y`IU0MRW@YPC&*D@|gI=im#FXH~pfvHJu(o3z3MBfPyQO+o(Ss z;;k80Zx5o|o$xW>y51BEHG&icS|-FmJOo``>eoYKX|EUs2vNN*7D>NoScamB>525!uKsWG<*0uQvYRvkWQdHxPB`f%nX+ zB^*o8tSW_ytS3|ew#*CpuMaxr%tTs3$0t>1XCL&($4EFOy4kb%JLIx3(|dsUrm*t& zYaKO2F~SxhX$P_jCr<@bq?i5~nsgO}k2!*xAkLp`B-N?a*6jQw#tr5Qp&I)oI+~70 zH{KhKY%W1YgcgHIX6&|53TmQZC8fHg(5 z?q9;FqqMlR@7#Ix`nL~pY5P3rkD)8Z1IRj9c+!wx5am##s%QxHLrf)~^-jB&XV!2b|a8+AZCmn8E`HFR3^~+ur<)`NvoBJ z>X5RK&WR@Vcu=Ss6GB&*d@Pn;BkHQ+M;SIvENq1nSyI|zj<+99+?Axc;i|`RF@flW zA2cdpx?pG8A?@BIM|O}Zwyb2&D$CbUJV@^L6MsnUC{WejR?P{Iw-oKW`#2k|Ich|} z9k{y9A9J8sY%A-^+WJOFdE^z|EnYU}DO!2}o`{$da2tYa`YeO|p-=)&lmr%53!I7F zHWx45CPNv%+`t*6kMDXsKxmAD&2bg8Ty;vC1zT)LtakG+b(GA{Rd>V0$D7*h8`|uO ze~JyH4zmyZ-*ygrdNTZ&@vN8gHXk-c@_IY(8?qR^Ah@03t3Mga!J-;JB? zoNg3sAUreMq~kfY+AFKNf}@_5O9h&O@6`T0$O?TpTH3JlL-f1Fj2|yovj^FT%T%JR z=UM{fYnW9;^EaDUNE-!Nq#G1zBqSuzwQ7Iv0f^J;mW&+-%p#-@oYftOWWN8qXZrq@ zL7)skm;xNj1A%U{pzH5fZ4J55y-9SIEFpkVaG@v%>z+R)S$&{Z==F2!I9u>MotOKk zVqaJD^r89Vf>goHFnsn9xofw7Cjc|ACQgMMKMLC)wD09hJb(nSuy%t1^u{0Jae3Wh z>Y}e5%ynCFvDz|ESx_wPE_LD6Nztpfl9G!}>A4sLPso{%Cw<5~d*g60ZDk%_hNZZw=4fp-Qsm>BZZ!0Guf;By&pYm>pr@< z{Euk;zNzL3vriyU15U=uc+amwwSh2HgnbRUMC2cL_DQj8d~Bl}7tq~B^5()l-@1oc zf04GJBJ=*keYEV2CL-Cm!O<;YJZp}umDy^5{b?pE`6{j-PG{H$MceETR}{+>g2j6G;eKGU(^wlQUXAwYAJt%Y z^MMnrFP;jkGRE)W!+8L$HQf1aWUzV`*`zFp^^Z!(Zv?c~fSv-9GYMQjbo)Jqyoynu z0%d=^aA)l`g#9t-rmmI^(IHwE?K-av3a zZ*R_Q=s4Fp&x$L-Po=#~KodWs`6M{s3v#Q|y6>v45IKm9X$WQ0RJbMz4pG8)VNwE9OI-fB>l zrP12PGx9Zal7QUO7#woHzJhZqD*zc0uVw;R%4mHGiKN#S-G(FL89I-&7B%8NhXTC} zi0)BeWV-@GPo(wejTk6Ipfa_$6GJ_oJ|%JRYw$5S-V7HNP+4Z&%#ahgpv0exsQxJ!CU9> z>HE7;)?~*3v+G^cB^PqHS$ICuBv3_u1&-6T6NjY zvU5SH>cwabNW!U53!t_xNUz2IegUi~B45bZP`)y>)aJ$LKHj=j_5eG3`0nNa8{eYC zn0$sTN=7tp6_%O=XS=O)Lr#GL|2?kHJRgUm=X{X!F^Y9nI7RHIJ5sEUL`vf}P9b-u z{N?`X|1d*c(}v%I{&0(%`2cL~-W2llw#RGYafSTr7 zqg7mu(n%>T(etOCk^6xPb-kwT;u~>j3!jlq$Jl|QN+G@TQrs~XHOs#&NrM4ML;tdE zTwSfzuY0F{FnNS8;24ge$c#<^|ByN#X&FfV^;c&HFH5t`6~K=!+o&9VH9jbLA95tJ zpCO#w`UB|Lb>8v>JBgrV>hi46D$e5fY5(DQW~fylEr10RN zg_zS)6^h)N*R9!6DGfL)Qvjh|LTNwlMR7;S#m2|?k7%bsvnHsDpf~nN+|iWk4x~Zg zV%XCZ4uJ$l`r~kimX+`t=pCCwbtgX9T=+Gj+P>zwJ2(PI^wvQq_c}AP2LxlpA`##( zz}iT3nY?*#y8V;*Zu!33KGsE%LCYMguycllI851CART$hNjF?P&4zgLRpTUbD(3n# zWiz!J1$Ta=9+AR$%u`tw?f$b$VFI0gdJhr-HO&333Z9^wP#+q3toK5O&XwSQWV#EN z9Ah8C!X^($Bbw(K*(zJ7t=I0LJ;NKwP(dq~Gh$z0OYPt3kvvEH3xnazaG z^NLV@Vp75XDC$^s?T3KY^QWGJ$41i=8z_+=XD_epMi3Vzs2i+|cky79@m>$cLEa7U z{<&#$#Q?5uTDH?zD3B)N>_hGjt&bPPqlqlgZ3aFhp8%P93`J+08B~X04t&`O55jX8 zQEH07`^7IUUk|*al2Prh1L9T;f5V(tK=3rmJK*)8f;zTKjQ`=Qp%ZOtKI>GVxV(v_ zkeDx`?MeyC*ko0?7!4?n(zz#C$A`p`4f;&<3>tCyZ5AkpBdAEXIt%olJJLd=`T-^K z=CUtoKf2TDvH+f)6*NCo*^OXL2@(rX)n4;Lx??k2Q4=f#9ZkV-h4OEM*Me-C3B)cp z05{*O8fF{%?T8lU@fE!pbo2}vyUI&Ic{Ou-pe2tFHO5JZWaJx8+jD*nR7oX6x5$%a?N7r7u~(>Wi02%$hGC!N&LIdT8N>< znF$Lr!rb6!ELH`QmQE^ZX$8{ze55GGu&7knah2wHp0P%=%XeNYaSB`p90p!Yhtb*R z*d6FYE?!4XTj*!)64N91dbR@-bmxOQJ<9kb;i{DR7e=>>Gj4>i*vUeqoZUSD5~vsI z5m4M7Gd$sajPQijJ!NEXYeLTo;>a*Em7ak`fJ=gASBcS~2UgXy0ut{a*jB?tzWWe{ zs+f>=z&#vN-~%Bj6>Ve$8FU?b~5K+zJc=%SZmX%p(@ru~DgIg4P0d z`>7yXC<&mIwf{%f(-oR(Yd|R*cS)~n_SJ(#2OZkkBONdMlAM9gAbbxbR@nYirYrzN zd%aTig=`&;3xSjRRy^vVDuX$gH01&8#!Qo*7cet>KtWL!sj~2u3JYo>8!zD+bs1Bz zGhXY$1QnbwVpeS&Ux92~3(H$M@d7q%Xre$ce2g7}I)a2Bb~CWlsGZHt!=8Vo5+L`; z@T93fFgA0h{>+1U)HEl%QZ(-=YGp)d@T>dpMgnD{{M5rR_VK39=dTZ66bD%HKVpFT z(nl&?fyAVX#qQQ!d9$lf5W@udA`Hj%I6-R3@9`L@66n#$E+{B_hc}2vS{l+6Lg3V3 zm#%BQM>abUhliMzrf(4&JP2dSMH7Lx$5xd&PxQ z&!H)*hp`f*+*0k(Ry0V&fo>)x#O#5*aWj0Fh_Y`$rkqr)lnlaXM?(GW9c01tq+goq zMw|{i*SO8TumuMvxxxPNhJ81ztKy}uyYX>8LVop(rzEltZ zGzsbE=msfkw-OwGNEN1dJ70hDO1SmlKq2*X5~4bgR1!iKUs#gW5e~nrrM|FPO>R z^#T9#<&v+w)KLKAZUg@2xKr>8M)%X`@*rT2(5dr0Xv(F0$S!2A3KjqyhM}gONo3ed z$0lETs}%|4__P9r$F|xvf{Pc=;>dEJ6r~p5Q}v)Bm{#=%O&=BD{0v*A^{1XL? z>k<&BWCbcIbAQz>*azS1X&W@(=D#Bf@Fzm4C(l_yg~?fXAfIY!0u|=lZ}O?zqtU** z`chNft@}wE-xk*`xr#i<41Vn%JcWic=+vR3rB#JCE~p)3Zy%kwJkp!QW>ixdl?tLR zRzUrG#;q9DwpCkil!UNgu@kMLN!x2*MD?Zef4>+xt($tOCt9R(i@uXT6u52hrjnSJ z^M3R8Ux_2D00wjY6(Y12JP!l21NF{S(+ivZK)G)6OhPp(dHVJ3J0lTpoJ}{@OECFK zL+p>7-V1Yl+@R{?)y2iD@ie_MioH0Iu!fZWa7 z#W1q~Z2+esH9)>dnca(kHCN79cdL*o&j2Bw>X)JpVMu9kv7d`z7Bj#;y>8k0PrJjA z)~8KD#cYnuPXU$&soC_d_jW#yY&H4rj*Hwhn&|rnJn@7Dx!29LBR3ln`Vv~Sl+rtq zloE&Q5&l+{3H$&6Z&JX%msukk1kmT7gstI>=k+WufbR%c8_P+CxZ~@>^FCZ%&{Y9B zHmVC3=iJI2abZ*E0>zhG^OzvNDV_6)wZ*xse$<;oI}qGo*M90e(#hn(Mp8zviMj8( z>9sawRWG*H92#<332aN(*Ss9|UJc|+-5^R3)CU`%YA0LtHdHcpzym;z3Y(-8tT`aB z?I3Z|dq+X0dV)U1aq+>09-^*fRPZ{d!iRz))UX)q+L92cl7+G=!jpf|KdMcBgmG_6zVG z;KlLqjG}`Bpt6t{H*+mm624EB2S*m5((qP+zr6zQG!!%bwnouS&>#RUB40*dLhdQt zA#-<=9&#o&4D@pGWXPhyyEr0fs}4>_{LXghwXrCv8a(@RcPmF++pzaro$sY*n3QKH zIBZxd&Wc=A3^TABevxuY#K^;@Ai||U<7sq4-b(PP#yer=LR`GEzKR;YPh^KWWRAw% zl-c-ZGCjMPduwVt{jT7~gOd&%6Luw4gCK0e)cD4bW8z{#OWz8p<~{n%grzsFNhVHA2pfgl+N5^X{%%+?=HP`8!vF{ z_r9LiB`P>s%YdvHswCJmp@vKED1t&qiO+RoUhnOzBW4|1E$ZFZ$-2>d7l~0R=zIrp zGAZNCX$%=_48<)jWlrgItv=pv{&SX}GZ&PZaF%kP4@kvfs#V+1tU~+D9`v(JK~qhl zlggO@>BH@Ie=3;zkL~lQES5Ns9PND1PCK*h*7#m2bN)VNGSEXpf_;8uE%*K=;}4Pc zTXJ>BYttgg#Jf1^7Rj~KmFLLh$@)tSEh|g#_@?rtU@3VHzX~9?p^7@j+PGPNxDQZR zAZ!d4HBNwI!jg{wrGx-$BjjLBC-`cL1m7Rk$4*;K&U~O2t}Tj?uT+OnNI%f3$3&2Qv5xLy5s|Y>r0|V7t|^=Hlvek1 zM(7O*o6pKV-*iT0;HXk0(;IT=Hw1I(N;e6I**~_28@8gu_R({iTEq+2M_;6Viad4! zN{-Tnc-w-#gYFZ-Wl&;z2 zI!DF^$8rIQr9=x}^gyQq@wGYEZwpKyf~Enx=e9npJu`6R0{0z3tut?BTOerpQOSkY zPOUrLo~oDn@yln8a(hw2Y&&)JcsZ4QW@6F3m`H0`Ymj;^yy**m0SSE!)@pR` zaa{6yTH&wjV^TKLs5 zf2tgoM>VFWd$}Gmj*`?do0o^D_}_I|ZYTfoGzQ9;yY2q^&YqDvsrO&ayit6n=j!;& zWcMNM!$i%x+ZFyS`E0ELGGs9-q~Z@*v)_+Y66PbTeo#!Iq_K$Khfd#HFgBE{V#!+Q%n}Gt{H6I#TmZQfls!T10B2_Oy?jVy8r;$3v z&6jR>gYHYl4F0!v)BJAy=d*`LTLCNcYoCG+xhKem2Vlqu}APju6~XERxExw$&;{ng-& znF&evQ4?eO&gx6I6sm9vI!@dBFD@q9TbFZVjY>RSKh`!9@BL}V4jiXNYk)mOrq zSx?i;W%fYVBy{Z#0-^<7_^;euymfjZ95q}g^L64yq3X`}h))J46$*-pbs!Vj@Tw*TGS$8$jyIL3j1v16;bdx!F%<^v&_8_;@S^i6-XdbV9W{ON}yq;~)gxP9k| ze@snQN_Ge3?A6}Z=;sIKHMZ2grCnSXh}7sf=pQy$@LReP10mt3pXFQhWG?7f0P8u+ zFV-`<7l(-+$`<#bKRwO}y&j-rYGV;_oR8jPt9oT$+_KXk*NSOTb@!1j@ZhV3xZDl{j(!mU%*2Eyc^)mtSXQ= z9WFZ6gWGKq)fgyI5YFRHe}0c-=Vi0L`m*)j!kIR@%IYB>;|14G(E;?_I9mN1hp4^%D%GR2dFf2Z(f%3%G93a%6)49AtfPR%US}F_YKc3J~vC z$Qz)|a|NsixDLrX&HaB?g|(l1DSA>-JoM#|w*(@*9_<*lfOH->H9A z*Gd@6XB+EM)fKS2OOvh3GE`(D54IP$J~%Yx3iRS1KUoc>9HKY?oe*Lcu03O+zWJTf z(Ni+>2U+*5%a=jHVzqQ0Wc*m_4fEODGwoc-6bTVTCic0$(s^H%RN7~_@N7Yv6Ml%O z37UJcgJr;gk6s~39!6}cfl2kF0;+Tg3JQAmpv%_dp&q^8wLdr6GwpY8b$li7rtK1W zcLiBt&1sHPABK!p;d&ynXIxv=XlxkK@ntvXf*xuWbEP9BsvL6Ow=%j^U!$kE%><3oZ|ToXJ>j!KypSMN0-; zF{hs{NE?8x2OXo4#Sf^~dz>X%{HRPKcTMl|=92)I;C(C;hlIT_vQkyfk+1Q@Ct2@& zb<9+l3u4eHUh+inyzIvoQ4a<5=c_?wA~IQ;rQ4)?LR@C9RgfjXqn$Xl$w()}3N< zCLC8KzH;@ss^R@7U3VAY?WvqU1-4hG#hyd%d~ZqC<}xV5ucK6`JY6UhZ@-SAUQPjxAyqOqg?<+9y(dDYXkNEqH0k0=QQZ3PM)>F&8!s6v7ZVv9B)_}s zgQW#^4Y8VQy05~DJv`1epKJg zQkwitf|A)59uUXaBwWsCdnn%{*KtCSYl^x~xUE9rgzQA;MIzP?ckw^vHB+|x>bnwV zfd|D`soSnBTtlIH3!Uf4`Y(@{Wxx~)(pPf!SqdCb>xM{Ucx{gCv{nm2n*=_7h-kC< zB>#XcnrU0=vstv{FLj6qRnSh559iv6NCpFP!Etj z!`#<-r&|n~XfS}i2NpMG3BUr%B&3xp=kdS#NAUUs4`(5AbcjBg{^=9>|D^WK@Glcd z=jmoseWFrSY4xLds$%(ABt@9UO2s%097<%!ilL~vu67iKN*RJydlnTElh)hYx!BiF z48GidL3vOrb0Sg4hi+>|ebSxtZlel)`J>zTJLErZO;Y%Qn|FR;VT2JJy?2YO6QDmi z-_pJoQ%$l?*k@K%DB+qs99`m{;>?FGk0ax$pih#tddo*`jtm!INBRj4(cmDx+`Mz2 zw}IaR`S?RwSi!Ga^3PP|Ibbmt_0H(C38r2r1O>-W!BND;o2~ogqmY-9j%=p)_Zzuc z3%+s(m27Zm`K37kG#Eu5YU!DS0#p5n28GJD36*(#aH<0~e_&Yr({1tHdqMhSUE)MM zdHHmR6+yNRGBa7or6#jtlBaGQ(N{_l(Jsku1AU;-D-{xUXmwNfRM1y?88E7Q5$;|o z8i}orrUrb(&mF_Q{DI$3c65ki)R2v~=Ve+xo1fJHjtV=l>;ZVB4EN51xgeQIPs$}- z^P#u`2x_lW{8hPQ$pu~Pen}fB=?46=li5c4Y*6|NQGI9uOT`E>%?l;87Wv&Kk(#nx zWVq(qGp2X&Pq@EidIuAluW{#%{gaqoJxBY{WifxK-kpTo`|&o^0KRn+X%&Djz?D8U zygKV^eA^78fvwy_aviZSb}KjzJQ)!y+}4^xKAWWUpQrjt$jlsstq3M78Lj2tz)OY` z0D>IlEk*l~QHuFxIg;Bwyxt@J>4dve-=D1;Ziv`Do*1`Yt}QR;mVDd zlo*cX9kG(hcDTN6G>YsIGSwYrL?&=Jir}kxIP}x9q=X2<0gZl$eToI+5sjMv$pN=D zQ40!_#Hmv*pv?6EITrZB#;aWPr-J=>Zm@g_7y>bX*TGAm$zk|~n3;MvX#giNdsnWdkoLa}Cmb{T2hQY8jdwU6wr%@PVXv za`yl^DFB2b3TNLFrBaRE2KhY5>cGXg2Eur78*-7niv~)KkcPScDg1}4)yLm}tm;J{ zI$ISsd8ADN_z#}1Aa)OF8t?ovBvS#t!+>8h1VpJ^%;AN(zG0LN)$EDV@W&Gc=agfc z^{Gm!RQ~SeY~05FXbUNt>N=3K@%c@U)O*P@v?1D8IkNn9Fzo;gLH}*b5tMf>b!qsr zd#sN5+=(X*{P((29Iy)%p00GX;SH(jrS70XLG=4<8vVZ++tJAUdp`V8$_ShZ-WZ$U z$1?;O6m%J|Sb6vDqy{oo0a4*k)elYZA#eVGuD1^Uza3x`pzbQ0i@*R2NHZ_}I`_&L zJJ^|w!Tt%!MNIeLe71wt_}}j!H9?(no9bcv?W962RmzW$ zkq=$YIi-ihMb42Ed+zXbPb}Fj7<^veZYiUFrScn^2|NJs^rr&nka>{oZb3VP`TA@x z+{_Y)BF*76Iry)CSXHl#`T;&W@aVbd;#nyAlc4AZa1@c~*8p+{viMz)p{FuP>CRUz z8afS&xU5bLt$-}y@Visp8q86VpI2Z_O7D$Qg2>zb`FnhKG_>d4dFVvZws1jhE=V8V zr}D8^HDdf#%+2vcG8r#?)Cuqiv}o+GeRBtcioaR_I7ORJ_*baVcW0<7cGu_1H>Y-> zXMj@bPX{0=r~mN-jQT6smfd2-N-`z$o5+Fln1oZo(ym+(>|KWNKEg%3YyvkemNbk2TQ|_op#^$4NecY0Ej+=~VqW zaLR!efh=&+l?#H3g&9=&(3oLw=mgeRC-?dNs35q3s@KY&>b9XnFQ6G|V?7|z!h^la z>lRZA=!t+0Ii;m?Vdfev2abFPKdZIQ`irNb*1axa(H z2VS@bPBTAdl@FDHDr=(vSUSPP7Qu1721_M?nt1$PN_!oA<*Of>Am2oWuIEa=LhJ3p z7q7zBUo9k!Tsg@ATcde@#c)>oAP<`Dq)x56mD;vJcT1R&hvCIu_`O^sPjv$I67^Eg zh2JlZ`C#x^mPdE>bO6ld$@_eL_!1n@f*4!Dk-c^qnzLXM|DI|LTyF3noMu>J5VHf+ zgo)D+4!1XN_yTBJp?>LgvM2C9AKcsmMgxFny>WwyjL!u3pPn3$t+x!9LQal&dnbyE zM7K;Vu1hY(L(d5~A6*6uA&|ZsJ^4%n=+;uhn^JIh&{F?@ljR$4{@-L7lTl^Kns%<@ z<6yDWf{4v|$m7}a3sh^=(r)$Z0u&;{$)#h4lSGI=cnh_o5nyY~DQt%*yUVPp8bjI@KnM>`G?vhM zp;ryZ0nz5$?1TO(R{Mwpym+L=2xQG?%aF;AG}6GJt%0_-V}Tf@u7~6UU7>^KLjd+j zZ1jDJjo>+4Zpcq|1AhpaQOcJSl}0eJOd=vu1TA~w@apydYvI~Ao#?h^^XdGWjPWQ#@8rpet`NP z^yhCx1uidT@GOGZ8#$O`{0hWgMsPmEtsn+Qk}j*TK*1qWuYGN7MRKI;2&#i2?c7VQ zp?_-we7*V{s9+{0OOt;u;^S7nAI{l6NV4C~*$;FQ35(pe$#?O|~(HozqTAaCNFa)X%0C^eh z)#VvN-J!*55F`^+_dubHRASLhdS#FFxW7@M)K6$-3#F=(R>{nfHI%9h3hU4Hv$ihg ztcR?<{TS3WO5?RVP92yOtxc}T@RpmWAD3YwY{*QMO`Ff?55+OkiwWl|ur@-f;R;Fu z?S~8}CEKax8t)a?a7!{aJvTZZ-Gbbhs92qXDt-*`Y$&F27M)O7jZ|2T!Oph>s?#{n zH+>1LsFYxT{oPb$5)(zU5h6jq$Crf6k2eV_ubzP%<&#=1*C z%e@qe8Nuk-WB0q}$M7EFm4J4*O6;qQ8=?I(v}8`mrjWy1h`2Hq1P7+T;Wb{+r5O8K z{ywlz5k`;{Tz0axmxlVPgNL6X+39hE^VgDKNtqv^(PaTZ!oiY}Mphn~^0~Y;KP*13B|mN!QMf<7vgvy?NgC$uA$$%S`nU zW@~7S(^ljIDZ<2i%6qOETmuvfPRWq`E6qPdDskvqgFegiep}E1gyiG6*_^Hp!SFDO9M)5S1}xDx{>6A;V4P z43Uf(D;k8vCd$+xQ-(t3={+vp&;Nb@>s#wv>wUkqzV%wqdb-(rU;Da#!}&YU<2=se z9C-z#ei~F6qS%C=o2-td_V6j*>qa z>1EI|pOCln+$99WVV()c1c@HhyDos()_J8TB=sTKj9u9~s(9xVeIP}LclW)ttyYK(kD3C4^NcYRX^WmrPVQ~dPFbX$la7#pS^_0ycS z=x*JZWBkiu1+sZdif8BLm+lcKT9P_mDz87a7nl9dLlY3k|6>=T zxA;aHyqoUT!dZxl==85^@;aTHbtpl|cPu|&o?hmV4Yb$`FA{teV8)QQ+jBuqX9CH1 zGNnFBvIl$l;wOUth4Qh}beG`^`t*vJ*?g+R93tO@+_HFm>9?Z8yTqEn%Z45$b-+a+ zELz6Kp!#RCDC%$SEYYLd@N&-xs->3QAC@AZD}Jhuj|6`yna zG|5e+`pWAG1h#&T^Qk?HI!s!wOTJ{Hae&hN=MT5!(&TjV51ELojx3=-yg@Lq_uq2_ zcLHA;bt=YYW=e3`Fs15rm)lOcSz4AD3h#j+DvpCMMI+KEaRfE)1nS-3t<7UZ-ky0% zP~gVyH-X)Dc&$|+^R~(>W8bYF76j!tDBx1YO+zS#jQ9ANfvz@JCO;nMbPM@XWN+G2 zoAU%!tMDy30xhQDbk6EjT=7)!@N&_x_AcpzCk8c={#nrbXlXDM=3?jO-8A#uUa2@*Nd`XLf$XJ01}{Vl-rzg4S9LnxVjKdgSJaRd&op!LYWYBARmB2&CcX}8d9dI zT0s1h^4qnGo#Zg9KS2ra7GK0{v>ibR2wY}V&oWlZ;qzr1r~RZ6%InqN5a)qTxfkVl z$XpyhxBBCw%e;^OKtAtS)qkb5*hK%Pv{LL;-#3~(s(!(+P_Ctt%w-+DPn5o3*On}) z_P^onSEv;dGQmX2nWhd6$(Q44UvSGmsj`ZZ zZN6>m_sQYt>Kkf)SF-r$+ZV+-t-HHa|2trH!dgdPK|3R%k=p2Q`8J!~Yy)Y;gkSp8 zU7v*>023fW`T!uu=IR2gls;k;nu67%ELN`%u7KWJSb(>>UK3$DiupwsKZVB2^!$2w zq20ahI5U0Wk=exlta7n6+;z@k&4m-;L8^r~zg2+P4X)Nw*=(de9>lA+MR+Tn4=Rc6 zKj-m##2tCWCVE28`rO+)hTGObJtW87_MijDh2O#Qb#It{DtN0;KOVt(Z@l(FAboYH zl*MbVclUQEWEze?`~w^L%<23~GyM?8tx^y)JGwUMd+H4?NA=WQt4Y=(Mi+DrOisJJ ze%m=+yd{JNnb&{QSS+b3;=lLz_8-{85hk_Un1kLh`_?gtwve(%e7-CVdrB{zzIxk| zL+j#!r^#nu+Yh!2WUsc>T(6~KZ}YoFQ1AV-L1vQj$GL@I!?3g0^hCrwoNJcZl`=4G3F8J6^o3rA^52@1VNK|(3XDlel<^sA_P9pp~_b++oWt1Se= zw(j>RASd}OFNs&qB$2=4Ocfm4S_St9?&|#Mp$2B)I`^2W3=<5z*=;Ly*^1wdAqk@E zz-*+5Y+SDyhi!D42%e!OXMAmy#D-;%Z|V5Z#Uojas8>ywGU-HgM2M)cgz8(=GVfQi zZn4wT?tFguMpU76SllWO#q)+{@tlv(MC-YWGOpD-!T)77k*Gn^=z)|Ydh})Q2i>C~r5ywC>h(w6#YMl8hrK*0`F8u=2RA<2Fmx<% zeeyn_qP?DeAEmz|rC?A-Q`WeU{M0SHTMjs;RJ$7Gw*z%Nj^#HmN;XGmZHV$ z^et-=SX$5zCBgotBhV8k#n*epX_I17j(rtU+Oo#v>Y&|fjG8qM0Swz$jdG8H`ScgUkX@B)+5hA%SNA|245t088R}dzajHT_zb-ZR9vgBX_QAeY_o; zb1wGs1k%xwmQ_eF5wM<@mn)F@@l@s z9oQ54a=!cZWN0}gZSK+Vp;`4*_^&M|IAU^#pKa;czN(Rx$Szo$gmMYK%9-~YW0%iu zeJaDETtpqHECy^66|7;7hJo>J3Yzt+Gj15fN$#HW-u}Kt}4(_Gir`) zMHN*HwiLupTweID>XqL?BE45(QoTtqmukvnWB?-M;lifJD+ysD&f_Lb1=Z$=HKY*^ zJfof|hoiaLU}wKTji2@78meBM%qg2)qNW^%7_>XYnCv;o5ITNrjBCKeVAC2te{vP` zF{$4bykRccxwx%}ZxtIzdhZKZ2bJ9`HT&!QB5j@(X@B~mJiJMaQD@!O2&clme>c9$ zr9x6V4>BOiTW&d;3)3AvI7&O;B`+b6L31;RRU!KX76>cxg&&i{x!8+!>VAancYWty zTURUt2GH^L%XN36^Q5F{eDjEOO?!n;pR!r6Ya2i9_O{W~#7gStV=BZNOC#oG{Q?sXc^s>wzWoojM326UC8t zN_}NtubfQvlBqAn4wCi|GE&wQLhQmi z)rBc`v632b>{m5ba&ian;p?mNi0!7lgLwW9tU_rP6AtkE>ciKI^l2WLfB;~*JTByq z0iknZ4ZKgIuTErp;>V>mEl05JNa5G;{pmY#+mC9fjn6FK^26RF>?E$Y_8v{sz9woT z_!lPn^_W>}o^F{{q+YC|2^M1x+gPbme#|UH{a`^7J|2>n*diFQdCfaN!QI){&fU|v zq3JUlnLzlX#1nZEN}JYV2h))Q@{Z@S=0I{i$FfxRVPELs1Qqd`=Q1slmYra?9k+EL z>FE%|#!6VY@Y+GngG{QIi5vMk&qv%H7x7}`#@-j<+tyh`6$Wz!egA)KK2hOyzLA8! z-S8HS`#R!ddBn&1KE=@-b9e~@5tHH^W#D(*oEXF&quT+AB)xTb>=!)$nzV4XaT`ax zcuQk94@qzb@r*WDfBZ^@glYb8nnQTQVIn(gEyzrYco8d3O5iOlyQu2GB(q^-nALVG zc`7e$(mmLzvj%Tg2DOU#{tE>8Cv`z0IdABds=S1QR@)iNZS?=~S*{UBzTO@dk}x5_ z_bGrYsN(n)oAgU!in~|lIkqZRiquki-!Vb#rk@~Xu#w@a?rcfdVOMd+LdKVe){yL( zu=#9R)Ff7jDaOLL9V;Zb#=n-~s(8)02u@=D3&hKfX_R#YV`xI6 zWNQ2b53LyG@P^&{hW@g(h`Ae~!&NhlVU&OljnXFV1WycOa2}sG+=_uQO#F{wa(6V> zjv<0j8*CFDp@RRu$4CWhh<7tP^4`+QFt0eyCY@b5cI3445_`!bw8Rt?VBlP%Tx99tQDbUS$3jJe{MdAZ@idJ-cH2!8N7|(wYF^_p6p`? z#(87|#_I>ZXz4?l&+dZa{E^DVk3$}>Hn~3t#4&hQ^SbFZl3oR-uknD)j~BP8B^SGX zDE}y|)}8iQnBw*>t%(YrQe0p=>|OZnF7X60RnmBGTEu;tQ(BtWc*orbC-`4CCy>7f z>ypl4eFJHu1_1wDe>D@`I;QU1&ziI)tcq+ zw~T&M*|j<6<13DG14rbb#KH=%3Tg-#p1!A%kr2jh=a?&_?ZCWR`8{lnGJ~hZ*qetH z@0EwxWsHPTE!y3J%6dlWAo z80-HSd~0Fm@zI=pXJ7bb%cHQdgSdCriLd3yzIc64rg+-hG?dImU7vH^PMdTHdxaqI zI`F}8><~L{l2g#;srUxsGZ)@QmeZCjC5%mTO%}F36eT5u5YJObN7?^%>NBS+i^!Ny zRb#x*vmd|TnAZ4xI?CVo;!THK>dz-$^SaVT-Yw6rXzLbN+uwNTIvI3!!^=WiQX!!* zEY?$KX)18UGi!$3G=^dMga45`meGJ9cFU9b?bMj+^YXlhMC=~qbeD96wx&CH=?=Ro zR|(7V0NcG1#6>cB^C;F$R{qWLZ;^3JUq^37r5xFynM7C|wi)mAJlCz1X9Sr|QY_j3 z$jsKka31`>Hb2Vvd z6ZT|`P>TY$f0IvQYgZ3{MKaUC_oAs+jgXIBMY4o&x$pjDN*ui*{KJb%9+%`yV=8OC zE3=-4dMQp0Y4fTUosn;pIAaw~V{gDqN_dS!GQq|q_%^+?u=cDl-9*cGDaK^o!_%IJ zndf?AMS{8dzvwC?6s85a265rc*qeEKwemr5jl!Q$-H#@ai)2=Uu*fv>ne%FK&dZ(d zSw+43+qayh-9PhQMJs*LPngX%j)_M6ceC&Zr$=`RYWzsPc{nwdWx>Idk_fxF_{btC zN(RbMMfD?FL+jI*=NG=y_T^~rG0|(!R~bJ1i0e|h*n7dMZry{=(DL?a(i1r@K{4N(2Xu>G(wdRDqe%>_ z^>oZ*^5(EWJFT|J6lED*YYHzV#fFb1L@^+->G+yk`1n za`aH5UlL`52{Tls^sd8Nwx@3rd9^pvCSQ=nldsk{(W#;tP{yybqiIX;O#T@a3b6A*$r&R)?oXLGTt((h4Ua1zZsZ-i- z7$!)Y7QW5j-7(>>MG%n!MWhxdXTq5zddVh~zE>Cq9b_Qp@E#lP(Ky0{@6COt_dQSB zF!Ll99Eo~N`nYZa)jjqtgT=4Xt?B{n1-?i!e^h01)((!roWbua*lrdeB>XDjGJ!7h3m%3-by{H) z77Ty*VZwjoA-(F&M<0(>&bQ&et7Qg80%Y2loYQB zBa7M(Wdh+?BwL6}*Fwmb_bxvF3Y6>n=V_X*5u*|gorxE_F)HvqD{JR3B-pUuvBZRn z9bpJHsAQXo)*JlC$WxK^`G2?o{42K!x#x5jaMyS*4an#nw;~)MkZm8~Iy}9}Bw48c>R95)q825o;z`@)t1aBunfm+o0C% z+~J0N0s@TJd)=+|O@^G=dzF=@e+E06pKOoRU_wZAmCj#z@@V26kGJQ;8@!aY=r#to zufy$T`x3)$3L}_lq!!Rr?T4>8M1;N%|LgCXVO!3CGD6|SY-ma)-qH*VlrK(BwRl6U zI+8tnp7eDG)04?3%84fm$1MuQ)10bvOy!ogL}*7M(PNj59Q(U4kxSR9eyV*qW@WIl z{fTcW!?(9b|JNSKCib4P3&M;M6)U$6Wu-4kdd*8seZ|HXWtQ^7W)>L>@^(#Iz4)hyfY1g4D`)>y%MlV1*;?1Gq{JYu$6m{#-YX~3>Lb?e%Y zg3ZfKtSkZ8&oHxr6B?1+gy^ zL`I$!2tkL7#6hO>+n+#eON9i=hITSB@z&U@js5~6uc88jjQnx0y)E}>q!X#~A=<=< zC9tfa@IKcIwmwAI%QWl6W=;O<+M!$nnpzwu2{~e$HC1Pj^2rCC73s6$nOt5vbliCk zHA|4j?{dlKK|}4mVi)RsBgM^jr*c7I6zW)Q<=4%{w>%+l7Nd6|9<`Z*2l~q>Y(Vf! zB&TIDHKgHL`gMOLZjZp4}kXA@AbQ{p0CjBDhXH_URnjhs$hW{hD~22%>8JyhjVS{#&|$VT`%1 ze4>#M0h{f8;D-7ab>0O?_(~vyJK%!cA(96ifglG%h>BpO+>Bn4;sMttdE0PHM%b_U z3`0%2Z+jbvmS?!b!WU-iW@T2++IeQa(yi=aX?9xijH=Ou$D-^`rkn6Y{Qz>w3y@a? zjfnU!4`wdx0;*@~=+E*f)z6TgM>57KI&{yT^5YDZcQ?eNUd7a9eb1icBu zg-G<`RtPEC{U17zX9hE)uhgM#X(ThS^?RzW?BeC6exmX!T7TZzRd-)PzuVpJ;)}Z; z)##37l6$hsKdg%(h@@N2=&jgdJ*zcU;w8v9prQIQGLxtc+S_ihlgtB21n`(SWvm-f zdDu2%^%cD((Ob%j{S85J0B?d-spt9f{BuGZxmeT=l#q~%>l% z%LEt^K(GMv^4PZJ%V>nPMX3kMJ19Soo_76?zGV-@OkD{%L(o=IwY@sBSRP)LdKK;4}6hxVv-fIS$#W5Vz9F+@rff_O_GF zN~!;H=Op@p=fEw=DG1)B0nTg1!H6btRPo;GcW)XZ6fPj*B`V{HI>n}7B-=#n+Q1wo zz-5AUgIw!w9=Zoe*+XfloOUDSD)cHV06BJh42cn(kt<;f)2?t&R-_r%RuWnc2cg;e!lF>;wW?#MYBRq^D$ReWa^>n!QaGZc`)Gc zhJj7_<0)n~9Cs`gsLrBcICYKRy-*rSHLG}Paj11_vinX}|AEP-qQdEIPC2}UWs^+~ z@$P&Q4t`?7w@K8^1+S?}-)@Z?9-q1a>fh!A$QcK^JbKN%-G49sbAsmw;L`Qi%#qbZ zN?q7;$+LE%oXA2#){uq5b@|oC9f$Ay+4t)rq+O6-LM8{r6vYo0e(cJ=++8vKyDaM# z^NHs>CdVJee%PDqRvmewMfM)~+47FWBk)A3=470DeH`;G+EB8W(g)ls0>Au&IXUkE*M=rrv` zE-irkeCD-yxIwn_&x*vtsAcz4Vbx2OMGZ2bkeBffSH^YmaG&Ak4weaOJ=*^$P0TxM zCaR3J-sYcmsTQueXZLq9RrGKxcI-w82pkqSy4Z}IoFjChg$sEHtEY&(Mq^aqbryvq zJ=cfd8wN-HrwHf(Y!rtqGTCStiKLSm-BZ-|Apy0=ozT50pl+DR{E%LLswe+KM%Kjh zPs0pPlQ%f6_K&KtaW`4}`t8+nuWF?Orrpw!m&EEMMLT4qDKd+ba0Jqi5k;3Cji-6Z zvPY$&Stu;FbWOi&zQEwe?hCT-aA&9pzjCi)W1Jg?3v@DYUrnp02yQUUM(Vcn&1pJf zN+neVtVK36vvmPWVVqXA`y^YQrN*{BkQ$y4V z?@4Un%rle5ckM=M9~RwUW&FSmEk!m7Z?8aMn`{szV6G|1I&Gm|B-c@^S z*+w&*N)Qb@sNI3*7K;jsb#Ls}Sqid@xvt=B=Sb8;!1%`s{ZxJUu^{&)$Z`SXKntQG z_Z=~f&SXAS95&NdnXmVQBLM?X%w*ChLg|(e4I)avu+a(G(N@J@r%V6Tta`-K;2CM7 zt@Mj5XZB&e`L9Frm+TZuB#%AcKav{$B!HE|_4%wa^COk9hx-$MHST`8p!FV4UVB%! z{=LlAnM-`HAa**@-D&#tOaPgvX1%GJ^zM3)TCbWDb|30EUY%|zdImzLJLn!LGV_Ll zjRRCrAs^Nt^B%j5pa)_nUdW0s{j6PmWiD^W?!BTPR=16=pMR%ycLvx>Nttg&qVqH9 z70%4pkx%hcRN=;up8+OmpWkbAddvtNx?>*Q$DOQuaWNV!{P0`KpR}PBvypO6DmtCx zd}O*uKgK6`8)!33H+gnkogXP?;7)!P0TJyT=Ne z%ag|@5nTm~;HlMeZw<6S$AOb=glJ;EYY4>G(JpdhK-;S#?!$~fWpTG=u~&x`mDrc- zdk>$M^HzsU;GYyd#?{=TznfzXCS%LzxV;rb;ExV-IeETy>s8KbQlfg^nQN~P+r6#B z?jE0O#PvKK_tqEJ`{G?jENQunTc6|pm5B{1xZ_MpPL2a82TA_1|0qYi^UrM1wg2-|&V6#yTY+x*^B7fP z!(o%SvknihJmNWWgULvnWA+Q>1CR6X^8B2Rt7G=R9(q+DHY>Z_!SA-uZG6jFj{=AH z);J-p5=K-f76%S15iN}6?Av8Pg7R5x^VyH{1j)p4cp!Zst*}uRpaNlklDnX?^1vKn|@A;is51VNfvC>4A`W#eV=bBIp8N?<7?-AlL=;Bv3$BY3m~4^em56ef-f^=HtX zvc!}T40(bhDk3uuQGa)=PZVj$gV75`5i9WR7_OOPMGz9$IP2^?mOz*-d~}|+of|2r z4OGq4@NGYbmm&it&JfW?#1xN<@8IapQpMNt+X<7qSEc{z+`%7&kSAIlw?tKQH>-=26@fxMng1 zk1kRnnTB)VG5U#qBU(CuPQp>7c*hA0%R~Gs#r7Sog?4RklqLyc9JYPQVH8&oq)>31 zOum2ibKPaj69t$3x6>C|o$5;|y@2*F2xQ`vy?}^=AW$p1Ika3}f`rTvsznW>-?-!tbt$0&7ySL7sFo!fed7t8hd*70 z#}1ZO+&*_lmE#){Vo=^o@JY1O9iMLu3mjCh3#CTvyNz4V+~!7?b=djFB``El9{S|Z zNnhE+gA%FN3h1fAHC-Z%{|YKZ`Z$n~D6ZnBkUomm`U&-(k60ga0@(+kbauM7voK+X zj0CJjWLg)($2lLYw-_dI4I2fLQ7LKkneUi-3f$_>Q1ngr*&bg`xq+wVk-sy=}+TRu$~hZw@m2 z`Y3|BeSRb>(VbTZ`A?GOOWfUvFV(_X>0TO2l1O6c@RBehoND7QA{I;BN24g99Qz|J zGDs9C)rZm8A61|xx$~m6DAAJ7S_FP*R)YG(ivjNhWJ`!E07OZsO6v1F6r-kk=!`WF zaS?>5B;ka2X&WVvmdY?A(6zS2WqUWN@;-W746UyShr4wsM zyg2rRT+*%!E#HBM4BxWtIjJDhAVzKP-&;^lC9tSmPb3a0ww5cg_QkNCd>b3rT4kfoc*#wk^+qX6(xFjQ~}9@gSVK z@9$`SM2{O~I=S>Q#PZ4U+fWK*C+a_8U6vO@PjSiI3f_;<5~-cDL7F$E+sv_3Mt zy)BbvWr^ycn^8h1?w&wP6=_k%tY=d~O|!uwBAIadkp*f0wT^~Q{~ZrywDj>aVzI55 z_cmYp&)?P($jV`2>X8$>%Cpu)n^@A=vyRhh@{JL)E8o?qhKH&+ra7U!GA#*=NIkq? z*`C{Vc5pR2z9Sydx*B*(yiJ~s|Bmdve?P{9kEPjUODEp?`Koc{8IEBWumBOy;!VAl zq_g9~VNI2L5b`B8F5#^gbYw$d4b=yMLp9@IC7ICskv|<8#1yP7VNwgq9Boet>FhXZ z^ZAD|-eAa$KN$YkCLHN{P5C?3!fL##^HZaJAAL?9SWeEi3-f!fn>2BAG0@v{AgZCr z)cUG`q0JT+8y@yOp^sL^%+@c|RGP+`&2?S$uL}8|rrwGCqUGhO(fz!cQeIzY6gN!A zZfB=kO;2ZI%V{92nZlcv@i;O#z+FS9z&j@*;(^JY<8>`3b+UJgwP~@r=(Lb?jW%yF zG}6(z9h~d$E68x=o0P=Fe9v%0L&J+J-xU7&)h~YKgY@}$X`V0g%)dOld(PMwyPLPD zf8Z$%p;ps`D9KdS*8ih`eL>2j9Ha|NX|)dApmetBOo;8 zcx%kJyd(8Sa9-ha;Vo9KtdR|^t~s(yBVzWCBUlZu1!gzyK4cI^=3H{sTsz0Ah zPjuIv{eJ3kI@Iq-q_en94;IQ;RQ}sj)pO6B9RkncucYQfcuJXf;x$)%V?(N&d6?yN z!MP#%-b~{4*NEx+B0iJ2d(!?G-RrlDY8^4AGG_@3;X9a!SEb~nJJ^<}dUr|HI<9?@ zW`U~v+fv;o&Vx8dielx_X5O5(F~)zPPBE|HAF&b>{jBj^d%5(mUw?d;9Aufq;yCa= z^VNbNZeSGCqNH$|kw{XwpZ_cWwd|&@e^C&3z)JyQ;Hmk5Xdwl3!83DH~g-!z)Au(15- z?|1vz@~*l%In^n2?a~CX<9)UD!DsnD`8T@Q8C>U@lc!F7v@N70S`VuFF6ZUvJK^Wj zrIp{l{rs8PWIZ6!l=-QnquD}sSAbfw%^(*sC?ql8|BMccKk+;7(f{3l`^4g4$!}Cu zRlyIlI(N<)F2~-zGazY8@jQ%+^8zG_ib2c~y4vpDyH`dl=3d;ZSFhlUMMOrr4z=2Y z5`5&yk;y~o!ZC}G$0OwB%a^E=)Z5%oH=CKB4s4>EDD&I2>CDbyz=ntKaG^~-9TO81 z1H(~4miLi-KWtD#@b29^qVc-8FVn=5HIjZ>+S(VsR8~YsM;8|tS5#Dxw+jnvW*fD! z`TYKRkdu=$fb#A8_wD{OME|pq_QF1Gc1Jx^Q$^brK|cTF2bQ_ZKewnTa_Q0(3X{=PLB=%jUSfT{HZ3jf@#DvL zNIFMN2Vj8PpF!&rv4Fh1yydxbKYsiO4-dx}pjo^ez>X~GC8BT^v8vbAt2w7DOirFG zhhirpLG);-h;CMkEk+pl?AbGP#=)5N_4UQeJEkN8J%7F*F1Z0aHy@X@)$Q!;5fJVQ#a69ag=zuo z{2z4kF(`Ts3p)x4j@x(1REuslHF$6ekiml(9zigF@DdTh;x85&xq0?73PerS&bikxYfiDC8B+GcNLV>5_YWR%|^+vq`Lq^%6c4oR@{ z{~`LEWV95WFg1;hj{f}V6Z^X3$Bv=*7HVux(c#8JFevl&-1bI2u2Gu`O^Aju9`5d9 z#(A%<{6Hk5bmg}>EQWm@#5aIlJ$U%gM|?Jc(XNx}=s2pQ(M9YA!oKLTva(PKh5C6| z(u9w*D5@gbBQbKyvfmUE7WM!Vg55eYGGc$>LV0<4H-eY(amVT!@Z}-0oQ>=Ug)T%b z42todQx{SVW{FN^CH>IO_3-o@I-NE@H%HG$PfyR`Y$$P=Bcu;ChH-cA-W|&&G*j6n zUSN2z8QR+wwr@|WRN@yktGtRDP3i}z{Ap-t#LC(e{bcg<^DQp9x)zyaAJNhp>MY3* z4i2uU@Vav4*|+=a?JO6($&!T{PgUN)YR0_E=U#{8X0NsPhsU2P~GetMG1oZ zVmX2{@cFqET_2BiVfu<$xgW0aRZ!RR%{lQjsnR!?O}w8s z{3WEN@pW0^j}c!1Dy7;BiHfpNP-oo#l8M&78jW!R$gZxgYG)vYw)Ek5fuSG^Ky&Hw zOiYkQDCYbzex$8X7Db`+^qfb1=f$ql$?W3pyr)l}=I7VFduP+A|MJfsj~mf3F}4;K zV~AvJWnyrnL3598pDw?mPxti7*qN?3Shps0Pl3$^axiwLohO#3LiIoY{1dogYf^{7$&;e~D@84iCnankAn>a-J9ca+Rwq_g zV^^Y#pcjq{Ek^tR@w>&=@tvy8H#^C=}Q&8gsQ9k=Hjk)}djRzZP`eI4>A zZhWt1#(FrfSWDQ1bX!C|cz_k6rlzL(oI{)rJtKGdpFrKJLl4$#02!*Ww!dG#G~9FO zMhWz(ot!3+SXp`Jpu{h>waCFAH!!##9$tV9KtclV$iwwRWtGOT1}wSg6Vx?@9wb_} zU&`E`j1`NBi=%!p|G|Ufai*y6|Ax1BMWQb4N(n;N>dRS=yZgq2oKYBzgN9@6c2By_dZ3{CvXfKULmG-{ zV+yy`i4#%Z8u(Fz6VZJH3noId7sX)-9nY+rw)3fCCtPP{5l96A-fW{^Y>vaFK{wY$alAAX5dC+Sj){`h`lR zqO>QjrbfLhf*Gr-z0j_IV8D8YH8C;q2J<$e%o*)7`3iUP^RMS4nq2wbpbf)V^Y2el zrMnE-N1JOWm=5 zy{H?fFp2VCWWCyUyQLUqH8(e-s&e+lVcN|fQ@H!kmsCI}CWW!Cw$=odxH#(3AF-C<2%zxo5#Z-{_wax;?SQj~tQhEJYg*8#^_%z#_>#dydgbqFN0Kpc(vp zd@t+kMd2yTO#%i(75L4m2LH~^lhV@CBNM^nBZ!zMUCfThE{ob+YFQy*b zVp}M~l#hBaHF<@o9N67S_HLE*HVe%MgYBdYw^LBMz0R~g?MaiO_WrtfD6pLd*(n zBgosakrWi#(SqXr`w_@#JG7|y4@!D_?dX~&wCNR!51{c9C1_Xt6-u!r8W7_s>FnIM zbLS6anJ>Gz?2(pkMuK4WxNwAKa#KrdE1)%Px+WwX^pn*z*tB6y9LjsHXW0H>I{Luk zARff%_;Do^>cMM4o;CRP?SiLI*E2Ci#tYHP+u==jEe@*R_)JDm7;{bhq-;xhvUz_y z@JNS&q9-U6-nZ{65*sBYB{)HVI9}D(zKw&dV2_}nHBPls-5f#*gD^kvk1#oeNJ6w! zDgZ+r$9>i!Dbo23%?2GgZYFcHv!~GJ4Vg>irk^~1eEZfdR8UZWOc$&|b!v&rP~>R7 zL6Jk32izvKc!A*{`nEvL(z;6J+Ms7H)6wH7je{vlFY^dFeZvOF3My+~y?MhU@0gO8 zH;xizv;#{Ub^5tVg}Kq<=T;@}t2j;_7`Uxe^vJ6v_)(h3N)e3E9N`u(y>Q`zbG0*| zdZg?1T}Gt^1=Xh=4@;q75Ia^*=2VRe63IF`A>^v|_R~^mMBdwNgSle@;s|<`3Z9@({`jTw;EX~$(0{QU3SOcFSyfk(5-8zu+c)+ z-&hMGP}2vKo9Orove;Tmj?wXXeMaSj=l88j((+K^vlhV=< z<+NV1J9aF>fxU4b4&Ri*VYEXX+HkKy`-ql|w1Rd4#W^aQyq1r2lv?TKIY>KFAz6x6 zzd3B{WS9rTvnC2ymgWC*bp>2qcID~?Mp5MLa&m2#>`tGKKaESL9L>ReE%ev_C{UG7 zu2vmVz45tyW%Sw~)uyGUZgq&@$bS5IX8S?up^sS)()$Y@r>8%29=zWu@9Ecf@W##7 zn@stIiM(sfHTUh?mm+=>1?QajOm$TiqPkc`>6#AM!T>V7%fJVF*RNlXWlZ<7w9wkh zIm$Y2K*E%ho0+qZ8YD!Lt^lSE=5^4$h0&{1-c?t^?0-0m*d zLX(QCvyObK!1FgebXYC3=ik9##9(ZecIwk+X1?3r-i|n87e9Z7VJ7@p*vWZRTe48r ztXqdG6{R})4}WTJ-+dw%(q$;uM`5D+^ox{7k5G~=$)|nvK4-OiX0MDiV*Li_0V`sUtK~;W7V7FiqHlw1b+4#?7p(tmNdgTK%gR zIPt{06zW+I{|idI4%a8*)O$jhsQ+L8orpYw@SIlP$jC@fkJtawW#UJ2Q*=Z`szC;v zJGk_*B4rAgH3mMcJuWUT6N!*@23a3ryWl`qR#x7*b4M(WiIkAY&bNjXm4a}@87l$v zjj@A-zS?#b6&0u_Ric>GsxJG8K@rxcSge{#N=nL_HEXaOF`DSglbA|{B4rhZ750de zjjhc<9%6Y1F+LLZgM))OW9$Y++ba=q5;{f*fGKo{%x>^_q^C-0=;|UIfCE*xdGqFN zS9ZZ)MsU8*YtDIxz&cV|&^0p2e4MDVhvQ!4%xd2W&I(RFe=;(-4e#H3A;V>&ki5jUl* zB?!IJi!TU}8rS`Py&m_B3_mnw_Fhg}`^z?rCPZz=qPatNm5+X%PxJRxVx7G2WvsoR6sYrGgXVt zUfJ7w38F^@VU7@kKMF(t_3PIcFJ8<|%@PH{c<`mArHvam!iwRX)IM?q5yv2I`pT6V z4E_as`=P7f;O+OIQCWWeG2w`^vU%{D9%)CPIe-2UXR<*Ccn{Kiub_~C@H6ENA)N|0 zkosKT!($H2C8BY9ZLOw~()082?gDUz67|$WajPO|_u)Q~M*a?ooYvM>?DTC)-sKMC zc&QFvlc?yQ-@obT=z?zEY+6(%CFnE(T)dW|ah(!`^Arop#KeT2Pwh6l1^XZo3S2=P zTp)&sixLC}wE8Q;S9-p1%~XdTFctjCgb?fb`l!U|J?#jLL0cN`uIR|EB080h9!YtF zZ`b;jqm`&vjw~RoxOg=167V6af0uazx3RReEDZ(kW-|qShIin%_RIOXxe`4O6E#y! za?Sm|?K3@m_$@ACSG|ND;GBKG!HwhmJb}ctxPQ>CTX02wHYQ&0wu6p!L}+N@^nIwm zf}2SF9fAeaOr<*SNHsY^w{hFHC-%b-dMBSDC@V!5p62CIJ2c?WPxVYrPJZk_9$3Ua zGb7{XojbDiFR4^VU`=n7v{wLPY?;$IHGsbqL;e6Kl@IVBeSLkMvEA5|3s^SENlDNv zR{~l=$P(dkU`Plelc?x0pecZ5L^EJ4|JNuZ-Ll1NZtxKjkUnr*T-?Ud_}1$Dc{c!T z7!_C_8yg!!GIsawB`}S&G&RqhJzE$G#Q;VoCiHF1efl(d@8vUy$AAtoqp2T)CVzi_ zctNQtDJM>x7~tQ!d2<+|>9c2>p>|O1r@9|HEmS;n02zi1O^?H$JoyEajOe11e!EL;j1D>3yYKp2?}E0cjXddSb$U|01pst79x6w6Vx)lbI2JFiYR*R znl%J&1`$%gZ5YUM3@+Ghxrk_SfAoB(;W6I7e;=nIz%;_!1vRNL@-b`)V8k-=nZ|^J zSd>Ut7#kZC5C`-Iq29s6#U&bnzNTpf&W9jVe7%vI4;TUL9d*+VfM95aRT>(yha%{I zqWsEJhcZ{yx~{H@gaqXd@9(eHXLtcwYF8VPyJ&4~ZDW&Bv|moH7&s3#7MdR#9Xvcd zyZwJpO&!tIZIjLXXlwIZhwkZ_*Yx&fG8Dm&H$X>h>hkeIXMU0E4n^%ZV#`T~}v^z@0uIsi?@v^f0#qu;WA(O3+{U!#|zHL{C1`OKu|IW?9+R_I8twZaDuToO1MhxE+qlBOlP& zOWLkgv?~$;v8LN`#CZB9B?Xz8njZJhsj9w0H!_#&_(?rdh=bGPRX|0tY;D=u;F*Q+CiZKGqC3=9lbRQ5iKJ=_TvO=w!I?G1%(pTIY<_%wqy zEew3{#8WxMrKKmp3Zu|f*y>5)Jm=($_0&!Sj2!qOX#jCSqcMNsf!(`zQ<<@8h|pp* z4Rb|wK0y>yZnv6b?)dBm9>kSkKf$vBS|^S!-Iz=l+DeWirb}II0{bVs=%!z7)3H~17XFmVf*bcBA&$FL|XS8@}cHFY!*s;aM#b5j(05&t$g;`~B5UsHt9mh`{ z{x~WuC|HwAG(2HtWrgK#_c1bxoYG;u4n!1vAsn%2JT=mwPr&?7W^!^5khJeTJW{OtRVWnTRTB`R*{h%+ zd#<0y6HO=x5dC-#mz+aqg{V%(P|jusPW4oSkDpH;JI3#?C&)q_@iE{a z0I;zL3S*sCwaek56viy^Z8mv!G)j!sv?kUXo;lgs9|e+)vOe0n#EIL4pBoK;%pd?O zfZy;cwy?2H6MBPrc~U~e&mf_rhX`ZT(*77pLJTpNZ&4qd`UB1bdH~4bGNdZ@j>dgE zNgrr-%P{}Y&S}+0c^H=o41tS9%@m_96=n^$ zL~CEZ{M3*vyKigH((DJHw3L(qflj0dVBSWc`wi1Z2|{)dA)l-b6RB~5$coxG5<~Ra zi(u{>8%K8=r5Xq=Nsp#vrKJ48nczTu1y2`7HLdLm%#h9c_n77*wg|{J6Rsqlx8u?- zLa_+)x>MtI;&MAT4~kWS1N!~@nF<|v_vah_*+|*IA(PH`k7~X#W&AdP7W$aeFUsS5Ppa`_|i= znmx9C`}UM;_6Qsaq|R#=tmu@?Nl>_K)j5c;AUF3J++J|8ob9U6+!IEZo)6?{StN=A z%LB;YL70cqD3$3Ad_+ihDoRS~(-E+zhOUQ%oSa$Sxtrwg7*-IjGDml81L9KZF$qc_ zG*Jk8>N
eHQ#2im=XgO^Hjgs9aX%rLYSQ6X7NuNWxV+4=eB(Afd@p7SjYTML*U zaHzl=H*^8~z^Z)y{F&&mhXpnV?%QP`J~|H~{+M5f7kL28YJ%vF1L4R&d-YG9vbV5! zif`}Q#r4>vP#7o|%oL)rZ{NOw#E#ev=ohuTmar^fAls=6ASNKB)zDiV6Yu$FU?U>s zo}LMC;kK=yKnAt_JP*<{?iMIF06#=xanGf%FA#}gA8B}asKNq(+L#=26>`wd&*hd=3OvUBPKIK-ZVm#_%6QsFL7q@}V%m0qa1S4) zr3D5A$SWwEE^`&*<2zV7F@Yq=_jMp>-CIW@ZTe`VmdOHavdZZkzoy2#5m? zCS|VK2yjN(l5pG=U5GCDbQ4K2Mji=sU-EZI_%wF-T)kTUr~TF~`U)NDrDkL@3d9V~ z85y-=lKxZ%cXf8+@fjyR)Ykq)xPLk~AmEU;c0C+;=N;1{9mmZC-atv{b#Ber#Dt>z zc*^M?UKIg|Y z#Xk9uA0m^Ez<27>`Z$qY;EZ*qdx@ihC1VWb6AbIuH$6ApRMpx#1t~e0M7RByND}h& zI?dwWH;|N*MMOolb#>V&IGJD6D7V5gMMg&p`Tzd?yU{dFN=}ZD4trlyqnBX_LkG8N zVqzjIGgIO6cl5TWV`TiOhAeB^EnUWcyu;$$EiV3{wN+L^f^enb+N4V_BezJXe8Jy^2k-3aI@+4u z0q>^J&fm5Rzz0mOiAW(EdMB>hfbf`tYU6+m=AZS{7b z(vJ4_TF!j?f&aI(G&VIw3m@I$Mc7tqb}aH>rEXeF&|-uc_)u4ebk8(Gjj=I89tr8g zF_m?s%}8(}vk~oZ@Dmsmq}zmB`2PyZ#H$eR|6CKg1CHJB*RPG#n+$Ca|G!7k6&7qiI`yawk1*iZ3 literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/uxbpgyh.DC3TvBOO.png b/previews/PR195/assets/uxbpgyh.DC3TvBOO.png new file mode 100644 index 0000000000000000000000000000000000000000..924b99908e5a85c7b17da33f9cc1caf8ab1a67b0 GIT binary patch literal 31376 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 Tu!?n~`#yPGO(9Lr_|E?VuSV`< literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/wmnledk.DuBHk1fh.png b/previews/PR195/assets/wmnledk.DuBHk1fh.png new file mode 100644 index 0000000000000000000000000000000000000000..c49ce334aa8fe33f7fabae6fc575c950d2256656 GIT binary patch literal 62883 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 literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/wtvkxng.DNlR-NUq.png b/previews/PR195/assets/wtvkxng.DNlR-NUq.png new file mode 100644 index 0000000000000000000000000000000000000000..7f0f5be6df70d4ca2eec3a5ee34d499f216712a6 GIT binary patch literal 15774 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 literal 0 HcmV?d00001 diff --git a/previews/PR195/call_notes.html b/previews/PR195/call_notes.html new file mode 100644 index 000000000..31dbf5b52 --- /dev/null +++ b/previews/PR195/call_notes.html @@ -0,0 +1,25 @@ + + + + + + GeometryOps.jl + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/previews/PR195/experiments/accurate_accumulators.html b/previews/PR195/experiments/accurate_accumulators.html new file mode 100644 index 000000000..cb4419e93 --- /dev/null +++ b/previews/PR195/experiments/accurate_accumulators.html @@ -0,0 +1,30 @@ + + + + + + Accurate accumulation | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Accurate accumulation

Accurate arithmetic is a technique which allows you to calculate using more precision than the provided numeric type.

We will use the accurate sum routines from AccurateArithmetic.jl to show the difference!

julia
import GeometryOps as GO, GeoInterface as GI
+using GeoJSON
+using AccurateArithmetic
+using NaturalEarth
+
+all_adm0 = naturalearth("admin_0_countries", 10)
FeatureCollection with 258 Features
julia
GO.area(all_adm0)
21427.909318372607
julia
AccurateArithmetic.sum_oro(GO.area.(all_adm0.geometry))
21427.909318372607
julia
AccurateArithmetic.sum_kbn(GO.area.(all_adm0.geometry))
21427.909318372607
julia
GI.Polygon.(GO.flatten(Union{GI.LineStringTrait, GI.LinearRingTrait}, all_adm0) |> collect .|> x -> [x]) .|> GO.signed_area |> sum
-21427.90063612163
julia
GI.Polygon.(GO.flatten(Union{GI.LineStringTrait, GI.LinearRingTrait}, all_adm0) |> collect .|> x -> [x]) .|> GO.signed_area |> sum_oro
-21427.90063612163

@example accurate GI.Polygon.(GO.flatten(Union{GI.LineStringTrait, GI.LinearRingTrait}, all_adm0) |> collect .|> x -> [x]) .|> GO.signed_area |> sum_kbn ```

+ + + + \ No newline at end of file diff --git a/previews/PR195/experiments/predicates.html b/previews/PR195/experiments/predicates.html new file mode 100644 index 000000000..f89caf445 --- /dev/null +++ b/previews/PR195/experiments/predicates.html @@ -0,0 +1,122 @@ + + + + + + Predicates | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Predicates

Exact vs fast predicates

Orient

julia
using CairoMakie
+import GeometryOps as GO, GeoInterface as GI, LibGEOS as LG
+import ExactPredicates
+using MultiFloats
+using Chairmarks: @be
+using BenchmarkTools: prettytime
+using Statistics
+
+function orient_f64(p, q, r)
+    return sign((GI.x(p) - GI.x(r))*(GI.y(q) - GI.y(r)) - (GI.y(p) - GI.y(r))*(GI.x(q) - GI.x(r)))
+end
+
+function orient_adaptive(p, q, r)
+    px, py = Float64x2(GI.x(p)), Float64x2(GI.y(p))
+    qx, qy = Float64x2(GI.x(q)), Float64x2(GI.y(q))
+    rx, ry = Float64x2(GI.x(r)), Float64x2(GI.y(r))
+    return sign((px - rx)*(qy - ry) - (py - ry)*(qx - rx))
+end
+# Create an interactive Makie dashboard which can show what is done here
+labels = ["Float64", "Adaptive", "Exact"]
+funcs = [orient_f64, orient_adaptive, ExactPredicates.orient]
+fig = Figure()
+axs = [Axis(fig[1, i]; aspect = DataAspect(), xticklabelrotation = pi/4, title) for (i, title) in enumerate(labels)]
+w, r, q, p = 42.0, 0.95, 18.0, 16.8
+function generate_heatmap_args(func, w, r, q, p, heatmap_size = 1000)
+    w_range = LinRange(0, 0+2.0^(-w), heatmap_size)
+    orient_field = [func((p, p), (q, q), (r+x, r+y)) for x in w_range, y in w_range]
+    return (w_range, w_range, orient_field)
+end
+for (i, (ax, func)) in enumerate(zip(axs, funcs))
+    heatmap!(ax, generate_heatmap_args(func, w, r, q, p)...)
+    # now get timing
+    w_range = LinRange(0, 0+2.0^(-w), 5) # for timing - we want to sample stable + unstable points
+    @time timings = [@be $(func)($((p, p)), $((q, q)), $((r+x, r+y))) for x in w_range, y in w_range]
+    median_timings = map.(x -> getproperty(x, :time), getproperty.(timings, :samples)) |> Iterators.flatten |> collect
+    ax.subtitle = prettytime(Statistics.median(median_timings)*10^9)
+    # create time histogram plot
+    # hist(fig[2, i], median_timings; axis = (; xticklabelrotation = pi/4))
+    display(fig)
+end
+resize!(fig, 1000, 450)
+fig

Dashboard

julia
using WGLMakie
+import GeometryOps as GO, GeoInterface as GI, LibGEOS as LG
+import ExactPredicates
+using MultiFloats
+
+function orient_f64(p, q, r)
+    return sign((GI.x(p) - GI.x(r))*(GI.y(q) - GI.y(r)) - (GI.y(p) - GI.y(r))*(GI.x(q) - GI.x(r)))
+end
+
+function orient_adaptive(p, q, r)
+    px, py = Float64x2(GI.x(p)), Float64x2(GI.y(p))
+    qx, qy = Float64x2(GI.x(q)), Float64x2(GI.y(q))
+    rx, ry = Float64x2(GI.x(r)), Float64x2(GI.y(r))
+    return sign((px - rx)*(qy - ry) - (py - ry)*(qx - rx))
+end
+# Create an interactive Makie dashboard which can show what is done here
+fig = Figure()
+ax = Axis(fig[1, 1]; aspect = DataAspect())
+sliders = SliderGrid(fig[2, 1],
+        (label = L"w = 2^{-v} (zoom)", range = LinRange(40, 44, 100), startvalue = 42),
+        (label = L"r = (x, y),~ x, y ∈ v + [0..w)", range = 0:0.01:3, startvalue = 0.95),
+        (label = L"q = (k, k),~ k = v", range = LinRange(0, 30, 100), startvalue = 18),
+        (label = L"p = (k, k),~ k = v", range = LinRange(0, 30, 100), startvalue = 16.8),
+)
+orient_funcs = [orient_f64, orient_adaptive, ExactPredicates.orient]
+menu = Menu(fig[3, 1], options = zip(string.(orient_funcs), orient_funcs))
+w_obs, r_obs, q_obs, p_obs = getproperty.(sliders.sliders, :value)
+orient_obs = menu.selection
+
+heatmap_size = @lift maximum(widths($(ax.scene.viewport)))*4
+
+matrix_observable = lift(orient_obs, w_obs, r_obs, q_obs, p_obs, heatmap_size) do orient, w, r, q, p, heatmap_size
+    return [orient((p, p), (q, q), (r+x, r+y)) for x in LinRange(0, 0+2.0^(-w), heatmap_size), y in LinRange(0, 0+2.0^(-w), heatmap_size)]
+end
+heatmap!(ax, matrix_observable; colormap = [:red, :green, :blue])
+resize!(fig, 500, 700)
+fig

Testing robust vs regular predicates

julia

+import GeoInterface as GI, GeometryOps as GO, LibGEOS as LG
+using MultiFloats
+c1 = [[-28083.868447876892, -58059.13401805979], [-9833.052704767595, -48001.726711609794], [-16111.439295815226, -2.856614689791036e-11], [-76085.95770326033, -2.856614689791036e-11], [-28083.868447876892, -58059.13401805979]]
+c2 = [[-53333.333333333336, 0.0], [0.0, 0.0], [0.0, -80000.0], [-60000.0, -80000.0], [-53333.333333333336, 0.0]]
+
+p1 = GI.Polygon([c1])
+p2 = GI.Polygon([c2])
+GO.intersection(p1, p2; target = GI.PolygonTrait(), fix_multipoly = nothing)
+
+p1_m, p2_m = GO.transform(x -> (Float64x2.(x)), [p1, p2])
+GO.intersection(p1_m, p2_m; target = GI.PolygonTrait(), fix_multipoly = nothing)
+
+p1 = GI.Polygon([[[-57725.80869813739, -52709.704377648755], [-53333.333333333336, 0.0], [-41878.01362848005, 0.0], [-36022.23699059147, -43787.61366192682], [-48268.44121252392, -52521.18593721105], [-57725.80869813739, -52709.704377648755]]])
+p2 = GI.Polygon([[[-60000.0, 80000.0], [0.0, 80000.0], [0.0, 0.0], [-53333.33333333333, 0.0], [-50000.0, 40000.0], [-60000.0, 80000.0]]])
+p1_m, p2_m = GO.transform(x -> (Float64x2.(x)), [p1, p2])
+f, a, p__1 = poly(p1; label = "p1")
+p__2 = poly!(a, p2; label = "p2")
+
+GO.intersection(p1_m, p2_m; target = GI.PolygonTrait(), fix_multipoly = nothing)
+LG.intersection(p1_m, p2_m)

Incircle

+ + + + \ No newline at end of file diff --git a/previews/PR195/explanations/crs.html b/previews/PR195/explanations/crs.html new file mode 100644 index 000000000..e01b9b066 --- /dev/null +++ b/previews/PR195/explanations/crs.html @@ -0,0 +1,25 @@ + + + + + + GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content
+ + + + \ No newline at end of file diff --git a/previews/PR195/explanations/paradigms.html b/previews/PR195/explanations/paradigms.html new file mode 100644 index 000000000..c643d542f --- /dev/null +++ b/previews/PR195/explanations/paradigms.html @@ -0,0 +1,25 @@ + + + + + + Paradigms | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Paradigms

GeometryOps exposes functions like apply and applyreduce, as well as the fix and prepare APIs, that represent paradigms of programming, by which we mean the ability to program in a certain way, and in so doing, fit neatly into the tools we've built without needing to re-implement the wheel.

Below, we'll describe some of the foundational paradigms of GeometryOps, and why you should care!

apply

The apply function allows you to decompose a given collection of geometries down to a certain level, operate on it, and reconstruct it back to the same nested form as the original. In general, its invocation is:

julia
apply(f, trait::Trait, geom)

Functionally, it's similar to map in the way you apply it to geometries - except that you tell it at which level it should stop, by passing a trait to it.

apply will start by decomposing the geometry, feature, featurecollection, iterable, or table that you pass to it, and stop when it encounters a geometry for which GI.trait(geom) isa Trait. This encompasses unions of traits especially, but beware that any geometry which is not explicitly handled, and hits GI.PointTrait, will cause an error.

apply is unlike map in that it returns reconstructed geometries, instead of the raw output of the function. If you want a purely map-like behaviour, like calculating the length of each linestring in your feature collection, then call GO.flatten(f, trait, geom), which will decompose each geometry to the given trait and apply f to it, returning the decomposition as a flattened vector.

applyreduce

applyreduce is like the previous map-based approach that we mentioned, except that it reduces the result of f by op. Note that applyreduce does not guarantee associativity, so it's best to have typeof(init) == returntype(op).

fix and prepare

The fix and prepare paradigms are different from apply, though they are built on top of it. They involve the use of structs as "actions", where a constructed object indicates an action that should be taken. A trait like interface prescribes the level (polygon, linestring, point, etc) at which each action should be applied.

In general, the idea here is to be able to invoke several actions efficiently and simultaneously, for example when correcting invalid geometries, or instantiating a Prepared geometry with several preparations (sorted edge lists, rtrees, monotone chains, etc.)

+ + + + \ No newline at end of file diff --git a/previews/PR195/explanations/peculiarities.html b/previews/PR195/explanations/peculiarities.html new file mode 100644 index 000000000..100f0823d --- /dev/null +++ b/previews/PR195/explanations/peculiarities.html @@ -0,0 +1,25 @@ + + + + + + Peculiarities | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Peculiarities

What does apply return and why?

apply returns the target geometries returned by f, whatever type/package they are from, but geometries, features or feature collections that wrapped the target are replaced with GeoInterace.jl wrappers with matching GeoInterface.trait to the originals. All non-geointerface iterables become Arrays. Tables.jl compatible tables are converted either back to the original type if a Tables.materializer is defined, and if not then returned as generic NamedTuple column tables (i.e., a NamedTuple of vectors).

It is recommended for consistency that f returns GeoInterface geometries unless there is a performance/conversion overhead to doing that.

Why do you want me to provide a target in set operations?

In polygon set operations like intersection, difference, and union, many different geometry types may be obtained - depending on the relationship between the polygons. For example, when performing an union on two nonintersecting polygons, one would technically have two disjoint polygons as an output.

We use the target keyword to allow the user to control which kinds of geometry they want back. For example, setting target to PolygonTrait will cause a vector of polygons to be returned (this is the only currently supported behaviour). In future, we may implement MultiPolygonTrait or GeometryCollectionTrait targets which will return a single geometry, as LibGEOS and ArchGDAL do.

This also allows for a lot more type stability - when you ask for polygons, we won't return a geometrycollection with line segments. Especially in simulation workflows, this is excellent for simplified data processing.

_True and _False (or BoolsAsTypes)

Warning

These are internals and explicitly not public API, meaning they may change at any time!

When dispatch can be controlled by the value of a boolean variable, this introduces type instability. Instead of introducing type instability, we chose to encode our boolean decision variables, like threaded and calc_extent in apply, as types. This allows the compiler to reason about what will happen, and call the correct compiled method, in a stable way without worrying about

+ + + + \ No newline at end of file diff --git a/previews/PR195/explanations/winding_order.html b/previews/PR195/explanations/winding_order.html new file mode 100644 index 000000000..ba768ae19 --- /dev/null +++ b/previews/PR195/explanations/winding_order.html @@ -0,0 +1,25 @@ + + + + + + GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content
+ + + + \ No newline at end of file diff --git a/previews/PR195/favicon.ico b/previews/PR195/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..468a7af73ea3037f8f9e2f22674a92565d1b3163 GIT binary patch literal 23866 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 literal 0 HcmV?d00001 diff --git a/previews/PR195/hashmap.json b/previews/PR195/hashmap.json new file mode 100644 index 000000000..bfaf433b8 --- /dev/null +++ b/previews/PR195/hashmap.json @@ -0,0 +1 @@ +{"api.md":"DHJubgq9","call_notes.md":"7w_VILqE","experiments_accurate_accumulators.md":"GjJQmUUF","experiments_predicates.md":"Dg71Bfw3","explanations_crs.md":"rB2P2tWO","explanations_paradigms.md":"DI9tAELo","explanations_peculiarities.md":"FHOVDDB1","explanations_winding_order.md":"Bm0h6HnC","index.md":"BWJsEQ2o","introduction.md":"D8tkvOeC","source_geometryops.md":"BkD8zBly","source_methods_angles.md":"BIdkE80s","source_methods_area.md":"6LdxlzTA","source_methods_barycentric.md":"CyGX2fFb","source_methods_buffer.md":"DU5YIRhh","source_methods_centroid.md":"1Rbjvw60","source_methods_clipping_clipping_processor.md":"DEdPT5AQ","source_methods_clipping_coverage.md":"CbA11gxz","source_methods_clipping_cut.md":"n40IAodq","source_methods_clipping_difference.md":"CrhFy5Cm","source_methods_clipping_intersection.md":"xm82NmdL","source_methods_clipping_predicates.md":"DXSSIe8m","source_methods_clipping_union.md":"CXn4Lc-2","source_methods_convex_hull.md":"BBbSUADr","source_methods_distance.md":"Dw2LmtDw","source_methods_equals.md":"DSTnK05y","source_methods_geom_relations_contains.md":"C6qh7KbG","source_methods_geom_relations_coveredby.md":"DKl5czuP","source_methods_geom_relations_covers.md":"EwhGx2oH","source_methods_geom_relations_crosses.md":"BHrKZtR2","source_methods_geom_relations_disjoint.md":"Cx5AfXIW","source_methods_geom_relations_geom_geom_processors.md":"C9HuuL9H","source_methods_geom_relations_intersects.md":"BR3MeE8s","source_methods_geom_relations_overlaps.md":"GC_xhoO1","source_methods_geom_relations_touches.md":"CI5Nxam0","source_methods_geom_relations_within.md":"DKPdlPzO","source_methods_orientation.md":"CAyjPYQQ","source_methods_polygonize.md":"Bajq04Cb","source_not_implemented_yet.md":"Bz3ySMxN","source_primitives.md":"CwLE6hnK","source_transformations_correction_closed_ring.md":"BDlXIhE4","source_transformations_correction_geometry_correction.md":"VEdgiIPU","source_transformations_correction_intersecting_polygons.md":"CVZsm4oL","source_transformations_extent.md":"BOfr-Fyq","source_transformations_flip.md":"BXRIoP3a","source_transformations_reproject.md":"AFBdSlqT","source_transformations_segmentize.md":"CgM0snro","source_transformations_simplify.md":"BSSKKuAL","source_transformations_transform.md":"CQbjpjpu","source_transformations_tuples.md":"De5DcGB5","source_types.md":"Df5Ol6GF","source_utils.md":"BvaNAnX0","tutorials_creating_geometry.md":"PsrBxXGz","tutorials_geodesic_paths.md":"BeBppPdH","tutorials_spatial_joins.md":"ysriZBMi"} diff --git a/previews/PR195/index.html b/previews/PR195/index.html new file mode 100644 index 000000000..b25048ef6 --- /dev/null +++ b/previews/PR195/index.html @@ -0,0 +1,25 @@ + + + + + + What is GeometryOps.jl? | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

GeometryOps.jl

Blazing fast geometry operations in pure Julia

GeometryOps

What is GeometryOps.jl?

GeometryOps.jl is a package for geometric calculations on (primarily 2D) geometries.

The driving idea behind this package is to unify all the disparate packages for geometric calculations in Julia, and make them GeoInterface.jl-compatible. We seem to be focusing primarily on 2/2.5D geometries for now.

Most of the usecases are driven by GIS and similar Earth data workflows, so this might be a bit specialized towards that, but methods should always be general to any coordinate space.

We welcome contributions, either as pull requests or discussion on issues!

How to navigate the docs

GeometryOps' docs are divided into three main sections: tutorials, explanations and source code.
Documentation and examples for many functions can be found in the source code section, since we use literate programming in GeometryOps.

  • Tutorials are meant to teach the fundamental concepts behind GeometryOps, and how to perform certain operations.
  • Explanations usually contain little code, and explain in more detail how GeometryOps works.
  • Source code usually contains explanations and examples at the top of the page, followed by annotated source code from that file.
+ + + + \ No newline at end of file diff --git a/previews/PR195/introduction.html b/previews/PR195/introduction.html new file mode 100644 index 000000000..55efdd55b --- /dev/null +++ b/previews/PR195/introduction.html @@ -0,0 +1,25 @@ + + + + + + Introduction | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Introduction

GeometryOps.jl is a package for geometric calculations on (primarily 2D) geometries.

The driving idea behind this package is to unify all the disparate packages for geometric calculations in Julia, and make them GeoInterface.jl-compatible. We seem to be focusing primarily on 2/2.5D geometries for now.

Most of the usecases are driven by GIS and similar Earth data workflows, so this might be a bit specialized towards that, but methods should always be general to any coordinate space.

We welcome contributions, either as pull requests or discussion on issues!

Main concepts

The apply paradigm

Note

See the Primitive Functions page for more information on this.

The apply function allows you to decompose a given collection of geometries down to a certain level, and then operate on it.

Functionally, it's similar to map in the way you apply it to geometries.

apply and applyreduce take any geometry, vector of geometries, collection of geometries, or table (like Shapefile.Table, DataFrame, or GeoTable)!

What's this GeoInterface.Wrapper thing?

Write a comment about GeoInterface.Wrapper and why it helps in type stability to guarantee a particular return type.

+ + + + \ No newline at end of file diff --git a/previews/PR195/logo.png b/previews/PR195/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8a3120119f5fb9fc512cf7c86c6adb6396b1c663 GIT binary patch literal 87252 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 G%zps%(o>rN literal 0 HcmV?d00001 diff --git a/previews/PR195/siteinfo.js b/previews/PR195/siteinfo.js new file mode 100644 index 000000000..b4a2b652c --- /dev/null +++ b/previews/PR195/siteinfo.js @@ -0,0 +1 @@ +var DOCUMENTER_CURRENT_VERSION = "previews/PR195"; diff --git a/previews/PR195/source/GeometryOps.html b/previews/PR195/source/GeometryOps.html new file mode 100644 index 000000000..13831e35f --- /dev/null +++ b/previews/PR195/source/GeometryOps.html @@ -0,0 +1,98 @@ + + + + + + GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

GeometryOps.jl

julia
module GeometryOps
+
+using GeoInterface
+using GeometryBasics
+using LinearAlgebra, Statistics
+
+import Tables
+import GeometryBasics.StaticArrays
+import DelaunayTriangulation # for convex hull and triangulation
+import ExactPredicates
+import Base.@kwdef
+import GeoInterface.Extents: Extents
+
+const GI = GeoInterface
+const GB = GeometryBasics
+
+const TuplePoint{T} = Tuple{T, T} where T <: AbstractFloat
+const Edge{T} = Tuple{TuplePoint{T},TuplePoint{T}} where T
+
+include("types.jl")
+include("primitives.jl")
+include("utils.jl")
+include("not_implemented_yet.jl")
+
+include("methods/angles.jl")
+include("methods/area.jl")
+include("methods/barycentric.jl")
+include("methods/buffer.jl")
+include("methods/centroid.jl")
+include("methods/convex_hull.jl")
+include("methods/distance.jl")
+include("methods/equals.jl")
+include("methods/clipping/predicates.jl")
+include("methods/clipping/clipping_processor.jl")
+include("methods/clipping/coverage.jl")
+include("methods/clipping/cut.jl")
+include("methods/clipping/intersection.jl")
+include("methods/clipping/difference.jl")
+include("methods/clipping/union.jl")
+include("methods/geom_relations/contains.jl")
+include("methods/geom_relations/coveredby.jl")
+include("methods/geom_relations/covers.jl")
+include("methods/geom_relations/crosses.jl")
+include("methods/geom_relations/disjoint.jl")
+include("methods/geom_relations/geom_geom_processors.jl")
+include("methods/geom_relations/intersects.jl")
+include("methods/geom_relations/overlaps.jl")
+include("methods/geom_relations/touches.jl")
+include("methods/geom_relations/within.jl")
+include("methods/orientation.jl")
+include("methods/polygonize.jl")
+
+include("transformations/extent.jl")
+include("transformations/flip.jl")
+include("transformations/reproject.jl")
+include("transformations/segmentize.jl")
+include("transformations/simplify.jl")
+include("transformations/tuples.jl")
+include("transformations/transform.jl")
+include("transformations/correction/geometry_correction.jl")
+include("transformations/correction/closed_ring.jl")
+include("transformations/correction/intersecting_polygons.jl")

Import all names from GeoInterface and Extents, so users can do GO.extent or GO.trait.

julia
for name in names(GeoInterface)
+    @eval using GeoInterface: $name
+end
+for name in names(Extents)
+    @eval using GeoInterface.Extents: $name
+end
+
+function __init__()

Handle all available errors!

julia
    Base.Experimental.register_error_hint(_reproject_error_hinter, MethodError)
+    Base.Experimental.register_error_hint(_geodesic_segments_error_hinter, MethodError)
+    Base.Experimental.register_error_hint(_buffer_error_hinter, MethodError)
+end
+
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/angles.html b/previews/PR195/source/methods/angles.html new file mode 100644 index 000000000..b12de625c --- /dev/null +++ b/previews/PR195/source/methods/angles.html @@ -0,0 +1,148 @@ + + + + + + Angles | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Angles

julia
export angles

What is angles?

Angles are the angles formed by a given geometries line segments, if it has line segments.

To provide an example, consider this rectangle:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie, CairoMakie
+
+rect = GI.Polygon([[(0.0, 0.0), (0.0, 1.0), (1.0, 1.0), (1.0, 0.0), (0.0, 0.0)]])
+f, a, p = poly(collect(GI.getpoint(rect)); axis = (; aspect = DataAspect()))

This is clearly a rectangle, with angles of 90 degrees.

julia
GO.angles(rect)  # [90, 90, 90, 90]
4-element Vector{Float64}:
+ 90.0
+ 90.0
+ 90.0
+ 90.0

Implementation

This is the GeoInterface-compatible implementation. First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait. This is also used in the implementation, since it's a lot less work!

julia
const _ANGLE_TARGETS = TraitTarget{Union{GI.PolygonTrait,GI.AbstractCurveTrait,GI.MultiPointTrait,GI.PointTrait}}()
+
+"""
+    angles(geom, ::Type{T} = Float64)
+
+Returns the angles of a geometry or collection of geometries.
+This is computed differently for different geometries:
+
+    - The angles of a point is an empty vector.
+    - The angles of a single line segment is an empty vector.
+    - The angles of a linestring or linearring is a vector of angles formed by the curve.
+    - The angles of a polygon is a vector of vectors of angles formed by each ring.
+    - The angles of a multi-geometry collection is a vector of the angles of each of the
+        sub-geometries as defined above.
+
+Result will be a Vector, or nested set of vectors, of type T where an optional argument with
+a default value of Float64.
+"""
+function angles(geom, ::Type{T} = Float64; threaded =false) where T <: AbstractFloat
+    applyreduce(vcat, _ANGLE_TARGETS, geom; threaded, init = Vector{T}()) do g
+        _angles(T, GI.trait(g), g)
+    end
+end

Points and single line segments have no angles

julia
_angles(::Type{T}, ::Union{GI.PointTrait, GI.MultiPointTrait, GI.LineTrait}, geom) where T = T[]
+
+#= The angles of a linestring are the angles formed by the line. If the first and last point
+are not explicitly repeated, the geom is not considered closed. The angles should all be on
+one side of the line, but a particular side is not guaranteed by this function. =#
+function _angles(::Type{T}, ::GI.LineStringTrait, geom) where T
+    npoints = GI.npoint(geom)
+    first_last_equal = equals(GI.getpoint(geom, 1), GI.getpoint(geom, npoints))
+    angle_list = Vector{T}(undef, npoints - (first_last_equal ? 1 : 2))
+    _find_angles!(
+        T, angle_list, geom;
+        offset = first_last_equal, close_geom = false,
+    )
+    return angle_list
+end
+
+#= The angles of a linearring are the angles within the closed line and include the angles
+formed by connecting the first and last points of the curve. =#
+function _angles(::Type{T}, ::GI.LinearRingTrait, geom; interior = true) where T
+    npoints = GI.npoint(geom)
+    first_last_equal = equals(GI.getpoint(geom, 1), GI.getpoint(geom, npoints))
+    angle_list = Vector{T}(undef, npoints - (first_last_equal ? 1 : 0))
+    _find_angles!(
+        T, angle_list, geom;
+        offset = true, close_geom = !first_last_equal, interior = interior,
+    )
+    return angle_list
+end
+
+#= The angles of a polygon is a vector of polygon angles. Note that if there are holes
+within the polygon, the angles will be listed after the exterior ring angles in order of the
+holes. All angles, including the hole angles, are interior angles of the polygon.=#
+function _angles(::Type{T}, ::GI.PolygonTrait, geom) where T
+    angles = _angles(T, GI.LinearRingTrait(), GI.getexterior(geom); interior = true)
+    for h in GI.gethole(geom)
+        append!(angles, _angles(T, GI.LinearRingTrait(), h; interior = false))
+    end
+    return angles
+end

Find angles of a curve and insert the values into the angle_list. If offset is true, then save space for the angle at the first vertex, as the curve is closed, at the front of angle_list. If close_geom is true, then despite the first and last point not being explicitly repeated, the curve is closed and the angle of the last point should be added to angle_list. If interior is true, then all angles will be on the same side of the line

julia
function _find_angles!(
+    ::Type{T}, angle_list, geom;
+    offset, close_geom, interior = true,
+) where T
+    local p1, prev_p1_diff, p2_p1_diff
+    local start_point, start_diff
+    local extreem_idx, extreem_x, extreem_y
+    i_offset = offset ? 1 : 0

Loop through the curve and find each of the angels

julia
    for (i, p2) in enumerate(GI.getpoint(geom))
+        xp2, yp2 = GI.x(p2), GI.y(p2)
+        #= Find point with smallest x values (and smallest y in case of a tie) as this point
+        is know to be convex. =#
+        if i == 1 || (xp2 < extreem_x || (xp2 == extreem_x && yp2 < extreem_y))
+            extreem_idx = i
+            extreem_x, extreem_y = xp2, yp2
+        end
+        if i > 1
+            p2_p1_diff = (xp2 - GI.x(p1), yp2 - GI.y(p1))
+            if i == 2
+                start_point = p1
+                start_diff = p2_p1_diff
+            else
+                angle_list[i - 2 + i_offset] = _diffs_calc_angle(T, prev_p1_diff, p2_p1_diff)
+            end
+            prev_p1_diff = -1 .* p2_p1_diff
+        end
+        p1 = p2
+    end

If the last point of geometry should be the same as the first, calculate closing angle

julia
    if close_geom
+        p2_p1_diff = (GI.x(start_point) - GI.x(p1), GI.y(start_point) - GI.y(p1))
+        angle_list[end] = _diffs_calc_angle(T, prev_p1_diff, p2_p1_diff)
+        prev_p1_diff = -1 .* p2_p1_diff
+    end

If needed, calculate first angle corresponding to the first point

julia
    if offset
+        angle_list[1] = _diffs_calc_angle(T, prev_p1_diff, start_diff)
+    end
+    #= Make sure that all of the angles are on the same side of the line and inside of the
+    closed ring if the input geometry is closed. =#
+    inside_sgn = sign(angle_list[extreem_idx]) * (interior ? 1 : -1)
+    for i in eachindex(angle_list)
+        idx_sgn = sign(angle_list[i])
+        if idx_sgn == -1
+            angle_list[i] = abs(angle_list[i])
+        end
+        if idx_sgn != inside_sgn
+            angle_list[i] = 360 - angle_list[i]
+        end
+    end
+    return
+end

Calculate the angle between two vectors defined by the previous and current Δx and Δys. Angle will have a sign corresponding to the sign of the cross product between the two vectors. All angles of one sign in a given geometry are convex, while those of the other sign are concave. However, the sign corresponding to each of these can vary based on geometry and thus you must compare to an angle that is know to be convex or concave.

julia
function _diffs_calc_angle(::Type{T}, (Δx_prev, Δy_prev), (Δx_curr, Δy_curr)) where T
+    cross_prod = Δx_prev * Δy_curr - Δy_prev * Δx_curr
+    dot_prod = Δx_prev * Δx_curr + Δy_prev * Δy_curr
+    prev_mag = max(sqrt(Δx_prev^2 + Δy_prev^2), eps(T))
+    curr_mag = max(sqrt(Δx_curr^2 + Δy_curr^2), eps(T))
+    val = clamp(dot_prod / (prev_mag * curr_mag), -one(T), one(T))
+    angle = real(acos(val) * 180 / π)
+    return angle * (cross_prod < 0 ? -1 : 1)
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/area.html b/previews/PR195/source/methods/area.html new file mode 100644 index 000000000..2ce024c44 --- /dev/null +++ b/previews/PR195/source/methods/area.html @@ -0,0 +1,111 @@ + + + + + + Area and signed area | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Area and signed area

julia
export area, signed_area

What is area? What is signed area?

Area is the amount of space occupied by a two-dimensional figure. It is always a positive value. Signed area is simply the integral over the exterior path of a polygon, minus the sum of integrals over its interior holes. It is signed such that a clockwise path has a positive area, and a counterclockwise path has a negative area. The area is the absolute value of the signed area.

To provide an example, consider this rectangle:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+rect = GI.Polygon([[(0,0), (0,1), (1,1), (1,0), (0, 0)]])
+f, a, p = poly(collect(GI.getpoint(rect)); axis = (; aspect = DataAspect()))

This is clearly a rectangle, etc. But now let's look at how the points look:

julia
lines!(
+    collect(GI.getpoint(rect));
+    color = 1:GI.npoint(rect), linewidth = 10.0)
+f

The points are ordered in a counterclockwise fashion, which means that the signed area is negative. If we reverse the order of the points, we get a positive area.

julia
GO.signed_area(rect)  # -1.0
-1.0

Implementation

This is the GeoInterface-compatible implementation. First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait. This is also used in the implementation, since it's a lot less work!

Note that area and signed area are zero for all points and curves, even if the curves are closed like with a linear ring. Also note that signed area really only makes sense for polygons, given with a multipolygon can have several polygons each with a different orientation and thus the absolute value of the signed area might not be the area. This is why signed area is only implemented for polygons.

Targets for applys functions

julia
const _AREA_TARGETS = TraitTarget{Union{GI.PolygonTrait,GI.AbstractCurveTrait,GI.MultiPointTrait,GI.PointTrait}}()
+
+"""
+    area(geom, [T = Float64])::T
+
+Returns the area of a geometry or collection of geometries.
+This is computed slightly differently for different geometries:
+
+    - The area of a point/multipoint is always zero.
+    - The area of a curve/multicurve is always zero.
+    - The area of a polygon is the absolute value of the signed area.
+    - The area multi-polygon is the sum of the areas of all of the sub-polygons.
+    - The area of a geometry collection, feature collection of array/iterable
+        is the sum of the areas of all of the sub-geometries.
+
+Result will be of type T, where T is an optional argument with a default value
+of Float64.
+"""
+function area(geom, ::Type{T} = Float64; threaded=false) where T <: AbstractFloat
+    applyreduce(+, _AREA_TARGETS, geom; threaded, init=zero(T)) do g
+        _area(T, GI.trait(g), g)
+    end
+end
+
+"""
+    signed_area(geom, [T = Float64])::T
+
+Returns the signed area of a single geometry, based on winding order.
+This is computed slightly differently for different geometries:
+
+    - The signed area of a point is always zero.
+    - The signed area of a curve is always zero.
+    - The signed area of a polygon is computed with the shoelace formula and is
+    positive if the polygon coordinates wind clockwise and negative if
+    counterclockwise.
+    - You cannot compute the signed area of a multipolygon as it doesn't have a
+    meaning as each sub-polygon could have a different winding order.
+
+Result will be of type T, where T is an optional argument with a default value
+of Float64.
+"""
+signed_area(geom, ::Type{T} = Float64) where T <: AbstractFloat =
+    _signed_area(T, GI.trait(geom), geom)

Points, MultiPoints, Curves, MultiCurves

julia
_area(::Type{T}, ::GI.AbstractGeometryTrait, geom) where T = zero(T)
+
+_signed_area(::Type{T}, ::GI.AbstractGeometryTrait, geom) where T = zero(T)

LibGEOS treats linear rings as zero area. I disagree with that but we should probably maintain compatibility...

julia
_area(::Type{T}, tr::GI.LinearRingTrait, geom) where T = 0 # could be abs(_signed_area(T, tr, geom))
+
+_signed_area(::Type{T}, ::GI.LinearRingTrait, geom) where T = 0 # could be _signed_area(T, tr, geom)

Polygons

julia
_area(::Type{T}, trait::GI.PolygonTrait, poly) where T =
+    abs(_signed_area(T, trait, poly))
+
+function _signed_area(::Type{T}, ::GI.PolygonTrait, poly) where T
+    GI.isempty(poly) && return zero(T)
+    s_area = _signed_area(T, GI.getexterior(poly))
+    area = abs(s_area)
+    area == 0 && return area

Remove hole areas from total

julia
    for hole in GI.gethole(poly)
+        area -= abs(_signed_area(T, hole))
+    end

Winding of exterior ring determines sign

julia
    return area * sign(s_area)
+end

One term of the shoelace area formula

julia
_area_component(p1, p2) = GI.x(p1) * GI.y(p2) - GI.y(p1) * GI.x(p2)
+
+#= Calculates the signed area of a given curve. This is equivalent to integrating
+to find the area under the curve. Even if curve isn't explicitly closed by
+repeating the first point at the end of the coordinates, curve is still assumed
+to be closed. =#
+function _signed_area(::Type{T}, geom) where T
+    area = zero(T)
+    np = GI.npoint(geom)
+    np == 0 && return area
+
+    first = true
+    local pfirst, p1

Integrate the area under the curve

julia
    for p2 in GI.getpoint(geom)

Skip the first and do it later This lets us work within one iteration over geom, which means on C call when using points from external libraries.

julia
        if first
+            p1 = pfirst = p2
+            first = false
+            continue
+        end

Accumulate the area into area

julia
        area += _area_component(p1, p2)
+        p1 = p2
+    end

Complete the last edge. If the first and last where the same this will be zero

julia
    p2 = pfirst
+    area += _area_component(p1, p2)
+    return T(area / 2)
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/barycentric.html b/previews/PR195/source/methods/barycentric.html new file mode 100644 index 000000000..41b08fc1b --- /dev/null +++ b/previews/PR195/source/methods/barycentric.html @@ -0,0 +1,439 @@ + + + + + + Barycentric coordinates | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Barycentric coordinates

julia
export barycentric_coordinates, barycentric_coordinates!, barycentric_interpolate
+export MeanValue

Generalized barycentric coordinates are a generalization of barycentric coordinates, which are typically used in triangles, to arbitrary polygons.

They provide a way to express a point within a polygon as a weighted average of the polygon's vertices.

In the case of a triangle, barycentric coordinates are a set of three numbers (λ1,λ2,λ3), each associated with a vertex of the triangle. Any point within the triangle can be expressed as a weighted average of the vertices, where the weights are the barycentric coordinates. The weights sum to 1, and each is non-negative.

For a polygon with n vertices, generalized barycentric coordinates are a set of n numbers (λ1,λ2,...,λn), each associated with a vertex of the polygon. Any point within the polygon can be expressed as a weighted average of the vertices, where the weights are the generalized barycentric coordinates.

As with the triangle case, the weights sum to 1, and each is non-negative.

Example

This example was taken from this page of CGAL's documentation.

julia
using GeometryOps
+using GeometryOps.GeometryBasics
+using Makie
+using CairoMakie
+# Define a polygon
+polygon_points = Point3f[
+(0.03, 0.05, 0.00), (0.07, 0.04, 0.02), (0.10, 0.04, 0.04),
+(0.14, 0.04, 0.06), (0.17, 0.07, 0.08), (0.20, 0.09, 0.10),
+(0.22, 0.11, 0.12), (0.25, 0.11, 0.14), (0.27, 0.10, 0.16),
+(0.30, 0.07, 0.18), (0.31, 0.04, 0.20), (0.34, 0.03, 0.22),
+(0.37, 0.02, 0.24), (0.40, 0.03, 0.26), (0.42, 0.04, 0.28),
+(0.44, 0.07, 0.30), (0.45, 0.10, 0.32), (0.46, 0.13, 0.34),
+(0.46, 0.19, 0.36), (0.47, 0.26, 0.38), (0.47, 0.31, 0.40),
+(0.47, 0.35, 0.42), (0.45, 0.37, 0.44), (0.41, 0.38, 0.46),
+(0.38, 0.37, 0.48), (0.35, 0.36, 0.50), (0.32, 0.35, 0.52),
+(0.30, 0.37, 0.54), (0.28, 0.39, 0.56), (0.25, 0.40, 0.58),
+(0.23, 0.39, 0.60), (0.21, 0.37, 0.62), (0.21, 0.34, 0.64),
+(0.23, 0.32, 0.66), (0.24, 0.29, 0.68), (0.27, 0.24, 0.70),
+(0.29, 0.21, 0.72), (0.29, 0.18, 0.74), (0.26, 0.16, 0.76),
+(0.24, 0.17, 0.78), (0.23, 0.19, 0.80), (0.24, 0.22, 0.82),
+(0.24, 0.25, 0.84), (0.21, 0.26, 0.86), (0.17, 0.26, 0.88),
+(0.12, 0.24, 0.90), (0.07, 0.20, 0.92), (0.03, 0.15, 0.94),
+(0.01, 0.10, 0.97), (0.02, 0.07, 1.00)]
+# Plot it!
+# First, we'll plot the polygon using Makie's rendering:
+f, a1, p1 = poly(
+    Point2d.(polygon_points);
+    color = last.(polygon_points),
+    colormap = cgrad(:jet, 18; categorical = true),
+    axis = (;
+       type = Axis, aspect = DataAspect(), title = "Makie mesh based polygon rendering", subtitle = "CairoMakie"
+    ),
+    figure = (; size = (800, 400),)
+)
+hidedecorations!(a1)
+
+ext = GeometryOps.GI.Extent(X = (0, 0.5), Y = (0, 0.42))
+
+a2 = Axis(
+        f[1, 2],
+        aspect = DataAspect(),
+        title = "Barycentric coordinate based polygon rendering", subtitle = "GeometryOps",
+        limits = (ext.X, ext.Y)
+    )
+hidedecorations!(a2)
+
+p2box = poly!( # Now, we plot a cropping rectangle around the axis so we only show the polygon
+    a2,
+    GeometryOps.GeometryBasics.Polygon( # This is a rectangle with an internal hole shaped like the polygon.
+        Point2f[(ext.X[1], ext.Y[1]), (ext.X[2], ext.Y[1]), (ext.X[2], ext.Y[2]), (ext.X[1], ext.Y[2]), (ext.X[1], ext.Y[1])], # exterior
+        [reverse(Point2f.(polygon_points))] # hole
+    ); color = :white, xautolimits = false, yautolimits = false
+)
+cb = Colorbar(f[2, :], p1.plots[1]; vertical = false, flipaxis = true)
+# Finally, we perform barycentric interpolation on a grid,
+xrange = LinRange(ext.X..., 400)
+yrange = LinRange(ext.Y..., 400)
+@time mean_values = barycentric_interpolate.(
+    (MeanValue(),), # The barycentric coordinate algorithm (MeanValue is the only one for now)
+    (Point2f.(polygon_points),), # The polygon points as `Point2f`
+    (last.(polygon_points,),),   # The values per polygon point - can be anything which supports addition and division
+    Point2f.(xrange, yrange')    # The points at which to interpolate
+)
+# and render!
+hm = heatmap!(a2, xrange, yrange, mean_values; colormap = p1.colormap, colorrange = p1.plots[1].colorrange[], xautolimits = false, yautolimits = false)
+translate!(hm, 0, 0, -1) # translate the heatmap behind the cropping polygon!
+f # finally, display the figure

Barycentric-coordinate API

In some cases, we actually want barycentric interpolation, and have no interest in the coordinates themselves.

However, the coordinates can be useful for debugging, and when performing 3D rendering, multiple barycentric values (depth, uv) are needed for depth buffering.

julia
const _VecTypes = Union{Tuple{Vararg{T, N}}, GeometryBasics.StaticArraysCore.StaticArray{Tuple{N}, T, 1}} where {N, T}
+
+"""
+    abstract type AbstractBarycentricCoordinateMethod
+
+Abstract supertype for barycentric coordinate methods.
+The subtypes may serve as dispatch types, or may cache
+some information about the target polygon.
+
+# API
+The following methods must be implemented for all subtypes:
+- `barycentric_coordinates!(λs::Vector{<: Real}, method::AbstractBarycentricCoordinateMethod, exterior::Vector{<: Point{2, T1}}, point::Point{2, T2})`
+- `barycentric_interpolate(method::AbstractBarycentricCoordinateMethod, exterior::Vector{<: Point{2, T1}}, values::Vector{V}, point::Point{2, T2})::V`
+- `barycentric_interpolate(method::AbstractBarycentricCoordinateMethod, exterior::Vector{<: Point{2, T1}}, interiors::Vector{<: Vector{<: Point{2, T1}}} values::Vector{V}, point::Point{2, T2})::V`
+The rest of the methods will be implemented in terms of these, and have efficient dispatches for broadcasting.
+"""
+abstract type AbstractBarycentricCoordinateMethod end
+
+Base.@propagate_inbounds function barycentric_coordinates!(λs::Vector{<: Real}, method::AbstractBarycentricCoordinateMethod, polypoints::AbstractVector{<: Point{N1, T1}}, point::Point{N2, T2}) where {N1, N2, T1 <: Real, T2 <: Real}
+    @boundscheck @assert length(λs) == length(polypoints)
+    @boundscheck @assert length(polypoints) >= 3
+
+    @error("Not implemented yet for method $(method).")
+end
+Base.@propagate_inbounds barycentric_coordinates!(λs::Vector{<: Real}, polypoints::AbstractVector{<: Point{N1, T1}}, point::Point{N2, T2}) where {N1, N2, T1 <: Real, T2 <: Real} = barycentric_coordinates!(λs, MeanValue(), polypoints, point)

This is the GeoInterface-compatible method.

julia
"""
+    barycentric_coordinates!(λs::Vector{<: Real}, method::AbstractBarycentricCoordinateMethod, polygon, point)
+
+Loads the barycentric coordinates of `point` in `polygon` into `λs` using the barycentric coordinate method `method`.
+
+`λs` must be of the length of the polygon plus its holes.
+
+!!! tip
+    Use this method to avoid excess allocations when you need to calculate barycentric coordinates for many points.
+"""
+Base.@propagate_inbounds function barycentric_coordinates!(λs::Vector{<: Real}, method::AbstractBarycentricCoordinateMethod, polygon, point)
+    @assert GeoInterface.trait(polygon) isa GeoInterface.PolygonTrait
+    @assert GeoInterface.trait(point) isa GeoInterface.PointTrait
+    passable_polygon = GeoInterface.convert(GeometryBasics, polygon)
+    @assert passable_polygon isa GeometryBasics.Polygon "The polygon was converted to a $(typeof(passable_polygon)), which is not a `GeometryBasics.Polygon`."
+    passable_point = GeoInterface.convert(GeometryBasics, point)
+    return barycentric_coordinates!(λs, method, passable_polygon, Point2(passable_point))
+end
+
+Base.@propagate_inbounds function barycentric_coordinates(method::AbstractBarycentricCoordinateMethod, polypoints::AbstractVector{<: Point{N1, T1}}, point::Point{N2, T2}) where {N1, N2, T1 <: Real, T2 <: Real}
+    λs = zeros(promote_type(T1, T2), length(polypoints))
+    barycentric_coordinates!(λs, method, polypoints, point)
+    return λs
+end
+Base.@propagate_inbounds barycentric_coordinates(polypoints::AbstractVector{<: Point{N1, T1}}, point::Point{N2, T2}) where {N1, N2, T1 <: Real, T2 <: Real} = barycentric_coordinates(MeanValue(), polypoints, point)

This is the GeoInterface-compatible method.

julia
"""
+    barycentric_coordinates(method = MeanValue(), polygon, point)
+
+Returns the barycentric coordinates of `point` in `polygon` using the barycentric coordinate method `method`.
+"""
+Base.@propagate_inbounds function barycentric_coordinates(method::AbstractBarycentricCoordinateMethod, polygon, point)
+    @assert GeoInterface.trait(polygon) isa GeoInterface.PolygonTrait
+    @assert GeoInterface.trait(point) isa GeoInterface.PointTrait
+    passable_polygon = GeoInterface.convert(GeometryBasics, polygon)
+    @assert passable_polygon isa GeometryBasics.Polygon "The polygon was converted to a $(typeof(passable_polygon)), which is not a `GeometryBasics.Polygon`."
+    passable_point = GeoInterface.convert(GeometryBasics, point)
+    return barycentric_coordinates(method, passable_polygon, Point2(passable_point))
+end
+
+Base.@propagate_inbounds function barycentric_interpolate(method::AbstractBarycentricCoordinateMethod, polypoints::AbstractVector{<: Point{N, T1}}, values::AbstractVector{V}, point::Point{N, T2}) where {N, T1 <: Real, T2 <: Real, V}
+    @boundscheck @assert length(values) == length(polypoints)
+    @boundscheck @assert length(polypoints) >= 3
+    λs = barycentric_coordinates(method, polypoints, point)
+    return sum(λs .* values)
+end
+Base.@propagate_inbounds barycentric_interpolate(polypoints::AbstractVector{<: Point{N, T1}}, values::AbstractVector{V}, point::Point{N, T2}) where {N, T1 <: Real, T2 <: Real, V} = barycentric_interpolate(MeanValue(), polypoints, values, point)
+
+Base.@propagate_inbounds function barycentric_interpolate(method::AbstractBarycentricCoordinateMethod, exterior::AbstractVector{<: Point{N, T1}}, interiors::AbstractVector{<: Point{N, T1}}, values::AbstractVector{V}, point::Point{N, T2}) where {N, T1 <: Real, T2 <: Real, V}
+    @boundscheck @assert length(values) == length(exterior) + isempty(interiors) ? 0 : sum(length.(interiors))
+    @boundscheck @assert length(exterior) >= 3
+    λs = barycentric_coordinates(method, exterior, interiors, point)
+    return sum(λs .* values)
+end
+Base.@propagate_inbounds barycentric_interpolate(exterior::AbstractVector{<: Point{N, T1}}, interiors::AbstractVector{<: Point{N, T1}}, values::AbstractVector{V}, point::Point{N, T2}) where {N, T1 <: Real, T2 <: Real, V} = barycentric_interpolate(MeanValue(), exterior, interiors, values, point)
+
+Base.@propagate_inbounds function barycentric_interpolate(method::AbstractBarycentricCoordinateMethod, polygon::Polygon{2, T1}, values::AbstractVector{V}, point::Point{2, T2}) where {T1 <: Real, T2 <: Real, V}
+    exterior = decompose(Point{2, promote_type(T1, T2)}, polygon.exterior)
+    if isempty(polygon.interiors)
+        @boundscheck @assert length(values) == length(exterior)
+        return barycentric_interpolate(method, exterior, values, point)
+    else # the poly has interiors
+        interiors = reverse.(decompose.((Point{2, promote_type(T1, T2)},), polygon.interiors))
+        @boundscheck @assert length(values) == length(exterior) + sum(length.(interiors))
+        return barycentric_interpolate(method, exterior, interiors, values, point)
+    end
+end
+Base.@propagate_inbounds barycentric_interpolate(polygon::Polygon{2, T1}, values::AbstractVector{V}, point::Point{2, T2}) where {T1 <: Real, T2 <: Real, V} = barycentric_interpolate(MeanValue(), polygon, values, point)

3D polygons are considered to have their vertices in the XY plane, and the Z coordinate must represent some value. This is to say that the Z coordinate is interpreted as an M coordinate.

julia
Base.@propagate_inbounds function barycentric_interpolate(method::AbstractBarycentricCoordinateMethod, polygon::Polygon{3, T1}, point::Point{2, T2}) where {T1 <: Real, T2 <: Real}
+    exterior_point3s = decompose(Point{3, promote_type(T1, T2)}, polygon.exterior)
+    exterior_values = getindex.(exterior_point3s, 3)
+    exterior_points = Point2f.(exterior_point3s)
+    if isempty(polygon.interiors)
+        return barycentric_interpolate(method, exterior_points, exterior_values, point)
+    else # the poly has interiors
+        interior_point3s = decompose.((Point{3, promote_type(T1, T2)},), polygon.interiors)
+        interior_values = collect(Iterators.flatten((getindex.(point3s, 3) for point3s in interior_point3s)))
+        interior_points = map(point3s -> Point2f.(point3s), interior_point3s)
+        return barycentric_interpolate(method, exterior_points, interior_points, vcat(exterior_values, interior_values), point)
+    end
+end
+Base.@propagate_inbounds barycentric_interpolate(polygon::Polygon{3, T1}, point::Point{2, T2}) where {T1 <: Real, T2 <: Real} = barycentric_interpolate(MeanValue(), polygon, point)

This method is the one which supports GeoInterface.

julia
"""
+    barycentric_interpolate(method = MeanValue(), polygon, values::AbstractVector{V}, point)
+
+Returns the interpolated value at `point` within `polygon` using the barycentric coordinate method `method`.
+`values` are the per-point values for the polygon which are to be interpolated.
+
+Returns an object of type `V`.
+
+!!! warning
+    Barycentric interpolation is currently defined only for 2-dimensional polygons.
+    If you pass a 3-D polygon in, the Z coordinate will be used as per-vertex value to be interpolated
+    (the M coordinate in GIS parlance).
+"""
+Base.@propagate_inbounds function barycentric_interpolate(method::AbstractBarycentricCoordinateMethod, polygon, values::AbstractVector{V}, point) where V
+    @assert GeoInterface.trait(polygon) isa GeoInterface.PolygonTrait
+    @assert GeoInterface.trait(point) isa GeoInterface.PointTrait
+    passable_polygon = GeoInterface.convert(GeometryBasics, polygon)
+    @assert passable_polygon isa GeometryBasics.Polygon "The polygon was converted to a $(typeof(passable_polygon)), which is not a `GeometryBasics.Polygon`."
+    # first_poly_point = GeoInterface.getpoint(GeoInterface.getexterior(polygon))
+    passable_point = GeoInterface.convert(GeometryBasics, point)
+    return barycentric_interpolate(method, passable_polygon, Point2(passable_point))
+end
+Base.@propagate_inbounds barycentric_interpolate(polygon, values::AbstractVector{V}, point) where V = barycentric_interpolate(MeanValue(), polygon, values, point)
+
+"""
+    weighted_mean(weight::Real, x1, x2)
+
+Returns the weighted mean of `x1` and `x2`, where `weight` is the weight of `x1`.
+
+Specifically, calculates `x1 * weight + x2 * (1 - weight)`.
+
+!!! note
+    The idea for this method is that you can override this for custom types, like Color types, in extension modules.
+"""
+function weighted_mean(weight::WT, x1, x2) where {WT <: Real}
+    return muladd(x1, weight, x2 * (oneunit(WT) - weight))
+end
+
+
+"""
+    MeanValue() <: AbstractBarycentricCoordinateMethod
+
+This method calculates barycentric coordinates using the mean value method.
+
+# References
+
+"""
+struct MeanValue <: AbstractBarycentricCoordinateMethod
+end

Before we go to the actual implementation, there are some quick and simple utility functions that we need to implement. These are mainly for convenience and code brevity.

julia
"""
+    _det(s1::Point2{T1}, s2::Point2{T2}) where {T1 <: Real, T2 <: Real}
+
+Returns the determinant of the matrix formed by `hcat`'ing two points `s1` and `s2`.
+
+Specifically, this is:
+```julia
+s1[1] * s2[2] - s1[2] * s2[1]
+```
+"""
+function _det(s1::_VecTypes{2, T1}, s2::_VecTypes{2, T2}) where {T1 <: Real, T2 <: Real}
+    return s1[1] * s2[2] - s1[2] * s2[1]
+end
+
+"""
+    t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)
+
+Returns the "T-value" as described in Hormann's presentation [^HormannPresentation] on how to calculate
+the mean-value coordinate.
+
+Here, `sᵢ` is the vector from vertex `vᵢ` to the point, and `rᵢ` is the norm (length) of `sᵢ`.
+`s` must be `Point` and `r` must be real numbers.
+
+```math
+tᵢ = \\frac{\\mathrm{det}\\left(sᵢ, sᵢ₊₁\\right)}{rᵢ * rᵢ₊₁ + sᵢ ⋅ sᵢ₊₁}
+```
+
+[^HormannPresentation]: K. Hormann and N. Sukumar. Generalized Barycentric Coordinates in Computer Graphics and Computational Mechanics. Taylor & Fancis, CRC Press, 2017.
+```
+
+"""
+function t_value(sᵢ::_VecTypes{N, T1}, sᵢ₊₁::_VecTypes{N, T1}, rᵢ::T2, rᵢ₊₁::T2) where {N, T1 <: Real, T2 <: Real}
+    return _det(sᵢ, sᵢ₊₁) / muladd(rᵢ, rᵢ₊₁, dot(sᵢ, sᵢ₊₁))
+end
+
+
+function barycentric_coordinates!(λs::Vector{<: Real}, ::MeanValue, polypoints::AbstractVector{<: Point{2, T1}}, point::Point{2, T2}) where {T1 <: Real, T2 <: Real}
+    @boundscheck @assert length(λs) == length(polypoints)
+    @boundscheck @assert length(polypoints) >= 3
+    n_points = length(polypoints)
+    # Initialize counters and register variables
+    # Points - these are actually vectors from point to vertices
+    #  polypoints[i-1], polypoints[i], polypoints[i+1]
+    sᵢ₋₁ = polypoints[end] - point
+    sᵢ   = polypoints[begin] - point
+    sᵢ₊₁ = polypoints[begin+1] - point
+    # radius / Euclidean distance between points.
+    rᵢ₋₁ = norm(sᵢ₋₁)
+    rᵢ   = norm(sᵢ  )
+    rᵢ₊₁ = norm(sᵢ₊₁)
+    # Perform the first computation explicitly, so we can cut down on
+    # a mod in the loop.
+    λs[1] = (t_value(sᵢ₋₁, sᵢ, rᵢ₋₁, rᵢ) + t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)) / rᵢ
+    # Loop through the rest of the vertices, compute, store in λs
+    for i in 2:n_points
+        # Increment counters + set variables
+        sᵢ₋₁ = sᵢ
+        sᵢ   = sᵢ₊₁
+        sᵢ₊₁ = polypoints[mod1(i+1, n_points)] - point
+        rᵢ₋₁ = rᵢ
+        rᵢ   = rᵢ₊₁
+        rᵢ₊₁ = norm(sᵢ₊₁) # radius / Euclidean distance between points.
+        λs[i] = (t_value(sᵢ₋₁, sᵢ, rᵢ₋₁, rᵢ) + t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)) / rᵢ
+    end
+    # Normalize λs to the 1-norm (sum=1)
+    λs ./= sum(λs)
+    return λs
+end
julia
function barycentric_coordinates(::MeanValue, polypoints::NTuple{N, Point{2, T2}}, point::Point{2, T1},) where {N, T1, T2}
+    ## Initialize counters and register variables
+    ## Points - these are actually vectors from point to vertices
+    ##  polypoints[i-1], polypoints[i], polypoints[i+1]
+    sᵢ₋₁ = polypoints[end] - point
+    sᵢ   = polypoints[begin] - point
+    sᵢ₊₁ = polypoints[begin+1] - point
+    ## radius / Euclidean distance between points.
+    rᵢ₋₁ = norm(sᵢ₋₁)
+    rᵢ   = norm(sᵢ  )
+    rᵢ₊₁ = norm(sᵢ₊₁)
+    λ₁ = (t_value(sᵢ₋₁, sᵢ, rᵢ₋₁, rᵢ) + t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)) / rᵢ
+    λs = ntuple(N) do i
+        if i == 1
+            return λ₁
+        end
+        ## Increment counters + set variables
+        sᵢ₋₁ = sᵢ
+        sᵢ   = sᵢ₊₁
+        sᵢ₊₁ = polypoints[mod1(i+1, N)] - point
+        rᵢ₋₁ = rᵢ
+        rᵢ   = rᵢ₊₁
+        rᵢ₊₁ = norm(sᵢ₊₁) # radius / Euclidean distance between points.
+        return (t_value(sᵢ₋₁, sᵢ, rᵢ₋₁, rᵢ) + t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)) / rᵢ
+    end
+
+    ∑λ = sum(λs)
+
+    return ntuple(N) do i
+        λs[i] / ∑λ
+    end
+end

This performs an inplace accumulation, using less memory and is faster. That's particularly good if you are using a polygon with a large number of points...

julia
function barycentric_interpolate(::MeanValue, polypoints::AbstractVector{<: Point{2, T1}}, values::AbstractVector{V}, point::Point{2, T2}) where {T1 <: Real, T2 <: Real, V}
+    @boundscheck @assert length(values) == length(polypoints)
+    @boundscheck @assert length(polypoints) >= 3
+
+    n_points = length(polypoints)
+    # Initialize counters and register variables
+    # Points - these are actually vectors from point to vertices
+    #  polypoints[i-1], polypoints[i], polypoints[i+1]
+    sᵢ₋₁ = polypoints[end] - point
+    sᵢ   = polypoints[begin] - point
+    sᵢ₊₁ = polypoints[begin+1] - point
+    # radius / Euclidean distance between points.
+    rᵢ₋₁ = norm(sᵢ₋₁)
+    rᵢ   = norm(sᵢ  )
+    rᵢ₊₁ = norm(sᵢ₊₁)
+    # Now, we set the interpolated value to the first point's value, multiplied
+    # by the weight computed relative to the first point in the polygon.
+    wᵢ = (t_value(sᵢ₋₁, sᵢ, rᵢ₋₁, rᵢ) + t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)) / rᵢ
+    wₜₒₜ = wᵢ
+    interpolated_value = values[begin] * wᵢ
+    for i in 2:n_points
+        # Increment counters + set variables
+        sᵢ₋₁ = sᵢ
+        sᵢ   = sᵢ₊₁
+        sᵢ₊₁ = polypoints[mod1(i+1, n_points)] - point
+        rᵢ₋₁ = rᵢ
+        rᵢ   = rᵢ₊₁
+        rᵢ₊₁ = norm(sᵢ₊₁)
+        # Now, we calculate the weight:
+        wᵢ = (t_value(sᵢ₋₁, sᵢ, rᵢ₋₁, rᵢ) + t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)) / rᵢ
+        # perform a weighted sum with the interpolated value:
+        interpolated_value += values[i] * wᵢ
+        # and add the weight to the total weight accumulator.
+        wₜₒₜ += wᵢ
+    end
+    # Return the normalized interpolated value.
+    return interpolated_value / wₜₒₜ
+end

When you have holes, then you have to be careful about the order you iterate around points.

Specifically, you have to iterate around each linear ring separately and ensure there are no degenerate/repeated points at the start and end!

julia
function barycentric_interpolate(::MeanValue, exterior::AbstractVector{<: Point{N, T1}}, interiors::AbstractVector{<: AbstractVector{<: Point{N, T1}}}, values::AbstractVector{V}, point::Point{N, T2}) where {N, T1 <: Real, T2 <: Real, V}
+    # @boundscheck @assert length(values) == (length(exterior) + isempty(interiors) ? 0 : sum(length.(interiors)))
+    # @boundscheck @assert length(exterior) >= 3
+
+    current_index = 1
+    l_exterior = length(exterior)
+
+    sᵢ₋₁ = exterior[end] - point
+    sᵢ   = exterior[begin] - point
+    sᵢ₊₁ = exterior[begin+1] - point
+    rᵢ₋₁ = norm(sᵢ₋₁) # radius / Euclidean distance between points.
+    rᵢ   = norm(sᵢ  ) # radius / Euclidean distance between points.
+    rᵢ₊₁ = norm(sᵢ₊₁) # radius / Euclidean distance between points.

Now, we set the interpolated value to the first point's value, multiplied by the weight computed relative to the first point in the polygon.

julia
    wᵢ = (t_value(sᵢ₋₁, sᵢ, rᵢ₋₁, rᵢ) + t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)) / rᵢ
+    wₜₒₜ = wᵢ
+    interpolated_value = values[begin] * wᵢ
+
+    for i in 2:l_exterior

Increment counters + set variables

julia
        sᵢ₋₁ = sᵢ
+        sᵢ   = sᵢ₊₁
+        sᵢ₊₁ = exterior[mod1(i+1, l_exterior)] - point
+        rᵢ₋₁ = rᵢ
+        rᵢ   = rᵢ₊₁
+        rᵢ₊₁ = norm(sᵢ₊₁) # radius / Euclidean distance between points.
+        wᵢ = (t_value(sᵢ₋₁, sᵢ, rᵢ₋₁, rᵢ) + t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)) / rᵢ

Updates - first the interpolated value,

julia
        interpolated_value += values[current_index] * wᵢ

then the accumulators for total weight and current index.

julia
        wₜₒₜ += wᵢ
+        current_index += 1
+
+    end
+    for hole in interiors
+        l_hole = length(hole)
+        sᵢ₋₁ = hole[end] - point
+        sᵢ   = hole[begin] - point
+        sᵢ₊₁ = hole[begin+1] - point
+        rᵢ₋₁ = norm(sᵢ₋₁) # radius / Euclidean distance between points.
+        rᵢ   = norm(sᵢ  ) # radius / Euclidean distance between points.
+        rᵢ₊₁ = norm(sᵢ₊₁) # radius / Euclidean distance between points.
+        # Now, we set the interpolated value to the first point's value, multiplied
+        # by the weight computed relative to the first point in the polygon.
+        wᵢ = (t_value(sᵢ₋₁, sᵢ, rᵢ₋₁, rᵢ) + t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)) / rᵢ
+
+        interpolated_value += values[current_index] * wᵢ
+
+        wₜₒₜ += wᵢ
+        current_index += 1
+
+        for i in 2:l_hole
+            # Increment counters + set variables
+            sᵢ₋₁ = sᵢ
+            sᵢ   = sᵢ₊₁
+            sᵢ₊₁ = hole[mod1(i+1, l_hole)] - point
+            rᵢ₋₁ = rᵢ
+            rᵢ   = rᵢ₊₁
+            rᵢ₊₁ = norm(sᵢ₊₁) ## radius / Euclidean distance between points.
+            wᵢ = (t_value(sᵢ₋₁, sᵢ, rᵢ₋₁, rᵢ) + t_value(sᵢ, sᵢ₊₁, rᵢ, rᵢ₊₁)) / rᵢ
+            interpolated_value += values[current_index] * wᵢ
+            wₜₒₜ += wᵢ
+            current_index += 1
+        end
+    end
+    return interpolated_value / wₜₒₜ
+
+end
+
+struct Wachspress <: AbstractBarycentricCoordinateMethod
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/buffer.html b/previews/PR195/source/methods/buffer.html new file mode 100644 index 000000000..a0d66562d --- /dev/null +++ b/previews/PR195/source/methods/buffer.html @@ -0,0 +1,35 @@ + + + + + + Buffer | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Buffer

Buffering a geometry means computing the region distance away from it, and returning that region as the new geometry.

As of now, we only support GEOS as the backend, meaning that LibGEOS must be loaded.

julia
function buffer(geometry, distance; kwargs...)
+    buffered = buffer(GEOS(; kwargs...), geometry, distance)
+    return tuples(buffered)
+end

Below is an error handler similar to the others we have for e.g. segmentize, which checks if there is a method error for the geos backend.

Add an error hint for buffer if LibGEOS is not loaded!

julia
function _buffer_error_hinter(io, exc, argtypes, kwargs)
+    if isnothing(Base.get_extension(GeometryOps, :GeometryOpsLibGEOSExt)) && exc.f == buffer && first(argtypes) == GEOS
+        print(io, "\n\nThe `buffer` method requires the LibGEOS.jl package to be explicitly loaded.\n")
+        print(io, "You can do this by simply typing ")
+        printstyled(io, "using LibGEOS"; color = :cyan, bold = true)
+        println(io, " in your REPL, \nor otherwise loading LibGEOS.jl via using or import.")
+    end
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/centroid.html b/previews/PR195/source/methods/centroid.html new file mode 100644 index 000000000..310881ba8 --- /dev/null +++ b/previews/PR195/source/methods/centroid.html @@ -0,0 +1,117 @@ + + + + + + Centroid | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Centroid

julia
export centroid, centroid_and_length, centroid_and_area

What is the centroid?

The centroid is the geometric center of a line string or area(s). Note that the centroid does not need to be inside of a concave area.

Further note that by convention a line, or linear ring, is calculated by weighting the line segments by their length, while polygons and multipolygon centroids are calculated by weighting edge's by their 'area components'.

To provide an example, consider this concave polygon in the shape of a 'C':

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+cshape = GI.Polygon([[(0,0), (0,3), (3,3), (3,2), (1,2), (1,1), (3,1), (3,0), (0,0)]])
+f, a, p = poly(collect(GI.getpoint(cshape)); axis = (; aspect = DataAspect()))

Let's see what the centroid looks like (plotted in red):

julia
cent = GO.centroid(cshape)
+scatter!(GI.x(cent), GI.y(cent), color = :red)
+f

Implementation

This is the GeoInterface-compatible implementation.

First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait. This is also used in the implementation, since it's a lot less work!

Note that if you call centroid on a LineString or LinearRing, the centroid_and_length function will be called due to the weighting scheme described above, while centroid_and_area is called for polygons and multipolygons. However, centroid_and_area can still be called on a LineString or LinearRing when they are closed, for example as the interior hole of a polygon.

The helper functions centroid_and_length and centroid_and_area are made available just in case the user also needs the area or length to decrease repeat computation.

julia
"""
+    centroid(geom, [T=Float64])::Tuple{T, T}
+
+Returns the centroid of a given line segment, linear ring, polygon, or
+mutlipolygon.
+"""
+centroid(geom, ::Type{T} = Float64; threaded=false) where T =
+    centroid(GI.trait(geom), geom, T; threaded)
+function centroid(
+    trait::Union{GI.LineStringTrait, GI.LinearRingTrait}, geom, ::Type{T}=Float64; threaded=false
+) where T
+    centroid_and_length(trait, geom, T)[1]
+end
+centroid(trait, geom, ::Type{T}; threaded=false) where T =
+    centroid_and_area(geom, T; threaded)[1]
+
+"""
+    centroid_and_length(geom, [T=Float64])::(::Tuple{T, T}, ::Real)
+
+Returns the centroid and length of a given line/ring. Note this is only valid
+for line strings and linear rings.
+"""
+centroid_and_length(geom, ::Type{T}=Float64) where T =
+    centroid_and_length(GI.trait(geom), geom, T)
+function centroid_and_length(
+    ::Union{GI.LineStringTrait, GI.LinearRingTrait}, geom, ::Type{T},
+) where T

Initialize starting values

julia
    xcentroid = T(0)
+    ycentroid = T(0)
+    length = T(0)
+    point₁ = GI.getpoint(geom, 1)

Loop over line segments of line string

julia
    for point₂ in GI.getpoint(geom)

Calculate length of line segment

julia
        length_component = sqrt(
+            (GI.x(point₂) - GI.x(point₁))^2 +
+            (GI.y(point₂) - GI.y(point₁))^2
+        )

Accumulate the line segment length into length

julia
        length += length_component

Weighted average of line segment centroids

julia
        xcentroid += (GI.x(point₁) + GI.x(point₂)) * (length_component / 2)
+        ycentroid += (GI.y(point₁) + GI.y(point₂)) * (length_component / 2)
+        #centroid = centroid .+ ((point₁ .+ point₂) .* (length_component / 2))

Advance the point buffer by 1 point to move to next line segment

julia
        point₁ = point₂
+    end
+    xcentroid /= length
+    ycentroid /= length
+    return (xcentroid, ycentroid), length
+end
+
+"""
+    centroid_and_area(geom, [T=Float64])::(::Tuple{T, T}, ::Real)
+
+Returns the centroid and area of a given geometry.
+"""
+function centroid_and_area(geom, ::Type{T}=Float64; threaded=false) where T
+    target = TraitTarget{Union{GI.PolygonTrait,GI.LineStringTrait,GI.LinearRingTrait}}()
+    init = (zero(T), zero(T)), zero(T)
+    applyreduce(_combine_centroid_and_area, target, geom; threaded, init) do g
+        _centroid_and_area(GI.trait(g), g, T)
+    end
+end
+
+function _centroid_and_area(
+    ::Union{GI.LineStringTrait, GI.LinearRingTrait}, geom, ::Type{T}
+) where T

Check that the geometry is closed

julia
    @assert(
+        GI.getpoint(geom, 1) == GI.getpoint(geom, GI.ngeom(geom)),
+        "centroid_and_area should only be used with closed geometries"
+    )

Initialize starting values

julia
    xcentroid = T(0)
+    ycentroid = T(0)
+    area = T(0)
+    point₁ = GI.getpoint(geom, 1)

Loop over line segments of linear ring

julia
    for point₂ in GI.getpoint(geom)
+        area_component = GI.x(point₁) * GI.y(point₂) -
+            GI.x(point₂) * GI.y(point₁)

Accumulate the area component into area

julia
        area += area_component

Weighted average of centroid components

julia
        xcentroid += (GI.x(point₁) + GI.x(point₂)) * area_component
+        ycentroid += (GI.y(point₁) + GI.y(point₂)) * area_component

Advance the point buffer by 1 point

julia
        point₁ = point₂
+    end
+    area /= 2
+    xcentroid /= 6area
+    ycentroid /= 6area
+    return (xcentroid, ycentroid), abs(area)
+end
+function _centroid_and_area(::GI.PolygonTrait, geom, ::Type{T}) where T

Exterior ring's centroid and area

julia
    (xcentroid, ycentroid), area = centroid_and_area(GI.getexterior(geom), T)

Weight exterior centroid by area

julia
    xcentroid *= area
+    ycentroid *= area

Loop over any holes within the polygon

julia
    for hole in GI.gethole(geom)

Hole polygon's centroid and area

julia
        (xinterior, yinterior), interior_area = centroid_and_area(hole, T)

Accumulate the area component into area

julia
        area -= interior_area

Weighted average of centroid components

julia
        xcentroid -= xinterior * interior_area
+        ycentroid -= yinterior * interior_area
+    end
+    xcentroid /= area
+    ycentroid /= area
+    return (xcentroid, ycentroid), area
+end

The op argument for _applyreduce and point / area It combines two (point, area) tuples into one, taking the average of the centroid points weighted by the area of the geom they are from.

julia
function _combine_centroid_and_area(((x1, y1), area1), ((x2, y2), area2))
+    area = area1 + area2
+    x = (x1 * area1 + x2 * area2) / area
+    y = (y1 * area1 + y2 * area2) / area
+    return (x, y), area
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/clipping/clipping_processor.html b/previews/PR195/source/methods/clipping/clipping_processor.html new file mode 100644 index 000000000..df503e789 --- /dev/null +++ b/previews/PR195/source/methods/clipping/clipping_processor.html @@ -0,0 +1,548 @@ + + + + + + Polygon clipping helpers | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Polygon clipping helpers

This file contains the shared helper functions for the polygon clipping functionalities.

This enum defines which side of an edge a point is on

julia
@enum PointEdgeSide left=1 right=2 unknown=3

Constants assigned for readability

julia
const enter, exit = true, false
+const crossing, bouncing = true, false
+
+#= A point can either be the start or end of an overlapping chain of points between two
+polygons, or not an endpoint of a chain. =#
+@enum EndPointType start_chain=1 end_chain=2 not_endpoint=3
+
+#= This is the struct that makes up a_list and b_list. Many values are only used if point is
+an intersection point (ipt). =#
+@kwdef struct PolyNode{T <: AbstractFloat}
+    point::Tuple{T,T}          # (x, y) values of given point
+    inter::Bool = false        # If ipt, true, else 0
+    neighbor::Int = 0          # If ipt, index of equivalent point in a_list or b_list, else 0
+    idx::Int = 0               # If crossing point, index within sorted a_idx_list
+    ent_exit::Bool = false     # If ipt, true if enter and false if exit, else false
+    crossing::Bool = false     # If ipt, true if intersection crosses from out/in polygon, else false
+    endpoint::EndPointType = not_endpoint # If ipt, denotes if point is the start or end of an overlapping chain
+    fracs::Tuple{T,T} = (0., 0.) # If ipt, fractions along edges to ipt (a_frac, b_frac), else (0, 0)
+end
+
+#= Create a new node with all of the same field values as the given PolyNode unless
+alternative values are provided, in which case those should be used. =#
+PolyNode(node::PolyNode{T};
+    point = node.point, inter = node.inter, neighbor = node.neighbor, idx = node.idx,
+    ent_exit = node.ent_exit, crossing = node.crossing, endpoint = node.endpoint,
+    fracs = node.fracs,
+) where T = PolyNode{T}(;
+    point = point, inter = inter, neighbor = neighbor, idx = idx, ent_exit = ent_exit,
+    crossing = crossing, endpoint = endpoint, fracs = fracs)

Checks equality of two PolyNodes by backing point value, fractional value, and intersection status

julia
equals(pn1::PolyNode, pn2::PolyNode) = pn1.point == pn2.point && pn1.inter == pn2.inter && pn1.fracs == pn2.fracs
+
+#=
+    _lazy_closed_ring_point_enumerator(ring) -> Iterator
+
+This function returns an enumerator over the points of a ring, and adds an extra point
+to the end, if the ring is not closed.
+=#
+function _lazy_closed_ring_point_enumerator(ring)
+    @assert GI.geomtrait(ring) isa GI.AbstractCurveTrait "`ring` must be a curve, got $(GI.trait(ring))"

Check if poly_a is closed. NOTE: 1 is defined as the starting index of a ring in GeoInterface.

julia
    if equals(GI.getpoint(ring, 1), GI.getpoint(ring, GI.npoint(ring)))

If yes, pass the iterator as formed

julia
        Iterators.enumerate(GI.getpoint(ring))
+    else

If no, pass the iterator as lazy vcat

julia
        Iterators.enumerate(
+            Iterators.flatten(
+                (GI.getpoint(ring),
+                (GI.getpoint(ring, 1),),)
+            )
+        )
+    end
+end
_build_ab_list(::Type{T}, poly_a, poly_b, delay_cross_f, delay_bounce_f; exact) ->
+    (a_list, b_list, a_idx_list)

This function takes in two polygon rings and calls '_build_a_list', '_build_b_list', and '_flag_ent_exit' in order to fully form a_list and b_list. The 'a_list' and 'b_list' that it returns are the fully updated vectors of PolyNodes that represent the rings 'poly_a' and 'poly_b', respectively. This function also returns 'a_idx_list', which at its "ith" index stores the index in 'a_list' at which the "ith" intersection point lies.

julia
function _build_ab_list(::Type{T}, poly_a, poly_b, delay_cross_f::F1, delay_bounce_f::F2; exact) where {T, F1, F2}

Make a list for nodes of each polygon

julia
    a_list, a_idx_list, n_b_intrs = _build_a_list(T, poly_a, poly_b; exact)
+    b_list = _build_b_list(T, a_idx_list, a_list, n_b_intrs, poly_b)

Flag crossings

julia
    _classify_crossing!(T, a_list, b_list; exact)

Flag the entry and exits

julia
    _flag_ent_exit!(T, GI.LinearRingTrait(), poly_b, a_list, delay_cross_f, Base.Fix2(delay_bounce_f, true); exact)
+    _flag_ent_exit!(T, GI.LinearRingTrait(), poly_a, b_list, delay_cross_f, Base.Fix2(delay_bounce_f, false); exact)

Set node indices and filter a_idx_list to just crossing points

julia
    _index_crossing_intrs!(a_list, b_list, a_idx_list)
+
+    return a_list, b_list, a_idx_list
+end
_build_a_list(::Type{T}, poly_a, poly_b) -> (a_list, a_idx_list)

This function take in two polygon rings and creates a vector of PolyNodes to represent poly_a, including its intersection points with poly_b. The information stored in each PolyNode is needed for clipping using the Greiner-Hormann clipping algorithm.

Note: After calling this function, a_list is not fully formed because the neighboring indices of the intersection points in b_list still need to be updated. Also we still have not update the entry and exit flags for a_list.

The a_idx_list is a list of the indices of intersection points in a_list. The value at index i of a_idx_list is the location in a_list where the ith intersection point lies.

julia
function _build_a_list(::Type{T}, poly_a, poly_b; exact) where T
+    n_a_edges = _nedge(poly_a)
+    a_list = PolyNode{T}[]  # list of points in poly_a
+    sizehint!(a_list, n_a_edges)
+    a_idx_list = Vector{Int}()  # finds indices of intersection points in a_list
+    a_count = 0  # number of points added to a_list
+    n_b_intrs = 0

Loop through points of poly_a

julia
    local a_pt1
+    for (i, a_p2) in _lazy_closed_ring_point_enumerator(poly_a) # basically `enumerate(GI.getpoint(poly_a))` but makes sure `poly_a` is closed
+        a_pt2 = (T(GI.x(a_p2)), T(GI.y(a_p2)))
+        if i <= 1 || (a_pt1 == a_pt2)  # don't repeat points
+            a_pt1 = a_pt2
+            continue
+        end

Add the first point of the edge to the list of points in a_list

julia
        new_point = PolyNode{T}(;point = a_pt1)
+        a_count += 1
+        push!(a_list, new_point)

Find intersections with edges of poly_b

julia
        local b_pt1
+        prev_counter = a_count
+        for (j, b_p2) in _lazy_closed_ring_point_enumerator(poly_b) # basically `enumerate(GI.getpoint(poly_b))` but makes sure `poly_b` is closed
+            b_pt2 = _tuple_point(b_p2, T)
+            if j <= 1 || (b_pt1 == b_pt2)  # don't repeat points
+                b_pt1 = b_pt2
+                continue
+            end

Determine if edges intersect and how they intersect

julia
            line_orient, intr1, intr2 = _intersection_point(T, (a_pt1, a_pt2), (b_pt1, b_pt2); exact)
+            if line_orient != line_out  # edges intersect
+                if line_orient == line_cross  # Intersection point that isn't a vertex
+                    int_pt, fracs = intr1
+                    new_intr = PolyNode{T}(;
+                        point = int_pt, inter = true, neighbor = j - 1,
+                        crossing = true, fracs = fracs,
+                    )
+                    a_count += 1
+                    n_b_intrs += 1
+                    push!(a_list, new_intr)
+                    push!(a_idx_list, a_count)
+                else
+                    (_, (α1, β1)) = intr1

Determine if a1 or b1 should be added to a_list

julia
                    add_a1 = α1 == 0 && 0 β1 < 1
+                    a1_β = add_a1 ? β1 : zero(T)
+                    add_b1 = β1 == 0 && 0 < α1 < 1
+                    b1_α = add_b1 ? α1 : zero(T)

If lines are collinear and overlapping, a second intersection exists

julia
                    if line_orient == line_over
+                        (_, (α2, β2)) = intr2
+                        if α2 == 0 && 0 β2 < 1
+                            add_a1, a1_β = true, β2
+                        end
+                        if β2 == 0 && 0 < α2 < 1
+                            add_b1, b1_α = true, α2
+                        end
+                    end

Add intersection points determined above

julia
                    if add_a1
+                        n_b_intrs += a1_β == 0 ? 0 : 1
+                        a_list[prev_counter] = PolyNode{T}(;
+                            point = a_pt1, inter = true, neighbor = j - 1,
+                            fracs = (zero(T), a1_β),
+                        )
+                        push!(a_idx_list, prev_counter)
+                    end
+                    if add_b1
+                        new_intr = PolyNode{T}(;
+                            point = b_pt1, inter = true, neighbor = j - 1,
+                            fracs = (b1_α, zero(T)),
+                        )
+                        a_count += 1
+                        push!(a_list, new_intr)
+                        push!(a_idx_list, a_count)
+                    end
+                end
+            end
+            b_pt1 = b_pt2
+        end

Order intersection points by placement along edge using fracs value

julia
        if prev_counter < a_count
+            Δintrs = a_count - prev_counter
+            inter_points = @view a_list[(a_count - Δintrs + 1):a_count]
+            sort!(inter_points, by = x -> x.fracs[1])
+        end
+        a_pt1 = a_pt2
+    end
+    return a_list, a_idx_list, n_b_intrs
+end
_build_b_list(::Type{T}, a_idx_list, a_list, poly_b) -> b_list

This function takes in the a_list and a_idx_list build in _build_a_list and poly_b and creates a vector of PolyNodes to represent poly_b. The information stored in each PolyNode is needed for clipping using the Greiner-Hormann clipping algorithm.

Note: after calling this function, b_list is not fully updated. The entry/exit flags still need to be updated. However, the neighbor value in a_list is now updated.

julia
function _build_b_list(::Type{T}, a_idx_list, a_list, n_b_intrs, poly_b) where T

Sort intersection points by insertion order in b_list

julia
    sort!(a_idx_list, by = x-> a_list[x].neighbor + a_list[x].fracs[2])

Initialize needed values and lists

julia
    n_b_edges = _nedge(poly_b)
+    n_intr_pts = length(a_idx_list)
+    b_list = PolyNode{T}[]
+    sizehint!(b_list, n_b_edges + n_b_intrs)
+    intr_curr = 1
+    b_count = 0

Loop over points in poly_b and add each point and intersection point

julia
    local b_pt1
+    for (i, b_p2) in _lazy_closed_ring_point_enumerator(poly_b) # basically `enumerate(GI.getpoint(poly_b))` but makes sure `poly_b` is closed
+        b_pt2 = _tuple_point(b_p2, T)
+        if i  1 || (b_pt1 == b_pt2)  # don't repeat points
+            b_pt1 = b_pt2
+            continue
+        end
+        b_count += 1
+        push!(b_list, PolyNode{T}(; point = b_pt1))
+        if intr_curr  n_intr_pts
+            curr_idx = a_idx_list[intr_curr]
+            curr_node = a_list[curr_idx]
+            prev_counter = b_count
+            while curr_node.neighbor == i - 1  # Add all intersection points on current edge
+                b_idx = 0
+                new_intr = PolyNode(curr_node; neighbor = curr_idx)
+                if curr_node.fracs[2] == 0  # if curr_node is segment start point

intersection point is vertex of b

julia
                    b_idx = prev_counter
+                    b_list[b_idx] = new_intr
+                else
+                    b_count += 1
+                    b_idx = b_count
+                    push!(b_list, new_intr)
+                end
+                a_list[curr_idx] = PolyNode(curr_node; neighbor = b_idx)
+                intr_curr += 1
+                intr_curr > n_intr_pts && break
+                curr_idx = a_idx_list[intr_curr]
+                curr_node = a_list[curr_idx]
+            end
+        end
+        b_pt1 = b_pt2
+    end
+    sort!(a_idx_list)  # return a_idx_list to order of points in a_list
+    return b_list
+end
_classify_crossing!(T, poly_b, a_list; exact)

This function marks all intersection points as either bouncing or crossing points. "Delayed" crossing or bouncing intersections (a chain of edges where the central edges overlap and thus only the first and last edge of the chain determine if the chain is bounding or crossing) are marked as follows: the first and the last points are marked as crossing if the chain is crossing and delayed otherwise and all middle points are marked as bouncing. Additionally, the start and end points of the chain are marked as endpoints using the endpoints field.

julia
function _classify_crossing!(::Type{T}, a_list, b_list; exact) where T
+    napts = length(a_list)
+    nbpts = length(b_list)

start centered on last point

julia
    a_prev = a_list[end - 1]
+    curr_pt = a_list[end]
+    i = napts

keep track of unmatched bouncing chains

julia
    start_chain_edge, start_chain_idx = unknown, 0
+    unmatched_end_chain_edge, unmatched_end_chain_idx = unknown, 0
+    same_winding = true

loop over list points

julia
    for next_idx in 1:napts
+        a_next = a_list[next_idx]
+        if curr_pt.inter && !curr_pt.crossing
+            j = curr_pt.neighbor
+            b_prev = j == 1 ? b_list[end] : b_list[j-1]
+            b_next = j == nbpts ? b_list[1] : b_list[j+1]

determine if any segments are on top of one another

julia
            a_prev_is_b_prev = a_prev.inter && equals(a_prev, b_prev)
+            a_prev_is_b_next = a_prev.inter && equals(a_prev, b_next)
+            a_next_is_b_prev = a_next.inter && equals(a_next, b_prev)
+            a_next_is_b_next = a_next.inter && equals(a_next, b_next)

determine which side of a segments the p points are on

julia
            b_prev_side, b_next_side = _get_sides(b_prev, b_next, a_prev, curr_pt, a_next,
+                i, j, a_list, b_list; exact)

no sides overlap

julia
            if !a_prev_is_b_prev && !a_prev_is_b_next && !a_next_is_b_prev && !a_next_is_b_next
+                if b_prev_side != b_next_side  # lines cross
+                    a_list[i] = PolyNode(curr_pt; crossing = true)
+                    b_list[j] = PolyNode(b_list[j]; crossing = true)
+                end

end of overlapping chain

julia
            elseif !a_next_is_b_prev && !a_next_is_b_next
+                b_side = a_prev_is_b_prev ? b_next_side : b_prev_side
+                if start_chain_edge == unknown  # start loop on overlapping chain
+                    unmatched_end_chain_edge = b_side
+                    unmatched_end_chain_idx = i
+                    same_winding = a_prev_is_b_prev
+                else  # close overlapping chain

update end of chain with endpoint and crossing / bouncing tags

julia
                    crossing = b_side != start_chain_edge
+                    a_list[i] = PolyNode(curr_pt;
+                        crossing = crossing,
+                        endpoint = end_chain,
+                    )
+                    b_list[j] = PolyNode(b_list[j];
+                        crossing = crossing,
+                        endpoint = same_winding ? end_chain : start_chain,
+                    )

update start of chain with endpoint and crossing / bouncing tags

julia
                    start_pt = a_list[start_chain_idx]
+                    a_list[start_chain_idx] = PolyNode(start_pt;
+                        crossing = crossing,
+                        endpoint = start_chain,
+                    )
+                    b_list[start_pt.neighbor] = PolyNode(b_list[start_pt.neighbor];
+                        crossing = crossing,
+                        endpoint = same_winding ? start_chain : end_chain,
+                    )
+                end

start of overlapping chain

julia
            elseif !a_prev_is_b_prev && !a_prev_is_b_next
+                b_side = a_next_is_b_prev ? b_next_side : b_prev_side
+                start_chain_edge = b_side
+                start_chain_idx = i
+                same_winding = a_next_is_b_next
+            end
+        end
+        a_prev = curr_pt
+        curr_pt = a_next
+        i = next_idx
+    end

if we started in the middle of overlapping chain, close chain

julia
    if unmatched_end_chain_edge != unknown
+        crossing = unmatched_end_chain_edge != start_chain_edge

update end of chain with endpoint and crossing / bouncing tags

julia
        end_chain_pt = a_list[unmatched_end_chain_idx]
+        a_list[unmatched_end_chain_idx] = PolyNode(end_chain_pt;
+            crossing = crossing,
+            endpoint = end_chain,
+        )
+        b_list[end_chain_pt.neighbor] = PolyNode(b_list[end_chain_pt.neighbor];
+            crossing = crossing,
+            endpoint = same_winding ? end_chain : start_chain,
+        )

update start of chain with endpoint and crossing / bouncing tags

julia
        start_pt = a_list[start_chain_idx]
+        a_list[start_chain_idx] = PolyNode(start_pt;
+            crossing = crossing,
+            endpoint = start_chain,
+        )
+        b_list[start_pt.neighbor] = PolyNode(b_list[start_pt.neighbor];
+            crossing = crossing,
+            endpoint = same_winding ? start_chain : end_chain,
+        )
+    end
+end

Check if PolyNode is a vertex of original polygon

julia
_is_vertex(pt) = !pt.inter || pt.fracs[1] == 0 || pt.fracs[1] == 1 || pt.fracs[2] == 0 || pt.fracs[2] == 1
+
+#= Determines which side (right or left) of the segment a_prev-curr_pt-a_next the points
+b_prev and b_next are on. Given this is only called when curr_pt is an intersection point
+that wasn't initially classified as crossing, we know that curr_pt is either from a hinge or
+overlapping intersection and thus is an original vertex of either poly_a or poly_b. Due to
+floating point error when calculating new intersection points, we only want to use original
+vertices to determine orientation. Thus, for other points, find nearest point that is a
+vertex. Given other intersection points will be collinear along existing segments, this
+won't change the orientation. =#
+function _get_sides(b_prev, b_next, a_prev, curr_pt, a_next, i, j, a_list, b_list; exact)
+    b_prev_pt = if _is_vertex(b_prev)
+        b_prev.point
+    else  # Find original start point of segment formed by b_prev and curr_pt
+        prev_idx = findprev(_is_vertex, b_list, j - 1)
+        prev_idx = isnothing(prev_idx) ? findlast(_is_vertex, b_list) : prev_idx
+        b_list[prev_idx].point
+    end
+    b_next_pt = if _is_vertex(b_next)
+        b_next.point
+    else  # Find original end point of segment formed by curr_pt and b_next
+        next_idx = findnext(_is_vertex, b_list, j + 1)
+        next_idx = isnothing(next_idx) ? findfirst(_is_vertex, b_list) : next_idx
+        b_list[next_idx].point
+    end
+    a_prev_pt = if _is_vertex(a_prev)
+        a_prev.point
+    else   # Find original start point of segment formed by a_prev and curr_pt
+        prev_idx = findprev(_is_vertex, a_list, i - 1)
+        prev_idx = isnothing(prev_idx) ? findlast(_is_vertex, a_list) : prev_idx
+        a_list[prev_idx].point
+    end
+    a_next_pt = if _is_vertex(a_next)
+        a_next.point
+    else  # Find original end point of segment formed by curr_pt and a_next
+        next_idx = findnext(_is_vertex, a_list, i + 1)
+        next_idx = isnothing(next_idx) ? findfirst(_is_vertex, a_list) : next_idx
+        a_list[next_idx].point
+    end

Determine side orientation of b_prev and b_next

julia
    b_prev_side = _get_side(b_prev_pt, a_prev_pt, curr_pt.point, a_next_pt; exact)
+    b_next_side = _get_side(b_next_pt, a_prev_pt, curr_pt.point, a_next_pt; exact)
+    return b_prev_side, b_next_side
+end

Determines if Q lies to the left or right of the line formed by P1-P2-P3

julia
function _get_side(Q, P1, P2, P3; exact)
+    s1 = Predicates.orient(Q, P1, P2; exact)
+    s2 = Predicates.orient(Q, P2, P3; exact)
+    s3 = Predicates.orient(P1, P2, P3; exact)
+
+    side = if s3  0
+        (s1 < 0) || (s2 < 0) ? right : left
+    else #  s3 < 0
+        (s1 > 0) || (s2 > 0) ? left : right
+    end
+    return side
+end
+
+#= Given a list of PolyNodes, find the first element that isn't an intersection point. Then,
+test if this element is in or out of the given polygon. Return the next index, as well as
+the enter/exit status of the next intersection point (the opposite of the in/out check). If
+all points are intersection points, find the first element that either is the end of a chain
+or a crossing point that isn't in a chain. Then take the midpoint of this point and the next
+point in the list and perform the in/out check. If none of these points exist, return
+a `next_idx` of `nothing`. =#
+function _pt_off_edge_status(::Type{T}, pt_list, poly, npts; exact) where T
+    start_idx, is_non_intr_pt = findfirst(_is_not_intr, pt_list), true
+    if isnothing(start_idx)
+        start_idx, is_non_intr_pt = findfirst(_next_edge_off, pt_list), false
+        isnothing(start_idx) && return (start_idx, false)
+    end
+    next_idx = start_idx < npts ? (start_idx + 1) : 1
+    start_pt = if is_non_intr_pt
+        pt_list[start_idx].point
+    else
+        (pt_list[start_idx].point .+ pt_list[next_idx].point) ./ 2
+    end
+    start_status = !_point_filled_curve_orientation(start_pt, poly; in = true, on = false, out = false, exact)
+    return next_idx, start_status
+end

Check if a PolyNode is an intersection point

julia
_is_not_intr(pt) = !pt.inter
+#= Check if a PolyNode is the last point of a chain or a non-overlapping crossing point.
+The next midpoint of one of these points and the next point within a polygon must not be on
+the polygon edge. =#
+_next_edge_off(pt) = (pt.endpoint == end_chain) || (pt.crossing && pt.endpoint == not_endpoint)
_flag_ent_exit!(::Type{T}, ::GI.LinearRingTrait, poly, pt_list, delay_cross_f, delay_bounce_f; exact)

This function flags all the intersection points as either an 'entry' or 'exit' point in relation to the given polygon. For non-delayed crossings we simply alternate the enter/exit status. This also holds true for the first and last points of a delayed bouncing, where they both have an opposite entry/exit flag. Conversely, the first and last point of a delayed crossing have the same entry/exit status. Furthermore, the crossing/bouncing flag of delayed crossings and bouncings may be updated. This depends on function specific rules that determine which of the start or end points (if any) should be marked as crossing for used during polygon tracing. A consistent rule is that the start and end points of a delayed crossing will have different crossing/bouncing flags, while a the endpoints of a delayed bounce will be the same.

Used for clipping polygons by other polygons.

julia
function _flag_ent_exit!(::Type{T}, ::GI.LinearRingTrait, poly, pt_list, delay_cross_f, delay_bounce_f; exact) where T
+    npts = length(pt_list)

Find starting index if there is one

julia
    next_idx, status = _pt_off_edge_status(T, pt_list, poly, npts; exact)
+    isnothing(next_idx) && return
+    start_idx = next_idx - 1

Loop over points and mark entry and exit status

julia
    start_chain_idx = 0
+    for ii in Iterators.flatten((next_idx:npts, 1:start_idx))
+        curr_pt = pt_list[ii]
+        if curr_pt.endpoint == start_chain
+            start_chain_idx = ii
+        elseif curr_pt.crossing || curr_pt.endpoint == end_chain
+            start_crossing, end_crossing = curr_pt.crossing, curr_pt.crossing
+            if curr_pt.endpoint == end_chain  # ending overlapping chain
+                start_pt = pt_list[start_chain_idx]
+                if curr_pt.crossing  # delayed crossing
+                    #= start and end crossing status are different and depend on current
+                    entry/exit status =#
+                    start_crossing, end_crossing = delay_cross_f(status)
+                else  # delayed bouncing
+                    next_idx = ii < npts ? (ii + 1) : 1
+                    next_val = (curr_pt.point .+ pt_list[next_idx].point) ./ 2
+                    pt_in_poly = _point_filled_curve_orientation(next_val, poly; in = true, on = false, out = false, exact)
+                    #= start and end crossing status are the same and depend on if adjacent
+                    edges of pt_list are within poly =#
+                    start_crossing = delay_bounce_f(pt_in_poly)
+                    end_crossing = start_crossing
+                end

update start of chain point

julia
                pt_list[start_chain_idx] = PolyNode(start_pt; ent_exit = status, crossing = start_crossing)
+                if !curr_pt.crossing
+                    status = !status
+                end
+            end
+            pt_list[ii] = PolyNode(curr_pt; ent_exit = status, crossing = end_crossing)
+            status = !status
+        end
+    end
+    return
+end
_flag_ent_exit!(::GI.LineTrait, line, pt_list; exact)

This function flags all the intersection points as either an 'entry' or 'exit' point in relation to the given line. Returns true if there are crossing points to classify, else returns false. Used for cutting polygons by lines.

Assumes that the first point is outside of the polygon and not on an edge.

julia
function _flag_ent_exit!(::GI.LineTrait, poly, pt_list; exact)
+    status = !_point_filled_curve_orientation(pt_list[1].point, poly; in = true, on = false, out = false, exact)

Loop over points and mark entry and exit status

julia
    for (ii, curr_pt) in enumerate(pt_list)
+        if curr_pt.crossing
+            pt_list[ii] = PolyNode(curr_pt; ent_exit = status)
+            status = !status
+        end
+    end
+    return
+end
+
+#= Filters a_idx_list to just include crossing points and sets the index of all crossing
+points (which element they correspond to within a_idx_list). =#
+function _index_crossing_intrs!(a_list, b_list, a_idx_list)
+    filter!(x -> a_list[x].crossing, a_idx_list)
+    for (i, a_idx) in enumerate(a_idx_list)
+        curr_node = a_list[a_idx]
+        neighbor_node = b_list[curr_node.neighbor]
+        a_list[a_idx] = PolyNode(curr_node; idx = i)
+        b_list[curr_node.neighbor] = PolyNode(neighbor_node; idx = i)
+    end
+    return
+end
_trace_polynodes(::Type{T}, a_list, b_list, a_idx_list, f_step)::Vector{GI.Polygon}

This function takes the outputs of _build_ab_list and traces the lists to determine which polygons are formed as described in Greiner and Hormann. The function f_step determines in which direction the lists are traced. This function is different for intersection, difference, and union. f_step must take in two arguments: the most recent intersection node's entry/exit status and a boolean that is true if we are currently tracing a_list and false if we are tracing b_list. The functions used for each clipping operation are follows: - Intersection: (x, y) -> x ? 1 : (-1) - Difference: (x, y) -> (x ⊻ y) ? 1 : (-1) - Union: (x, y) -> x ? (-1) : 1

A list of GeoInterface polygons is returned from this function.

Note: poly_a and poly_b are temporary inputs used for debugging and can be removed eventually.

julia
function _trace_polynodes(::Type{T}, a_list, b_list, a_idx_list, f_step, poly_a, poly_b) where T
+    n_a_pts, n_b_pts = length(a_list), length(b_list)
+    total_pts = n_a_pts + n_b_pts
+    n_cross_pts = length(a_idx_list)
+    return_polys = Vector{_get_poly_type(T)}(undef, 0)

Keep track of number of processed intersection points

julia
    visited_pts = 0
+    processed_pts = 0
+    first_idx = 1
+    while processed_pts < n_cross_pts
+        curr_list, curr_npoints = a_list, n_a_pts
+        on_a_list = true

Find first unprocessed intersecting point in subject polygon

julia
        visited_pts += 1
+        processed_pts += 1
+        first_idx = findnext(x -> x != 0, a_idx_list, first_idx)
+        idx = a_idx_list[first_idx]
+        a_idx_list[first_idx] = 0
+        start_pt = a_list[idx]

Set first point in polygon

julia
        curr = curr_list[idx]
+        pt_list = [curr.point]
+
+        curr_not_start = true
+        while curr_not_start
+            step = f_step(curr.ent_exit, on_a_list)

changed curr_not_intr to curr_not_same_ent_flag

julia
            same_status, prev_status = true, curr.ent_exit
+            while same_status
+                @assert visited_pts < total_pts "Clipping tracing hit every point - clipping error. Please open an issue with polygons: $(GI.coordinates(poly_a)) and $(GI.coordinates(poly_b))."

Traverse polygon either forwards or backwards

julia
                idx += step
+                idx = (idx > curr_npoints) ? mod(idx, curr_npoints) : idx
+                idx = (idx == 0) ? curr_npoints : idx

Get current node and add to pt_list

julia
                curr = curr_list[idx]
+                push!(pt_list, curr.point)
+                if (curr.crossing || curr.endpoint != not_endpoint)

Keep track of processed intersection points

julia
                    same_status = curr.ent_exit == prev_status
+                    curr_not_start = curr != start_pt && curr != b_list[start_pt.neighbor]
+                    !curr_not_start && break
+                    if (on_a_list && curr.crossing) || (!on_a_list && a_list[curr.neighbor].crossing)
+                        processed_pts += 1
+                        a_idx_list[curr.idx] = 0
+                    end
+                end
+                visited_pts += 1
+            end

Switch to next list and next point

julia
            curr_list, curr_npoints = on_a_list ? (b_list, n_b_pts) : (a_list, n_a_pts)
+            on_a_list = !on_a_list
+            idx = curr.neighbor
+            curr = curr_list[idx]
+        end
+        push!(return_polys, GI.Polygon([pt_list]))
+    end
+    return return_polys
+end

Get type of polygons that will be made TODO: Increase type options

julia
_get_poly_type(::Type{T}) where T =
+    GI.Polygon{false, false, Vector{GI.LinearRing{false, false, Vector{Tuple{T, T}}, Nothing, Nothing}}, Nothing, Nothing}
_find_non_cross_orientation(a_list, b_list, a_poly, b_poly; exact)

For polygons with no crossing intersection points, either one polygon is inside of another, or they are separate polygons with no intersection (other than an edge or point).

Return two booleans that represent if a is inside b (potentially with shared edges / points) and visa versa if b is inside of a.

julia
function _find_non_cross_orientation(a_list, b_list, a_poly, b_poly; exact)
+    non_intr_a_idx = findfirst(x -> !x.inter, a_list)
+    non_intr_b_idx = findfirst(x -> !x.inter, b_list)
+    #= Determine if non-intersection point is in or outside of polygon - if there isn't A
+    non-intersection point, then all points are on the polygon edge =#
+    a_pt_orient = isnothing(non_intr_a_idx) ? point_on :
+        _point_filled_curve_orientation(a_list[non_intr_a_idx].point, b_poly; exact)
+    b_pt_orient = isnothing(non_intr_b_idx) ? point_on :
+        _point_filled_curve_orientation(b_list[non_intr_b_idx].point, a_poly; exact)
+    a_in_b = a_pt_orient != point_out && b_pt_orient != point_in
+    b_in_a = b_pt_orient != point_out && a_pt_orient != point_in
+    return a_in_b, b_in_a
+end
_add_holes_to_polys!(::Type{T}, return_polys, hole_iterator, remove_poly_idx; exact)

The holes specified by the hole iterator are added to the polygons in the return_polys list. If this creates more polygons, they are added to the end of the list. If this removes polygons, they are removed from the list

julia
function _add_holes_to_polys!(::Type{T}, return_polys, hole_iterator, remove_poly_idx; exact) where T
+    n_polys = length(return_polys)
+    remove_hole_idx = Int[]

Remove set of holes from all polygons

julia
    for i in 1:n_polys
+        n_new_per_poly = 0
+        for curr_hole in Iterators.map(tuples, hole_iterator) # loop through all holes

loop through all pieces of original polygon (new pieces added to end of list)

julia
            for j in Iterators.flatten((i:i, (n_polys + 1):(n_polys + n_new_per_poly)))
+                curr_poly = return_polys[j]
+                remove_poly_idx[j] && continue
+                curr_poly_ext = GI.nhole(curr_poly) > 0 ? GI.Polygon(StaticArrays.SVector(GI.getexterior(curr_poly))) : curr_poly
+                in_ext, on_ext, out_ext = _line_polygon_interactions(curr_hole, curr_poly_ext; exact, closed_line = true)
+                if in_ext  # hole is at least partially within the polygon's exterior
+                    new_hole, new_hole_poly, n_new_pieces = _combine_holes!(T, curr_hole, curr_poly, return_polys, remove_hole_idx)
+                    if n_new_pieces > 0
+                        append!(remove_poly_idx, falses(n_new_pieces))
+                        n_new_per_poly += n_new_pieces
+                    end
+                    if !on_ext && !out_ext  # hole is completely within exterior
+                        push!(curr_poly.geom, new_hole)
+                    else  # hole is partially within and outside of polygon's exterior
+                        new_polys = difference(curr_poly_ext, new_hole_poly, T; target=GI.PolygonTrait())
+                        n_new_polys = length(new_polys) - 1

replace original

julia
                        curr_poly.geom[1] = GI.getexterior(new_polys[1])
+                        append!(curr_poly.geom, GI.gethole(new_polys[1]))
+                        if n_new_polys > 0  # add any extra pieces
+                            append!(return_polys, @view new_polys[2:end])
+                            append!(remove_poly_idx, falses(n_new_polys))
+                            n_new_per_poly += n_new_polys
+                        end
+                    end

polygon is completely within hole

julia
                elseif coveredby(curr_poly_ext, GI.Polygon(StaticArrays.SVector(curr_hole)))
+                    remove_poly_idx[j] = true
+                end
+            end
+        end
+        n_polys += n_new_per_poly
+    end

Remove all polygon that were marked for removal

julia
    deleteat!(return_polys, remove_poly_idx)
+    return
+end
_combine_holes!(::Type{T}, new_hole, curr_poly, return_polys)

The new hole is combined with any existing holes in curr_poly. The holes can be combined into a larger hole if they are intersecting. If this happens, then the new, combined hole is returned with the original holes making up the new hole removed from curr_poly. Additionally, if the combined holes form a ring, the interior is added to the return_polys as a new polygon piece. Additionally, holes leftover after combination will be checked for it they are in the "main" polygon or in one of these new pieces and moved accordingly.

If the holes don't touch or curr_poly has no holes, then new_hole is returned without any changes.

julia
function _combine_holes!(::Type{T}, new_hole, curr_poly, return_polys, remove_hole_idx) where T
+    n_new_polys = 0
+    empty!(remove_hole_idx)
+    new_hole_poly = GI.Polygon(StaticArrays.SVector(new_hole))

Combine any existing holes in curr_poly with new hole

julia
    for (k, old_hole) in enumerate(GI.gethole(curr_poly))
+        old_hole_poly = GI.Polygon(StaticArrays.SVector(old_hole))
+        if intersects(new_hole_poly, old_hole_poly)

If the holes intersect, combine them into a bigger hole

julia
            hole_union = union(new_hole_poly, old_hole_poly, T; target = GI.PolygonTrait())[1]
+            push!(remove_hole_idx, k + 1)
+            new_hole = GI.getexterior(hole_union)
+            new_hole_poly = GI.Polygon(StaticArrays.SVector(new_hole))
+            n_pieces = GI.nhole(hole_union)
+            if n_pieces > 0  # if the hole has a hole, then this is a new polygon piece!
+                append!(return_polys, [GI.Polygon([h]) for h in GI.gethole(hole_union)])
+                n_new_polys += n_pieces
+            end
+        end
+    end

Remove redundant holes

julia
    deleteat!(curr_poly.geom, remove_hole_idx)
+    empty!(remove_hole_idx)

If new polygon pieces created, make sure remaining holes are in the correct piece

julia
    @views for piece in return_polys[end - n_new_polys + 1:end]
+        for (k, old_hole) in enumerate(GI.gethole(curr_poly))
+            if !(k in remove_hole_idx) && within(old_hole, piece)
+                push!(remove_hole_idx, k + 1)
+                push!(piece.geom, old_hole)
+            end
+        end
+    end
+    deleteat!(curr_poly.geom, remove_hole_idx)
+    return new_hole, new_hole_poly, n_new_polys
+end
+
+#= Remove collinear edge points, other than the first and last edge vertex, to simplify
+polygon - including both the exterior ring and any holes=#
+function _remove_collinear_points!(polys, remove_idx, poly_a, poly_b)
+    for (i, poly) in Iterators.reverse(enumerate(polys))
+        for (j, ring) in Iterators.reverse(enumerate(GI.getring(poly)))
+            n = length(ring.geom)

resize and reset removing index buffer

julia
            resize!(remove_idx, n)
+            fill!(remove_idx, false)
+            local p1, p2
+            for (i, p) in enumerate(ring.geom)
+                if i == 1
+                    p1 = p
+                    continue
+                elseif i == 2
+                    p2 = p
+                    continue
+                else
+                    p3 = p

check if p2 is approximately on the edge formed by p1 and p3 - remove if so

julia
                    if Predicates.orient(p1, p2, p3; exact = _False()) == 0
+                        remove_idx[i - 1] = true
+                    end
+                end
+                p1, p2 = p2, p3
+            end

Check if the first point (which is repeated as the last point) is needed

julia
            if Predicates.orient(ring.geom[end - 1], ring.geom[1], ring.geom[2]; exact = _False()) == 0
+                remove_idx[1], remove_idx[end] = true, true
+            end

Remove unneeded collinear points

julia
            deleteat!(ring.geom, remove_idx)

Check if enough points are left to form a polygon

julia
            if length(ring.geom)  (remove_idx[1] ? 2 : 3)
+                if j == 1
+                    deleteat!(polys, i)
+                    break
+                else
+                    deleteat!(poly.geom, j)
+                    continue
+                end
+            end
+            if remove_idx[1]  # make sure the last point is repeated
+                push!(ring.geom, ring.geom[1])
+            end
+        end
+    end
+    return
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/clipping/coverage.html b/previews/PR195/source/methods/clipping/coverage.html new file mode 100644 index 000000000..4040dab58 --- /dev/null +++ b/previews/PR195/source/methods/clipping/coverage.html @@ -0,0 +1,247 @@ + + + + + + GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content
julia
export coverage

What is coverage?

Coverage is the amount of geometry area within a bounding box defined by the minimum and maximum x and y-coordinates of that bounding box, or an Extent containing that information.

To provide an example, consider this rectangle:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+rect = GI.Polygon([[(-1,0), (-1,1), (1,1), (1,0), (-1,0)]])
+cell = GI.Polygon([[(0, 0), (0, 2), (2, 2), (2, 0), (0, 0)]])
+xmin, xmax, ymin, ymax = 0, 2, 0, 2
+f, a, p = poly(collect(GI.getpoint(cell)); axis = (; aspect = DataAspect()))
+poly!(collect(GI.getpoint(rect)))
+f

It is clear that half of the polygon is within the cell, so the coverage should be 1.0, half of the area of the rectangle.

julia
GO.coverage(rect, xmin, xmax, ymin, ymax)
1.0

Implementation

This is the GeoInterface-compatible implementation. First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait. This is also used in the implementation, since it's a lot less work!

Note that the coverage is zero for all points and curves, even if the curves are closed like with a linear ring.

Targets for applys functions

julia
const _COVERAGE_TARGETS = TraitTarget{Union{GI.PolygonTrait,GI.AbstractCurveTrait,GI.MultiPointTrait,GI.PointTrait}}()

Wall types for coverage

julia
const UNKNOWN, NORTH, EAST, SOUTH, WEST = 0:4
+
+"""
+    coverage(geom, xmin, xmax, ymin, ymax, [T = Float64])::T
+
+Returns the area of intersection between given geometry and grid cell defined by its minimum
+and maximum x and y-values. This is computed differently for different geometries:
+
+- The signed area of a point is always zero.
+- The signed area of a curve is always zero.
+- The signed area of a polygon is calculated by tracing along its edges and switching to the
+    cell edges if needed.
+- The coverage of a geometry collection, multi-geometry, feature collection of
+    array/iterable is the sum of the coverages of all of the sub-geometries.
+
+Result will be of type T, where T is an optional argument with a default value
+of Float64.
+"""
+function coverage(geom, xmin, xmax, ymin, ymax,::Type{T} = Float64; threaded=false) where T <: AbstractFloat
+    applyreduce(+, _COVERAGE_TARGETS, geom; threaded, init=zero(T)) do g
+        _coverage(T, GI.trait(g), g, T(xmin), T(xmax), T(ymin), T(ymax))
+    end
+end
+
+function coverage(geom, cell_ext::Extents.Extent, ::Type{T} = Float64; threaded=false) where T <: AbstractFloat
+    (xmin, xmax), (ymin, ymax) = values(cell_ext)
+    return coverage(geom, xmin, xmax, ymin, ymax, T; threaded = threaded)
+end

Points, MultiPoints, Curves, MultiCurves

julia
_coverage(::Type{T}, ::GI.AbstractGeometryTrait, geom, xmin, xmax, ymin, ymax; kwargs...) where T = zero(T)

Polygons

julia
function _coverage(::Type{T}, ::GI.PolygonTrait, poly, xmin, xmax, ymin, ymax; exact = _False()) where T
+    GI.isempty(poly) && return zero(T)
+    cov_area = _coverage(T, GI.getexterior(poly), xmin, xmax, ymin, ymax; exact)
+    cov_area == 0 && return cov_area

Remove hole coverage from total

julia
    for hole in GI.gethole(poly)
+        cov_area -= _coverage(T, hole, xmin, xmax, ymin, ymax; exact)
+    end
+    return cov_area
+end
+
+#= Calculates the area of the filled ring within the cell defined by corners with (xmin, ymin),
+(xmin, ymax), (xmax, ymax), and (xmax, ymin). =#
+function _coverage(::Type{T}, ring, xmin, xmax, ymin, ymax; exact) where T
+    cov_area = zero(T)
+    unmatched_out_wall, unmatched_out_point = UNKNOWN, (zero(T), zero(T))
+    unmatched_in_wall, unmatched_in_point = unmatched_out_wall, unmatched_out_point

Loop over edges of polygon

julia
    start_idx = 1
+    for (i, p) in enumerate(GI.getpoint(ring))
+        if !_point_in_cell(p, xmin, xmax, ymin, ymax)
+            start_idx = i
+            break
+        end
+    end
+    ring_cw = isclockwise(ring)
+    p1 = _tuple_point(GI.getpoint(ring, start_idx), T)

Must rotate clockwise for the algorithm to work

julia
    point_idx = ring_cw ? Iterators.flatten((start_idx + 1:GI.npoint(ring), 1:start_idx)) :
+        Iterators.flatten((start_idx - 1:-1:1, GI.npoint(ring):-1:start_idx))
+    for i in point_idx
+        p2 = _tuple_point(GI.getpoint(ring, i), T)

Determine if edge points are within the cell

julia
        p1_in_cell = _point_in_cell(p1, xmin, xmax, ymin, ymax)
+        p2_in_cell = _point_in_cell(p2, xmin, xmax, ymin, ymax)

If entire line segment is inside cell

julia
        if p1_in_cell && p2_in_cell
+            cov_area += _area_component(p1, p2)
+            p1 = p2
+            continue
+        end

If edge passes outside of rectangle, determine which edge segments are added

julia
        inter1, inter2 = _line_intersect_cell(T, p1, p2, xmin, xmax, ymin, ymax)

Endpoints of segment within the cell and wall they are on if known

julia
        (start_wall, start_point), (end_wall, end_point) =
+            if p1_in_cell
+                ((UNKNOWN, p1), inter1)
+            elseif p2_in_cell
+                (inter1, (UNKNOWN, p2))
+            else
+                i1_to_p1 = _squared_euclid_distance(T, inter1[2], p1)
+                i2_to_p1 = _squared_euclid_distance(T, inter2[2], p1)
+                i1_to_p1 < i2_to_p1 ? (inter1, inter2) : (inter2, inter1)
+            end

Add edge component

julia
        cov_area += _area_component(start_point, end_point)
+
+        if start_wall != UNKNOWN  # p1 out of cell
+            if unmatched_out_wall == UNKNOWN
+                unmatched_in_point = start_point
+                unmatched_in_wall = start_wall
+            else
+                check_point = find_point_on_cell(unmatched_out_point, start_point,
+                    unmatched_out_wall, start_wall,xmin, xmax, ymin, ymax)
+                if _point_filled_curve_orientation(check_point, ring; in = true, on = false, out = false, exact)
+                    cov_area += connect_edges(T, unmatched_out_point, start_point,
+                        unmatched_out_wall, start_wall,xmin, xmax, ymin, ymax)
+                else
+                    cov_area += connect_edges(T, unmatched_out_point, unmatched_in_point,
+                        unmatched_out_wall, unmatched_in_wall,xmin, xmax, ymin, ymax)
+                    unmatched_out_wall == UNKNOWN
+                end
+            end
+        end
+        if end_wall != UNKNOWN  # p2 out of cell
+            unmatched_out_wall, unmatched_out_point = end_wall, end_point
+        end
+        p1 = p2
+    end

if unmatched in-point at beginning, close polygon with last out point

julia
    if unmatched_in_wall != UNKNOWN
+        cov_area += connect_edges(T, unmatched_out_point, unmatched_in_point,
+            unmatched_out_wall, unmatched_in_wall,xmin, xmax, ymin, ymax)
+    end
+    cov_area = abs(cov_area) / 2

if grid cell is within polygon then the area is grid cell area

julia
    if cov_area == 0
+        if _point_filled_curve_orientation((xmin, ymin), ring; in = true, on = true, out = false, exact)
+            cov_area = abs((xmax - xmin) * (ymax - ymin))
+        end
+    end
+    return cov_area
+end

Returns true of the given point is within the bounding box determined by x and y values

julia
_point_in_cell(p, xmin, xmax, ymin, ymax) = xmin <= GI.x(p) <= xmax && ymin <= GI.y(p) <= ymax

Returns true if b is between a and c, exclusive of the maximum value, else false.

julia
_between(b, a, c) = a  b < c || c  b < a
+
+#= Determine intersections of the line from (x1, y1) to (x2, y2) with the bounding box
+defined by the minimum and maximum x/y values. Since we are dealing with a single line
+segment, we know that there is at maximum two intersection points.
+
+For each intersection point that we find, return the wall that it passes through, as well as
+the intersection point itself as a a tuple. If an intersection point isn't found, return the
+wall as UNKNOWN and the point as a pair of zeros. =#
+function _line_intersect_cell(::Type{T}, (x1, y1), (x2, y2), xmin, xmax, ymin, ymax) where T
+    Δx, Δy = x2 - x1, y2 - y1
+    inter1 = (UNKNOWN, (zero(T), zero(T)))
+    inter2 = inter1
+    if Δx == 0  # If line is vertical, only consider north and south
+        if xmin  x1  xmax
+            inter1 = _between(ymax, y1, y2) ? (NORTH, (x1, ymax)) : inter1
+            inter2 = _between(ymin, y1, y2) ? (SOUTH, (x1, ymin)) : inter2
+        end
+    elseif Δy == 0 # If line is horizontal, only consider east and west
+        if ymin  y1  ymax
+            inter1 = _between(xmax, x1, x2) ? (EAST, (xmax, y1)) : inter1
+            inter2 = _between(xmin, x1, x2) ? (WEST, (xmin, y1)) : inter2
+        end
+    else  # Line is tilted, must consider all edges, but only two can intersect
+        m = Δy / Δx
+        b = y1 - m * x1

Calculate and check potential intersections

julia
        xn = (ymax - b) / m
+        if xmin  xn  xmax && _between(xn, x1, x2) && _between(ymax, y1, y2)
+            inter1 = (NORTH, (xn, ymax))
+        end
+        xs = (ymin - b) / m
+        if xmin  xs  xmax && _between(xs, x1, x2) && _between(ymin, y1, y2)
+            new_intr = (SOUTH, (xs, ymin))
+            (inter1[1] == UNKNOWN) ? (inter1 = new_intr) : (inter2 = new_intr)
+        end
+        ye =  m * xmax + b
+        if ymin  ye  ymax && _between(ye, y1, y2) && _between(xmax, x1, x2)
+            new_intr = (EAST, (xmax, ye))
+            (inter1[1] == UNKNOWN) ? (inter1 = new_intr) : (inter2 = new_intr)
+        end
+        yw = m * xmin + b
+        if ymin  yw  ymax && _between(yw, y1, y2) && _between(xmin, x1, x2)
+            new_intr = (WEST, (xmin, yw))
+            (inter1[1] == UNKNOWN) ? (inter1 = new_intr) : (inter2 = new_intr)
+        end
+    end
+    if inter1[1] == UNKNOWN  # first intersection must be known, if one exists
+        inter1, inter2 = inter2, inter1
+    end
+    return inter1, inter2
+end

Finds point of cell edge between p1 and p2 given which walls they are on

julia
function find_point_on_cell(p1, p2, wall1, wall2, xmin, xmax, ymin, ymax)
+    x1, y1 = p1
+    x2, y2 = p2
+    mid_point = if wall1 == wall2 && _is_clockwise_from(p1, p2, wall1)
+        (x1 + x2) / 2, (y1 + y2) / 2
+    elseif wall1 == NORTH
+        (xmax, ymax)
+    elseif wall1 == EAST
+        (xmax, ymin)
+    elseif wall1 == SOUTH
+        (xmin, ymin)
+    else
+        (xmin, ymax)
+    end
+    return mid_point
+end
+
+#= Area component of shoelace formula coming from the distance between point 1 and point 2
+along grid cell walls in between the two points. =#
+function connect_edges(::Type{T}, p1, p2, wall1, wall2, xmin, xmax, ymin, ymax) where {T}
+    connect_area = zero(T)
+    if wall1 == wall2 && _is_clockwise_from(p1, p2, wall1)
+        connect_area += _area_component(p1, p2)
+    else

From the point to the corner of wall 1

julia
        connect_area += _partial_edge_out_area(p1, xmin, xmax, ymin, ymax, wall1)

Any intermediate walls (full length)

julia
        next_wall, last_wall = wall1 + 1, wall2 - 1
+        if wall2 > wall1
+            for wall in next_wall:last_wall
+                connect_area += _full_edge_area(xmin, xmax, ymin, ymax, wall)
+            end
+        else
+            for wall in Iterators.flatten((next_wall:WEST, NORTH:last_wall))
+                connect_area += _full_edge_area(xmin, xmax, ymin, ymax, wall)
+            end
+        end

From the corner of wall 2 to the point

julia
        connect_area += _partial_edge_in_area(p2, xmin, xmax, ymin, ymax, wall2)
+    end
+    return connect_area
+end

True if (x1, y1) is clockwise from (x2, y2) on the same wall

julia
_is_clockwise_from((x1, y1), (x2, y2), wall) = (wall == NORTH && x2 > x1) ||
+    (wall == EAST && y2 < y1) || (wall == SOUTH && x2 < x1) || (wall == WEST && y2 > y1)
+
+#= Returns the area component of a full edge of the bounding box defined by the min and max
+values and the wall. =#
+_full_edge_area(xmin, xmax, ymin, ymax, wall) = if wall == NORTH
+        ymax * (xmin - xmax)
+    elseif wall == EAST
+        xmax * (ymin - ymax)
+    elseif wall == SOUTH
+        ymin * (xmax - xmin)
+    else
+        xmin * (ymax - ymin)
+    end
+
+#= Returns the area component of part of one wall, from its "starting corner" (going
+clockwise) to the point (x2, y2). =#
+function _partial_edge_in_area((x2, y2), xmin, xmax, ymin, ymax, wall)
+    x_wall = (wall == NORTH || wall == WEST) ? xmin : xmax
+    y_wall = (wall == NORTH || wall == EAST) ? ymax : ymin
+    return x_wall * y2 - x2 * y_wall
+end
+
+#= Returns the area component of part of one wall, from the point (x1, y1) to its
+"ending corner" (going clockwise). =#
+function _partial_edge_out_area((x1, y1), xmin, xmax, ymin, ymax, wall)
+    x_wall = (wall == NORTH || wall == EAST) ? xmax : xmin
+    y_wall = (wall == NORTH || wall == WEST) ? ymax : ymin
+    return x1 * y_wall - x_wall * y1
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/clipping/cut.html b/previews/PR195/source/methods/clipping/cut.html new file mode 100644 index 000000000..d04afcad4 --- /dev/null +++ b/previews/PR195/source/methods/clipping/cut.html @@ -0,0 +1,111 @@ + + + + + + Polygon cutting | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Polygon cutting

julia
export cut

What is cut?

The cut function cuts a polygon through a line segment. This is inspired by functions such as Matlab's cutpolygon function.

To provide an example, consider the following polygon and line:

julia
import GeoInterface as GI, GeometryOps as GO
+using CairoMakie
+using Makie
+
+poly = GI.Polygon([[(0.0, 0.0), (10.0, 0.0), (10.0, 10.0), (0.0, 10.0), (0.0, 0.0)]])
+line = GI.Line([(5.0, -5.0), (5.0, 15.0)])
+cut_polys = GO.cut(poly, line)
+
+f, a, p1 = Makie.poly(collect(GI.getpoint(cut_polys[1])); color = (:blue, 0.5))
+Makie.poly!(collect(GI.getpoint(cut_polys[2])); color = (:orange, 0.5))
+Makie.lines!(GI.getpoint(line); color = :black)
+f

Implementation

This function depends on polygon clipping helper function and is inspired by the Greiner-Hormann clipping algorithm used elsewhere in this library. The inspiration came from this Stack Overflow discussion.

julia
"""
+    cut(geom, line, [T::Type])
+
+Return given geom cut by given line as a list of geometries of the same type as the input
+geom. Return the original geometry as only list element if none are found. Line must cut
+fully through given geometry or the original geometry will be returned.
+
+Note: This currently doesn't work for degenerate cases there line crosses through vertices.
+
+# Example
+
+```jldoctest
+import GeoInterface as GI, GeometryOps as GO
+
+poly = GI.Polygon([[(0.0, 0.0), (10.0, 0.0), (10.0, 10.0), (0.0, 10.0), (0.0, 0.0)]])
+line = GI.Line([(5.0, -5.0), (5.0, 15.0)])
+cut_polys = GO.cut(poly, line)
+GI.coordinates.(cut_polys)

output

julia
2-element Vector{Vector{Vector{Vector{Float64}}}}:
+ [[[0.0, 0.0], [5.0, 0.0], [5.0, 10.0], [0.0, 10.0], [0.0, 0.0]]]
+ [[[5.0, 0.0], [10.0, 0.0], [10.0, 10.0], [5.0, 10.0], [5.0, 0.0]]]
+```
+"""
+cut(geom, line, ::Type{T} = Float64) where {T <: AbstractFloat} =
+    _cut(T, GI.trait(geom), geom, GI.trait(line), line; exact = _True())
+
+#= Cut a given polygon by given line. Add polygon holes back into resulting pieces if there
+are any holes. =#
+function _cut(::Type{T}, ::GI.PolygonTrait, poly, ::GI.LineTrait, line; exact) where T
+    ext_poly = GI.getexterior(poly)
+    poly_list, intr_list = _build_a_list(T, ext_poly, line; exact)
+    n_intr_pts = length(intr_list)

If an impossible number of intersection points, return original polygon

julia
    if n_intr_pts < 2 || isodd(n_intr_pts)
+        return [tuples(poly)]
+    end

Cut polygon by line

julia
    cut_coords = _cut(T, ext_poly, line, poly_list, intr_list, n_intr_pts; exact)

Close coords and create polygons

julia
    for c in cut_coords
+        push!(c, c[1])
+    end
+    cut_polys = [GI.Polygon([c]) for c in cut_coords]

Add original polygon holes back in

julia
    remove_idx = falses(length(cut_polys))
+    _add_holes_to_polys!(T, cut_polys, GI.gethole(poly), remove_idx; exact)
+    return cut_polys
+end

Many types aren't implemented

julia
function _cut(::Type{T}, trait::GI.AbstractTrait, geom, line; kwargs...) where T
+    @assert(
+        false,
+        "Cutting of $trait isn't implemented yet.",
+    )
+    return nothing
+end
+
+#= Cutting algorithm inspired by Greiner and Hormann clipping algorithm. Returns coordinates
+of cut geometry in Vector{Vector{Tuple}} format.
+
+Note: degenerate cases where intersection points are vertices do not work right now. =#
+function _cut(::Type{T}, geom, line, geom_list, intr_list, n_intr_pts; exact) where T

Sort and categorize the intersection points

julia
    sort!(intr_list, by = x -> geom_list[x].fracs[2])
+    _flag_ent_exit!(GI.LineTrait(), line, geom_list; exact)

Add first point to output list

julia
    return_coords = [[geom_list[1].point]]
+    cross_backs = [(T(Inf),T(Inf))]
+    poly_idx = 1
+    n_polys = 1

Walk around original polygon to find split polygons

julia
    for (pt_idx, curr) in enumerate(geom_list)
+        if pt_idx > 1
+            push!(return_coords[poly_idx], curr.point)
+        end
+        if curr.inter

Find cross back point for current polygon

julia
            intr_idx = findfirst(x -> equals(curr.point, geom_list[x].point), intr_list)
+            cross_idx = intr_idx + (curr.ent_exit ? 1 : -1)
+            cross_idx = cross_idx < 1 ? n_intr_pts : cross_idx
+            cross_idx = cross_idx > n_intr_pts ? 1 : cross_idx
+            cross_backs[poly_idx] = geom_list[intr_list[cross_idx]].point

Check if current point is a cross back point

julia
            next_poly_idx = findfirst(x -> equals(x, curr.point), cross_backs)
+            if isnothing(next_poly_idx)
+                push!(return_coords, [curr.point])
+                push!(cross_backs, curr.point)
+                n_polys += 1
+                poly_idx = n_polys
+            else
+                push!(return_coords[next_poly_idx], curr.point)
+                poly_idx = next_poly_idx
+            end
+        end
+    end
+    return return_coords
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/clipping/difference.html b/previews/PR195/source/methods/clipping/difference.html new file mode 100644 index 000000000..0db301e49 --- /dev/null +++ b/previews/PR195/source/methods/clipping/difference.html @@ -0,0 +1,190 @@ + + + + + + Difference Polygon Clipping | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Difference Polygon Clipping

julia
export difference
+
+
+"""
+    difference(geom_a, geom_b, [T::Type]; target::Type, fix_multipoly = UnionIntersectingPolygons())
+
+Return the difference between two geometries as a list of geometries. Return an empty list
+if none are found. The type of the list will be constrained as much as possible given the
+input geometries. Furthermore, the user can provide a `taget` type as a keyword argument and
+a list of target geometries found in the difference will be returned. The user can also
+provide a float type that they would like the points of returned geometries to be. If the
+user is taking a intersection involving one or more multipolygons, and the multipolygon
+might be comprised of polygons that intersect, if `fix_multipoly` is set to an
+`IntersectingPolygons` correction (the default is `UnionIntersectingPolygons()`), then the
+needed multipolygons will be fixed to be valid before performing the intersection to ensure
+a correct answer. Only set `fix_multipoly` to false if you know that the multipolygons are
+valid, as it will avoid unneeded computation.
+
+# Example
+
+```jldoctest
+import GeoInterface as GI, GeometryOps as GO
+
+poly1 = GI.Polygon([[[0.0, 0.0], [5.0, 5.0], [10.0, 0.0], [5.0, -5.0], [0.0, 0.0]]])
+poly2 = GI.Polygon([[[3.0, 0.0], [8.0, 5.0], [13.0, 0.0], [8.0, -5.0], [3.0, 0.0]]])
+diff_poly = GO.difference(poly1, poly2; target = GI.PolygonTrait())
+GI.coordinates.(diff_poly)

output

julia
1-element Vector{Vector{Vector{Vector{Float64}}}}:
+ [[[6.5, 3.5], [5.0, 5.0], [0.0, 0.0], [5.0, -5.0], [6.5, -3.5], [3.0, 0.0], [6.5, 3.5]]]
+```
+"""
+function difference(
+    geom_a, geom_b, ::Type{T} = Float64; target=nothing, kwargs...,
+) where {T<:AbstractFloat}
+    return _difference(
+        TraitTarget(target), T, GI.trait(geom_a), geom_a, GI.trait(geom_b), geom_b;
+        exact = _True(), kwargs...,
+    )
+end
+
+#= The 'difference' function returns the difference of two polygons as a list of polygons.
+The algorithm to determine the difference was adapted from "Efficient clipping of efficient
+polygons," by Greiner and Hormann (1998). DOI: https://doi.org/10.1145/274363.274364 =#
+function _difference(
+    ::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.PolygonTrait, poly_a,
+    ::GI.PolygonTrait, poly_b;
+    exact, kwargs...
+) where T

Get the exterior of the polygons

julia
    ext_a = GI.getexterior(poly_a)
+    ext_b = GI.getexterior(poly_b)

Find the difference of the exterior of the polygons

julia
    a_list, b_list, a_idx_list = _build_ab_list(T, ext_a, ext_b, _diff_delay_cross_f, _diff_delay_bounce_f; exact)
+    polys = _trace_polynodes(T, a_list, b_list, a_idx_list, _diff_step, poly_a, poly_b)

if no crossing points, determine if either poly is inside of the other

julia
    if isempty(polys)
+        a_in_b, b_in_a = _find_non_cross_orientation(a_list, b_list, ext_a, ext_b; exact)

add case for if they polygons are the same (all intersection points!) add a find_first check to find first non-inter poly!

julia
        if b_in_a && !a_in_b  # b in a and can't be the same polygon
+            poly_a_b_hole = GI.Polygon([tuples(ext_a), tuples(ext_b)])
+            push!(polys, poly_a_b_hole)
+        elseif !b_in_a && !a_in_b # polygons don't intersect
+            push!(polys, tuples(poly_a))
+            return polys
+        end
+    end
+    remove_idx = falses(length(polys))

If the original polygons had holes, take that into account.

julia
    if GI.nhole(poly_a) != 0
+        _add_holes_to_polys!(T, polys, GI.gethole(poly_a), remove_idx; exact)
+    end
+    if GI.nhole(poly_b) != 0
+        for hole in GI.gethole(poly_b)
+            hole_poly = GI.Polygon(StaticArrays.SVector(hole))
+            new_polys = intersection(hole_poly, poly_a, T; target = GI.PolygonTrait)
+            if length(new_polys) > 0
+                append!(polys, new_polys)
+            end
+        end
+    end

Remove unneeded collinear points on same edge

julia
    _remove_collinear_points!(polys, remove_idx, poly_a, poly_b)
+    return polys
+end

Helper functions for Differences with Greiner and Hormann Polygon Clipping

julia
#= When marking the crossing status of a delayed crossing, the chain start point is crossing
+when the start point is a entry point and is a bouncing point when the start point is an
+exit point. The end of the chain has the opposite crossing / bouncing status. =#
+_diff_delay_cross_f(x) = (x, !x)
+#= When marking the crossing status of a delayed bouncing, the chain start and end points
+are crossing if the current polygon's adjacent edges are within the non-tracing polygon and
+we are tracing b_list or if the edges are outside and we are on a_list. Otherwise the
+endpoints are marked as crossing. x is a boolean representing if the edges are inside or
+outside of the polygon and y is a variable that is true if we are on a_list and false if we
+are on b_list. =#
+_diff_delay_bounce_f(x, y) = x  y
+#= When tracing polygons, step forwards if the most recent intersection point was an entry
+point and we are currently tracing b_list or if it was an exit point and we are currently
+tracing a_list, else step backwards, where x is the entry/exit status and y is a variable
+that is true if we are on a_list and false if we are on b_list. =#
+_diff_step(x, y) = (x  y) ? 1 : (-1)
+
+#= Polygon with multipolygon difference - note that all intersection regions between
+`poly_a` and any of the sub-polygons of `multipoly_b` are removed from `poly_a`. =#
+function _difference(
+    target::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.PolygonTrait, poly_a,
+    ::GI.MultiPolygonTrait, multipoly_b;
+    kwargs...,
+) where T
+    polys = [tuples(poly_a, T)]
+    for poly_b in GI.getpolygon(multipoly_b)
+        isempty(polys) && break
+        polys = mapreduce(p -> difference(p, poly_b; target), append!, polys)
+    end
+    return polys
+end
+
+#= Multipolygon with polygon difference - note that all intersection regions between
+sub-polygons of `multipoly_a` and `poly_b` will be removed from the corresponding
+sub-polygon. Unless specified with `fix_multipoly = nothing`, `multipolygon_a` will be
+validated using the given (default is `UnionIntersectingPolygons()`) correction. =#
+function _difference(
+    target::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.MultiPolygonTrait, multipoly_a,
+    ::GI.PolygonTrait, poly_b;
+    fix_multipoly = UnionIntersectingPolygons(), kwargs...,
+) where T
+    if !isnothing(fix_multipoly) # Fix multipoly_a to prevent returning an invalid multipolygon
+        multipoly_a = fix_multipoly(multipoly_a)
+    end
+    polys = Vector{_get_poly_type(T)}()
+    sizehint!(polys, GI.npolygon(multipoly_a))
+    for poly_a in GI.getpolygon(multipoly_a)
+        append!(polys, difference(poly_a, poly_b; target))
+    end
+    return polys
+end
+
+#= Multipolygon with multipolygon difference - note that all intersection regions between
+sub-polygons of `multipoly_a` and sub-polygons of `multipoly_b` will be removed from the
+corresponding sub-polygon of `multipoly_a`. Unless specified with `fix_multipoly = nothing`,
+`multipolygon_a` will be validated using the given (default is `UnionIntersectingPolygons()`)
+correction. =#
+function _difference(
+    target::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.MultiPolygonTrait, multipoly_a,
+    ::GI.MultiPolygonTrait, multipoly_b;
+    fix_multipoly = UnionIntersectingPolygons(), kwargs...,
+) where T
+    if !isnothing(fix_multipoly) # Fix multipoly_a to prevent returning an invalid multipolygon
+        multipoly_a = fix_multipoly(multipoly_a)
+        fix_multipoly = nothing
+    end
+    local polys
+    for (i, poly_b) in enumerate(GI.getpolygon(multipoly_b))
+        #= Removing intersections of `multipoly_a`` with pieces of `multipoly_b`` - as
+        pieces of `multipolygon_a`` are removed, continue to take difference with new shape
+        `polys` =#
+        polys = if i == 1
+            difference(multipoly_a, poly_b; target, fix_multipoly)
+        else
+            difference(GI.MultiPolygon(polys), poly_b; target, fix_multipoly)
+        end
+        #= One multipoly_a has been completely covered (and thus removed) there is no need to
+        continue taking the difference =#
+        isempty(polys) && break
+    end
+    return polys
+end

Many type and target combos aren't implemented

julia
function _difference(
+    ::TraitTarget{Target}, ::Type{T},
+    trait_a::GI.AbstractTrait, geom_a,
+    trait_b::GI.AbstractTrait, geom_b,
+) where {Target, T}
+    @assert(
+        false,
+        "Difference between $trait_a and $trait_b with target $Target isn't implemented yet.",
+    )
+    return nothing
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/clipping/intersection.html b/previews/PR195/source/methods/clipping/intersection.html new file mode 100644 index 000000000..17c3ea0a2 --- /dev/null +++ b/previews/PR195/source/methods/clipping/intersection.html @@ -0,0 +1,407 @@ + + + + + + Geometry Intersection | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Geometry Intersection

julia
export intersection, intersection_points
+
+"""
+    Enum LineOrientation
+Enum for the orientation of a line with respect to a curve. A line can be
+`line_cross` (crossing over the curve), `line_hinge` (crossing the endpoint of the curve),
+`line_over` (collinear with the curve), or `line_out` (not interacting with the curve).
+"""
+@enum LineOrientation line_cross=1 line_hinge=2 line_over=3 line_out=4
+
+"""
+    intersection(geom_a, geom_b, [T::Type]; target::Type, fix_multipoly = UnionIntersectingPolygons())
+
+Return the intersection between two geometries as a list of geometries. Return an empty list
+if none are found. The type of the list will be constrained as much as possible given the
+input geometries. Furthermore, the user can provide a `target` type as a keyword argument and
+a list of target geometries found in the intersection will be returned. The user can also
+provide a float type that they would like the points of returned geometries to be. If the
+user is taking a intersection involving one or more multipolygons, and the multipolygon
+might be comprised of polygons that intersect, if `fix_multipoly` is set to an
+`IntersectingPolygons` correction (the default is `UnionIntersectingPolygons()`), then the
+needed multipolygons will be fixed to be valid before performing the intersection to ensure
+a correct answer. Only set `fix_multipoly` to nothing if you know that the multipolygons are
+valid, as it will avoid unneeded computation.
+
+# Example
+
+```jldoctest
+import GeoInterface as GI, GeometryOps as GO
+
+line1 = GI.Line([(124.584961,-12.768946), (126.738281,-17.224758)])
+line2 = GI.Line([(123.354492,-15.961329), (127.22168,-14.008696)])
+inter_points = GO.intersection(line1, line2; target = GI.PointTrait())
+GI.coordinates.(inter_points)

output

julia
1-element Vector{Vector{Float64}}:
+ [125.58375366067548, -14.83572303404496]
+```
+"""
+function intersection(
+    geom_a, geom_b, ::Type{T}=Float64; target=nothing, kwargs...,
+) where {T<:AbstractFloat}
+    return _intersection(
+        TraitTarget(target), T, GI.trait(geom_a), geom_a, GI.trait(geom_b), geom_b;
+        exact = _True(), kwargs...,
+    )
+end

Curve-Curve Intersections with target Point

julia
_intersection(
+    ::TraitTarget{GI.PointTrait}, ::Type{T},
+    trait_a::Union{GI.LineTrait, GI.LineStringTrait, GI.LinearRingTrait}, geom_a,
+    trait_b::Union{GI.LineTrait, GI.LineStringTrait, GI.LinearRingTrait}, geom_b;
+    kwargs...,
+) where T = _intersection_points(T, trait_a, geom_a, trait_b, geom_b)
+
+#= Polygon-Polygon Intersections with target Polygon
+The algorithm to determine the intersection was adapted from "Efficient clipping
+of efficient polygons," by Greiner and Hormann (1998).
+DOI: https://doi.org/10.1145/274363.274364 =#
+function _intersection(
+    ::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.PolygonTrait, poly_a,
+    ::GI.PolygonTrait, poly_b;
+    exact, kwargs...,
+) where {T}

First we get the exteriors of 'poly_a' and 'poly_b'

julia
    ext_a = GI.getexterior(poly_a)
+    ext_b = GI.getexterior(poly_b)

Then we find the intersection of the exteriors

julia
    a_list, b_list, a_idx_list = _build_ab_list(T, ext_a, ext_b, _inter_delay_cross_f, _inter_delay_bounce_f; exact)
+    polys = _trace_polynodes(T, a_list, b_list, a_idx_list, _inter_step, poly_a, poly_b)
+    if isempty(polys) # no crossing points, determine if either poly is inside the other
+        a_in_b, b_in_a = _find_non_cross_orientation(a_list, b_list, ext_a, ext_b; exact)
+        if a_in_b
+            push!(polys, GI.Polygon([tuples(ext_a)]))
+        elseif b_in_a
+            push!(polys, GI.Polygon([tuples(ext_b)]))
+        end
+    end
+    remove_idx = falses(length(polys))

If the original polygons had holes, take that into account.

julia
    if GI.nhole(poly_a) != 0 || GI.nhole(poly_b) != 0
+        hole_iterator = Iterators.flatten((GI.gethole(poly_a), GI.gethole(poly_b)))
+        _add_holes_to_polys!(T, polys, hole_iterator, remove_idx; exact)
+    end

Remove unneeded collinear points on same edge

julia
    _remove_collinear_points!(polys, remove_idx, poly_a, poly_b)
+    return polys
+end

Helper functions for Intersections with Greiner and Hormann Polygon Clipping

julia
#= When marking the crossing status of a delayed crossing, the chain start point is bouncing
+when the start point is a entry point and is a crossing point when the start point is an
+exit point. The end of the chain has the opposite crossing / bouncing status. x is the
+entry/exit status. =#
+_inter_delay_cross_f(x) = (!x, x)
+#= When marking the crossing status of a delayed bouncing, the chain start and end points
+are crossing if the current polygon's adjacent edges are within the non-tracing polygon. If
+the edges are outside then the chain endpoints are marked as bouncing. x is a boolean
+representing if the edges are inside or outside of the polygon. =#
+_inter_delay_bounce_f(x, _) = x
+#= When tracing polygons, step forward if the most recent intersection point was an entry
+point, else step backwards where x is the entry/exit status. =#
+_inter_step(x, _) =  x ? 1 : (-1)
+
+#= Polygon with multipolygon intersection - note that all intersection regions between
+`poly_a` and any of the sub-polygons of `multipoly_b` are counted as intersection polygons.
+Unless specified with `fix_multipoly = nothing`, `multipolygon_b` will be validated using
+the given (default is `UnionIntersectingPolygons()`) correction. =#
+function _intersection(
+    target::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.PolygonTrait, poly_a,
+    ::GI.MultiPolygonTrait, multipoly_b;
+    fix_multipoly = UnionIntersectingPolygons(), kwargs...,
+) where T
+    if !isnothing(fix_multipoly) # Fix multipoly_b to prevent duplicated intersection regions
+        multipoly_b = fix_multipoly(multipoly_b)
+    end
+    polys = Vector{_get_poly_type(T)}()
+    for poly_b in GI.getpolygon(multipoly_b)
+        append!(polys, intersection(poly_a, poly_b; target))
+    end
+    return polys
+end
+
+#= Multipolygon with polygon intersection is equivalent to taking the intersection of the
+polygon with the multipolygon and thus simply switches the order of operations and calls the
+above method. =#
+_intersection(
+    target::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.MultiPolygonTrait, multipoly_a,
+    ::GI.PolygonTrait, poly_b;
+    kwargs...,
+) where T = intersection(poly_b, multipoly_a; target , kwargs...)
+
+#= Multipolygon with multipolygon intersection - note that all intersection regions between
+any sub-polygons of `multipoly_a` and any of the sub-polygons of `multipoly_b` are counted
+as intersection polygons. Unless specified with `fix_multipoly = nothing`, both
+`multipolygon_a` and `multipolygon_b` will be validated using the given (default is
+`UnionIntersectingPolygons()`) correction. =#
+function _intersection(
+    target::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.MultiPolygonTrait, multipoly_a,
+    ::GI.MultiPolygonTrait, multipoly_b;
+    fix_multipoly = UnionIntersectingPolygons(), kwargs...,
+) where T
+    if !isnothing(fix_multipoly) # Fix both multipolygons to prevent duplicated regions
+        multipoly_a = fix_multipoly(multipoly_a)
+        multipoly_b = fix_multipoly(multipoly_b)
+        fix_multipoly = nothing
+    end
+    polys = Vector{_get_poly_type(T)}()
+    for poly_a in GI.getpolygon(multipoly_a)
+        append!(polys, intersection(poly_a, multipoly_b; target, fix_multipoly))
+    end
+    return polys
+end

Many type and target combos aren't implemented

julia
function _intersection(
+    ::TraitTarget{Target}, ::Type{T},
+    trait_a::GI.AbstractTrait, geom_a,
+    trait_b::GI.AbstractTrait, geom_b;
+    kwargs...,
+) where {Target, T}
+    @assert(
+        false,
+        "Intersection between $trait_a and $trait_b with target $Target isn't implemented yet.",
+    )
+    return nothing
+end
+
+"""
+    intersection_points(geom_a, geom_b, [T::Type])
+
+Return a list of intersection tuple points between two geometries. If no intersection points
+exist, returns an empty list.
+
+# Example
+
+```jldoctest
+import GeoInterface as GI, GeometryOps as GO
+
+line1 = GI.Line([(124.584961,-12.768946), (126.738281,-17.224758)])
+line2 = GI.Line([(123.354492,-15.961329), (127.22168,-14.008696)])
+inter_points = GO.intersection_points(line1, line2)

output

julia
1-element Vector{Tuple{Float64, Float64}}:
+ (125.58375366067548, -14.83572303404496)
+"""
+intersection_points(geom_a, geom_b, ::Type{T} = Float64) where T <: AbstractFloat =
+    _intersection_points(T, GI.trait(geom_a), geom_a, GI.trait(geom_b), geom_b)
+
+
+#= Calculates the list of intersection points between two geometries, including line
+segments, line strings, linear rings, polygons, and multipolygons. =#
+function _intersection_points(::Type{T}, ::GI.AbstractTrait, a, ::GI.AbstractTrait, b; exact = _True()) where T

Initialize an empty list of points

julia
    result = Tuple{T, T}[]

Check if the geometries extents even overlap

julia
    Extents.intersects(GI.extent(a), GI.extent(b)) || return result

Create a list of edges from the two input geometries

julia
    edges_a, edges_b = map(sort!  to_edges, (a, b))

Loop over pairs of edges and add any unique intersection points to results

julia
    for a_edge in edges_a, b_edge in edges_b
+        line_orient, intr1, intr2 = _intersection_point(T, a_edge, b_edge; exact)
+        line_orient == line_out && continue  # no intersection points
+        pt1, _ = intr1
+        push!(result, pt1)  # if not line_out, there is at least one intersection point
+        if line_orient == line_over # if line_over, there are two intersection points
+            pt2, _ = intr2
+            push!(result, pt2)
+        end
+    end
+    #= TODO: We might be able to just add unique points with checks on the α and β values
+    returned from `_intersection_point`, but this would be different for curves vs polygons
+    vs multipolygons depending on if the shape is closed. This then wouldn't allow using the
+    `to_edges` functionality.  =#
+    unique!(sort!(result))
+    return result
+end
+
+#= Calculates the intersection points between two lines if they exists and the fractional
+component of each line from the initial end point to the intersection point where α is the
+fraction along (a1, a2) and β is the fraction along (b1, b2).
+
+Note that the first return is the type of intersection (line_cross, line_hinge, line_over,
+or line_out). The type of intersection determines how many intersection points there are.
+If the intersection is line_out, then there are no intersection points and the two
+intersections aren't valid and shouldn't be used. If the intersection is line_cross or
+line_hinge then the lines meet at one point and the first intersection is valid, while the
+second isn't. Finally, if the intersection is line_over, then both points are valid and they
+are the two points that define the endpoints of the overlapping region between the two
+lines.
+
+Also note again that each intersection is a tuple of two tuples. The first is the
+intersection point (x,y) while the second is the ratio along the initial lines (α, β) for
+that point.
+
+Calculation derivation can be found here: https://stackoverflow.com/questions/563198/ =#
+function _intersection_point(::Type{T}, (a1, a2)::Edge, (b1, b2)::Edge; exact) where T

Default answer for no intersection

julia
    line_orient = line_out
+    intr1 = ((zero(T), zero(T)), (zero(T), zero(T)))
+    intr2 = intr1
+    no_intr_result = (line_orient, intr1, intr2)

Seperate out line segment points

julia
    (a1x, a1y), (a2x, a2y) = _tuple_point(a1, T), _tuple_point(a2, T)
+    (b1x, b1y), (b2x, b2y) = _tuple_point(b1, T), _tuple_point(b2, T)

Check if envelopes of lines intersect

julia
    a_ext = Extent(X = minmax(a1x, a2x), Y = minmax(a1y, a2y))
+    b_ext = Extent(X = minmax(b1x, b2x), Y = minmax(b1y, b2y))
+    !Extents.intersects(a_ext, b_ext) && return no_intr_result

Check orientation of two line segments with respect to one another

julia
    a1_orient = Predicates.orient(b1, b2, a1; exact)
+    a2_orient = Predicates.orient(b1, b2, a2; exact)
+    a1_orient != 0 && a1_orient == a2_orient && return no_intr_result  # α < 0 or α > 1
+    b1_orient = Predicates.orient(a1, a2, b1; exact)
+    b2_orient = Predicates.orient(a1, a2, b2; exact)
+    b1_orient != 0 && b1_orient == b2_orient && return no_intr_result  # β < 0 or β > 1

Determine intersection type and intersection point(s)

julia
    if a1_orient == a2_orient == b1_orient == b2_orient == 0

Intersection is collinear if all endpoints lie on the same line

julia
        line_orient, intr1, intr2 = _find_collinear_intersection(T, a1, a2, b1, b2, a_ext, b_ext, no_intr_result)
+    elseif a1_orient == 0 || a2_orient == 0 || b1_orient == 0 || b2_orient == 0

Intersection is a hinge if the intersection point is an endpoint

julia
        line_orient = line_hinge
+        intr1 = _find_hinge_intersection(T, a1, a2, b1, b2, a1_orient, a2_orient, b1_orient)
+    else

Intersection is a cross if there is only one non-endpoint intersection point

julia
        line_orient = line_cross
+        intr1 = _find_cross_intersection(T, a1, a2, b1, b2, a_ext, b_ext)
+    end
+    return line_orient, intr1, intr2
+end
+
+#= If lines defined by (a1, a2) and (b1, b2) are collinear, find endpoints of overlapping
+region if they exist. This could result in three possibilities. First, there could be no
+overlapping region, in which case, the default 'no_intr_result' intersection information is
+returned. Second, the two regions could just meet at one shared endpoint, in which case it
+is a hinge intersection with one intersection point. Otherwise, it is a overlapping
+intersection defined by two of the endpoints of the line segments. =#
+function _find_collinear_intersection(::Type{T}, a1, a2, b1, b2, a_ext, b_ext, no_intr_result) where T

Define default return for no intersection points

julia
    line_orient, intr1, intr2 = no_intr_result

Determine collinear line overlaps

julia
    a1_in_b = _point_in_extent(a1, b_ext)
+    a2_in_b = _point_in_extent(a2, b_ext)
+    b1_in_a = _point_in_extent(b1, a_ext)
+    b2_in_a = _point_in_extent(b2, a_ext)

Determine line distances

julia
    a_dist, b_dist = distance(a1, a2, T), distance(b1, b2, T)

Set collinear intersection points if they exist

julia
    if a1_in_b && a2_in_b      # 1st vertex of a and 2nd vertex of a form overlap
+        line_orient = line_over
+        β1 = _clamped_frac(distance(a1, b1, T), b_dist)
+        β2 = _clamped_frac(distance(a2, b1, T), b_dist)
+        intr1 = (_tuple_point(a1, T), (zero(T), β1))
+        intr2 = (_tuple_point(a2, T), (one(T), β2))
+    elseif b1_in_a && b2_in_a  # 1st vertex of b and 2nd vertex of b form overlap
+        line_orient = line_over
+        α1 = _clamped_frac(distance(b1, a1, T), a_dist)
+        α2 = _clamped_frac(distance(b2, a1, T), a_dist)
+        intr1 = (_tuple_point(b1, T), (α1, zero(T)))
+        intr2 = (_tuple_point(b2, T), (α2, one(T)))
+    elseif a1_in_b && b1_in_a  # 1st vertex of a and 1st vertex of b form overlap
+        if equals(a1, b1)
+            line_orient = line_hinge
+            intr1 = (_tuple_point(a1, T), (zero(T), zero(T)))
+        else
+            line_orient = line_over
+            intr1, intr2 = _set_ab_collinear_intrs(T, a1, b1, zero(T), zero(T), a1, b1, a_dist, b_dist)
+        end
+    elseif a1_in_b && b2_in_a  # 1st vertex of a and 2nd vertex of b form overlap
+        if equals(a1, b2)
+            line_orient = line_hinge
+            intr1 = (_tuple_point(a1, T), (zero(T), one(T)))
+        else
+            line_orient = line_over
+            intr1, intr2 = _set_ab_collinear_intrs(T, a1, b2, zero(T), one(T), a1, b1, a_dist, b_dist)
+        end
+    elseif a2_in_b && b1_in_a  # 2nd vertex of a and 1st vertex of b form overlap
+        if equals(a2, b1)
+            line_orient = line_hinge
+            intr1 = (_tuple_point(a2, T), (one(T), zero(T)))
+        else
+            line_orient = line_over
+            intr1, intr2 = _set_ab_collinear_intrs(T, a2, b1, one(T), zero(T), a1, b1, a_dist, b_dist)
+        end
+    elseif a2_in_b && b2_in_a  # 2nd vertex of a and 2nd vertex of b form overlap
+        if equals(a2, b2)
+            line_orient = line_hinge
+            intr1 = (_tuple_point(a2, T), (one(T), one(T)))
+        else
+            line_orient = line_over
+            intr1, intr2 = _set_ab_collinear_intrs(T, a2, b2, one(T), one(T), a1, b1, a_dist, b_dist)
+        end
+    end
+    return line_orient, intr1, intr2
+end
+
+#= Determine intersection points and segment fractions when overlap is made up one one
+endpoint of segment (a1, a2) and one endpoint of segment (b1, b2). =#
+_set_ab_collinear_intrs(::Type{T}, a_pt, b_pt, a_pt_α, b_pt_β, a1, b1, a_dist, b_dist) where T =
+    (
+        (_tuple_point(a_pt, T), (a_pt_α, _clamped_frac(distance(a_pt, b1, T), b_dist))),
+        (_tuple_point(b_pt, T), (_clamped_frac(distance(b_pt, a1, T), a_dist), b_pt_β))
+    )
+
+#= If lines defined by (a1, a2) and (b1, b2) are just touching at one of those endpoints and
+are not collinear, then they form a hinge, with just that one shared intersection point.
+Point equality is checked before segment orientation to have maximal accurary on fractions
+to avoid floating point errors. If the points are not equal, we know that the hinge does not
+take place at an endpoint and the fractions must be between 0 or 1 (exclusive). =#
+function _find_hinge_intersection(::Type{T}, a1, a2, b1, b2, a1_orient, a2_orient, b1_orient) where T
+    pt, α, β = if equals(a1, b1)
+        _tuple_point(a1, T), zero(T), zero(T)
+    elseif equals(a1, b2)
+        _tuple_point(a1, T), zero(T), one(T)
+    elseif equals(a2, b1)
+        _tuple_point(a2, T), one(T), zero(T)
+    elseif equals(a2, b2)
+        _tuple_point(a2, T), one(T), one(T)
+    elseif a1_orient == 0
+        β_val = _clamped_frac(distance(b1, a1, T), distance(b1, b2, T), eps(T))
+        _tuple_point(a1, T), zero(T), β_val
+    elseif a2_orient == 0
+        β_val = _clamped_frac(distance(b1, a2, T), distance(b1, b2, T), eps(T))
+        _tuple_point(a2, T), one(T), β_val
+    elseif b1_orient == 0
+        α_val = _clamped_frac(distance(a1, b1, T), distance(a1, a2, T), eps(T))
+        _tuple_point(b1, T), α_val, zero(T)
+    else  # b2_orient == 0
+        α_val = _clamped_frac(distance(a1, b2, T), distance(a1, a2, T), eps(T))
+        _tuple_point(b2, T), α_val, one(T)
+    end
+    return pt, (α, β)
+end
+
+#= If lines defined by (a1, a2) and (b1, b2) meet at one point that is not an endpoint of
+either segment, they form a crossing intersection with a singular intersection point. That
+point is calculated by finding the fractional distance along each segment the point occurs
+at (α, β). If the point is too close to an endpoint to be distinct, the point shares a value
+with the endpoint, but with a non-zero and non-one fractional value. If the intersection
+point calculated is outside of the envelope of the two segments due to floating point error,
+it is set to the endpoint of the two segments that is closest to the other segment.
+Regardless of point value, we know that it does not actually occur at an endpoint so the
+fractions must be between 0 or 1 (exclusive). =#
+function _find_cross_intersection(::Type{T}, a1, a2, b1, b2, a_ext, b_ext) where T

First line runs from a to a + Δa

julia
    (a1x, a1y), (a2x, a2y) = _tuple_point(a1, T), _tuple_point(a2, T)
+    Δax, Δay = a2x - a1x, a2y - a1y

Second line runs from b to b + Δb

julia
    (b1x, b1y), (b2x, b2y) = _tuple_point(b1, T), _tuple_point(b2, T)
+    Δbx, Δby = b2x - b1x, b2y - b1y

Differences between starting points

julia
    Δbax = b1x - a1x
+    Δbay = b1y - a1y
+    a_cross_b = Δax * Δby - Δay * Δbx

Determine α value where 0 < α < 1 and β value where 0 < β < 1

julia
    α = _clamped_frac(Δbax * Δby - Δbay * Δbx, a_cross_b, eps(T))
+    β = _clamped_frac(Δbax * Δay - Δbay * Δax, a_cross_b, eps(T))
+
+    #= Intersection will be where a1 + α * Δa = b1 + β * Δb. However, due to floating point
+    inaccuracies, α and β calculations may yield different intersection points. Average
+    both points together to minimize difference from real value, as long as segment isn't
+    vertical or horizontal as this will almost certainly lead to the point being outside the
+    envelope due to floating point error. Also note that floating point limitations could
+    make intersection be endpoint if α≈0 or α≈1.=#
+    x = if Δax == 0
+        a1x
+    elseif Δbx == 0
+        b1x
+    else
+        (a1x + α * Δax + b1x + β * Δbx) / 2
+    end
+    y = if Δay == 0
+        a1y
+    elseif Δby == 0
+        b1y
+    else
+        (a1y + α * Δay + b1y + β * Δby) / 2
+    end
+    pt = (x, y)

Check if point is within segment envelopes and adjust to endpoint if not

julia
    if !_point_in_extent(pt, a_ext) || !_point_in_extent(pt, b_ext)
+        pt, α, β = _nearest_endpoint(T, a1, a2, b1, b2)
+    end
+    return (pt, (α, β))
+end

Find endpoint of either segment that is closest to the opposite segment

julia
function _nearest_endpoint(::Type{T}, a1, a2, b1, b2) where T

Create lines from segments and calculate segment length

julia
    a_line, a_dist = GI.Line(StaticArrays.SVector(a1, a2)), distance(a1, a2, T)
+    b_line, b_dist = GI.Line(StaticArrays.SVector(b1, b2)), distance(b1, b2, T)

Determine distance from a1 to segment b

julia
    min_pt, min_dist = a1, distance(a1, b_line, T)
+    α, β = eps(T), _clamped_frac(distance(min_pt, b1, T), b_dist, eps(T))

Determine distance from a2 to segment b

julia
    dist = distance(a2, b_line, T)
+    if dist < min_dist
+        min_pt, min_dist = a2, dist
+        α, β = one(T) - eps(T), _clamped_frac(distance(min_pt, b1, T), b_dist, eps(T))
+    end

Determine distance from b1 to segment a

julia
    dist = distance(b1, a_line, T)
+    if dist < min_dist
+        min_pt, min_dist = b1, dist
+        α, β = _clamped_frac(distance(min_pt, a1, T), a_dist, eps(T)), eps(T)
+    end

Determine distance from b2 to segment a

julia
    dist = distance(b2, a_line, T)
+    if dist < min_dist
+        min_pt, min_dist = b2, dist
+        α, β = _clamped_frac(distance(min_pt, a2, T), a_dist, eps(T)), one(T) - eps(T)
+    end

Return point with smallest distance

julia
    return _tuple_point(min_pt, T), α, β
+end

Return value of x/y clamped between ϵ and 1 - ϵ

julia
_clamped_frac(x::T, y::T, ϵ = zero(T)) where T = clamp(x / y, ϵ, one(T) - ϵ)

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/clipping/predicates.html b/previews/PR195/source/methods/clipping/predicates.html new file mode 100644 index 000000000..4216322d5 --- /dev/null +++ b/previews/PR195/source/methods/clipping/predicates.html @@ -0,0 +1,68 @@ + + + + + + If we want to inject adaptivity, we would do something like: | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content
julia
module Predicates
+    using ExactPredicates, ExactPredicates.Codegen
+    import ExactPredicates: ext
+    import ExactPredicates.Codegen: group!, @genpredicate
+    import GeometryOps: _False, _True, _booltype, _tuple_point
+    import GeoInterface as GI
+
+    #= Determine the orientation of c with regards to the oriented segment (a, b).
+    Return 1 if c is to the left of (a, b).
+    Return -1 if c is to the right of (a, b).
+    Return 0 if c is on (a, b) or if a == b. =#
+    orient(a, b, c; exact) = _orient(_booltype(exact), a, b, c)

If exact is true, use ExactPredicates to calculate the orientation.

julia
    _orient(::_True, a, b, c) = ExactPredicates.orient(_tuple_point(a, Float64), _tuple_point(b, Float64), _tuple_point(c, Float64))

If exact is false, calculate the orientation without using ExactPredicates.

julia
    function _orient(exact::_False, a, b, c)
+        a = a .- c
+        b = b .- c
+        return _cross(exact, a, b)
+    end
+
+    #= Determine the sign of the cross product of a and b.
+    Return 1 if the cross product is positive.
+    Return -1 if the cross product is negative.
+    Return 0 if the cross product is 0. =#
+    cross(a, b; exact) = _cross(_booltype(exact), a, b)
+
+    #= If `exact` is `true`, use exact cross product calculation created using
+    `ExactPredicates`generated predicate. Note that as of now `ExactPredicates` requires
+    Float64 so we must convert points a and b. =#
+    _cross(::_True, a, b) = _cross_exact(_tuple_point(a, Float64), _tuple_point(b, Float64))

Exact cross product calculation using ExactPredicates.

julia
    @genpredicate function _cross_exact(a :: 2, b :: 2)
+        group!(a...)
+        group!(b...)
+        ext(a, b)
+    end

If exact is false, calculate the cross product without using ExactPredicates.

julia
    function _cross(::_False, a, b)
+        c_t1 = GI.x(a) * GI.y(b)
+        c_t2 = GI.y(a) * GI.x(b)
+        c_val = if isapprox(c_t1, c_t2)
+            0
+        else
+            sign(c_t1 - c_t2)
+        end
+        return c_val
+    end
+
+end
+
+import .Predicates

If we want to inject adaptivity, we would do something like:

function cross(a, b, c) # try Predicates._cross_naive(a, b, c) # check the error bound there # then try Predicates._cross_adaptive(a, b, c) # then try Predicates._cross_exact end


This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/clipping/union.html b/previews/PR195/source/methods/clipping/union.html new file mode 100644 index 000000000..cd6667d00 --- /dev/null +++ b/previews/PR195/source/methods/clipping/union.html @@ -0,0 +1,274 @@ + + + + + + Union Polygon Clipping | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Union Polygon Clipping

julia
export union
+
+"""
+    union(geom_a, geom_b, [::Type{T}]; target::Type, fix_multipoly = UnionIntersectingPolygons())
+
+Return the union between two geometries as a list of geometries. Return an empty list if
+none are found. The type of the list will be constrained as much as possible given the input
+geometries. Furthermore, the user can provide a `taget` type as a keyword argument and a
+list of target geometries found in the difference will be returned. The user can also
+provide a float type 'T' that they would like the points of returned geometries to be. If
+the user is taking a intersection involving one or more multipolygons, and the multipolygon
+might be comprised of polygons that intersect, if `fix_multipoly` is set to an
+`IntersectingPolygons` correction (the default is `UnionIntersectingPolygons()`), then the
+needed multipolygons will be fixed to be valid before performing the intersection to ensure
+a correct answer. Only set `fix_multipoly` to false if you know that the multipolygons are
+valid, as it will avoid unneeded computation.
+
+Calculates the union between two polygons.
+# Example
+
+```jldoctest
+import GeoInterface as GI, GeometryOps as GO
+
+p1 = GI.Polygon([[(0.0, 0.0), (5.0, 5.0), (10.0, 0.0), (5.0, -5.0), (0.0, 0.0)]])
+p2 = GI.Polygon([[(3.0, 0.0), (8.0, 5.0), (13.0, 0.0), (8.0, -5.0), (3.0, 0.0)]])
+union_poly = GO.union(p1, p2; target = GI.PolygonTrait())
+GI.coordinates.(union_poly)

output

julia
1-element Vector{Vector{Vector{Vector{Float64}}}}:
+ [[[6.5, 3.5], [5.0, 5.0], [0.0, 0.0], [5.0, -5.0], [6.5, -3.5], [8.0, -5.0], [13.0, 0.0], [8.0, 5.0], [6.5, 3.5]]]
+```
+"""
+function union(
+    geom_a, geom_b, ::Type{T}=Float64; target=nothing, kwargs...
+) where {T<:AbstractFloat}
+    return _union(
+        TraitTarget(target), T, GI.trait(geom_a), geom_a, GI.trait(geom_b), geom_b;
+        exact = _True(), kwargs...,
+    )
+end
+
+#= This 'union' implementation returns the union of two polygons. The algorithm to determine
+the union was adapted from "Efficient clipping of efficient polygons," by Greiner and
+Hormann (1998). DOI: https://doi.org/10.1145/274363.274364 =#
+function _union(
+    ::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.PolygonTrait, poly_a,
+    ::GI.PolygonTrait, poly_b;
+    exact, kwargs...,
+) where T

First, I get the exteriors of the two polygons

julia
    ext_a = GI.getexterior(poly_a)
+    ext_b = GI.getexterior(poly_b)

Then, I get the union of the exteriors

julia
    a_list, b_list, a_idx_list = _build_ab_list(T, ext_a, ext_b, _union_delay_cross_f, _union_delay_bounce_f; exact)
+    polys = _trace_polynodes(T, a_list, b_list, a_idx_list, _union_step, poly_a, poly_b)
+    n_pieces = length(polys)

Check if one polygon totally within other and if so, return the larger polygon

julia
    a_in_b, b_in_a = false, false
+    if n_pieces == 0 # no crossing points, determine if either poly is inside the other
+        a_in_b, b_in_a = _find_non_cross_orientation(a_list, b_list, ext_a, ext_b; exact)
+        if a_in_b
+            push!(polys, GI.Polygon([tuples(ext_b)]))
+        elseif b_in_a
+            push!(polys,  GI.Polygon([tuples(ext_a)]))
+        else
+            push!(polys, tuples(poly_a))
+            push!(polys, tuples(poly_b))
+            return polys
+        end
+    elseif n_pieces > 1
+        #= extra polygons are holes (n_pieces == 1 is the desired state) and since
+        holes are formed by regions exterior to both poly_a and poly_b, they can't interact
+        with pre-existing holes =#
+        sort!(polys, by = area, rev = true)  # sort by area so first element is the exterior

the first element is the exterior, the rest are holes

julia
        @views append!(polys[1].geom, (GI.getexterior(p) for p in polys[2:end]))
+        keepat!(polys, 1)
+    end

Add in holes

julia
    if GI.nhole(poly_a) != 0 || GI.nhole(poly_b) != 0
+        _add_union_holes!(polys, a_in_b, b_in_a, poly_a, poly_b; exact)
+    end

Remove unneeded collinear points on same edge

julia
    _remove_collinear_points!(polys, [false], poly_a, poly_b)
+    return polys
+end

Helper functions for Unions with Greiner and Hormann Polygon Clipping

julia
#= When marking the crossing status of a delayed crossing, the chain start point is crossing
+when the start point is a entry point and is a bouncing point when the start point is an
+exit point. The end of the chain has the opposite crossing / bouncing status. =#
+_union_delay_cross_f(x) = (x, !x)
+
+#= When marking the crossing status of a delayed bouncing, the chain start and end points
+are bouncing if the current polygon's adjacent edges are within the non-tracing polygon. If
+the edges are outside then the chain endpoints are marked as crossing. x is a boolean
+representing if the edges are inside or outside of the polygon. =#
+_union_delay_bounce_f(x, _) = !x
+
+#= When tracing polygons, step backwards if the most recent intersection point was an entry
+point, else step forwards where x is the entry/exit status. =#
+_union_step(x, _) = x ? (-1) : 1
+
+#= Add holes from two polygons to the exterior polygon formed by their union. If adding the
+the holes reveals that the polygons aren't actually intersecting, return the original
+polygons. =#
+function _add_union_holes!(polys, a_in_b, b_in_a, poly_a, poly_b; exact)
+    if a_in_b
+        _add_union_holes_contained_polys!(polys, poly_a, poly_b; exact)
+    elseif b_in_a
+        _add_union_holes_contained_polys!(polys, poly_b, poly_a; exact)
+    else  # Polygons intersect, but neither is contained in the other
+        n_a_holes = GI.nhole(poly_a)
+        ext_poly_a = GI.Polygon(StaticArrays.SVector(GI.getexterior(poly_a)))
+        ext_poly_b = GI.Polygon(StaticArrays.SVector(GI.getexterior(poly_b)))
+        #= Start with poly_b when comparing with holes from poly_a and then switch to poly_a
+        to compare with holes from poly_b. For current_poly, use ext_poly_b to avoid
+        repeating overlapping holes in poly_a and poly_b =#
+        curr_exterior_poly = n_a_holes > 0 ? ext_poly_b : ext_poly_a
+        current_poly = n_a_holes > 0 ? ext_poly_b : poly_a

Loop over all holes in both original polygons

julia
        for (i, ih) in enumerate(Iterators.flatten((GI.gethole(poly_a), GI.gethole(poly_b))))
+            in_ext, _, _ = _line_polygon_interactions(ih, curr_exterior_poly; exact, closed_line = true)
+            if !in_ext
+                #= if the hole isn't in the overlapping region between the two polygons, add
+                the hole to the resulting polygon as we know it can't interact with any
+                other holes =#
+                push!(polys[1].geom, ih)
+            else
+                #= if the hole is at least partially in the overlapping region, take the
+                difference of the hole from the polygon it didn't originate from - note that
+                when current_poly is poly_a this includes poly_a holes so overlapping holes
+                between poly_a and poly_b within the overlap are added, in addition to all
+                holes in non-overlapping regions =#
+                h_poly = GI.Polygon(StaticArrays.SVector(ih))
+                new_holes = difference(h_poly, current_poly; target = GI.PolygonTrait())
+                append!(polys[1].geom, (GI.getexterior(new_h) for new_h in new_holes))
+            end
+            if i == n_a_holes
+                curr_exterior_poly = ext_poly_a
+                current_poly = poly_a
+            end
+        end
+    end
+    return
+end
+
+#= Add holes holes to the union of two polygons where one of the original polygons was
+inside of the other. If adding the the holes reveal that the polygons aren't actually
+intersecting, return the original polygons.=#
+function _add_union_holes_contained_polys!(polys, interior_poly, exterior_poly; exact)
+    union_poly = polys[1]
+    ext_int_ring = GI.getexterior(interior_poly)
+    for (i, ih) in enumerate(GI.gethole(exterior_poly))
+        poly_ih = GI.Polygon(StaticArrays.SVector(ih))
+        in_ih, on_ih, out_ih = _line_polygon_interactions(ext_int_ring, poly_ih; exact, closed_line = true)
+        if in_ih  # at least part of interior polygon exterior is within the ith hole
+            if !on_ih && !out_ih
+                #= interior polygon is completely within the ith hole - polygons aren't
+                touching and do not actually form a union =#
+                polys[1] = tuples(interior_poly)
+                push!(polys, tuples(exterior_poly))
+                return polys
+            else
+                #= interior polygon is partially within the ith hole - area of interior
+                polygon reduces the size of the hole =#
+                new_holes = difference(poly_ih, interior_poly; target = GI.PolygonTrait())
+                append!(union_poly.geom, (GI.getexterior(new_h) for new_h in new_holes))
+            end
+        else  # none of interior polygon exterior is within the ith hole
+            if !out_ih
+                #= interior polygon's exterior is the same as the ith hole - polygons do
+                form a union, but do not overlap so all holes stay in final polygon =#
+                append!(union_poly.geom, Iterators.drop(GI.gethole(exterior_poly), i))
+                append!(union_poly.geom, GI.gethole(interior_poly))
+                return polys
+            else
+                #= interior polygon's exterior is outside of the ith hole - the interior
+                polygon could either be disjoint from the hole, or contain the hole =#
+                ext_int_poly = GI.Polygon(StaticArrays.SVector(ext_int_ring))
+                in_int, _, _ = _line_polygon_interactions(ih, ext_int_poly; exact, closed_line = true)
+                if in_int
+                    #= interior polygon contains the hole - overlapping holes between the
+                    interior and exterior polygons will be added =#
+                    for jh in GI.gethole(interior_poly)
+                        poly_jh = GI.Polygon(StaticArrays.SVector(jh))
+                        if intersects(poly_ih, poly_jh)
+                            new_holes = intersection(poly_ih, poly_jh; target = GI.PolygonTrait())
+                            append!(union_poly.geom, (GI.getexterior(new_h) for new_h in new_holes))
+                        end
+                    end
+                else
+                    #= interior polygon and the exterior polygon are disjoint - add the ith
+                    hole as it is not covered by the interior polygon =#
+                    push!(union_poly.geom, ih)
+                end
+            end
+        end
+    end
+    return
+end
+
+#= Polygon with multipolygon union - note that all sub-polygons of `multipoly_b` will be
+included, unioning these sub-polygons with `poly_a` where they intersect. Unless specified
+with `fix_multipoly = nothing`, `multipolygon_b` will be validated using the given (default
+is `UnionIntersectingPolygons()`) correction. =#
+function _union(
+    target::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.PolygonTrait, poly_a,
+    ::GI.MultiPolygonTrait, multipoly_b;
+    fix_multipoly = UnionIntersectingPolygons(), kwargs...,
+) where T
+    if !isnothing(fix_multipoly) # Fix multipoly_b to prevent repeated regions in the output
+        multipoly_b = fix_multipoly(multipoly_b)
+    end
+    polys = [tuples(poly_a, T)]
+    for poly_b in GI.getpolygon(multipoly_b)
+        if intersects(polys[1], poly_b)

If polygons intersect and form a new polygon, swap out polygon

julia
            new_polys = union(polys[1], poly_b; target)
+            if length(new_polys) > 1 # case where they intersect by just one point
+                push!(polys, tuples(poly_b, T))  # add poly_b to list
+            else
+                polys[1] = new_polys[1]
+            end
+        else

If they don't intersect, poly_b is now a part of the union as its own polygon

julia
            push!(polys, tuples(poly_b, T))
+        end
+    end
+    return polys
+end
+
+#= Multipolygon with polygon union is equivalent to taking the union of the polygon with the
+multipolygon and thus simply switches the order of operations and calls the above method. =#
+_union(
+    target::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.MultiPolygonTrait, multipoly_a,
+    ::GI.PolygonTrait, poly_b;
+    kwargs...,
+) where T = union(poly_b, multipoly_a; target, kwargs...)
+
+#= Multipolygon with multipolygon union - note that all of the sub-polygons of `multipoly_a`
+and the sub-polygons of `multipoly_b` are included and combined together where there are
+intersections. Unless specified with `fix_multipoly = nothing`, `multipolygon_b` will be
+validated using the given (default is `UnionIntersectingPolygons()`) correction. =#
+function _union(
+    target::TraitTarget{GI.PolygonTrait}, ::Type{T},
+    ::GI.MultiPolygonTrait, multipoly_a,
+    ::GI.MultiPolygonTrait, multipoly_b;
+    fix_multipoly = UnionIntersectingPolygons(), kwargs...,
+) where T
+    if !isnothing(fix_multipoly) # Fix multipoly_b to prevent repeated regions in the output
+        multipoly_b = fix_multipoly(multipoly_b)
+        fix_multipoly = nothing
+    end
+    multipolys = multipoly_b
+    local polys
+    for poly_a in GI.getpolygon(multipoly_a)
+        polys = union(poly_a, multipolys; target, fix_multipoly)
+        multipolys = GI.MultiPolygon(polys)
+    end
+    return polys
+end

Many type and target combos aren't implemented

julia
function _union(
+    ::TraitTarget{Target}, ::Type{T},
+    trait_a::GI.AbstractTrait, geom_a,
+    trait_b::GI.AbstractTrait, geom_b;
+    kwargs...
+) where {Target,T}
+    throw(ArgumentError("Union between $trait_a and $trait_b with target $Target isn't implemented yet."))
+    return nothing
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/convex_hull.html b/previews/PR195/source/methods/convex_hull.html new file mode 100644 index 000000000..6fb4a20b2 --- /dev/null +++ b/previews/PR195/source/methods/convex_hull.html @@ -0,0 +1,81 @@ + + + + + + Convex hull | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Convex hull

The convex hull of a set of points is the smallest convex polygon that contains all the points.

GeometryOps.jl provides a number of methods for computing the convex hull of a set of points, usually linked to other Julia packages.

For now, we expose one algorithm, MonotoneChainMethod, which uses the DelaunayTriangulation.jl package. The GEOS() interface also supports convex hulls.

Future work could include other algorithms, such as Quickhull.jl, or similar, via package extensions.

Example

Simple hull

julia
import GeometryOps as GO, GeoInterface as GI
+using CairoMakie # to plot
+
+points = randn(GO.Point2f, 100)
+f, a, p = plot(points; label = "Points")
+hull_poly = GO.convex_hull(points)
+lines!(a, hull_poly; label = "Convex hull", color = Makie.wong_colors()[2])
+axislegend(a)
+f

Convex hull of the USA

julia
import GeometryOps as GO, GeoInterface as GI
+using CairoMakie # to plot
+using NaturalEarth # for data
+
+all_adm0 = naturalearth("admin_0_countries", 110)
+usa = all_adm0.geometry[findfirst(==("USA"), all_adm0.ADM0_A3)]
+f, a, p = lines(usa)
+lines!(a, GO.convex_hull(usa); color = Makie.wong_colors()[2])
+f

Investigating the winding order

The winding order of the monotone chain method is counterclockwise, while the winding order of the GEOS method is clockwise.

GeometryOps' convexity detection says that the GEOS hull is convex, while the monotone chain method hull is not. However, they are both going over the same points (we checked), it's just that the winding order is different.

In reality, both sets are convex, but we need to fix the GeometryOps convexity detector (isconcave)!

We may also decide at a later date to change the returned winding order of the polygon, but most algorithms are robust to that, and you can always fix it...

julia
import GeoInterface as GI, GeometryOps as GO, LibGEOS as LG
+using CairoMakie # to plot
+
+points = rand(Point2{Float64}, 100)
+go_hull = GO.convex_hull(GO.MonotoneChainMethod(), points)
+lg_hull = GO.convex_hull(GO.GEOS(), points)
+
+fig = Figure()
+a1, p1 = lines(fig[1, 1], go_hull; color = 1:GI.npoint(go_hull), axis = (; title = "MonotoneChainMethod()"))
+a2, p2 = lines(fig[2, 1], lg_hull; color = 1:GI.npoint(lg_hull), axis = (; title = "GEOS()"))
+cb = Colorbar(fig[1:2, 2], p1; label = "Vertex number")
+fig

Implementation

julia
"""
+    convex_hull([method], geometries)
+
+Compute the convex hull of the points in `geometries`.
+Returns a `GI.Polygon` representing the convex hull.
+
+Note that the polygon returned is wound counterclockwise
+as in the Simple Features standard by default.  If you
+choose GEOS, the winding order will be inverted.
+
+!!! warning
+    This interface only computes the 2-dimensional convex hull!
+
+    For higher dimensional hulls, use the relevant package (Qhull.jl, Quickhull.jl, or similar).
+"""
+function convex_hull end
+
+"""
+    MonotoneChainMethod()
+
+This is an algorithm for the `convex_hull` function.
+
+Uses [`DelaunayTriangulation.jl`](https://github.com/JuliaGeometry/DelaunayTriangulation.jl) to compute the convex hull.
+This is a pure Julia algorithm which provides an optimal Delaunay triangulation.
+
+See also `convex_hull`
+"""
+struct MonotoneChainMethod end

GrahamScanMethod, etc. can be implemented in GO as well, if someone wants to. If we add an extension on Quickhull.jl, then that would be another algorithm.

julia
convex_hull(geometries) = convex_hull(MonotoneChainMethod(), geometries)

TODO: have this respect the CRS by pulling it out of geometries.

julia
function convex_hull(::MonotoneChainMethod, geometries)

Extract all points as tuples. We have to collect and allocate here, because DelaunayTriangulation only accepts vectors of point-like geoms.

Cleanest would be to use the iterable from GO.flatten directly, but that would require us to implement the convex hull algorithm directly.

TODO: create a specialized method that extracts only the information required, GeometryBasics points can be passed through directly.

julia
    points = collect(flatten(tuples, GI.PointTrait, geometries))

Compute the convex hull using DelTri (shorthand for DelaunayTriangulation.jl).

julia
    hull = DelaunayTriangulation.convex_hull(points)

Convert the result to a GI.Polygon and return it. View would be more efficient here, but re-allocating is cleaner.

julia
    point_vec = DelaunayTriangulation.get_points(hull)[DelaunayTriangulation.get_vertices(hull)]
+    return GI.Polygon([GI.LinearRing(point_vec)])
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/distance.html b/previews/PR195/source/methods/distance.html new file mode 100644 index 000000000..21e4ff7a6 --- /dev/null +++ b/previews/PR195/source/methods/distance.html @@ -0,0 +1,205 @@ + + + + + + Distance and signed distance | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Distance and signed distance

julia
export distance, signed_distance

What is distance? What is signed distance?

Distance is the distance of a point to another geometry. This is always a positive number. If a point is inside of geometry, so on a curve or inside of a polygon, the distance will be zero. Signed distance is mainly used for polygons and multipolygons. If a point is outside of a geometry, signed distance has the same value as distance. However, points within the geometry have a negative distance representing the distance of a point to the closest boundary. Therefore, for all "non-filled" geometries, like curves, the distance will either be positive or 0.

To provide an example, consider this rectangle:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+rect = GI.Polygon([[(0,0), (0,1), (1,1), (1,0), (0, 0)]])
+point_in = (0.5, 0.5)
+point_out = (0.5, 1.5)
+f, a, p = poly(collect(GI.getpoint(rect)); axis = (; aspect = DataAspect()))
+scatter!(GI.x(point_in), GI.y(point_in); color = :red)
+scatter!(GI.x(point_out), GI.y(point_out); color = :orange)
+f

This is clearly a rectangle with one point inside and one point outside. The points are both an equal distance to the polygon. The distance to point_in is negative while the distance to point_out is positive.

julia
(
+GO.distance(point_in, rect),  # == 0
+GO.signed_distance(point_in, rect),  # < 0
+GO.signed_distance(point_out, rect)  # > 0
+)
(0.0, -0.5, 0.5)

Consider also a heatmap of signed distances around this object:

julia
xrange = yrange = LinRange(-0.5, 1.5, 300)
+f, a, p = heatmap(xrange, yrange, GO.signed_distance.(Point2f.(xrange, yrange'), Ref(rect)); colormap = :RdBu, colorrange = (-0.75, 0.75))
+a.aspect = DataAspect(); Colorbar(f[1, 2], p, label = "Signed distance"); lines!(a, GI.convert(GO.GeometryBasics, rect)); f

Implementation

This is the GeoInterface-compatible implementation. First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait. This is also used in the implementation, since it's a lot less work!

Distance and signed distance are only implemented for points to other geometries right now. This could be extended to include distance from other geometries in the future.

The distance calculated is the Euclidean distance using the Pythagorean theorem. Also note that singed_distance only makes sense for "filled-in" shapes, like polygons, so it isn't implemented for curves.

julia
const _DISTANCE_TARGETS = TraitTarget{Union{GI.AbstractPolygonTrait,GI.LineStringTrait,GI.LinearRingTrait,GI.LineTrait,GI.PointTrait}}()
+
+"""
+    distance(point, geom, ::Type{T} = Float64)::T
+
+Calculates the  ditance from the geometry `g1` to the `point`. The distance
+will always be positive or zero.
+
+The method will differ based on the type of the geometry provided:
+    - The distance from a point to a point is just the Euclidean distance
+    between the points.
+    - The distance from a point to a line is the minimum distance from the point
+    to the closest point on the given line.
+    - The distance from a point to a linestring is the minimum distance from the
+    point to the closest segment of the linestring.
+    - The distance from a point to a linear ring is the minimum distance from
+    the point to the closest segment of the linear ring.
+    - The distance from a point to a polygon is zero if the point is within the
+    polygon and otherwise is the minimum distance from the point to an edge of
+    the polygon. This includes edges created by holes.
+    - The distance from a point to a multigeometry or a geometry collection is
+    the minimum distance between the point and any of the sub-geometries.
+
+Result will be of type T, where T is an optional argument with a default value
+of Float64.
+"""
+function distance(
+    geom1, geom2, ::Type{T} = Float64; threaded=false
+) where T<:AbstractFloat
+    distance(GI.trait(geom1), geom1, GI.trait(geom2), geom2, T; threaded)
+end
+function distance(
+    trait1, geom, trait2::GI.PointTrait, point, ::Type{T} = Float64;
+    threaded=false
+) where T<:AbstractFloat
+    distance(trait2, point, trait1, geom, T) # Swap order
+end
+function distance(
+    trait1::GI.PointTrait, point, trait2, geom, ::Type{T} = Float64;
+    threaded=false
+) where T<:AbstractFloat
+    applyreduce(min, _DISTANCE_TARGETS, geom; threaded, init=typemax(T)) do g
+        _distance(T, trait1, point, GI.trait(g), g)
+    end
+end

Needed for method ambiguity

julia
function distance(
+    trait1::GI.PointTrait, point1, trait2::GI.PointTrait, point2, ::Type{T} = Float64;
+    threaded=false
+) where T<:AbstractFloat
+    _distance(T, trait1, point1, trait2, point2)
+end

Point-Point, Point-Line, Point-LineString, Point-LinearRing

julia
_distance(::Type{T}, ::GI.PointTrait, point, ::GI.PointTrait, geom) where T =
+    _euclid_distance(T, point, geom)
+_distance(::Type{T}, ::GI.PointTrait, point, ::GI.LineTrait, geom) where T =
+    _distance_line(T, point, GI.getpoint(geom, 1), GI.getpoint(geom, 2))
+_distance(::Type{T}, ::GI.PointTrait, point, ::GI.LineStringTrait, geom) where T =
+    _distance_curve(T, point, geom; close_curve = false)
+_distance(::Type{T}, ::GI.PointTrait, point, ::GI.LinearRingTrait, geom) where T =
+    _distance_curve(T, point, geom; close_curve = true)

Point-Polygon

julia
function _distance(::Type{T}, ::GI.PointTrait, point, ::GI.PolygonTrait, geom) where T
+    within(point, geom) && return zero(T)
+    return _distance_polygon(T, point, geom)
+end
+
+"""
+    signed_distance(point, geom, ::Type{T} = Float64)::T
+
+Calculates the signed distance from the geometry `geom` to the given point.
+Points within `geom` have a negative signed distance, and points outside of
+`geom` have a positive signed distance.
+    - The signed distance from a point to a point, line, linestring, or linear
+    ring is equal to the distance between the two.
+    - The signed distance from a point to a polygon is negative if the point is
+    within the polygon and is positive otherwise. The value of the distance is
+    the minimum distance from the point to an edge of the polygon. This includes
+    edges created by holes.
+    - The signed distance from a point to a multigeometry or a geometry
+    collection is the minimum signed distance between the point and any of the
+    sub-geometries.
+
+Result will be of type T, where T is an optional argument with a default value
+of Float64.
+"""
+function signed_distance(
+    geom1, geom2, ::Type{T} = Float64; threaded=false
+) where T<:AbstractFloat
+    signed_distance(GI.trait(geom1), geom1, GI.trait(geom2), geom2, T; threaded)
+end
+function signed_distance(
+    trait1, geom, trait2::GI.PointTrait, point, ::Type{T} = Float64;
+    threaded=false
+) where T<:AbstractFloat
+    signed_distance(trait2, point, trait1, geom, T; threaded) # Swap order
+end
+function signed_distance(
+    trait1::GI.PointTrait, point, trait2, geom, ::Type{T} = Float64;
+    threaded=false
+) where T<:AbstractFloat
+    applyreduce(min, _DISTANCE_TARGETS, geom; threaded, init=typemax(T)) do g
+        _signed_distance(T, trait1, point, GI.trait(g), g)
+    end
+end

Needed for method ambiguity

julia
function signed_distance(
+    trait1::GI.PointTrait, point1, trait2::GI.PointTrait, point2, ::Type{T} = Float64;
+    threaded=false
+) where T<:AbstractFloat
+    _signed_distance(T, trait1, point1, trait2, point2)
+end

Point-Geom (just calls _distance)

julia
function _signed_distance(
+    ::Type{T}, ptrait::GI.PointTrait, point, gtrait::GI.AbstractGeometryTrait, geom
+) where T
+    _distance(T, ptrait, point, gtrait, geom)
+end

Point-Polygon

julia
function _signed_distance(::Type{T}, ::GI.PointTrait, point, ::GI.PolygonTrait, geom) where T
+    min_dist = _distance_polygon(T, point, geom)
+    return within(point, geom) ? -min_dist : min_dist

negative if point is inside polygon

julia
end

Returns the Euclidean distance between two points.

julia
Base.@propagate_inbounds _euclid_distance(::Type{T}, p1, p2) where T =
+    sqrt(_squared_euclid_distance(T, p1, p2))

Returns the square of the euclidean distance between two points

julia
Base.@propagate_inbounds _squared_euclid_distance(::Type{T}, p1, p2) where T =
+    _squared_euclid_distance(
+        T,
+        GeoInterface.x(p1), GeoInterface.y(p1),
+        GeoInterface.x(p2), GeoInterface.y(p2),
+    )

Returns the Euclidean distance between two points given their x and y values.

julia
Base.@propagate_inbounds _euclid_distance(::Type{T}, x1, y1, x2, y2) where T =
+    sqrt(_squared_euclid_distance(T, x1, y1, x2, y2))

Returns the squared Euclidean distance between two points given their x and y values.

julia
Base.@propagate_inbounds _squared_euclid_distance(::Type{T}, x1, y1, x2, y2) where T =
+    T((x2 - x1)^2 + (y2 - y1)^2)

Returns the minimum distance from point p0 to the line defined by endpoints p1 and p2.

julia
_distance_line(::Type{T}, p0, p1, p2) where T =
+    sqrt(_squared_distance_line(T, p0, p1, p2))

Returns the squared minimum distance from point p0 to the line defined by endpoints p1 and p2.

julia
function _squared_distance_line(::Type{T}, p0, p1, p2) where T
+    x0, y0 = GeoInterface.x(p0), GeoInterface.y(p0)
+    x1, y1 = GeoInterface.x(p1), GeoInterface.y(p1)
+    x2, y2 = GeoInterface.x(p2), GeoInterface.y(p2)
+
+    xfirst, yfirst, xlast, ylast = x1 < x2 ? (x1, y1, x2, y2) : (x2, y2, x1, y1)
+
+    #=
+    Vectors from first point to last point (v) and from first point to point of
+    interest (w) to find the projection of w onto v to find closest point
+    =#
+    v = (xlast - xfirst, ylast - yfirst)
+    w = (x0 - xfirst, y0 - yfirst)
+
+    c1 = sum(w .* v)
+    if c1 <= 0  # p0 is closest to first endpoint
+        return _squared_euclid_distance(T, x0, y0, xfirst, yfirst)
+    end
+
+    c2 = sum(v .* v)
+    if c2 <= c1 # p0 is closest to last endpoint
+        return _squared_euclid_distance(T, x0, y0, xlast, ylast)
+    end
+
+    b2 = c1 / c2  # projection fraction
+    return _squared_euclid_distance(T, x0, y0, xfirst + (b2 * v[1]), yfirst + (b2 * v[2]))
+end

Returns the minimum distance from the given point to the given curve. If close_curve is true, make sure to include the edge from the first to last point of the curve, even if it isn't explicitly repeated.

julia
function _distance_curve(::Type{T}, point, curve; close_curve = false) where T

see if linear ring has explicitly repeated last point in coordinates

julia
    np = GI.npoint(curve)
+    first_last_equal = equals(GI.getpoint(curve, 1), GI.getpoint(curve, np))
+    close_curve &= first_last_equal
+    np -= first_last_equal ? 1 : 0

find minimum distance

julia
    min_dist = typemax(T)
+    p1 = GI.getpoint(curve, close_curve ? np : 1)
+    for i in (close_curve ? 1 : 2):np
+        p2 = GI.getpoint(curve, i)
+        dist = _distance_line(T, point, p1, p2)
+        min_dist = dist < min_dist ? dist : min_dist
+        p1 = p2
+    end
+    return min_dist
+end

Returns the minimum distance from the given point to an edge of the given polygon, including from edges created by holes. Assumes polygon isn't filled and treats the exterior and each hole as a linear ring.

julia
function _distance_polygon(::Type{T}, point, poly) where T
+    min_dist = _distance_curve(T, point, GI.getexterior(poly); close_curve = true)
+    @inbounds for hole in GI.gethole(poly)
+        dist = _distance_curve(T, point, hole; close_curve = true)
+        min_dist = dist < min_dist ? dist : min_dist
+    end
+    return min_dist
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/equals.html b/previews/PR195/source/methods/equals.html new file mode 100644 index 000000000..3a243fb95 --- /dev/null +++ b/previews/PR195/source/methods/equals.html @@ -0,0 +1,289 @@ + + + + + + Equals | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Equals

julia
export equals

What is equals?

The equals function checks if two geometries are equal. They are equal if they share the same set of points and edges to define the same shape.

To provide an example, consider these two lines:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+l1 = GI.LineString([(0.0, 0.0), (0.0, 10.0)])
+l2 = GI.LineString([(0.0, -10.0), (0.0, 3.0)])
+f, a, p = lines(GI.getpoint(l1), color = :blue)
+scatter!(GI.getpoint(l1), color = :blue)
+lines!(GI.getpoint(l2), color = :orange)
+scatter!(GI.getpoint(l2), color = :orange)
+f

We can see that the two lines do not share a common set of points and edges in the plot, so they are not equal:

julia
GO.equals(l1, l2)  # returns false
false

Implementation

This is the GeoInterface-compatible implementation.

First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait. This is also used in the implementation, since it's a lot less work!

Note that while we need the same set of points and edges, they don't need to be provided in the same order for polygons. For for example, we need the same set points for two multipoints to be equal, but they don't have to be saved in the same order. The winding order also doesn't have to be the same to represent the same geometry. This requires checking every point against every other point in the two geometries we are comparing. Also, some geometries must be "closed" like polygons and linear rings. These will be assumed to be closed, even if they don't have a repeated last point explicitly written in the coordinates. Additionally, geometries and multi-geometries can be equal if the multi-geometry only includes that single geometry.

julia
"""
+    equals(geom1, geom2)::Bool
+
+Compare two Geometries return true if they are the same geometry.
+
+# Examples
+```jldoctest
+import GeometryOps as GO, GeoInterface as GI
+poly1 = GI.Polygon([[(0,0), (0,5), (5,5), (5,0), (0,0)]])
+poly2 = GI.Polygon([[(0,0), (0,5), (5,5), (5,0), (0,0)]])
+
+GO.equals(poly1, poly2)

output

julia
true
+```
+"""
+equals(geom_a, geom_b) = equals(
+    GI.trait(geom_a), geom_a,
+    GI.trait(geom_b), geom_b,
+)
+
+"""
+    equals(::T, geom_a, ::T, geom_b)::Bool
+
+Two geometries of the same type, which don't have a equals function to dispatch
+off of should throw an error.
+"""
+equals(::T, geom_a, ::T, geom_b) where T = error("Cant compare $T yet")
+
+"""
+    equals(trait_a, geom_a, trait_b, geom_b)
+
+Two geometries which are not of the same type cannot be equal so they always
+return false.
+"""
+equals(trait_a, geom_a, trait_b, geom_b) = false
+
+"""
+    equals(::GI.PointTrait, p1, ::GI.PointTrait, p2)::Bool
+
+Two points are the same if they have the same x and y (and z if 3D) coordinates.
+"""
+function equals(::GI.PointTrait, p1, ::GI.PointTrait, p2)
+    GI.ncoord(p1) == GI.ncoord(p2) || return false
+    GI.x(p1) == GI.x(p2) || return false
+    GI.y(p1) == GI.y(p2) || return false
+    if GI.is3d(p1)
+        GI.z(p1) == GI.z(p2) || return false
+    end
+    return true
+end
+
+"""
+    equals(::GI.PointTrait, p1, ::GI.MultiPointTrait, mp2)::Bool
+
+A point and a multipoint are equal if the multipoint is composed of a single
+point that is equivalent to the given point.
+"""
+function equals(::GI.PointTrait, p1, ::GI.MultiPointTrait, mp2)
+    GI.npoint(mp2) == 1 || return false
+    return equals(p1, GI.getpoint(mp2, 1))
+end
+
+"""
+    equals(::GI.MultiPointTrait, mp1, ::GI.PointTrait, p2)::Bool
+
+A point and a multipoint are equal if the multipoint is composed of a single
+point that is equivalent to the given point.
+"""
+equals(trait1::GI.MultiPointTrait, mp1, trait2::GI.PointTrait, p2) =
+    equals(trait2, p2, trait1, mp1)
+
+"""
+    equals(::GI.MultiPointTrait, mp1, ::GI.MultiPointTrait, mp2)::Bool
+
+Two multipoints are equal if they share the same set of points.
+"""
+function equals(::GI.MultiPointTrait, mp1, ::GI.MultiPointTrait, mp2)
+    GI.npoint(mp1) == GI.npoint(mp2) || return false
+    for p1 in GI.getpoint(mp1)
+        has_match = false  # if point has a matching point in other multipoint
+        for p2 in GI.getpoint(mp2)
+            if equals(p1, p2)
+                has_match = true
+                break
+            end
+        end
+        has_match || return false  # if no matching point, can't be equal
+    end
+    return true  # all points had a match
+end
+
+"""
+    _equals_curves(c1, c2, closed_type1, closed_type2)::Bool
+
+Two curves are equal if they share the same set of point, representing the same
+geometry. Both curves must must be composed of the same set of points, however,
+they do not have to wind in the same direction, or start on the same point to be
+equivalent.
+Inputs:
+    c1 first geometry
+    c2 second geometry
+    closed_type1::Bool true if c1 is closed by definition (polygon, linear ring)
+    closed_type2::Bool true if c2 is closed by definition (polygon, linear ring)
+"""
+function _equals_curves(c1, c2, closed_type1, closed_type2)

Check if both curves are closed or not

julia
    n1 = GI.npoint(c1)
+    n2 = GI.npoint(c2)
+    c1_repeat_point = GI.getpoint(c1, 1) == GI.getpoint(c1, n1)
+    n2 = GI.npoint(c2)
+    c2_repeat_point = GI.getpoint(c2, 1) == GI.getpoint(c2, n2)
+    closed1 = closed_type1 || c1_repeat_point
+    closed2 = closed_type2 || c2_repeat_point
+    closed1 == closed2 || return false

How many points in each curve

julia
    n1 -= c1_repeat_point ? 1 : 0
+    n2 -= c2_repeat_point ? 1 : 0
+    n1 == n2 || return false
+    n1 == 0 && return true

Find offset between curves

julia
    jstart = nothing
+    p1 = GI.getpoint(c1, 1)
+    for i in 1:n2
+        if equals(p1, GI.getpoint(c2, i))
+            jstart = i
+            break
+        end
+    end

no point matches the first point

julia
    isnothing(jstart) && return false

found match for only point

julia
    n1 == 1 && return true

if isn't closed and first or last point don't match, not same curve

julia
    !closed_type1 && (jstart != 1 && jstart != n1) && return false

Check if curves are going in same direction

julia
    i = 2
+    j = jstart + 1
+    j -= j > n2 ? n2 : 0
+    same_direction = equals(GI.getpoint(c1, i), GI.getpoint(c2, j))

if only 2 points, we have already compared both

julia
    n1 == 2 && return same_direction

Check all remaining points are the same wrapping around line

julia
    jstep = same_direction ? 1 : -1
+    for i in 2:n1
+        ip = GI.getpoint(c1, i)
+        j = jstart + (i - 1) * jstep
+        j += (0 < j <= n2) ? 0 : (n2 * -jstep)
+        jp = GI.getpoint(c2, j)
+        equals(ip, jp) || return false
+    end
+    return true
+end
+
+"""
+    equals(
+        ::Union{GI.LineTrait, GI.LineStringTrait}, l1,
+        ::Union{GI.LineTrait, GI.LineStringTrait}, l2,
+    )::Bool
+
+Two lines/linestrings are equal if they share the same set of points going
+along the curve. Note that lines/linestrings aren't closed by definition.
+"""
+equals(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l2,
+) = _equals_curves(l1, l2, false, false)
+
+"""
+    equals(
+        ::Union{GI.LineTrait, GI.LineStringTrait}, l1,
+        ::GI.LinearRingTrait, l2,
+    )::Bool
+
+A line/linestring and a linear ring are equal if they share the same set of
+points going along the curve. Note that lines aren't closed by definition, but
+rings are, so the line must have a repeated last point to be equal
+"""
+equals(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l1,
+    ::GI.LinearRingTrait, l2,
+) = _equals_curves(l1, l2, false, true)
+
+"""
+    equals(
+        ::GI.LinearRingTrait, l1,
+        ::Union{GI.LineTrait, GI.LineStringTrait}, l2,
+    )::Bool
+
+A linear ring and a line/linestring are equal if they share the same set of
+points going along the curve. Note that lines aren't closed by definition, but
+rings are, so the line must have a repeated last point to be equal
+"""
+equals(
+    ::GI.LinearRingTrait, l1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, l2,
+) = _equals_curves(l1, l2, true, false)
+
+"""
+    equals(
+        ::GI.LinearRingTrait, l1,
+        ::GI.LinearRingTrait, l2,
+    )::Bool
+
+Two linear rings are equal if they share the same set of points going along the
+curve. Note that rings are closed by definition, so they can have, but don't
+need, a repeated last point to be equal.
+"""
+equals(
+    ::GI.LinearRingTrait, l1,
+    ::GI.LinearRingTrait, l2,
+) = _equals_curves(l1, l2, true, true)
+
+"""
+    equals(::GI.PolygonTrait, geom_a, ::GI.PolygonTrait, geom_b)::Bool
+
+Two polygons are equal if they share the same exterior edge and holes.
+"""
+function equals(::GI.PolygonTrait, geom_a, ::GI.PolygonTrait, geom_b)

Check if exterior is equal

julia
    _equals_curves(
+        GI.getexterior(geom_a), GI.getexterior(geom_b),
+        true, true,  # linear rings are closed by definition
+    ) || return false

Check if number of holes are equal

julia
    GI.nhole(geom_a) == GI.nhole(geom_b) || return false

Check if holes are equal

julia
    for ihole in GI.gethole(geom_a)
+        has_match = false
+        for jhole in GI.gethole(geom_b)
+            if _equals_curves(
+                ihole, jhole,
+                true, true,  # linear rings are closed by definition
+            )
+                has_match = true
+                break
+            end
+        end
+        has_match || return false
+    end
+    return true
+end
+
+"""
+    equals(::GI.PolygonTrait, geom_a, ::GI.MultiPolygonTrait, geom_b)::Bool
+
+A polygon and a multipolygon are equal if the multipolygon is composed of a
+single polygon that is equivalent to the given polygon.
+"""
+function equals(::GI.PolygonTrait, geom_a, ::MultiPolygonTrait, geom_b)
+    GI.npolygon(geom_b) == 1 || return false
+    return equals(geom_a, GI.getpolygon(geom_b, 1))
+end
+
+"""
+    equals(::GI.MultiPolygonTrait, geom_a, ::GI.PolygonTrait, geom_b)::Bool
+
+A polygon and a multipolygon are equal if the multipolygon is composed of a
+single polygon that is equivalent to the given polygon.
+"""
+equals(trait_a::GI.MultiPolygonTrait, geom_a, trait_b::PolygonTrait, geom_b) =
+    equals(trait_b, geom_b, trait_a, geom_a)
+
+"""
+    equals(::GI.PolygonTrait, geom_a, ::GI.PolygonTrait, geom_b)::Bool
+
+Two multipolygons are equal if they share the same set of polygons.
+"""
+function equals(::GI.MultiPolygonTrait, geom_a, ::GI.MultiPolygonTrait, geom_b)

Check if same number of polygons

julia
    GI.npolygon(geom_a) == GI.npolygon(geom_b) || return false

Check if each polygon has a matching polygon

julia
    for poly_a in GI.getpolygon(geom_a)
+        has_match = false
+        for poly_b in GI.getpolygon(geom_b)
+            if equals(poly_a, poly_b)
+                has_match = true
+                break
+            end
+        end
+        has_match || return false
+    end
+    return true
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/geom_relations/contains.html b/previews/PR195/source/methods/geom_relations/contains.html new file mode 100644 index 000000000..f2a02c618 --- /dev/null +++ b/previews/PR195/source/methods/geom_relations/contains.html @@ -0,0 +1,57 @@ + + + + + + Contains | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Contains

julia
export contains

What is contains?

The contains function checks if a given geometry completely contains another geometry, or in other words, that the second geometry is completely within the first. This requires that the two interiors intersect and that the interior and boundary of the second geometry is not in the exterior of the first geometry.

To provide an example, consider these two lines:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+l1 = GI.LineString([(0.0, 0.0), (1.0, 0.0), (0.0, 0.1)])
+l2 = GI.LineString([(0.25, 0.0), (0.75, 0.0)])
+f, a, p = lines(GI.getpoint(l1), color = :blue)
+scatter!(GI.getpoint(l1), color = :blue)
+lines!(GI.getpoint(l2), color = :orange)
+scatter!(GI.getpoint(l2), color = :orange)
+f

We can see that all of the points and edges of l2 are within l1, so l1 contains l2. However, l2 does not contain l1.

julia
GO.contains(l1, l2)  # returns true
+GO.contains(l2, l1)  # returns false
false

Implementation

This is the GeoInterface-compatible implementation.

Given that contains is the exact opposite of within, we simply pass the two inputs variables, swapped in order, to within.

julia
"""
+    contains(g1::AbstractGeometry, g2::AbstractGeometry)::Bool
+
+Return true if the second geometry is completely contained by the first
+geometry. The interiors of both geometries must intersect and the interior and
+boundary of the secondary (g2) must not intersect the exterior of the first
+(g1).
+
+`contains` returns the exact opposite result of `within`.
+
+# Examples
+
+```jldoctest
+import GeometryOps as GO, GeoInterface as GI
+line = GI.LineString([(1, 1), (1, 2), (1, 3), (1, 4)])
+point = GI.Point((1, 2))
+
+GO.contains(line, point)

output

julia
true
+```
+"""
+contains(g1, g2) = GeometryOps.within(g2, g1)

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/geom_relations/coveredby.html b/previews/PR195/source/methods/geom_relations/coveredby.html new file mode 100644 index 000000000..e50b550bc --- /dev/null +++ b/previews/PR195/source/methods/geom_relations/coveredby.html @@ -0,0 +1,207 @@ + + + + + + CoveredBy | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

CoveredBy

julia
export coveredby

What is coveredby?

The coveredby function checks if one geometry is covered by another geometry. This is an extension of within that does not require the interiors of the two geometries to intersect, but still does require that the interior and boundary of the first geometry isn't outside of the second geometry.

To provide an example, consider this point and line:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+p1 = (0.0, 0.0)
+l1 = GI.Line([p1, (1.0, 1.0)])
+f, a, p = lines(GI.getpoint(l1))
+scatter!(p1, color = :red)
+f

As we can see, p1 is on the endpoint of l1. This means it is not within, but it does meet the definition of coveredby.

julia
GO.coveredby(p1, l1)  # true
true

Implementation

This is the GeoInterface-compatible implementation.

First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait.

Each of these calls a method in the geom_geom_processors file. The methods in this file determine if the given geometries meet a set of criteria. For the coveredby function and arguments g1 and g2, this criteria is as follows: - points of g1 are allowed to be in the interior of g2 (either through overlap or crossing for lines) - points of g1 are allowed to be on the boundary of g2 - points of g1 are not allowed to be in the exterior of g2 - no points of g1 are required to be in the interior of g2 - no points of g1 are required to be on the boundary of g2 - no points of g1 are required to be in the exterior of g2

The code for the specific implementations is in the geom_geom_processors file.

julia
const COVEREDBY_ALLOWS = (in_allow = true, on_allow = true, out_allow = false)
+const COVEREDBY_CURVE_ALLOWS = (over_allow = true, cross_allow = true, on_allow = true, out_allow = false)
+const COVEREDBY_CURVE_REQUIRES = (in_require = false, on_require = false, out_require = false)
+const COVEREDBY_POLYGON_REQUIRES = (in_require = true, on_require = false, out_require = false,)
+const COVEREDBY_EXACT = (exact = _False(),)
+
+"""
+    coveredby(g1, g2)::Bool
+
+Return `true` if the first geometry is completely covered by the second
+geometry. The interior and boundary of the primary geometry (g1) must not
+intersect the exterior of the secondary geometry (g2).
+
+Furthermore, `coveredby` returns the exact opposite result of `covers`. They are
+equivalent with the order of the arguments swapped.
+
+# Examples
+```jldoctest setup=:(using GeometryOps, GeometryBasics)
+import GeometryOps as GO, GeoInterface as GI
+p1 = GI.Point(0.0, 0.0)
+p2 = GI.Point(1.0, 1.0)
+l1 = GI.Line([p1, p2])
+
+GO.coveredby(p1, l1)

output

julia
true
+```
+"""
+coveredby(g1, g2) = _coveredby(trait(g1), g1, trait(g2), g2)

Convert features to geometries

julia
_coveredby(::GI.FeatureTrait, g1, ::Any, g2) = coveredby(GI.geometry(g1), g2)
+_coveredby(::Any, g1, t2::GI.FeatureTrait, g2) = coveredby(g1, GI.geometry(g2))
+_coveredby(::FeatureTrait, g1, ::FeatureTrait, g2) = coveredby(GI.geometry(g1), GI.geometry(g2))

Points coveredby geometries

Point is coveredby another point if those points are equal

julia
_coveredby(
+    ::GI.PointTrait, g1,
+    ::GI.PointTrait, g2,
+) = equals(g1, g2)

Point is coveredby a line/linestring if it is on a line vertex or an edge

julia
_coveredby(
+    ::GI.PointTrait, g1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _point_curve_process(
+    g1, g2;
+    COVEREDBY_ALLOWS...,
+    closed_curve = false,
+)

Point is coveredby a linearring if it is on a vertex or an edge of ring

julia
_coveredby(
+    ::GI.PointTrait, g1,
+    ::GI.LinearRingTrait, g2,
+) = _point_curve_process(
+    g1, g2;
+    COVEREDBY_ALLOWS...,
+    closed_curve = true,
+)

Point is coveredby a polygon if it is inside polygon, including edges/vertices

julia
_coveredby(
+    ::GI.PointTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _point_polygon_process(
+    g1, g2;
+    COVEREDBY_ALLOWS...,
+    COVEREDBY_EXACT...,
+)

Points cannot cover any geometry other than points

julia
_coveredby(
+    ::Union{GI.AbstractCurveTrait, GI.PolygonTrait}, g1,
+    ::GI.PointTrait, g2,
+) = false

Lines coveredby geometries

julia
#= Linestring is coveredby a line if all interior and boundary points of the
+first line are on the interior/boundary points of the second line. =#
+_coveredby(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _line_curve_process(
+    g1, g2;
+    COVEREDBY_CURVE_ALLOWS...,
+    COVEREDBY_CURVE_REQUIRES...,
+    COVEREDBY_EXACT...,
+    closed_line = false,
+    closed_curve = false,
+)
+
+#= Linestring is coveredby a ring if all interior and boundary points of the
+line are on the edges of the ring. =#
+_coveredby(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::GI.LinearRingTrait, g2,
+) = _line_curve_process(
+    g1, g2;
+    COVEREDBY_CURVE_ALLOWS...,
+    COVEREDBY_CURVE_REQUIRES...,
+    COVEREDBY_EXACT...,
+    closed_line = false,
+    closed_curve = true,
+)
+
+#= Linestring is coveredby a polygon if all interior and boundary points of the
+line are in the polygon interior or on its edges, including hole edges. =#
+_coveredby(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::GI.PolygonTrait, g2,
+) = _line_polygon_process(
+    g1, g2;
+    COVEREDBY_ALLOWS...,
+    COVEREDBY_CURVE_REQUIRES...,
+    COVEREDBY_EXACT...,
+    closed_line = false,
+)

Rings covered by geometries

julia
#= Linearring is covered by a line if all vertices and edges of the ring are on
+the edges and vertices of the line. =#
+_coveredby(
+    ::GI.LinearRingTrait, g1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _line_curve_process(
+    g1, g2;
+    COVEREDBY_CURVE_ALLOWS...,
+    COVEREDBY_CURVE_REQUIRES...,
+    COVEREDBY_EXACT...,
+    closed_line = true,
+    closed_curve = false,
+)
+
+#= Linearring is covered by another linear ring if all vertices and edges of the
+first ring are on the edges/vertices of the second ring. =#
+_coveredby(
+    ::GI.LinearRingTrait, g1,
+    ::GI.LinearRingTrait, g2,
+) = _line_curve_process(
+    g1, g2;
+    COVEREDBY_CURVE_ALLOWS...,
+    COVEREDBY_CURVE_REQUIRES...,
+    COVEREDBY_EXACT...,
+    closed_line = true,
+    closed_curve = true,
+)
+
+#= Linearring is coveredby a polygon if all vertices and edges of the ring are
+in the polygon interior or on the polygon edges, including hole edges. =#
+_coveredby(
+    ::GI.LinearRingTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _line_polygon_process(
+    g1, g2;
+    COVEREDBY_ALLOWS...,
+    COVEREDBY_CURVE_REQUIRES...,
+    COVEREDBY_EXACT...,
+    closed_line = true,
+)

Polygons covered by geometries

julia
#= Polygon is covered by another polygon if if the interior and edges of the
+first polygon are in the second polygon interior or on polygon edges, including
+hole edges.=#
+_coveredby(
+    ::GI.PolygonTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _polygon_polygon_process(
+    g1, g2;
+    COVEREDBY_ALLOWS...,
+    COVEREDBY_POLYGON_REQUIRES...,
+    COVEREDBY_EXACT...,
+)

Polygons cannot covered by any curves

julia
_coveredby(
+    ::GI.PolygonTrait, g1,
+    ::GI.AbstractCurveTrait, g2,
+) = false

Geometries coveredby multi-geometry/geometry collections

julia
#= Geometry is covered by a multi-geometry or a collection if one of the elements
+of the collection cover the geometry. =#
+function _coveredby(
+    ::Union{GI.PointTrait, GI.AbstractCurveTrait, GI.PolygonTrait}, g1,
+    ::Union{
+        GI.MultiPointTrait, GI.AbstractMultiCurveTrait,
+        GI.MultiPolygonTrait, GI.GeometryCollectionTrait,
+    }, g2,
+)
+    for sub_g2 in GI.getgeom(g2)
+        coveredby(g1, sub_g2) && return true
+    end
+    return false
+end

Multi-geometry/geometry collections coveredby geometries

julia
#= Multi-geometry or a geometry collection is covered by a geometry if all
+elements of the collection are covered by the geometry. =#
+function _coveredby(
+    ::Union{
+        GI.MultiPointTrait, GI.AbstractMultiCurveTrait,
+        GI.MultiPolygonTrait, GI.GeometryCollectionTrait,
+    }, g1,
+    ::GI.AbstractGeometryTrait, g2,
+)
+    for sub_g1 in GI.getgeom(g1)
+        !coveredby(sub_g1, g2) && return false
+    end
+    return true
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/geom_relations/covers.html b/previews/PR195/source/methods/geom_relations/covers.html new file mode 100644 index 000000000..003711a0d --- /dev/null +++ b/previews/PR195/source/methods/geom_relations/covers.html @@ -0,0 +1,57 @@ + + + + + + Covers | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Covers

julia
export covers

What is covers?

The covers function checks if a given geometry completely covers another geometry. For this to be true, the "contained" geometry's interior and boundaries must be covered by the "covering" geometry's interior and boundaries. The interiors do not need to overlap.

To provide an example, consider these two lines:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+p1 = (0.0, 0.0)
+p2 = (1.0, 1.0)
+l1 = GI.Line([p1, p2])
+
+f, a, p = lines(GI.getpoint(l1))
+scatter!(p1, color = :red)
+f

julia
GO.covers(l1, p1)  # returns true
+GO.covers(p1, l1)  # returns false
false

Implementation

This is the GeoInterface-compatible implementation.

Given that covers is the exact opposite of coveredby, we simply pass the two inputs variables, swapped in order, to coveredby.

julia
"""
+    covers(g1::AbstractGeometry, g2::AbstractGeometry)::Bool
+
+Return true if the first geometry is completely covers the second geometry,
+The exterior and boundary of the second geometry must not be outside of the
+interior and boundary of the first geometry. However, the interiors need not
+intersect.
+
+`covers` returns the exact opposite result of `coveredby`.
+
+# Examples
+
+```jldoctest
+import GeometryOps as GO, GeoInterface as GI
+l1 = GI.LineString([(1.0, 1.0), (1.0, 2.0), (1.0, 3.0), (1.0, 4.0)])
+l2 = GI.LineString([(1.0, 1.0), (1.0, 2.0)])
+
+GO.covers(l1, l2)

output

julia
true
+```
+"""
+covers(g1, g2)::Bool = GeometryOps.coveredby(g2, g1)

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/geom_relations/crosses.html b/previews/PR195/source/methods/geom_relations/crosses.html new file mode 100644 index 000000000..bbc0b5f74 --- /dev/null +++ b/previews/PR195/source/methods/geom_relations/crosses.html @@ -0,0 +1,144 @@ + + + + + + Crossing checks | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Crossing checks

julia
"""
+     crosses(geom1, geom2)::Bool
+
+Return `true` if the intersection results in a geometry whose dimension is one less than
+the maximum dimension of the two source geometries and the intersection set is interior to
+both source geometries.
+
+TODO: broken
+
+# Examples
+```julia
+import GeoInterface as GI, GeometryOps as GO

TODO: Add working example

julia
```
+"""
+crosses(g1, g2)::Bool = crosses(trait(g1), g1, trait(g2), g2)::Bool
+crosses(t1::FeatureTrait, g1, t2, g2)::Bool = crosses(GI.geometry(g1), g2)
+crosses(t1, g1, t2::FeatureTrait, g2)::Bool = crosses(g1, geometry(g2))
+crosses(::MultiPointTrait, g1, ::LineStringTrait, g2)::Bool = multipoint_crosses_line(g1, g2)
+crosses(::MultiPointTrait, g1, ::PolygonTrait, g2)::Bool = multipoint_crosses_poly(g1, g2)
+crosses(::LineStringTrait, g1, ::MultiPointTrait, g2)::Bool = multipoint_crosses_lines(g2, g1)
+crosses(::LineStringTrait, g1, ::PolygonTrait, g2)::Bool = line_crosses_poly(g1, g2)
+crosses(::LineStringTrait, g1, ::LineStringTrait, g2)::Bool = line_crosses_line(g1, g2)
+crosses(::PolygonTrait, g1, ::MultiPointTrait, g2)::Bool = multipoint_crosses_poly(g2, g1)
+crosses(::PolygonTrait, g1, ::LineStringTrait, g2)::Bool = line_crosses_poly(g2, g1)
+
+function multipoint_crosses_line(geom1, geom2)
+    int_point = false
+    ext_point = false
+    i = 1
+    np2 = GI.npoint(geom2)
+
+    while i < GI.npoint(geom1) && !int_point && !ext_point
+        for j in 1:GI.npoint(geom2) - 1
+            exclude_boundary = (j === 1 || j === np2 - 2) ? :none : :both
+            if _point_on_segment(GI.getpoint(geom1, i), (GI.getpoint(geom2, j), GI.getpoint(geom2, j + 1)); exclude_boundary)
+                int_point = true
+            else
+                ext_point = true
+            end
+        end
+        i += 1
+    end
+    return int_point && ext_point
+end
+
+function line_crosses_line(line1, line2)
+    np2 = GI.npoint(line2)
+    if GeometryOps.intersects(line1, line2)
+        for i in 1:GI.npoint(line1) - 1
+            for j in 1:GI.npoint(line2) - 1
+                exclude_boundary = (j === 1 || j === np2 - 2) ? :none : :both
+                pa = GI.getpoint(line1, i)
+                pb = GI.getpoint(line1, i + 1)
+                p = GI.getpoint(line2, j)
+                _point_on_segment(p, (pa, pb); exclude_boundary) && return true
+            end
+        end
+    end
+    return false
+end
+
+function line_crosses_poly(line, poly)
+    for l in flatten(AbstractCurveTrait, poly)
+        intersects(line, l) && return true
+    end
+    return false
+end
+
+function multipoint_crosses_poly(mp, poly)
+    int_point = false
+    ext_point = false
+
+    for p in GI.getpoint(mp)
+        if _point_polygon_process(
+            p, poly;
+            in_allow = true, on_allow = true, out_allow = false, exact = _False()
+        )
+            int_point = true
+        else
+            ext_point = true
+        end
+        int_point && ext_point && return true
+    end
+    return false
+end
+
+#= TODO: Once crosses is swapped over to use the geom relations workflow, can
+delete these helpers. =#
+
+function _point_on_segment(point, (start, stop); exclude_boundary::Symbol=:none)::Bool
+    x, y = GI.x(point), GI.y(point)
+    x1, y1 = GI.x(start), GI.y(start)
+    x2, y2 = GI.x(stop), GI.y(stop)
+
+    dxc = x - x1
+    dyc = y - y1
+    dx1 = x2 - x1
+    dy1 = y2 - y1

TODO use better predicate for crossing here

julia
    cross = dxc * dy1 - dyc * dx1
+    cross != 0 && return false

Will constprop optimise these away?

julia
    if exclude_boundary === :none
+        if abs(dx1) >= abs(dy1)
+            return dx1 > 0 ? x1 <= x && x <= x2 : x2 <= x && x <= x1
+        end
+        return dy1 > 0 ? y1 <= y && y <= y2 : y2 <= y && y <= y1
+    elseif exclude_boundary === :start
+        if abs(dx1) >= abs(dy1)
+             return dx1 > 0 ? x1 < x && x <= x2 : x2 <= x && x < x1
+        end
+        return dy1 > 0 ? y1 < y && y <= y2 : y2 <= y && y < y1
+    elseif exclude_boundary === :end
+        if abs(dx1) >= abs(dy1)
+            return dx1 > 0 ? x1 <= x && x < x2 : x2 < x && x <= x1
+        end
+        return dy1 > 0 ? y1 <= y && y < y2 : y2 < y && y <= y1
+    elseif exclude_boundary === :both
+        if abs(dx1) >= abs(dy1)
+            return dx1 > 0 ? x1 < x && x < x2 : x2 < x && x < x1
+        end
+        return dy1 > 0 ? y1 < y && y < y2 : y2 < y && y < y1
+    end
+    return false
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/geom_relations/disjoint.html b/previews/PR195/source/methods/geom_relations/disjoint.html new file mode 100644 index 000000000..e17aae6a3 --- /dev/null +++ b/previews/PR195/source/methods/geom_relations/disjoint.html @@ -0,0 +1,202 @@ + + + + + + Disjoint | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Disjoint

julia
export disjoint

What is disjoint?

The disjoint function checks if one geometry is outside of another geometry, without sharing any boundaries or interiors.

To provide an example, consider these two lines:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+l1 = GI.LineString([(0.0, 0.0), (1.0, 0.0), (0.0, 0.1)])
+l2 = GI.LineString([(2.0, 0.0), (2.75, 0.0)])
+f, a, p = lines(GI.getpoint(l1), color = :blue)
+scatter!(GI.getpoint(l1), color = :blue)
+lines!(GI.getpoint(l2), color = :orange)
+scatter!(GI.getpoint(l2), color = :orange)
+f

We can see that none of the edges or vertices of l1 interact with l2 so they are disjoint.

julia
GO.disjoint(l1, l2)  # returns true
true

Implementation

This is the GeoInterface-compatible implementation.

First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait.

Each of these calls a method in the geom_geom_processors file. The methods in this file determine if the given geometries meet a set of criteria. For the disjoint function and arguments g1 and g2, this criteria is as follows: - points of g1 are not allowed to be in the interior of g2 - points of g1 are not allowed to be on the boundary of g2 - points of g1 are allowed to be in the exterior of g2 - no points required to be in the interior of g2 - no points of g1 are required to be on the boundary of g2 - no points of g1 are required to be in the exterior of g2

The code for the specific implementations is in the geom_geom_processors file.

julia
const DISJOINT_ALLOWS = (in_allow = false, on_allow = false, out_allow = true)
+const DISJOINT_CURVE_ALLOWS = (over_allow = false, cross_allow = false, on_allow = false, out_allow = true)
+const DISJOINT_REQUIRES = (in_require = false, on_require = false, out_require = false)
+const DISJOINT_EXACT = (exact = _False(),)
+
+"""
+    disjoint(geom1, geom2)::Bool
+
+Return `true` if the first geometry is disjoint from the second geometry.
+
+Return `true` if the first geometry is disjoint from the second geometry. The
+interiors and boundaries of both geometries must not intersect.
+
+# Examples
+```jldoctest setup=:(using GeometryOps, GeoInterface)
+import GeometryOps as GO, GeoInterface as GI
+
+line = GI.LineString([(1, 1), (1, 2), (1, 3), (1, 4)])
+point = (2, 2)
+GO.disjoint(point, line)

output

julia
true
+```
+"""
+disjoint(g1, g2) = _disjoint(trait(g1), g1, trait(g2), g2)

Convert features to geometries

julia
_disjoint(::FeatureTrait, g1, ::Any, g2) = disjoint(GI.geometry(g1), g2)
+_disjoint(::Any, g1, ::FeatureTrait, g2) = disjoint(g1, geometry(g2))
+_disjoint(::FeatureTrait, g1, ::FeatureTrait, g2) = disjoint(GI.geometry(g1), GI.geometry(g2))

Point disjoint geometries

Point is disjoint from another point if the points are not equal.

julia
_disjoint(
+    ::GI.PointTrait, g1,
+    ::GI.PointTrait, g2,
+) = !equals(g1, g2)

Point is disjoint from a linestring if it is not on the line's edges/vertices.

julia
_disjoint(
+    ::GI.PointTrait, g1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _point_curve_process(
+    g1, g2;
+    DISJOINT_ALLOWS...,
+    closed_curve = false,
+)

Point is disjoint from a linearring if it is not on the ring's edges/vertices.

julia
_disjoint(
+    ::GI.PointTrait, g1,
+    ::GI.LinearRingTrait, g2,
+) = _point_curve_process(
+    g1, g2;
+    DISJOINT_ALLOWS...,
+    closed_curve = true,
+)
+
+#= Point is disjoint from a polygon if it is not on any edges, vertices, or
+within the polygon's interior. =#
+_disjoint(
+    ::GI.PointTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _point_polygon_process(
+    g1, g2;
+    DISJOINT_ALLOWS...,
+    DISJOINT_EXACT...,
+)
+
+#= Geometry is disjoint from a point if the point is not in the interior or on
+the boundary of the geometry. =#
+_disjoint(
+    trait1::Union{GI.AbstractCurveTrait, GI.PolygonTrait}, g1,
+    trait2::GI.PointTrait, g2,
+) = _disjoint(trait2, g2, trait1, g1)

Lines disjoint geometries

julia
#= Linestring is disjoint from another line if they do not share any interior
+edge/vertex points or boundary points. =#
+_disjoint(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _line_curve_process(
+    g1, g2;
+    DISJOINT_CURVE_ALLOWS...,
+    DISJOINT_REQUIRES...,
+    DISJOINT_EXACT...,
+    closed_line = false,
+    closed_curve = false,
+)
+
+#= Linestring is disjoint from a linearring if they do not share any interior
+edge/vertex points or boundary points. =#
+_disjoint(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::GI.LinearRingTrait, g2,
+) = _line_curve_process(
+    g1, g2;
+    DISJOINT_CURVE_ALLOWS...,
+    DISJOINT_REQUIRES...,
+    DISJOINT_EXACT...,
+    closed_line = false,
+    closed_curve = true,
+)
+
+#= Linestring is disjoint from a polygon if the interior and boundary points of
+the line are not in the polygon's interior or on the polygon's boundary. =#
+_disjoint(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::GI.PolygonTrait, g2,
+) = _line_polygon_process(
+    g1, g2;
+    DISJOINT_ALLOWS...,
+    DISJOINT_REQUIRES...,
+    DISJOINT_EXACT...,
+    closed_line = false,
+)
+
+#= Geometry is disjoint from a linestring if the line's interior and boundary
+points don't intersect with the geometry's interior and boundary points. =#
+_disjoint(
+    trait1::Union{GI.LinearRingTrait, GI.PolygonTrait}, g1,
+    trait2::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _disjoint(trait2, g2, trait1, g1)

Rings disjoint geometries

julia
#= Linearrings is disjoint from another linearring if they do not share any
+interior edge/vertex points or boundary points.=#
+_disjoint(
+    ::GI.LinearRingTrait, g1,
+    ::GI.LinearRingTrait, g2,
+) = _line_curve_process(
+    g1, g2;
+    DISJOINT_CURVE_ALLOWS...,
+    DISJOINT_REQUIRES...,
+    DISJOINT_EXACT...,
+    closed_line = true,
+    closed_curve = true,
+)
+
+#= Linearring is disjoint from a polygon if the interior and boundary points of
+the ring are not in the polygon's interior or on the polygon's boundary. =#
+_disjoint(
+    ::GI.LinearRingTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _line_polygon_process(
+    g1, g2;
+    DISJOINT_ALLOWS...,
+    DISJOINT_REQUIRES...,
+    DISJOINT_EXACT...,
+    closed_line = true,
+)

Polygon disjoint geometries

julia
#= Polygon is disjoint from another polygon if they do not share any edges or
+vertices and if their interiors do not intersect, excluding any holes. =#
+_disjoint(
+    ::GI.PolygonTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _polygon_polygon_process(
+    g1, g2;
+    DISJOINT_ALLOWS...,
+    DISJOINT_REQUIRES...,
+    DISJOINT_EXACT...,
+)

Geometries disjoint multi-geometry/geometry collections

julia
#= Geometry is disjoint from a multi-geometry or a collection if all of the
+elements of the collection are disjoint from the geometry. =#
+function _disjoint(
+    ::Union{GI.PointTrait, GI.AbstractCurveTrait, GI.PolygonTrait}, g1,
+    ::Union{
+        GI.MultiPointTrait, GI.AbstractMultiCurveTrait,
+        GI.MultiPolygonTrait, GI.GeometryCollectionTrait,
+    }, g2,
+)
+    for sub_g2 in GI.getgeom(g2)
+        !disjoint(g1, sub_g2) && return false
+    end
+    return true
+end

Multi-geometry/geometry collections coveredby geometries

julia
#= Multi-geometry or a geometry collection is covered by a geometry if all
+elements of the collection are covered by the geometry. =#
+function _disjoint(
+    ::Union{
+        GI.MultiPointTrait, GI.AbstractMultiCurveTrait,
+        GI.MultiPolygonTrait, GI.GeometryCollectionTrait,
+    }, g1,
+    ::GI.AbstractGeometryTrait, g2,
+)
+    for sub_g1 in GI.getgeom(g1)
+        !disjoint(sub_g1, g2) && return false
+    end
+    return true
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/geom_relations/geom_geom_processors.html b/previews/PR195/source/methods/geom_relations/geom_geom_processors.html new file mode 100644 index 000000000..28cc81b56 --- /dev/null +++ b/previews/PR195/source/methods/geom_relations/geom_geom_processors.html @@ -0,0 +1,461 @@ + + + + + + Line-curve interaction | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Line-curve interaction

julia
#= Code is based off of DE-9IM Standards (https://en.wikipedia.org/wiki/DE-9IM)
+and attempts a standardized solution for most of the functions.
+=#
+
+"""
+    Enum PointOrientation
+
+Enum for the orientation of a point with respect to a curve. A point can be
+`point_in` the curve, `point_on` the curve, or `point_out` of the curve.
+"""
+@enum PointOrientation point_in=1 point_on=2 point_out=3

Determines if a point meets the given checks with respect to a curve.

If in_allow is true, the point can be on the curve interior. If on_allow is true, the point can be on the curve boundary. If out_allow is true, the point can be disjoint from the curve.

If the point is in an "allowed" location, return true. Else, return false.

If closed_curve is true, curve is treated as a closed curve where the first and last point are connected by a segment.

julia
function _point_curve_process(
+    point, curve;
+    in_allow, on_allow, out_allow,
+    closed_curve = false,
+)

Determine if curve is closed

julia
    n = GI.npoint(curve)
+    first_last_equal = equals(GI.getpoint(curve, 1), GI.getpoint(curve, n))
+    closed_curve |= first_last_equal
+    n -= first_last_equal ? 1 : 0

Loop through all curve segments

julia
    p_start = GI.getpoint(curve, closed_curve ? n : 1)
+    @inbounds for i in (closed_curve ? 1 : 2):n
+        p_end = GI.getpoint(curve, i)
+        seg_val = _point_segment_orientation(point, p_start, p_end)
+        seg_val == point_in && return in_allow
+        if seg_val == point_on
+            if !closed_curve  # if point is on curve endpoints, it is "on"
+                i == 2 && equals(point, p_start) && return on_allow
+                i == n && equals(point, p_end) && return on_allow
+            end
+            return in_allow
+        end
+        p_start = p_end
+    end
+    return out_allow
+end

Determines if a point meets the given checks with respect to a polygon.

If in_allow is true, the point can be within the polygon interior If on_allow is true, the point can be on the polygon boundary. If out_allow is true, the point can be disjoint from the polygon.

If the point is in an "allowed" location, return true. Else, return false.

julia
function _point_polygon_process(
+    point, polygon;
+    in_allow, on_allow, out_allow, exact,
+)

Check interaction of geom with polygon's exterior boundary

julia
    ext_val = _point_filled_curve_orientation(point, GI.getexterior(polygon); exact)

If a point is outside, it isn't interacting with any holes

julia
    ext_val == point_out && return out_allow

if a point is on an external boundary, it isn't interacting with any holes

julia
    ext_val == point_on && return on_allow

If geom is within the polygon, need to check interactions with holes

julia
    for hole in GI.gethole(polygon)
+        hole_val = _point_filled_curve_orientation(point, hole; exact)

If a point in in a hole, it is outside of the polygon

julia
        hole_val == point_in && return out_allow

If a point in on a hole edge, it is on the edge of the polygon

julia
        hole_val == point_on && return on_allow
+    end

Point is within external boundary and on in/on any holes

julia
    return in_allow
+end

Determines if a line meets the given checks with respect to a curve.

If over_allow is true, segments of the line and curve can be co-linear. If cross_allow is true, segments of the line and curve can cross. If on_allow is true, endpoints of either the line or curve can intersect a segment of the other geometry. If cross_allow is true, segments of the line and curve can be disjoint.

If in_require is true, the interiors of the line and curve must meet in at least one point. If on_require is true, the boundary of one of the two geometries can meet the interior or boundary of the other geometry in at least one point. If out_require is true, there must be at least one point of the given line that is exterior of the curve.

If the point is in an "allowed" location and meets all requirements, return true. Else, return false.

If closed_line is true, line is treated as a closed line where the first and last point are connected by a segment. Same with closed_curve.

julia
@inline function _line_curve_process(line, curve;
+    over_allow, cross_allow, kw...
+)
+    skip, returnval = _maybe_skip_disjoint_extents(line, curve;
+        in_allow=(over_allow | cross_allow), kw...
+    )
+    skip && return returnval
+
+    return _inner_line_curve_process(line, curve; over_allow, cross_allow, kw...)
+end
+
+function _inner_line_curve_process(
+    line, curve;
+    over_allow, cross_allow, on_allow, out_allow,
+    in_require, on_require, out_require,
+    closed_line = false, closed_curve = false,
+    exact,
+)

Set up requirements

julia
    in_req_met = !in_require
+    on_req_met = !on_require
+    out_req_met = !out_require

Determine curve endpoints

julia
    nl = GI.npoint(line)
+    nc = GI.npoint(curve)
+    first_last_equal_line = equals(GI.getpoint(line, 1), GI.getpoint(line, nl))
+    first_last_equal_curve = equals(GI.getpoint(curve, 1), GI.getpoint(curve, nc))
+    nl -= first_last_equal_line ? 1 : 0
+    nc -= first_last_equal_curve ? 1 : 0
+    closed_line |= first_last_equal_line
+    closed_curve |= first_last_equal_curve

Loop over each line segment

julia
    l_start = _tuple_point(GI.getpoint(line, closed_line ? nl : 1))
+    i = closed_line ? 1 : 2
+    while i  nl
+        l_end = _tuple_point(GI.getpoint(line, i))
+        c_start = _tuple_point(GI.getpoint(curve, closed_curve ? nc : 1))

Loop over each curve segment

julia
        for j in (closed_curve ? 1 : 2):nc
+            c_end = _tuple_point(GI.getpoint(curve, j))

Check if line and curve segments meet

julia
            seg_val, intr1, _ = _intersection_point(Float64, (l_start, l_end), (c_start, c_end); exact)

If segments are co-linear

julia
            if seg_val == line_over
+                !over_allow && return false

at least one point in, meets requirements

julia
                in_req_met = true
+                point_val = _point_segment_orientation(l_start, c_start, c_end)

If entire segment isn't covered, consider remaining section

julia
                if point_val != point_out
+                    i, l_start, break_off = _find_new_seg(i, l_start, l_end, c_start, c_end)
+                    break_off && break
+                end
+            else
+                if seg_val == line_cross
+                    !cross_allow && return false
+                    in_req_met = true
+                elseif seg_val == line_hinge  # could cross or overlap

Determine location of intersection point on each segment

julia
                    (_, (α, β)) = intr1
+                    if ( # Don't consider edges of curves as they can't cross
+                        (!closed_line && ((α == 0 && i == 2) ||== 1 && i == nl))) ||
+                        (!closed_curve && ((β == 0 && j == 2) ||== 1 && j == nc)))
+                    )
+                        !on_allow && return false
+                        on_req_met = true
+                    else
+                        in_req_met = true

If needed, determine if hinge actually crosses

julia
                        if (!cross_allow || !over_allow) && α != 0 && β != 0

Find next pieces of hinge to see if line and curve cross

julia
                            l, c = _find_hinge_next_segments(
+                                α, β, l_start, l_end, c_start, c_end,
+                                i, line, j, curve,
+                            )
+                            next_val, _, _ = _intersection_point(Float64, l, c; exact)
+                            if next_val == line_hinge
+                                !cross_allow && return false
+                            else
+                                !over_allow && return false
+                            end
+                        end
+                    end
+                end

no overlap for a give segment, some of segment must be out of curve

julia
                if j == nc
+                    !out_allow && return false
+                    out_req_met = true
+                end
+            end
+            c_start = c_end  # consider next segment of curve
+            if j == nc  # move on to next line segment
+                i += 1
+                l_start = l_end
+            end
+        end
+    end
+    return in_req_met && on_req_met && out_req_met
+end
+
+#= If entire segment (le to ls) isn't covered by segment (cs to ce), find remaining section
+part of section outside of cs to ce. If completely covered, increase segment index i. =#
+function _find_new_seg(i, ls, le, cs, ce)
+    break_off = true
+    if _point_segment_orientation(le, cs, ce) != point_out
+        ls = le
+        i += 1
+    elseif !equals(ls, cs) && _point_segment_orientation(cs, ls, le) != point_out
+        ls = cs
+    elseif !equals(ls, ce) && _point_segment_orientation(ce, ls, le) != point_out
+        ls = ce
+    else
+        break_off = false
+    end
+    return i, ls, break_off
+end
+
+#= Find next set of segments needed to determine if given hinge segments cross or not.=#
+function _find_hinge_next_segments(α, β, ls, le, cs, ce, i, line, j, curve)
+    next_seg = if β == 1
+        if α == 1  # hinge at endpoints, so next segment of both is needed
+            ((le, _tuple_point(GI.getpoint(line, i + 1))), (ce, _tuple_point(GI.getpoint(curve, j + 1))))
+        else  # hinge at curve endpoint and line interior point, curve next segment needed
+            ((ls, le), (ce, _tuple_point(GI.getpoint(curve, j + 1))))
+        end
+    else  # hinge at curve interior point and line endpoint, line next segment needed
+        ((le, _tuple_point(GI.getpoint(line, i + 1))), (cs, ce))
+    end
+    return next_seg
+end

Determines if a line meets the given checks with respect to a polygon.

If in_allow is true, segments of the line can be in the polygon interior. If on_allow is true, segments of the line can be on the polygon's boundary. If out_allow is true, segments of the line can be outside of the polygon.

If in_require is true, the interiors of the line and polygon must meet in at least one point. If on_require is true, the line must have at least one point on the polygon'same boundary. If out_require is true, the line must have at least one point outside of the polygon.

If the point is in an "allowed" location and meets all requirements, return true. Else, return false.

If closed_line is true, line is treated as a closed line where the first and last point are connected by a segment.

julia
@inline function _line_polygon_process(line, polygon; kw...)
+    skip, returnval = _maybe_skip_disjoint_extents(line, polygon; kw...)
+    skip && return returnval
+    return _inner_line_polygon_process(line, polygon; kw...)
+end
+
+function _inner_line_polygon_process(
+    line, polygon;
+    in_allow, on_allow, out_allow,
+    in_require, on_require, out_require,
+    exact, closed_line = false,
+)
+    in_req_met = !in_require
+    on_req_met = !on_require
+    out_req_met = !out_require

Check interaction of line with polygon's exterior boundary

julia
    in_curve, on_curve, out_curve = _line_filled_curve_interactions(
+        line, GI.getexterior(polygon);
+        exact, closed_line = closed_line,
+    )
+    if on_curve
+        !on_allow && return false
+        on_req_met = true
+    end
+    if out_curve
+        !out_allow && return false
+        out_req_met = true
+    end

If no points within the polygon, the line is disjoint and we are done

julia
    !in_curve && return in_req_met && on_req_met && out_req_met

Loop over polygon holes

julia
    for hole in GI.gethole(polygon)
+        in_hole, on_hole, out_hole =_line_filled_curve_interactions(
+            line, hole;
+            exact, closed_line = closed_line,
+        )
+        if in_hole  # line in hole is equivalent to being out of polygon
+            !out_allow && return false
+            out_req_met = true
+        end
+        if on_hole  # hole boundary is polygon boundary
+            !on_allow && return false
+            on_req_met = true
+        end
+        if !out_hole  # entire line is in/on hole, can't be in/on other holes
+            in_curve = false
+            break
+        end
+    end
+    if in_curve  # entirely of curve isn't within a hole
+        !in_allow && return false
+        in_req_met = true
+    end
+    return in_req_met && on_req_met && out_req_met
+end

Determines if a polygon meets the given checks with respect to a polygon.

If in_allow is true, the polygon's interiors must intersect. If on_allow is true, the one of the polygon's boundaries must either interact with the other polygon's boundary or interior. If out_allow is true, the first polygon must have interior regions outside of the second polygon.

If in_require is true, the polygon interiors must meet in at least one point. If on_require is true, one of the polygon's must have at least one boundary point in or on the other polygon. If out_require is true, the first polygon must have at least one interior point outside of the second polygon.

If the point is in an "allowed" location and meets all requirements, return true. Else, return false.

julia
@inline function _polygon_polygon_process(poly1, poly2; kw...)
+    skip, returnval = _maybe_skip_disjoint_extents(poly1, poly2; kw...)
+    skip && return returnval
+    return _inner_polygon_polygon_process(poly1, poly2; kw...)
+end
+
+function _inner_polygon_polygon_process(
+    poly1, poly2;
+    in_allow, on_allow, out_allow,
+    in_require, on_require, out_require,
+    exact,
+)
+    in_req_met = !in_require
+    on_req_met = !on_require
+    out_req_met = !out_require

Check if exterior of poly1 is within poly2

julia
    ext1 = GI.getexterior(poly1)
+    ext2 = GI.getexterior(poly2)

Check if exterior of poly1 is in polygon 2

julia
    e1_in_p2, e1_on_p2, e1_out_p2 = _line_polygon_interactions(
+        ext1, poly2;
+        exact, closed_line = true,
+    )
+    if e1_on_p2
+        !on_allow && return false
+        on_req_met = true
+    end
+    if e1_out_p2
+        !out_allow && return false
+        out_req_met = true
+    end
+
+    if !e1_in_p2

if exterior ring isn't in poly2, check if it surrounds poly2

julia
        _, _, e2_out_e1 = _line_filled_curve_interactions(
+            ext2, ext1;
+            exact, closed_line = true,
+        )  # if they really are disjoint, we are done
+        e2_out_e1 && return in_req_met && on_req_met && out_req_met
+    end

If interiors interact, check if poly2 interacts with any of poly1's holes

julia
    for h1 in GI.gethole(poly1)
+        h1_in_p2, h1_on_p2, h1_out_p2 = _line_polygon_interactions(
+            h1, poly2;
+            exact, closed_line = true,
+        )
+        if h1_on_p2
+            !on_allow && return false
+            on_req_met = true
+        end
+        if h1_out_p2
+            !out_allow && return false
+            out_req_met = true
+        end
+        if !h1_in_p2

If hole isn't in poly2, see if poly2 is in hole

julia
            _, _, e2_out_h1 = _line_filled_curve_interactions(
+                ext2, h1;
+                exact, closed_line = true,
+            )

hole encompasses all of poly2

julia
            !e2_out_h1 && return in_req_met && on_req_met && out_req_met
+            break
+        end
+    end
+    #=
+    poly2 isn't outside of poly1 and isn't in a hole, poly1 interior must
+    interact with poly2 interior
+    =#
+    !in_allow && return false
+    in_req_met = true

If any of poly2 holes are within poly1, part of poly1 is exterior to poly2

julia
    for h2 in GI.gethole(poly2)
+        h2_in_p1, h2_on_p1, _ = _line_polygon_interactions(
+            h2, poly1;
+            exact, closed_line = true,
+        )
+        if h2_on_p1
+            !on_allow && return false
+            on_req_met = true
+        end
+        if h2_in_p1
+            !out_allow && return false
+            out_req_met = true
+        end
+    end
+    return in_req_met && on_req_met && out_req_met
+end

Determines if a point is in, on, or out of a segment. If the point is on the segment it is on one of the segments endpoints. If it is in, it is on any other point of the segment. If the point is not on any part of the segment, it is out of the segment.

Point should be an object of point trait and curve should be an object with a linestring or linearring trait.

Can provide values of in, on, and out keywords, which determines return values for each scenario.

julia
function _point_segment_orientation(
+    point, start, stop;
+    in::T = point_in, on::T = point_on, out::T = point_out,
+) where {T}

Parse out points

julia
    x, y = GI.x(point), GI.y(point)
+    x1, y1 = GI.x(start), GI.y(start)
+    x2, y2 = GI.x(stop), GI.y(stop)
+    Δx_seg = x2 - x1
+    Δy_seg = y2 - y1
+    Δx_pt = x - x1
+    Δy_pt = y - y1
+    if (Δx_pt == 0 && Δy_pt == 0) || (Δx_pt == Δx_seg && Δy_pt == Δy_seg)

If point is equal to the segment start or end points

julia
        return on
+    else
+        #=
+        Determine if the point is on the segment -> see if vector from segment
+        start to point is parallel to segment and if point is between the
+        segment endpoints
+        =#
+        on_line = _isparallel(Δx_seg, Δy_seg, Δx_pt, Δy_pt)
+        !on_line && return out
+        between_endpoints =
+            (x2 > x1 ? x1 <= x <= x2 : x2 <= x <= x1) &&
+            (y2 > y1 ? y1 <= y <= y2 : y2 <= y <= y1)
+        !between_endpoints && return out
+    end
+    return in
+end

Determine if point is in, on, or out of a closed curve, which includes the space enclosed by the closed curve.

In means the point is within the closed curve (excluding edges and vertices). On means the point is on an edge or a vertex of the closed curve. Out means the point is outside of the closed curve.

Point should be an object of point trait and curve should be an object with a linestring or linearring trait, that is assumed to be closed, regardless of repeated last point.

Can provide values of in, on, and out keywords, which determines return values for each scenario.

Note that this uses the Algorithm by Hao and Sun (2018): https://doi.org/10.3390/sym10100477 Paper separates orientation of point and edge into 26 cases. For each case, it is either a case where the point is on the edge (returns on), where a ray from the point (x, y) to infinity along the line y = y cut through the edge (k += 1), or the ray does not pass through the edge (do nothing and continue). If the ray passes through an odd number of edges, it is within the curve, else outside of of the curve if it didn't return 'on'. See paper for more information on cases denoted in comments.

julia
function _point_filled_curve_orientation(
+    point, curve;
+    in::T = point_in, on::T = point_on, out::T = point_out, exact,
+) where {T}
+    x, y = GI.x(point), GI.y(point)
+    n = GI.npoint(curve)
+    n -= equals(GI.getpoint(curve, 1), GI.getpoint(curve, n)) ? 1 : 0
+    k = 0  # counter for ray crossings
+    p_start = GI.getpoint(curve, n)
+    for (i, p_end) in enumerate(GI.getpoint(curve))
+        i > n && break
+        v1 = GI.y(p_start) - y
+        v2 = GI.y(p_end) - y
+        if !((v1 < 0 && v2 < 0) || (v1 > 0 && v2 > 0)) # if not cases 11 or 26
+            u1, u2 = GI.x(p_start) - x, GI.x(p_end) - x
+            f = Predicates.cross((u1, u2), (v1, v2); exact)
+            if v2 > 0 && v1  0                # Case 3, 9, 16, 21, 13, or 24
+                f == 0 && return on         # Case 16 or 21
+                f > 0 && (k += 1)              # Case 3 or 9
+            elseif v1 > 0 && v2  0            # Case 4, 10, 19, 20, 12, or 25
+                f == 0 && return on         # Case 19 or 20
+                f < 0 && (k += 1)              # Case 4 or 10
+            elseif v2 == 0 && v1 < 0           # Case 7, 14, or 17
+                f == 0 && return on         # Case 17
+            elseif v1 == 0 && v2 < 0           # Case 8, 15, or 18
+                f == 0 && return on         # Case 18
+            elseif v1 == 0 && v2 == 0          # Case 1, 2, 5, 6, 22, or 23
+                u2  0 && u1  0 && return on  # Case 1
+                u1  0 && u2  0 && return on  # Case 2
+            end
+        end
+        p_start = p_end
+    end
+    return iseven(k) ? out : in
+end

Determines the types of interactions of a line with a filled-in curve. By filled-in curve, I am referring to the exterior ring of a poylgon, for example.

Returns a tuple of booleans: (in_curve, on_curve, out_curve).

If in_curve is true, some of the lines interior points interact with the curve's interior points. If on_curve is true, endpoints of either the line intersect with the curve or the line interacts with the polygon boundary. If out_curve is true, at least one segments of the line is outside the curve.

If closed_line is true, line is treated as a closed line where the first and last point are connected by a segment.

julia
function _line_filled_curve_interactions(
+    line, curve;
+    exact, closed_line = false,
+)
+    in_curve = false
+    on_curve = false
+    out_curve = false

Determine number of points in curve and line

julia
    nl = GI.npoint(line)
+    nc = GI.npoint(curve)
+    first_last_equal_line = equals(GI.getpoint(line, 1), GI.getpoint(line, nl))
+    first_last_equal_curve = equals(GI.getpoint(curve, 1), GI.getpoint(curve, nc))
+    nl -= first_last_equal_line ? 1 : 0
+    nc -= first_last_equal_curve ? 1 : 0
+    closed_line |= first_last_equal_line

See if first point is in an acceptable orientation

julia
    l_start = _tuple_point(GI.getpoint(line, closed_line ? nl : 1))
+    point_val = _point_filled_curve_orientation(l_start, curve; exact)
+    if point_val == point_in
+        in_curve = true
+    elseif point_val == point_on
+        on_curve = true
+    else  # point_val == point_out
+        out_curve = true
+    end

Check for any intersections between line and curve

julia
    for i in (closed_line ? 1 : 2):nl
+        l_end = _tuple_point(GI.getpoint(line, i))
+        c_start = _tuple_point(GI.getpoint(curve, nc))

If already interacted with all regions of curve, can stop

julia
        in_curve && on_curve && out_curve && break

Check next segment of line against curve

julia
        for j in 1:nc
+            c_end = _tuple_point(GI.getpoint(curve, j))

Check if two line and curve segments meet

julia
            seg_val, _, _ = _intersection_point(Float64, (l_start, l_end), (c_start, c_end); exact)
+            if seg_val != line_out

If line and curve meet, then at least one point is on boundary

julia
                on_curve = true
+                if seg_val == line_cross

When crossing boundary, line is both in and out of curve

julia
                    in_curve = true
+                    out_curve = true
+                else
+                    if seg_val == line_over
+                        sp = _point_segment_orientation(l_start, c_start, c_end)
+                        lp = _point_segment_orientation(l_end, c_start, c_end)
+                        if sp != point_in || lp != point_in
+                            #=
+                            Line crosses over segment endpoint, creating a hinge
+                            with another segment.
+                            =#
+                            seg_val = line_hinge
+                        end
+                    end
+                    if seg_val == line_hinge
+                        #=
+                        Can't determine all types of interactions (in, out) with
+                        hinge as it could pass through multiple other segments
+                        so calculate if segment endpoints and intersections are
+                        in/out of filled curve
+                        =#
+                        ipoints = intersection_points(GI.Line(StaticArrays.SVector(l_start, l_end)), curve)
+                        npoints = length(ipoints)  # since hinge, at least one
+                        dist_from_lstart = let l_start = l_start
+                            x -> _euclid_distance(Float64, x, l_start)
+                        end
+                        sort!(ipoints, by = dist_from_lstart)
+                        p_start = _tuple_point(l_start)
+                        for i in 1:(npoints + 1)
+                            p_end = i  npoints ? _tuple_point(ipoints[i]) : l_end
+                            mid_val = _point_filled_curve_orientation((p_start .+ p_end) ./ 2, curve; exact)
+                            if mid_val == point_in
+                                in_curve = true
+                            elseif mid_val == point_out
+                                out_curve = true
+                            end
+                        end

already checked segment against whole filled curve

julia
                        l_start = l_end
+                        break
+                    end
+                end
+            end
+            c_start = c_end
+        end
+        l_start = l_end
+    end
+    return in_curve, on_curve, out_curve
+end

Determines the types of interactions of a line with a polygon.

Returns a tuple of booleans: (in_poly, on_poly, out_poly).

If in_poly is true, some of the lines interior points interact with the polygon interior points. If in_poly is true, endpoints of either the line intersect with the polygon or the line interacts with the polygon boundary, including hole boundaries. If out_curve is true, at least one segments of the line is outside the polygon, including inside of holes.

If closed_line is true, line is treated as a closed line where the first and last point are connected by a segment.

julia
function _line_polygon_interactions(
+    line, polygon;
+    exact, closed_line = false,
+)
+
+    in_poly, on_poly, out_poly = _line_filled_curve_interactions(
+        line, GI.getexterior(polygon);
+        exact, closed_line = closed_line,
+    )
+    !in_poly && return (in_poly, on_poly, out_poly)

Loop over polygon holes

julia
    for hole in GI.gethole(polygon)
+        in_hole, on_hole, out_hole =_line_filled_curve_interactions(
+            line, hole;
+            exact, closed_line = closed_line,
+        )
+        if in_hole
+            out_poly = true
+        end
+        if on_hole
+            on_poly = true
+        end
+        if !out_hole  # entire line is in/on hole, can't be in/on other holes
+            in_poly = false
+            return (in_poly, on_poly, out_poly)
+        end
+    end
+    return in_poly, on_poly, out_poly
+end

Disjoint extent optimisation: skip work based on geom extent intersection returns Tuple{Bool, Bool} for (skip, returnval)

julia
@inline function _maybe_skip_disjoint_extents(a, b;
+    in_allow, on_allow, out_allow,
+    in_require, on_require, out_require,
+    kw...
+)
+    ext_disjoint = Extents.disjoint(GI.extent(a), GI.extent(b))
+    skip, returnval = if !ext_disjoint

can't tell anything about this case

julia
        false, false
+    elseif out_allow # && ext_disjoint
+        if in_require || on_require
+            true, false
+        else
+            true, true
+        end
+    else  # !out_allow && ext_disjoint

points not allowed in exterior, but geoms are disjoint

julia
        true, false
+    end
+    return skip, returnval
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/geom_relations/intersects.html b/previews/PR195/source/methods/geom_relations/intersects.html new file mode 100644 index 000000000..a8696256e --- /dev/null +++ b/previews/PR195/source/methods/geom_relations/intersects.html @@ -0,0 +1,51 @@ + + + + + + Intersection checks | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Intersection checks

julia
export intersects

What is intersects?

The intersects function checks if a given geometry intersects with another geometry, or in other words, the either the interiors or boundaries of the two geometries intersect.

To provide an example, consider these two lines:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+line1 = GI.Line([(124.584961,-12.768946), (126.738281,-17.224758)])
+line2 = GI.Line([(123.354492,-15.961329), (127.22168,-14.008696)])
+f, a, p = lines(GI.getpoint(line1))
+lines!(GI.getpoint(line2))
+f

We can see that they intersect, so we expect intersects to return true, and we can visualize the intersection point in red.

julia
GO.intersects(line1, line2)  # true
true

Implementation

This is the GeoInterface-compatible implementation.

Given that intersects is the exact opposite of disjoint, we simply pass the two inputs variables, swapped in order, to disjoint.

julia
"""
+    intersects(geom1, geom2)::Bool
+
+Return true if the interiors or boundaries of the two geometries interact.
+
+`intersects` returns the exact opposite result of `disjoint`.
+
+# Example
+
+```jldoctest
+import GeoInterface as GI, GeometryOps as GO
+
+line1 = GI.Line([(124.584961,-12.768946), (126.738281,-17.224758)])
+line2 = GI.Line([(123.354492,-15.961329), (127.22168,-14.008696)])
+GO.intersects(line1, line2)

output

julia
true
+```
+"""
+intersects(geom1, geom2) = !disjoint(geom1, geom2)

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/geom_relations/overlaps.html b/previews/PR195/source/methods/geom_relations/overlaps.html new file mode 100644 index 000000000..5dc4e4d28 --- /dev/null +++ b/previews/PR195/source/methods/geom_relations/overlaps.html @@ -0,0 +1,236 @@ + + + + + + Overlaps | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Overlaps

julia
export overlaps

What is overlaps?

The overlaps function checks if two geometries overlap. Two geometries can only overlap if they have the same dimension, and if they overlap, but one is not contained, within, or equal to the other.

Note that this means it is impossible for a single point to overlap with a single point and a line only overlaps with another line if only a section of each line is collinear.

To provide an example, consider these two lines:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+l1 = GI.LineString([(0.0, 0.0), (0.0, 10.0)])
+l2 = GI.LineString([(0.0, -10.0), (0.0, 3.0)])
+f, a, p = lines(GI.getpoint(l1), color = :blue)
+scatter!(GI.getpoint(l1), color = :blue)
+lines!(GI.getpoint(l2), color = :orange)
+scatter!(GI.getpoint(l2), color = :orange)
+f

We can see that the two lines overlap in the plot:

julia
GO.overlaps(l1, l2)  # true
true

Implementation

This is the GeoInterface-compatible implementation.

First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait. This is also used in the implementation, since it's a lot less work!

Note that that since only elements of the same dimension can overlap, any two geometries with traits that are of different dimensions automatically can return false.

For geometries with the same trait dimension, we must make sure that they share a point, an edge, or area for points, lines, and polygons/multipolygons respectively, without being contained.

julia
"""
+    overlaps(geom1, geom2)::Bool
+
+Compare two Geometries of the same dimension and return true if their
+intersection set results in a geometry different from both but of the same
+dimension. This means one geometry cannot be within or contain the other and
+they cannot be equal
+
+# Examples
+```jldoctest
+import GeometryOps as GO, GeoInterface as GI
+poly1 = GI.Polygon([[(0,0), (0,5), (5,5), (5,0), (0,0)]])
+poly2 = GI.Polygon([[(1,1), (1,6), (6,6), (6,1), (1,1)]])
+
+GO.overlaps(poly1, poly2)

output

julia
true
+```
+"""
+overlaps(geom1, geom2)::Bool = overlaps(
+    GI.trait(geom1),
+    geom1,
+    GI.trait(geom2),
+    geom2,
+)
+
+"""
+    overlaps(::GI.AbstractTrait, geom1, ::GI.AbstractTrait, geom2)::Bool
+
+For any non-specified pair, all have non-matching dimensions, return false.
+"""
+overlaps(::GI.AbstractTrait, geom1, ::GI.AbstractTrait, geom2) = false
+
+"""
+    overlaps(
+        ::GI.MultiPointTrait, points1,
+        ::GI.MultiPointTrait, points2,
+    )::Bool
+
+If the multipoints overlap, meaning some, but not all, of the points within the
+multipoints are shared, return true.
+"""
+function overlaps(
+    ::GI.MultiPointTrait, points1,
+    ::GI.MultiPointTrait, points2,
+)
+    one_diff = false  # assume that all the points are the same
+    one_same = false  # assume that all points are different
+    for p1 in GI.getpoint(points1)
+        match_point = false
+        for p2 in GI.getpoint(points2)
+            if equals(p1, p2)  # Point is shared
+                one_same = true
+                match_point = true
+                break
+            end
+        end
+        one_diff |= !match_point  # Point isn't shared
+        one_same && one_diff && return true
+    end
+    return false
+end
+
+"""
+    overlaps(::GI.LineTrait, line1, ::GI.LineTrait, line)::Bool
+
+If the lines overlap, meaning that they are collinear but each have one endpoint
+outside of the other line, return true. Else false.
+"""
+overlaps(::GI.LineTrait, line1, ::GI.LineTrait, line) =
+    _overlaps((a1, a2), (b1, b2))
+
+"""
+    overlaps(
+        ::Union{GI.LineStringTrait, GI.LinearRing}, line1,
+        ::Union{GI.LineStringTrait, GI.LinearRing}, line2,
+    )::Bool
+
+If the curves overlap, meaning that at least one edge of each curve overlaps,
+return true. Else false.
+"""
+function overlaps(
+    ::Union{GI.LineStringTrait, GI.LinearRing}, line1,
+    ::Union{GI.LineStringTrait, GI.LinearRing}, line2,
+)
+    edges_a, edges_b = map(sort! ∘ to_edges, (line1, line2))
+    for edge_a in edges_a
+        for edge_b in edges_b
+            _overlaps(edge_a, edge_b) && return true
+        end
+    end
+    return false
+end
+
+"""
+    overlaps(
+        trait_a::GI.PolygonTrait, poly_a,
+        trait_b::GI.PolygonTrait, poly_b,
+    )::Bool
+
+If the two polygons intersect with one another, but are not equal, return true.
+Else false.
+"""
+function overlaps(
+    trait_a::GI.PolygonTrait, poly_a,
+    trait_b::GI.PolygonTrait, poly_b,
+)
+    edges_a, edges_b = map(sort! ∘ to_edges, (poly_a, poly_b))
+    return _line_intersects(edges_a, edges_b) &&
+        !equals(trait_a, poly_a, trait_b, poly_b)
+end
+
+"""
+    overlaps(
+        ::GI.PolygonTrait, poly1,
+        ::GI.MultiPolygonTrait, polys2,
+    )::Bool
+
+Return true if polygon overlaps with at least one of the polygons within the
+multipolygon. Else false.
+"""
+function overlaps(
+    ::GI.PolygonTrait, poly1,
+    ::GI.MultiPolygonTrait, polys2,
+)
+    for poly2 in GI.getgeom(polys2)
+        overlaps(poly1, poly2) && return true
+    end
+    return false
+end
+
+"""
+    overlaps(
+        ::GI.MultiPolygonTrait, polys1,
+        ::GI.PolygonTrait, poly2,
+    )::Bool
+
+Return true if polygon overlaps with at least one of the polygons within the
+multipolygon. Else false.
+"""
+overlaps(trait1::GI.MultiPolygonTrait, polys1, trait2::GI.PolygonTrait, poly2) =
+    overlaps(trait2, poly2, trait1, polys1)
+
+"""
+    overlaps(
+        ::GI.MultiPolygonTrait, polys1,
+        ::GI.MultiPolygonTrait, polys2,
+    )::Bool
+
+Return true if at least one pair of polygons from multipolygons overlap. Else
+false.
+"""
+function overlaps(
+    ::GI.MultiPolygonTrait, polys1,
+    ::GI.MultiPolygonTrait, polys2,
+)
+    for poly1 in GI.getgeom(polys1)
+        overlaps(poly1, polys2) && return true
+    end
+    return false
+end
+
+#= If the edges overlap, meaning that they are collinear but each have one endpoint
+outside of the other edge, return true. Else false. =#
+function _overlaps(
+    (a1, a2)::Edge,
+    (b1, b2)::Edge,
+    exact = _False(),
+)

meets in more than one point

julia
    seg_val, _, _ = _intersection_point(Float64, (a1, a2), (b1, b2); exact)

one end point is outside of other segment

julia
    a_fully_within = _point_on_seg(a1, b1, b2) && _point_on_seg(a2, b1, b2)
+    b_fully_within = _point_on_seg(b1, a1, a2) && _point_on_seg(b2, a1, a2)
+    return seg_val == line_over && (!a_fully_within && !b_fully_within)
+end
+
+#= TODO: Once overlaps is swapped over to use the geom relations workflow, can
+delete these helpers. =#

Checks if point is on a segment

julia
function _point_on_seg(point, start, stop)

Parse out points

julia
    x, y = GI.x(point), GI.y(point)
+    x1, y1 = GI.x(start), GI.y(start)
+    x2, y2 = GI.x(stop), GI.y(stop)
+    Δxl = x2 - x1
+    Δyl = y2 - y1

Determine if point is on segment

julia
    cross = (x - x1) * Δyl - (y - y1) * Δxl
+    if cross == 0  # point is on line extending to infinity

is line between endpoints

julia
        if abs(Δxl) >= abs(Δyl)  # is line between endpoints
+            return Δxl > 0 ? x1 <= x <= x2 : x2 <= x <= x1
+        else
+            return Δyl > 0 ? y1 <= y <= y2 : y2 <= y <= y1
+        end
+    end
+    return false
+end
+
+#= Returns true if there is at least one intersection between edges within the
+two lists of edges. =#
+function _line_intersects(
+    edges_a::Vector{<:Edge},
+    edges_b::Vector{<:Edge};
+)

Extents.intersects(to_extent(edges_a), to_extent(edges_b)) || return false

julia
    for edge_a in edges_a
+        for edge_b in edges_b
+            _line_intersects(edge_a, edge_b) && return true
+        end
+    end
+    return false
+end

Returns true if there is at least one intersection between two edges.

julia
function _line_intersects(edge_a::Edge, edge_b::Edge)
+    seg_val, _, _ = _intersection_point(Float64, edge_a, edge_b; exact = _False())
+    return seg_val != line_out
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/geom_relations/touches.html b/previews/PR195/source/methods/geom_relations/touches.html new file mode 100644 index 000000000..0ba0beaef --- /dev/null +++ b/previews/PR195/source/methods/geom_relations/touches.html @@ -0,0 +1,198 @@ + + + + + + Touches | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Touches

julia
export touches

What is touches?

The touches function checks if one geometry touches another geometry. In other words, the interiors of the two geometries don't interact, but one of the geometries must have a boundary point that interacts with either the other geometry's interior or boundary.

To provide an example, consider these two lines:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+l1 = GI.Line([(0.0, 0.0), (1.0, 0.0)])
+l2 = GI.Line([(1.0, 0.0), (1.0, -1.0)])
+
+f, a, p = lines(GI.getpoint(l1))
+lines!(GI.getpoint(l2))
+f

We can see that these two lines touch only at their endpoints.

julia
GO.touches(l1, l2)  # true
true

Implementation

This is the GeoInterface-compatible implementation.

First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait.

Each of these calls a method in the geom_geom_processors file. The methods in this file determine if the given geometries meet a set of criteria. For the touches function and arguments g1 and g2, this criteria is as follows: - points of g1 are not allowed to be in the interior of g2 - points of g1 are allowed to be on the boundary of g2 - points of g1 are allowed to be in the exterior of g2 - no points of g1 are required to be in the interior of g2 - at least one point of g1 is required to be on the boundary of g2 - no points of g1 are required to be in the exterior of g2

The code for the specific implementations is in the geom_geom_processors file.

julia
const TOUCHES_POINT_ALLOWED = (in_allow = false, on_allow = true, out_allow = false)
+const TOUCHES_CURVE_ALLOWED = (over_allow = false, cross_allow = false, on_allow = true, out_allow = true)
+const TOUCHES_POLYGON_ALLOWS = (in_allow = false, on_allow = true, out_allow = true)
+const TOUCHES_REQUIRES = (in_require = false, on_require = true, out_require = false)
+const TOUCHES_EXACT = (exact = _False(),)
+
+"""
+    touches(geom1, geom2)::Bool
+
+Return `true` if the first geometry touches the second geometry. In other words,
+the two interiors cannot interact, but one of the geometries must have a
+boundary point that interacts with either the other geometry's interior or
+boundary.
+
+# Examples
+```jldoctest setup=:(using GeometryOps, GeometryBasics)
+import GeometryOps as GO, GeoInterface as GI
+
+l1 = GI.Line([(0.0, 0.0), (1.0, 0.0)])
+l2 = GI.Line([(1.0, 1.0), (1.0, -1.0)])
+
+GO.touches(l1, l2)

output

julia
true
+```
+"""
+touches(g1, g2)::Bool = _touches(trait(g1), g1, trait(g2), g2)

Convert features to geometries

julia
_touches(::GI.FeatureTrait, g1, ::Any, g2) = touches(GI.geometry(g1), g2)
+_touches(::Any, g1, t2::GI.FeatureTrait, g2) = touches(g1, GI.geometry(g2))
+_touches(::FeatureTrait, g1, ::FeatureTrait, g2) = touches(GI.geometry(g1), GI.geometry(g2))

Point touches geometries

Point cannot touch another point as if they are equal, interiors interact

julia
_touches(
+    ::GI.PointTrait, g1,
+    ::GI.PointTrait, g2,
+) = false

Point touches a linestring if it equal to the first of last point of the line

julia
function _touches(
+    ::GI.PointTrait, g1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+)
+    n = GI.npoint(g2)
+    p1 = GI.getpoint(g2, 1)
+    pn = GI.getpoint(g2, n)
+    equals(p1, pn) && return false
+    return equals(g1, p1) || equals(g1, pn)
+end

Point cannot 'touch' a linearring given that the ring has no boundary points

julia
_touches(
+    ::GI.PointTrait, g1,
+    ::GI.LinearRingTrait, g2,
+) = false

Point touches a polygon if it is on the boundary of that polygon

julia
_touches(
+    ::GI.PointTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _point_polygon_process(
+    g1, g2;
+    TOUCHES_POINT_ALLOWED...,
+    TOUCHES_EXACT...,
+)
+
+#= Geometry touches a point if the point is on the geometry boundary. =#
+_touches(
+    trait1::Union{GI.AbstractCurveTrait, GI.PolygonTrait}, g1,
+    trait2::GI.PointTrait, g2,
+) = _touches(trait2, g2, trait1, g1)

Lines touching geometries

julia
#= Linestring touches another line if at least one boundary point interacts with
+the boundary of interior of the other line, but the interiors don't interact. =#
+_touches(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _line_curve_process(
+    g1, g2;
+    TOUCHES_CURVE_ALLOWED...,
+    TOUCHES_REQUIRES...,
+    TOUCHES_EXACT...,
+    closed_line = false,
+    closed_curve = false,
+)
+
+
+#= Linestring touches a linearring if at least one of the boundary points of the
+line interacts with the linear ring, but their interiors can't interact. =#
+_touches(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::GI.LinearRingTrait, g2,
+) = _line_curve_process(
+    g1, g2;
+    TOUCHES_CURVE_ALLOWED...,
+    TOUCHES_REQUIRES...,
+    TOUCHES_EXACT...,
+    closed_line = false,
+    closed_curve = true,
+)
+
+#= Linestring touches a polygon if at least one of the boundary points of the
+line interacts with the boundary of the polygon. =#
+_touches(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::GI.PolygonTrait, g2,
+) = _line_polygon_process(
+    g1, g2;
+    TOUCHES_POLYGON_ALLOWS...,
+    TOUCHES_REQUIRES...,
+    TOUCHES_EXACT...,
+    closed_line = false,
+)

Rings touch geometries

julia
#= Linearring touches a linestring if at least one of the boundary points of the
+line interacts with the linear ring, but their interiors can't interact. =#
+_touches(
+    trait1::GI.LinearRingTrait, g1,
+    trait2::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _touches(trait2, g2, trait1, g1)
+
+#= Linearring cannot touch another linear ring since they are both exclusively
+made up of interior points and no boundary points =#
+_touches(
+    ::GI.LinearRingTrait, g1,
+    ::GI.LinearRingTrait, g2,
+) = false
+
+#= Linearring touches a polygon if at least one of the points of the ring
+interact with the polygon boundary and non are in the polygon interior. =#
+_touches(
+    ::GI.LinearRingTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _line_polygon_process(
+    g1, g2;
+    TOUCHES_POLYGON_ALLOWS...,
+    TOUCHES_REQUIRES...,
+    TOUCHES_EXACT...,
+    closed_line = true,
+)

Polygons touch geometries

julia
#= Polygon touches a curve if at least one of the curve boundary points interacts
+with the polygon's boundary and no curve points interact with the interior.=#
+_touches(
+    trait1::GI.PolygonTrait, g1,
+    trait2::GI.AbstractCurveTrait, g2
+) = _touches(trait2, g2, trait1, g1)
+
+
+#= Polygon touches another polygon if they share at least one boundary point and
+no interior points. =#
+_touches(
+    ::GI.PolygonTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _polygon_polygon_process(
+    g1, g2;
+    TOUCHES_POLYGON_ALLOWS...,
+    TOUCHES_REQUIRES...,
+    TOUCHES_EXACT...,
+)

Geometries touch multi-geometry/geometry collections

julia
#= Geometry touch a multi-geometry or a collection if the geometry touches at
+least one of the elements of the collection. =#
+function _touches(
+    ::Union{GI.PointTrait, GI.AbstractCurveTrait, GI.PolygonTrait}, g1,
+    ::Union{
+        GI.MultiPointTrait, GI.AbstractMultiCurveTrait,
+        GI.MultiPolygonTrait, GI.GeometryCollectionTrait,
+    }, g2,
+)
+    for sub_g2 in GI.getgeom(g2)
+        !touches(g1, sub_g2) && return false
+    end
+    return true
+end

Multi-geometry/geometry collections cross geometries

julia
#= Multi-geometry or a geometry collection touches a geometry if at least one
+elements of the collection touches the geometry. =#
+function _touches(
+    ::Union{
+        GI.MultiPointTrait, GI.AbstractMultiCurveTrait,
+        GI.MultiPolygonTrait, GI.GeometryCollectionTrait,
+    }, g1,
+    ::GI.AbstractGeometryTrait, g2,
+)
+    for sub_g1 in GI.getgeom(g1)
+        !touches(sub_g1, g2) && return false
+    end
+    return true
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/geom_relations/within.html b/previews/PR195/source/methods/geom_relations/within.html new file mode 100644 index 000000000..74af856f8 --- /dev/null +++ b/previews/PR195/source/methods/geom_relations/within.html @@ -0,0 +1,217 @@ + + + + + + Within | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Within

julia
export within

What is within?

The within function checks if one geometry is inside another geometry. This requires that the two interiors intersect and that the interior and boundary of the first geometry is not in the exterior of the second geometry.

To provide an example, consider these two lines:

julia
import GeometryOps as GO
+import GeoInterface as GI
+using Makie
+using CairoMakie
+
+l1 = GI.LineString([(0.0, 0.0), (1.0, 0.0), (0.0, 0.1)])
+l2 = GI.LineString([(0.25, 0.0), (0.75, 0.0)])
+f, a, p = lines(GI.getpoint(l1), color = :blue)
+scatter!(GI.getpoint(l1), color = :blue)
+lines!(GI.getpoint(l2), color = :orange)
+scatter!(GI.getpoint(l2), color = :orange)
+f

We can see that all of the points and edges of l2 are within l1, so l2 is within l1, but l1 is not within l2

julia
GO.within(l1, l2)  # false
+GO.within(l2, l1)  # true
true

Implementation

This is the GeoInterface-compatible implementation.

First, we implement a wrapper method that dispatches to the correct implementation based on the geometry trait.

Each of these calls a method in the geom_geom_processors file. The methods in this file determine if the given geometries meet a set of criteria. For the within function and arguments g1 and g2, this criteria is as follows: - points of g1 are allowed to be in the interior of g2 (either through overlap or crossing for lines) - points of g1 are allowed to be on the boundary of g2 - points of g1 are not allowed to be in the exterior of g2 - at least one point of g1 is required to be in the interior of g2 - no points of g1 are required to be on the boundary of g2 - no points of g1 are required to be in the exterior of g2

The code for the specific implementations is in the geom_geom_processors file.

julia
const WITHIN_POINT_ALLOWS = (in_allow = true, on_allow = false, out_allow = false)
+const WITHIN_CURVE_ALLOWS = (over_allow = true, cross_allow = true, on_allow = true, out_allow = false)
+const WITHIN_POLYGON_ALLOWS = (in_allow = true, on_allow = true, out_allow = false)
+const WITHIN_REQUIRES = (in_require = true, on_require = false, out_require = false)
+const WITHIN_EXACT = (exact = _False(),)
+
+"""
+    within(geom1, geom2)::Bool
+
+Return `true` if the first geometry is completely within the second geometry.
+The interiors of both geometries must intersect and the interior and boundary of
+the primary geometry (geom1) must not intersect the exterior of the secondary
+geometry (geom2).
+
+Furthermore, `within` returns the exact opposite result of `contains`.
+
+# Examples
+```jldoctest setup=:(using GeometryOps, GeometryBasics)
+import GeometryOps as GO, GeoInterface as GI
+
+line = GI.LineString([(1, 1), (1, 2), (1, 3), (1, 4)])
+point = (1, 2)
+GO.within(point, line)

output

julia
true
+```
+"""
+within(g1, g2) = _within(trait(g1), g1, trait(g2), g2)

Convert features to geometries

julia
_within(::GI.FeatureTrait, g1, ::Any, g2) = within(GI.geometry(g1), g2)
+_within(::Any, g1, t2::GI.FeatureTrait, g2) = within(g1, GI.geometry(g2))
+_within(::FeatureTrait, g1, ::FeatureTrait, g2) = within(GI.geometry(g1), GI.geometry(g2))

Points within geometries

Point is within another point if those points are equal.

julia
_within(
+    ::GI.PointTrait, g1,
+    ::GI.PointTrait, g2,
+) = equals(g1, g2)
+
+#= Point is within a linestring if it is on a vertex or an edge of that line,
+excluding the start and end vertex if the line is not closed. =#
+_within(
+    ::GI.PointTrait, g1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _point_curve_process(
+    g1, g2;
+    WITHIN_POINT_ALLOWS...,
+    closed_curve = false,
+)

Point is within a linearring if it is on a vertex or an edge of that ring.

julia
_within(
+    ::GI.PointTrait, g1,
+    ::GI.LinearRingTrait, g2,
+) = _point_curve_process(
+    g1, g2;
+    WITHIN_POINT_ALLOWS...,
+    closed_curve = true,
+)
+
+#= Point is within a polygon if it is inside of that polygon, excluding edges,
+vertices, and holes. =#
+_within(
+    ::GI.PointTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _point_polygon_process(
+    g1, g2;
+    WITHIN_POINT_ALLOWS...,
+    WITHIN_EXACT...,
+)

No geometries other than points can be within points

julia
_within(
+    ::Union{GI.AbstractCurveTrait, GI.PolygonTrait}, g1,
+    ::GI.PointTrait, g2,
+) = false

Lines within geometries

julia
#= Linestring is within another linestring if their interiors intersect and no
+points of the first line are in the exterior of the second line. =#
+_within(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _line_curve_process(
+    g1, g2;
+    WITHIN_CURVE_ALLOWS...,
+    WITHIN_REQUIRES...,
+    WITHIN_EXACT...,
+    closed_line = false,
+    closed_curve = false,
+)
+
+#= Linestring is within a linear ring if their interiors intersect and no points
+of the line are in the exterior of the ring. =#
+_within(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::GI.LinearRingTrait, g2,
+) = _line_curve_process(
+    g1, g2;
+    WITHIN_CURVE_ALLOWS...,
+    WITHIN_REQUIRES...,
+    WITHIN_EXACT...,
+    closed_line = false,
+    closed_curve = true,
+)
+
+#= Linestring is within a polygon if their interiors intersect and no points of
+the line are in the exterior of the polygon, although they can be on an edge. =#
+_within(
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g1,
+    ::GI.PolygonTrait, g2,
+) = _line_polygon_process(
+    g1, g2;
+    WITHIN_POLYGON_ALLOWS...,
+    WITHIN_REQUIRES...,
+    WITHIN_EXACT...,
+    closed_line = false,
+)

Rings covered by geometries

julia
#= Linearring is within a linestring if their interiors intersect and no points
+of the ring are in the exterior of the line. =#
+_within(
+    ::GI.LinearRingTrait, g1,
+    ::Union{GI.LineTrait, GI.LineStringTrait}, g2,
+) = _line_curve_process(
+    g1, g2;
+    WITHIN_CURVE_ALLOWS...,
+    WITHIN_REQUIRES...,
+    WITHIN_EXACT...,
+    closed_line = true,
+    closed_curve = false,
+)
+
+#= Linearring is within another linearring if their interiors intersect and no
+points of the first ring are in the exterior of the second ring. =#
+_within(
+    ::GI.LinearRingTrait, g1,
+    ::GI.LinearRingTrait, g2,
+) = _line_curve_process(
+    g1, g2;
+    WITHIN_CURVE_ALLOWS...,
+    WITHIN_REQUIRES...,
+    WITHIN_EXACT...,
+    closed_line = true,
+    closed_curve = true,
+)
+
+#= Linearring is within a polygon if their interiors intersect and no points of
+the ring are in the exterior of the polygon, although they can be on an edge. =#
+_within(
+    ::GI.LinearRingTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _line_polygon_process(
+    g1, g2;
+    WITHIN_POLYGON_ALLOWS...,
+    WITHIN_REQUIRES...,
+    WITHIN_EXACT...,
+    closed_line = true,
+)

Polygons within geometries

julia
#= Polygon is within another polygon if the interior of the first polygon
+intersects with the interior of the second and no points of the first polygon
+are outside of the second polygon. =#
+_within(
+    ::GI.PolygonTrait, g1,
+    ::GI.PolygonTrait, g2,
+) = _polygon_polygon_process(
+    g1, g2;
+    WITHIN_POLYGON_ALLOWS...,
+    WITHIN_REQUIRES...,
+    WITHIN_EXACT...,
+)

Polygons cannot be within any curves

julia
_within(
+    ::GI.PolygonTrait, g1,
+    ::GI.AbstractCurveTrait, g2,
+) = false

Geometries within multi-geometry/geometry collections

julia
#= Geometry is within a multi-geometry or a collection if the geometry is within
+at least one of the collection elements. =#
+function _within(
+    ::Union{GI.PointTrait, GI.AbstractCurveTrait, GI.PolygonTrait}, g1,
+    ::Union{
+        GI.MultiPointTrait, GI.AbstractMultiCurveTrait,
+        GI.MultiPolygonTrait, GI.GeometryCollectionTrait,
+    }, g2,
+)
+    for sub_g2 in GI.getgeom(g2)
+        within(g1, sub_g2) && return true
+    end
+    return false
+end

Multi-geometry/geometry collections within geometries

julia
#= Multi-geometry or a geometry collection is within a geometry if all
+elements of the collection are within the geometry. =#
+function _within(
+    ::Union{
+        GI.MultiPointTrait, GI.AbstractMultiCurveTrait,
+        GI.MultiPolygonTrait, GI.GeometryCollectionTrait,
+    }, g1,
+    ::GI.AbstractGeometryTrait, g2,
+)
+    for sub_g1 in GI.getgeom(g1)
+        !within(sub_g1, g2) && return false
+    end
+    return true
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/orientation.html b/previews/PR195/source/methods/orientation.html new file mode 100644 index 000000000..5d9b747d0 --- /dev/null +++ b/previews/PR195/source/methods/orientation.html @@ -0,0 +1,124 @@ + + + + + + Orientation | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Orientation

julia
export isclockwise, isconcave

isclockwise

The orientation of a geometry is whether it runs clockwise or counter-clockwise.

This is defined for linestrings, linear rings, or vectors of points.

isconcave

A polygon is concave if it has at least one interior angle greater than 180 degrees, meaning that the interior of the polygon is not a convex set.

These are all adapted from Turf.jl.

The may not necessarily be what want in the end but work for now!

julia
"""
+    isclockwise(line::Union{LineString, Vector{Position}})::Bool
+
+Take a ring and return `true` if the line goes clockwise, or `false` if the line goes
+counter-clockwise.  "Going clockwise" means, mathematically,
+
+```math
+\\left(\\sum_{i=2}^n (x_i - x_{i-1}) \\cdot (y_i + y_{i-1})\\right) > 0
+```
+
+# Example
+
+```julia
+julia> import GeoInterface as GI, GeometryOps as GO
+julia> ring = GI.LinearRing([(0, 0), (1, 1), (1, 0), (0, 0)]);
+julia> GO.isclockwise(ring)

output

julia
true
+```
+"""
+isclockwise(geom)::Bool = isclockwise(GI.trait(geom), geom)
+
+function isclockwise(::AbstractCurveTrait, line)::Bool
+    sum = 0.0
+    prev = GI.getpoint(line, 1)
+    for p in GI.getpoint(line)

sum will be zero for the first point as x is subtracted from itself

julia
        sum += (GI.x(p) - GI.x(prev)) * (GI.y(p) + GI.y(prev))
+        prev = p
+    end
+
+    return sum > 0.0
+end
+
+"""
+    isconcave(poly::Polygon)::Bool
+
+Take a polygon and return true or false as to whether it is concave or not.
+
+# Examples
+```jldoctest
+import GeoInterface as GI, GeometryOps as GO
+
+poly = GI.Polygon([[(0, 0), (0, 1), (1, 1), (1, 0), (0, 0)]])
+GO.isconcave(poly)

output

julia
false
+```
+"""
+function isconcave(poly)::Bool
+    sign = false
+
+    exterior = GI.getexterior(poly)

FIXME handle not closed polygons

julia
    GI.npoint(exterior) <= 4 && return false
+    n = GI.npoint(exterior) - 1
+
+    for i in 1:n
+        j = ((i + 1) % n) === 0 ? 1 : (i + 1) % n
+        m = ((i + 2) % n) === 0 ? 1 : (i + 2) % n
+
+        pti = GI.getpoint(exterior, i)
+        ptj = GI.getpoint(exterior, j)
+        ptm = GI.getpoint(exterior, m)
+
+        dx1 = GI.x(ptm) - GI.x(ptj)
+        dy1 = GI.y(ptm) - GI.y(ptj)
+        dx2 = GI.x(pti) - GI.x(ptj)
+        dy2 = GI.y(pti) - GI.y(ptj)
+
+        cross = (dx1 * dy2) - (dy1 * dx2)
+
+        if i === 0
+            sign = cross > 0
+        elseif sign !== (cross > 0)
+            return true
+        end
+    end
+
+    return false
+end

This is commented out.

julia
"""
+    isparallel(line1::LineString, line2::LineString)::Bool
+
+Return `true` if each segment of `line1` is parallel to the correspondent segment of `line2`
+
+## Examples

julia import GeoInterface as GI, GeometryOps as GO julia> line1 = GI.LineString([(9.170356, 45.477985), (9.164434, 45.482551), (9.166644, 45.484003)]) GeoInterface.Wrappers.LineString{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}([(9.170356, 45.477985), (9.164434, 45.482551), (9.166644, 45.484003)], nothing, nothing)

julia> line2 = GI.LineString([(9.169356, 45.477985), (9.163434, 45.482551), (9.165644, 45.484003)]) GeoInterface.Wrappers.LineString{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}([(9.169356, 45.477985), (9.163434, 45.482551), (9.165644, 45.484003)], nothing, nothing)

julia> GO.isparallel(line1, line2) true

"""
+function isparallel(line1, line2)::Bool
+    seg1 = linesegment(line1)
+    seg2 = linesegment(line2)
+
+    for i in eachindex(seg1)
+        coors2 = nothing
+        coors1 = seg1[i]
+        coors2 = seg2[i]
+        _isparallel(coors1, coors2) == false && return false
+    end
+    return true
+end
+
+@inline function _isparallel(p1, p2)
+    slope1 = bearing_to_azimuth(rhumb_bearing(GI.x(p1), GI.x(p2)))
+    slope2 = bearing_to_azimuth(rhumb_bearing(GI.y(p1), GI.y(p2)))
+
+    return slope1 === slope2
+end

This is actual code:

julia
_isparallel(((ax, ay), (bx, by)), ((cx, cy), (dx, dy))) =
+    _isparallel(bx - ax, by - ay, dx - cx, dy - cy)
+
+_isparallel(Δx1, Δy1, Δx2, Δy2) = (Δx1 * Δy2 == Δy1 * Δx2)

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/methods/polygonize.html b/previews/PR195/source/methods/polygonize.html new file mode 100644 index 000000000..90c46e4e8 --- /dev/null +++ b/previews/PR195/source/methods/polygonize.html @@ -0,0 +1,313 @@ + + + + + + Polygonizing raster data | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Polygonizing raster data

julia
export polygonize
+
+#=
+The methods in this file convert a raster image into a set of polygons,
+by contour detection using a clockwise Moore neighborhood method.
+
+The resulting polygons are snapped to the boundaries of the cells of the input raster,
+so they will look different from traditional contours from a plotting package.
+
+The main entry point is the `polygonize` function.
+
+```@docs
+polygonize
+```
+
+# Example
+
+Here's a basic example, using the `Makie.peaks()` function.  First, let's investigate the nature of the function:
+```@example polygonize
+using Makie, GeometryOps
+n = 49
+xs, ys = LinRange(-3, 3, n), LinRange(-3, 3, n)
+zs = Makie.peaks(n)
+z_max_value = maximum(abs.(extrema(zs)))
+f, a, p = heatmap(
+    xs, ys, zs;
+    axis = (; aspect = DataAspect(), title = "Exact function")
+)
+cb = Colorbar(f[1, 2], p; label = "Z-value")
+f
+```
+
+Now, we can use the `polygonize` function to convert the raster data into polygons.
+
+For this particular example, we chose a range of z-values between 0.8 and 3.2,
+which would provide two distinct polygons with holes.
+
+```@example polygonize
+polygons = polygonize(xs, ys, 0.8 .< zs .< 3.2)
+```
+This returns a `GI.MultiPolygon`, which is directly plottable.  Let's see how these look:
+
+```@example polygonize
+f, a, p = poly(polygons; label = "Polygonized polygons", axis = (; aspect = DataAspect()))
+```
+
+Finally, let's plot the Makie contour lines on top, to see how the polygonization compares:
+```@example polygonize
+contour!(a, xs, ys, zs; labels = true, levels = [0.8, 3.2], label = "Contour lines")
+f
+```
+
+# Implementation
+
+The implementation follows:
+=#
+
+"""
+    polygonize(A::AbstractMatrix{Bool}; kw...)
+    polygonize(f, A::AbstractMatrix; kw...)
+    polygonize(xs, ys, A::AbstractMatrix{Bool}; kw...)
+    polygonize(f, xs, ys, A::AbstractMatrix; kw...)
+
+Polygonize an `AbstractMatrix` of values, currently to a single class of polygons.
+
+Returns a `MultiPolygon` for `Bool` values and `f` return values, and
+a `FeatureCollection` of `Feature`s holding `MultiPolygon` for all other values.
+
+
+Function `f` should return either `true` or `false` or a transformation
+of values into simpler groups, especially useful for floating point arrays.
+
+If `xs` and `ys` are ranges, they are used as the pixel/cell center points.
+If they are `Vector` of `Tuple` they are used as the lower and upper bounds of each pixel/cell.

Keywords

julia
- `minpoints`: ignore polygons with less than `minpoints` points.
+- `values`: the values to turn into polygons. By default these are `union(A)`,
+    If function `f` is passed these refer to the return values of `f`, by
+    default `union(map(f, A)`. If values `Bool`, false is ignored and a single
+    `MultiPolygon` is returned rather than a `FeatureCollection`.

Example

julia
```julia
+using GeometryOps
+A = rand(100, 100)
+multipolygon = polygonize(>(0.5), A);
+```
+"""
+polygonize(A::AbstractMatrix{Bool}; kw...) = polygonize(identity, A; kw...)
+polygonize(f::Base.Callable, A::AbstractMatrix; kw...) = polygonize(f, axes(A)..., A; kw...)
+polygonize(A::AbstractMatrix; kw...) = polygonize(axes(A)..., A; kw...)
+polygonize(xs::AbstractVector, ys::AbstractVector, A::AbstractMatrix{Bool}; kw...) =
+    _polygonize(identity, xs, ys, A)
+function polygonize(xs::AbstractVector, ys::AbstractVector, A::AbstractMatrix;
+    values=sort!(Base.union(A)), kw...
+)
+    _polygonize_featurecollection(identity, xs, ys, A; values, kw...)
+end
+function polygonize(f::Base.Callable, xs::AbstractRange, ys::AbstractRange, A::AbstractMatrix;
+    values=_default_values(f, A), kw...
+)
+    if isnothing(values)
+        _polygonize(f, xs, ys, A; kw...)
+    else
+        _polygonize_featurecollection(f, xs, ys, A; kw...)
+    end
+end
+function _polygonize(f::Base.Callable, xs::AbstractRange, ys::AbstractRange, A::AbstractMatrix;
+    kw...
+)

Make vectors of pixel bounds

julia
    xhalf = step(xs) / 2
+    yhalf = step(ys) / 2

Make bounds ranges first to avoid floating point error making gaps or overlaps

julia
    xbounds = first(xs) - xhalf : step(xs) : last(xs) + xhalf
+    ybounds = first(ys) - yhalf : step(ys) : last(ys) + yhalf
+    Tx = eltype(xbounds)
+    Ty = eltype(ybounds)
+    xvec = similar(Vector{Tuple{Tx,Tx}}, xs)
+    yvec = similar(Vector{Tuple{Ty,Ty}}, ys)
+    for (xind, i) in enumerate(eachindex(xvec))
+        xvec[i] = xbounds[xind], xbounds[xind+1]
+    end
+    for (yind, i) in enumerate(eachindex(yvec))
+        yvec[i] = ybounds[yind], ybounds[yind+1]
+    end
+    return _polygonize(f, xvec, yvec, A; kw...)
+end
+function _polygonize(f, xs::AbstractVector{T}, ys::AbstractVector{T}, A::AbstractMatrix;
+    minpoints=0,
+) where T<:Tuple
+    (length(xs), length(ys)) == size(A) || throw(ArgumentError("length of xs and ys must match the array size"))

Extract the CRS of the array (if it is some kind of geo array / raster)

julia
    crs = GI.crs(A)

Define buffers for edges and rings

julia
    rings = Vector{T}[]
+
+    strait = true
+    turning = false

Get edges from the array A

julia
    edges = _pixel_edges(f, xs, ys, A)

Keep dict keys separately in a vector for performance

julia
    edgekeys = collect(keys(edges))

We don't delete keys we just reduce length with nkeys

julia
    nkeys = length(edgekeys)

Now create rings from the edges, looping until there are no edge keys left

julia
    while nkeys > 0
+        found = false
+        local firstnode, nextnodes, nodestatus

Loop until we find a key that hasn't been removed, decrementing nkeys as we go.

julia
        while nkeys > 0

Take the first node from the array

julia
            firstnode::T = edgekeys[nkeys]
+            nextnodes = edges[firstnode]
+            nodestatus = map(!=(typemax(first(firstnode)))  first, nextnodes)
+            if any(nodestatus)
+                found = true
+                break
+            else
+                nkeys -= 1
+            end
+        end

If we found nothing this time, we are done

julia
        found == false && break

Check if there are one or two lines going through this node and take one of them, then update the status

julia
        if nodestatus[2]
+            nextnode = nextnodes[2]
+            edges[firstnode] = (nextnodes[1], map(typemax, nextnode))
+        else
+            nkeys -= 1
+            nextnode = nextnodes[1]
+            edges[firstnode] = (map(typemax, nextnode), map(typemax, nextnode))
+        end

Start a new ring

julia
        currentnode = firstnode
+        ring = [currentnode, nextnode]
+        push!(rings, ring)

Loop until we close a the ring and break

julia
        while true

Find a node that matches the next node

julia
            (c1, c2) = possiblenodes = edges[nextnode]
+            nodestatus = map(!=(typemax(first(firstnode)))  first, possiblenodes)
+            if nodestatus[2]

When there are two possible node, choose the node that is the furthest to the left We also need to check if we are on a straight line to avoid adding unnecessary points.

julia
                selectednode, remainingnode, straightline = if currentnode[1] == nextnode[1] # vertical
+                    wasincreasing = nextnode[2] > currentnode[2]
+                    firstisstraight = nextnode[1] == c1[1]
+                    firstisleft = nextnode[1] > c1[1]
+                    secondisstraight = nextnode[1] == c2[1]
+                    secondisleft = nextnode[1] > c2[1]
+                    if firstisstraight
+                        if secondisleft
+                            if wasincreasing
+                                (c2, c1, turning)
+                            else
+                                (c1, c2, straight)
+                            end
+                        else
+                            if wasincreasing
+                                (c1, c2, straight)
+                            else
+                                (c2, c1, secondisstraight)
+                            end
+                        end
+                    elseif firstisleft
+                        if wasincreasing
+                            (c1, c2, turning)
+                        else
+                            (c2, c1, secondisstraight)
+                        end
+                    else # firstisright
+                        if wasincreasing
+                            (c2, c1, secondisstraight)
+                        else
+                            (c1, c2, turning)
+                        end
+                    end
+                else # horizontal
+                    wasincreasing = nextnode[1] > currentnode[1]
+                    firstisstraight = nextnode[2] == c1[2]
+                    firstisleft = nextnode[2] > c1[2]
+                    secondisleft = nextnode[2] > c2[2]
+                    secondisstraight = nextnode[2] == c2[2]
+                    if firstisstraight
+                        if secondisleft
+                            if wasincreasing
+                                (c1, c2, straight)
+                            else
+                                (c2, c1, turning)
+                            end
+                        else
+                            if wasincreasing
+                                (c2, c1, turning)
+                            else
+                                (c1, c2, straight)
+                            end
+                        end
+                    elseif firstisleft
+                        if wasincreasing
+                            (c2, c1, secondisstraight)
+                        else
+                            (c1, c2, turning)
+                        end
+                    else # firstisright
+                        if wasincreasing
+                            (c1, c2, turning)
+                        else
+                            (c2, c1, secondisstraight)
+                        end
+                    end
+                end

Update edges

julia
                edges[nextnode] = (remainingnode, map(typemax, remainingnode))
+            else

Here we simply choose the first (and only valid) node

julia
                selectednode = c1

Replace the edge nodes with empty nodes, they will be skipped later

julia
                edges[nextnode] = (map(typemax, c1), map(typemax, c1))

Check if we are on a straight line

julia
                straightline = currentnode[1] == nextnode[1] == c1[1] ||
+                               currentnode[2] == nextnode[2] == c1[2]
+            end

Update the current and next nodes with the next and selected nodes

julia
            currentnode, nextnode = nextnode, selectednode

Update the current node or add a new node to the ring

julia
            if straightline

replace the last node we don't need it

julia
                ring[end] = nextnode
+            else

add a new node, we have turned a corner

julia
                push!(ring, nextnode)
+            end

If the ring is closed, break the loop and start a new one

julia
            nextnode == firstnode && break
+        end
+    end

Define wrapped LinearRings, with embedded extents so we only calculate them once

julia
    linearrings = map(rings) do ring
+        extent = GI.extent(GI.LinearRing(ring))
+        GI.LinearRing(ring; extent, crs)
+    end

Separate exteriors from holes by winding direction

julia
    direction = (last(last(xs)) - first(first(xs))) * (last(last(ys)) - first(first(ys)))
+    exterior_inds = if direction > 0
+        .!isclockwise.(linearrings)
+    else
+        isclockwise.(linearrings)
+    end
+    holes = linearrings[.!exterior_inds]
+    polygons = map(view(linearrings, exterior_inds)) do lr
+        GI.Polygon([lr]; extent=GI.extent(lr), crs)
+    end

Then we add the holes to the polygons they are inside of

julia
    assigned = fill(false, length(holes))
+    for i in eachindex(holes)
+        hole = holes[i]
+        prepared_hole = GI.LinearRing(holes[i]; extent=GI.extent(holes[i]))
+        for poly in polygons
+            exterior = GI.Polygon(StaticArrays.SVector(GI.getexterior(poly)); extent=GI.extent(poly))
+            if covers(exterior, prepared_hole)

Hole is in the exterior, so add it to the polygon

julia
                push!(poly.geom, hole)
+                assigned[i] = true
+                break
+            end
+        end
+    end
+
+    assigned_holes = count(assigned)
+    assigned_holes == length(holes) || @warn "Not all holes were assigned to polygons, $(length(holes) - assigned_holes) where missed from $(length(holes)) holes and $(length(polygons)) polygons"
+
+    if isempty(polygons)

TODO: this really should return an empty MultiPolygon but GeoInterface wrappers cant do that yet, which is not ideal...

julia
        @warn "No polgons found, check your data or try another function for `f`"
+        return nothing
+    else

Otherwise return a wrapped MultiPolygon

julia
        return GI.MultiPolygon(polygons; crs, extent = mapreduce(GI.extent, Extents.union, polygons))
+    end
+end
+
+function _polygonize_featurecollection(f::Base.Callable, xs::AbstractRange, ys::AbstractRange, A::AbstractMatrix;
+    values=_default_values(f, A), kw...
+)
+    crs = GI.crs(A)

Create one feature per value

julia
    features = map(values) do value
+        multipolygon = _polygonize(x -> isequal(f(x), value), xs, ys, A; kw...)
+        GI.Feature(multipolygon; properties=(; value), extent = GI.extent(multipolygon), crs)
+    end
+
+    return GI.FeatureCollection(features; extent = mapreduce(GI.extent, Extents.union, features), crs)
+end
+
+function _default_values(f, A)

Get union of f return values with resolved eltype

julia
    values = map(identity, sort!(Base.union(Iterators.map(f, A))))

We ignore pure Bool

julia
    return eltype(values) == Bool ? nothing : collect(skipmissing(values))
+end
+
+function update_edge!(dict, key, node)
+    newnodes = (node, map(typemax, node))

Get or write in one go, to skip a hash lookup

julia
    existingnodes = get!(() -> newnodes, dict, key)

If we actually fetched an existing node, update it

julia
    if existingnodes[1] != node
+        dict[key] = (existingnodes[1], node)
+    end
+end
+
+function _pixel_edges(f, xs::AbstractVector{T}, ys::AbstractVector{T}, A) where T<:Tuple
+    edges = Dict{T,Tuple{T,T}}()

First we collect all the edges around target pixels

julia
    fi, fj = map(first, axes(A))
+    li, lj = map(last, axes(A))
+    for j in axes(A, 2)
+        y1, y2 = ys[j]
+        for i in axes(A, 1)
+            if f(A[i, j]) # This is a pixel inside a polygon

xs and ys hold pixel bounds

julia
                x1, x2 = xs[i]

We check the Von Neumann neighborhood to decide what edges are needed, if any.

julia
                (j == fi || !f(A[i, j-1])) && update_edge!(edges, (x1, y1), (x2, y1)) # S
+                (i == fj || !f(A[i-1, j])) && update_edge!(edges, (x1, y2), (x1, y1)) # W
+                (j == lj || !f(A[i, j+1])) && update_edge!(edges, (x2, y2), (x1, y2)) # N
+                (i == li || !f(A[i+1, j])) && update_edge!(edges, (x2, y1), (x2, y2)) # E
+            end
+        end
+    end
+    return edges
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/not_implemented_yet.html b/previews/PR195/source/not_implemented_yet.html new file mode 100644 index 000000000..fb2d7cea1 --- /dev/null +++ b/previews/PR195/source/not_implemented_yet.html @@ -0,0 +1,28 @@ + + + + + + Not implemented yet | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Not implemented yet

All of the functions in this file are not implemented in Julia yet. Some of them may have implementations in LibGEOS which we can use via an extension, but there is no native-Julia implementation for them.

julia
function symdifference end
+function buffer end
+function convexhull end
+function concavehull end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/primitives.html b/previews/PR195/source/primitives.html new file mode 100644 index 000000000..0e03eb9db --- /dev/null +++ b/previews/PR195/source/primitives.html @@ -0,0 +1,329 @@ + + + + + + Primitive functions | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Primitive functions

julia
export apply, applyreduce, TraitTarget

This file mainly defines the apply and applyreduce functions, and some related functionality.

In general, the idea behind the apply framework is to take as input any geometry, vector of geometries, or feature collection, deconstruct it to the given trait target (any arbitrary GI.AbstractTrait or TraitTarget union thereof, like PointTrait or PolygonTrait) and perform some operation on it.

This allows for a simple and consistent framework within which users can define their own operations trivially easily, and removes a lot of the complexity involved with handling complex geometry structures.

For example, a simple way to flip the x and y coordinates of a geometry is:

julia
flipped_geom = GO.apply(GI.PointTrait(), geom) do p
+    (GI.y(p), GI.x(p))
+end

As simple as that. There's no need to implement your own decomposition because it's done for you.

Functions like flip, reproject, transform, even segmentize and simplify have been implemented using the apply framework. Similarly, centroid, area and distance have been implemented using the applyreduce framework.

Docstrings

Functions

Missing docstring.

Missing docstring for apply. Check Documenter's build log for details.

Missing docstring.

Missing docstring for applyreduce. Check Documenter's build log for details.

Missing docstring.

Missing docstring for GeometryOps.unwrap. Check Documenter's build log for details.

# GeometryOps.flattenFunction.
julia
flatten(target::Type{<:GI.AbstractTrait}, obj)
+flatten(f, target::Type{<:GI.AbstractTrait}, obj)

Lazily flatten any AbstractArray, iterator, FeatureCollectionTrait, FeatureTrait or AbstractGeometryTrait object obj, so that objects with the target trait are returned by the iterator.

If f is passed in it will be applied to the target geometries.

source


# GeometryOps.reconstructFunction.
julia
reconstruct(geom, components)

Reconstruct geom from an iterable of component objects that match its structure.

All objects in components must have the same GeoInterface.trait.

Usually used in combination with flatten.

source


# GeometryOps.rebuildFunction.
julia
rebuild(geom, child_geoms)

Rebuild a geometry from child geometries.

By default geometries will be rebuilt as a GeoInterface.Wrappers geometry, but rebuild can have methods added to it to dispatch on geometries from other packages and specify how to rebuild them.

(Maybe it should go into GeoInterface.jl)

source


Types

Missing docstring.

Missing docstring for TraitTarget. Check Documenter's build log for details.

Implementation

julia
const THREADED_KEYWORD = "- `threaded`: `true` or `false`. Whether to use multithreading. Defaults to `false`."
+const CRS_KEYWORD = "- `crs`: The CRS to attach to geometries. Defaults to `nothing`."
+const CALC_EXTENT_KEYWORD = "- `calc_extent`: `true` or `false`. Whether to calculate the extent. Defaults to `false`."
+
+const APPLY_KEYWORDS = """
+$THREADED_KEYWORD
+$CRS_KEYWORD
+$CALC_EXTENT_KEYWORD
+"""

What is apply?

apply applies some function to every geometry matching the Target GeoInterface trait, in some arbitrarily nested object made up of:

  • AbstractArrays (we also try to iterate other non-GeoInteface compatible object)

  • FeatureCollectionTrait objects

  • FeatureTrait objects

  • AbstractGeometryTrait objects

apply recursively calls itself through these nested layers until it reaches objects with the Target GeoInterface trait. When found apply applies the function f, and stops.

The outer recursive functions then progressively rebuild the object using GeoInterface objects matching the original traits.

If PointTrait is found but it is not the Target, an error is thrown. This likely means the object contains a different geometry trait to the target, such as MultiPointTrait when LineStringTrait was specified.

To handle this possibility it may be necessary to make Target a Union of traits found at the same level of nesting, and define methods of f to handle all cases.

Be careful making a union across "levels" of nesting, e.g. Union{FeatureTrait,PolygonTrait}, as _apply will just never reach PolygonTrait when all the polygons are wrapped in a FeatureTrait object.

Embedding:

extent and crs can be embedded in all geometries, features, and feature collections as part of apply. Geometries deeper than Target will of course not have new extent or crs embedded.

  • calc_extent signals to recalculate an Extent and embed it.

  • crs will be embedded as-is

Threading

Threading is used at the outermost level possible - over an array, feature collection, or e.g. a MultiPolygonTrait where each PolygonTrait sub-geometry may be calculated on a different thread.

Currently, threading defaults to false for all objects, but can be turned on by passing the keyword argument threaded=true to apply.

julia
"""
+    apply(f, target::Union{TraitTarget, GI.AbstractTrait}, obj; kw...)
+
+Reconstruct a geometry, feature, feature collection, or nested vectors of
+either using the function `f` on the `target` trait.
+
+`f(target_geom) => x` where `x` also has the `target` trait, or a trait that can
+be substituted. For example, swapping `PolgonTrait` to `MultiPointTrait` will fail
+if the outer object has `MultiPolygonTrait`, but should work if it has `FeatureTrait`.
+
+Objects "shallower" than the target trait are always completely rebuilt, like
+a `Vector` of `FeatureCollectionTrait` of `FeatureTrait` when the target
+has `PolygonTrait` and is held in the features. These will always be GeoInterface
+geometries/feature/feature collections. But "deeper" objects may remain
+unchanged or be whatever GeoInterface compatible objects `f` returns.
+
+The result is a functionally similar geometry with values depending on `f`.
+
+$APPLY_KEYWORDS
+
+# Example
+
+Flipped point the order in any feature or geometry, or iterables of either:
+
+```julia
+import GeoInterface as GI
+import GeometryOps as GO
+geom = GI.Polygon([GI.LinearRing([(1, 2), (3, 4), (5, 6), (1, 2)]),
+                   GI.LinearRing([(3, 4), (5, 6), (6, 7), (3, 4)])])
+
+flipped_geom = GO.apply(GI.PointTrait, geom) do p
+    (GI.y(p), GI.x(p))
+end
+```
+"""
+@inline function apply(
+    f::F, target, geom; calc_extent=false, threaded=false, kw...
+) where F
+    threaded = _booltype(threaded)
+    calc_extent = _booltype(calc_extent)
+    _apply(f, TraitTarget(target), geom; threaded, calc_extent, kw...)
+end

Call _apply again with the trait of geom

julia
@inline _apply(f::F, target, geom; kw...)  where F =
+    _apply(f, target, GI.trait(geom), geom; kw...)

There is no trait and this is an AbstractArray - so just iterate over it calling _apply on the contents

julia
@inline function _apply(f::F, target, ::Nothing, A::AbstractArray; threaded, kw...) where F

For an Array there is nothing else to do but map _apply over all values _maptasks may run this level threaded if threaded==true, but deeper _apply called in the closure will not be threaded

julia
    apply_to_array(i) = _apply(f, target, A[i]; threaded=_False(), kw...)
+    _maptasks(apply_to_array, eachindex(A), threaded)
+end

There is no trait and this is not an AbstractArray. Try to call _apply over it. We can't use threading as we don't know if we can can index into it. So just map.

julia
@inline function _apply(f::F, target, ::Nothing, iterable::IterableType; threaded, kw...) where {F, IterableType}

Try the Tables.jl interface first

julia
    if Tables.istable(iterable)
+    _apply_table(f, target, iterable; threaded, kw...)
+    else # this is probably some form of iterable...
+        if threaded isa _True

collect first so we can use threads

julia
            _apply(f, target, collect(iterable); threaded, kw...)
+        else
+            apply_to_iterable(x) = _apply(f, target, x; kw...)
+            map(apply_to_iterable, iterable)
+        end
+    end
+end
+#=
+Doing this inline in `_apply` is _heavily_ type unstable, so it's best to separate this
+by a function barrier.
+
+This function operates `apply` on the `geometry` column of the table, and returns a new table
+with the same schema, but with the new geometry column.
+
+This new table may be of the same type as the old one iff `Tables.materializer` is defined for
+that table.  If not, then a `NamedTuple` is returned.
+=#
+function _apply_table(f::F, target, iterable::IterableType; threaded, kw...) where {F, IterableType}
+    _get_col_pair(colname) = colname => Tables.getcolumn(iterable, colname)

We extract the geometry column and run apply on it.

julia
    geometry_column = first(GI.geometrycolumns(iterable))
+    new_geometry = _apply(f, target, Tables.getcolumn(iterable, geometry_column); threaded, kw...)

Then, we obtain the schema of the table,

julia
    old_schema = Tables.schema(iterable)

filter the geometry column out,

julia
    new_names = filter(Base.Fix1(!==, geometry_column), old_schema.names)

and try to rebuild the same table as the best type - either the original type of iterable, or a named tuple which is the default fallback.

julia
    return Tables.materializer(iterable)(
+        merge(
+            NamedTuple{(geometry_column,), Base.Tuple{typeof(new_geometry)}}((new_geometry,)),
+            NamedTuple(Iterators.map(_get_col_pair, new_names))
+        )
+    )
+end

Rewrap all FeatureCollectionTrait feature collections as GI.FeatureCollection Maybe use threads to call _apply on component features

julia
@inline function _apply(f::F, target, ::GI.FeatureCollectionTrait, fc;
+    crs=GI.crs(fc), calc_extent=_False(), threaded
+) where F

Run _apply on all features in the feature collection, possibly threaded

julia
    apply_to_feature(i) =
+        _apply(f, target, GI.getfeature(fc, i); crs, calc_extent, threaded=_False())::GI.Feature
+    features = _maptasks(apply_to_feature, 1:GI.nfeature(fc), threaded)
+    if calc_extent isa _True

Calculate the extent of the features

julia
        extent = mapreduce(GI.extent, Extents.union, features)

Return a FeatureCollection with features, crs and calculated extent

julia
        return GI.FeatureCollection(features; crs, extent)
+    else

Return a FeatureCollection with features and crs

julia
        return GI.FeatureCollection(features; crs)
+    end
+end

Rewrap all FeatureTrait features as GI.Feature, keeping the properties

julia
@inline function _apply(f::F, target, ::GI.FeatureTrait, feature;
+    crs=GI.crs(feature), calc_extent=_False(), threaded
+) where F

Run _apply on the contained geometry

julia
    geometry = _apply(f, target, GI.geometry(feature); crs, calc_extent, threaded)

Get the feature properties

julia
    properties = GI.properties(feature)
+    if calc_extent isa _True

Calculate the extent of the geometry

julia
        extent = GI.extent(geometry)

Return a new Feature with the new geometry and calculated extent, but the original properties and crs

julia
        return GI.Feature(geometry; properties, crs, extent)
+    else

Return a new Feature with the new geometry, but the original properties and crs

julia
        return GI.Feature(geometry; properties, crs)
+    end
+end

Reconstruct nested geometries, maybe using threads to call _apply on component geoms

julia
@inline function _apply(f::F, target, trait, geom;
+    crs=GI.crs(geom), calc_extent=_False(), threaded
+)::(GI.geointerface_geomtype(trait)) where F

Map _apply over all sub geometries of geom to create a new vector of geometries TODO handle zero length

julia
    apply_to_geom(i) = _apply(f, target, GI.getgeom(geom, i); crs, calc_extent, threaded=_False())
+    geoms = _maptasks(apply_to_geom, 1:GI.ngeom(geom), threaded)
+    return _apply_inner(geom, geoms, crs, calc_extent)
+end
+function _apply_inner(geom, geoms, crs, calc_extent::_True)

Calculate the extent of the sub geometries

julia
    extent = mapreduce(GI.extent, Extents.union, geoms)

Return a new geometry of the same trait as geom, holding the new geoms with crs and calculated extent

julia
    return rebuild(geom, geoms; crs, extent)
+end
+function _apply_inner(geom, geoms, crs, calc_extent::_False)

Return a new geometry of the same trait as geom, holding the new geoms with crs

julia
    return rebuild(geom, geoms; crs)
+end

Fail loudly if we hit PointTrait without running f (after PointTrait there is no further to dig with _apply) @inline _apply(f, ::TraitTarget{Target}, trait::GI.PointTrait, geom; crs=nothing, kw...) where Target = throw(ArgumentError("target Target not found, but reached a PointTrait leaf")) Finally, these short methods are the main purpose of apply. The Trait is a subtype of the Target (or identical to it) So the Target is found. We apply f to geom and return it to previous _apply calls to be wrapped with the outer geometries/feature/featurecollection/array.

julia
_apply(f::F, ::TraitTarget{Target}, ::Trait, geom; crs=GI.crs(geom), kw...) where {F,Target,Trait<:Target} = f(geom)

Define some specific cases of this match to avoid method ambiguity

julia
for T in (
+    GI.PointTrait, GI.LinearRing, GI.LineString,
+    GI.MultiPoint, GI.FeatureTrait, GI.FeatureCollectionTrait
+)
+    @eval _apply(f::F, target::TraitTarget{<:$T}, trait::$T, x; kw...) where F = f(x)
+end
+
+"""
+    applyreduce(f, op, target::Union{TraitTarget, GI.AbstractTrait}, obj; threaded)
+
+Apply function `f` to all objects with the `target` trait,
+and reduce the result with an `op` like `+`.
+
+The order and grouping of application of `op` is not guaranteed.
+
+If `threaded==true` threads will be used over arrays and iterables,
+feature collections and nested geometries.
+"""
+@inline function applyreduce(
+    f::F, op::O, target, geom; threaded=false, init=nothing
+) where {F, O}
+    threaded = _booltype(threaded)
+    _applyreduce(f, op, TraitTarget(target), geom; threaded, init)
+end
+
+@inline _applyreduce(f::F, op::O, target, geom; threaded, init) where {F, O} =
+    _applyreduce(f, op, target, GI.trait(geom), geom; threaded, init)

Maybe use threads reducing over arrays

julia
@inline function _applyreduce(f::F, op::O, target, ::Nothing, A::AbstractArray; threaded, init) where {F, O}
+    applyreduce_array(i) = _applyreduce(f, op, target, A[i]; threaded=_False(), init)
+    _mapreducetasks(applyreduce_array, op, eachindex(A), threaded; init)
+end

Try to applyreduce over iterables

julia
@inline function _applyreduce(f::F, op::O, target, ::Nothing, iterable::IterableType; threaded, init) where {F, O, IterableType}
+    if Tables.istable(iterable)
+        _applyreduce_table(f, op, target, iterable; threaded, init)
+    else
+        applyreduce_iterable(i) = _applyreduce(f, op, target, i; threaded=_False(), init)
+        if threaded isa _True # Try to `collect` and reduce over the vector with threads
+            _applyreduce(f, op, target, collect(iterable); threaded, init)
+        else

Try to mapreduce the iterable as-is

julia
            mapreduce(applyreduce_iterable, op, iterable; init)
+        end
+    end
+end

In this case, we don't reconstruct the table, but only operate on the geometry column.

julia
function _applyreduce_table(f::F, op::O, target, iterable::IterableType; threaded, init) where {F, O, IterableType}

We extract the geometry column and run applyreduce on it.

julia
    geometry_column = first(GI.geometrycolumns(iterable))
+    return _applyreduce(f, op, target, Tables.getcolumn(iterable, geometry_column); threaded, init)
+end

If applyreduce wants features, then applyreduce over the rows as GI.Features.

julia
function _applyreduce_table(f::F, op::O, target::GI.FeatureTrait, iterable::IterableType; threaded, init) where {F, O, IterableType}

We extract the geometry column and run apply on it.

julia
    geometry_column = first(GI.geometrycolumns(iterable))
+    property_names = Iterators.filter(!=(geometry_column), Tables.schema(iterable).names)
+    features = map(Tables.rows(iterable)) do row
+        GI.Feature(Tables.getcolumn(row, geometry_column), properties=NamedTuple(Iterators.map(Base.Fix1(_get_col_pair, row), property_names)))
+    end
+    return _applyreduce(f, op, target, features; threaded, init)
+end

Maybe use threads reducing over features of feature collections

julia
@inline function _applyreduce(f::F, op::O, target, ::GI.FeatureCollectionTrait, fc; threaded, init) where {F, O}
+    applyreduce_fc(i) = _applyreduce(f, op, target, GI.getfeature(fc, i); threaded=_False(), init)
+    _mapreducetasks(applyreduce_fc, op, 1:GI.nfeature(fc), threaded; init)
+end

Features just applyreduce to their geometry

julia
@inline _applyreduce(f::F, op::O, target, ::GI.FeatureTrait, feature; threaded, init) where {F, O} =
+    _applyreduce(f, op, target, GI.geometry(feature); threaded, init)

Maybe use threads over components of nested geometries

julia
@inline function _applyreduce(f::F, op::O, target, trait, geom; threaded, init) where {F, O}
+    applyreduce_geom(i) = _applyreduce(f, op, target, GI.getgeom(geom, i); threaded=_False(), init)
+    _mapreducetasks(applyreduce_geom, op, 1:GI.ngeom(geom), threaded; init)
+end

Don't thread over points it won't pay off

julia
@inline function _applyreduce(
+    f::F, op::O, target, trait::Union{GI.LinearRing,GI.LineString,GI.MultiPoint}, geom;
+    threaded, init
+) where {F, O}
+    _applyreduce(f, op, target, GI.getgeom(geom); threaded=_False(), init)
+end

Apply f to the target

julia
@inline function _applyreduce(f::F, op::O, ::TraitTarget{Target}, ::Trait, x; kw...) where {F,O,Target,Trait<:Target}
+    f(x)
+end

Fail if we hit PointTrait _applyreduce(f, op, target::TraitTarget{Target}, trait::PointTrait, geom; kw...) where Target = throw(ArgumentError("target target not found")) Specific cases to avoid method ambiguity

julia
for T in (
+    GI.PointTrait, GI.LinearRing, GI.LineString,
+    GI.MultiPoint, GI.FeatureTrait, GI.FeatureCollectionTrait
+)
+    @eval _applyreduce(f::F, op::O, ::TraitTarget{<:$T}, trait::$T, x; kw...) where {F, O} = f(x)
+end
+
+"""
+    unwrap(target::Type{<:AbstractTrait}, obj)
+    unwrap(f, target::Type{<:AbstractTrait}, obj)
+
+Unwrap the object to vectors, down to the target trait.
+
+If `f` is passed in it will be applied to the target geometries
+as they are found.
+"""
+function unwrap end
+unwrap(target::Type, geom) = unwrap(identity, target, geom)

Add dispatch argument for trait

julia
unwrap(f, target::Type, geom) = unwrap(f, target, GI.trait(geom), geom)

Try to unwrap over iterables

julia
unwrap(f, target::Type, ::Nothing, iterable) =
+    map(x -> unwrap(f, target, x), iterable)

Rewrap feature collections

julia
unwrap(f, target::Type, ::GI.FeatureCollectionTrait, fc) =
+    map(x -> unwrap(f, target, x), GI.getfeature(fc))
+unwrap(f, target::Type, ::GI.FeatureTrait, feature) =
+    unwrap(f, target, GI.geometry(feature))
+unwrap(f, target::Type, trait, geom) = map(g -> unwrap(f, target, g), GI.getgeom(geom))

Apply f to the target geometry

julia
unwrap(f, ::Type{Target}, ::Trait, geom) where {Target,Trait<:Target} = f(geom)

Fail if we hit PointTrait

julia
unwrap(f, target::Type, trait::GI.PointTrait, geom) =
+    throw(ArgumentError("target $target not found, but reached a `PointTrait` leaf"))

Specific cases to avoid method ambiguity

julia
unwrap(f, target::Type{GI.PointTrait}, trait::GI.PointTrait, geom) = f(geom)
+unwrap(f, target::Type{GI.FeatureTrait}, ::GI.FeatureTrait, feature) = f(feature)
+unwrap(f, target::Type{GI.FeatureCollectionTrait}, ::GI.FeatureCollectionTrait, fc) = f(fc)
+
+"""
+    flatten(target::Type{<:GI.AbstractTrait}, obj)
+    flatten(f, target::Type{<:GI.AbstractTrait}, obj)
+
+Lazily flatten any `AbstractArray`, iterator, `FeatureCollectionTrait`,
+`FeatureTrait` or `AbstractGeometryTrait` object `obj`, so that objects
+with the `target` trait are returned by the iterator.
+
+If `f` is passed in it will be applied to the target geometries.
+"""
+flatten(::Type{Target}, geom) where {Target<:GI.AbstractTrait} = flatten(identity, Target, geom)
+flatten(f, ::Type{Target}, geom) where {Target<:GI.AbstractTrait} = _flatten(f, Target, geom)
+
+_flatten(f, ::Type{Target}, geom) where Target = _flatten(f, Target, GI.trait(geom), geom)

Try to flatten over iterables

julia
_flatten(f, ::Type{Target}, ::Nothing, iterable) where Target =
+    Iterators.flatten(Iterators.map(x -> _flatten(f, Target, x), iterable))

Flatten feature collections

julia
function _flatten(f, ::Type{Target}, ::GI.FeatureCollectionTrait, fc) where Target
+    Iterators.map(GI.getfeature(fc)) do feature
+        _flatten(f, Target, feature)
+    end |> Iterators.flatten
+end
+_flatten(f, ::Type{Target}, ::GI.FeatureTrait, feature) where Target =
+    _flatten(f, Target, GI.geometry(feature))

Apply f to the target geometry

julia
_flatten(f, ::Type{Target}, ::Trait, geom) where {Target,Trait<:Target} = (f(geom),)
+_flatten(f, ::Type{Target}, trait, geom) where Target =
+    Iterators.flatten(Iterators.map(g -> _flatten(f, Target, g), GI.getgeom(geom)))

Fail if we hit PointTrait without running f

julia
_flatten(f, ::Type{Target}, trait::GI.PointTrait, geom) where Target =
+    throw(ArgumentError("target $Target not found, but reached a `PointTrait` leaf"))

Specific cases to avoid method ambiguity

julia
_flatten(f, ::Type{<:GI.PointTrait}, ::GI.PointTrait, geom) = (f(geom),)
+_flatten(f, ::Type{<:GI.FeatureTrait}, ::GI.FeatureTrait, feature) = (f(feature),)
+_flatten(f, ::Type{<:GI.FeatureCollectionTrait}, ::GI.FeatureCollectionTrait, fc) = (f(fc),)
+
+
+"""
+    reconstruct(geom, components)
+
+Reconstruct `geom` from an iterable of component objects that match its structure.
+
+All objects in `components` must have the same `GeoInterface.trait`.
+
+Usually used in combination with `flatten`.
+"""
+function reconstruct(geom, components)
+    obj, iter = _reconstruct(geom, components)
+    return obj
+end
+
+_reconstruct(geom, components) =
+    _reconstruct(typeof(GI.trait(first(components))), geom, components, 1)
+_reconstruct(::Type{Target}, geom, components, iter) where Target =
+    _reconstruct(Target, GI.trait(geom), geom, components, iter)

Try to reconstruct over iterables

julia
function _reconstruct(::Type{Target}, ::Nothing, iterable, components, iter) where Target
+    vect = map(iterable) do x

iter is updated by _reconstruct here

julia
        obj, iter = _reconstruct(Target, x, components, iter)
+        obj
+    end
+    return vect, iter
+end

Reconstruct feature collections

julia
function _reconstruct(::Type{Target}, ::GI.FeatureCollectionTrait, fc, components, iter) where Target
+    features = map(GI.getfeature(fc)) do feature

iter is updated by _reconstruct here

julia
        newfeature, iter = _reconstruct(Target, feature, components, iter)
+        newfeature
+    end
+    return GI.FeatureCollection(features; crs=GI.crs(fc)), iter
+end
+function _reconstruct(::Type{Target}, ::GI.FeatureTrait, feature, components, iter) where Target
+    geom, iter = _reconstruct(Target, GI.geometry(feature), components, iter)
+    return GI.Feature(geom; properties=GI.properties(feature), crs=GI.crs(feature)), iter
+end
+function _reconstruct(::Type{Target}, trait, geom, components, iter) where Target
+    geoms = map(GI.getgeom(geom)) do subgeom

iter is updated by _reconstruct here

julia
        subgeom1, iter = _reconstruct(Target, GI.trait(subgeom), subgeom, components, iter)
+        subgeom1
+    end
+    return rebuild(geom, geoms), iter
+end

Apply f to the target geometry

julia
_reconstruct(::Type{Target}, ::Trait, geom, components, iter) where {Target,Trait<:Target} =
+    iterate(components, iter)

Specific cases to avoid method ambiguity

julia
_reconstruct(::Type{<:GI.PointTrait}, ::GI.PointTrait, geom, components, iter) = iterate(components, iter)
+_reconstruct(::Type{<:GI.FeatureTrait}, ::GI.FeatureTrait, feature, components, iter) = iterate(feature, iter)
+_reconstruct(::Type{<:GI.FeatureCollectionTrait}, ::GI.FeatureCollectionTrait, fc, components, iter) = iterate(fc, iter)

Fail if we hit PointTrait without running f

julia
_reconstruct(::Type{Target}, trait::GI.PointTrait, geom, components, iter) where Target =
+    throw(ArgumentError("target $Target not found, but reached a `PointTrait` leaf"))
+
+
+const BasicsGeoms = Union{GB.AbstractGeometry,GB.AbstractFace,GB.AbstractPoint,GB.AbstractMesh,
+    GB.AbstractPolygon,GB.LineString,GB.MultiPoint,GB.MultiLineString,GB.MultiPolygon,GB.Mesh}
+
+"""
+    rebuild(geom, child_geoms)
+
+Rebuild a geometry from child geometries.
+
+By default geometries will be rebuilt as a `GeoInterface.Wrappers`
+geometry, but `rebuild` can have methods added to it to dispatch
+on geometries from other packages and specify how to rebuild them.
+
+(Maybe it should go into GeoInterface.jl)
+"""
+rebuild(geom, child_geoms; kw...) = rebuild(GI.trait(geom), geom, child_geoms; kw...)
+function rebuild(trait::GI.AbstractTrait, geom, child_geoms; crs=GI.crs(geom), extent=nothing)
+    T = GI.geointerface_geomtype(trait)
+    if GI.is3d(geom)

The Boolean type parameters here indicate "3d-ness" and "measure" coordinate, respectively.

julia
        return T{true,false}(child_geoms; crs, extent)
+    else
+        return T{false,false}(child_geoms; crs, extent)
+    end
+end
+
+using Base.Threads: nthreads, @threads, @spawn

Threading utility, modified Mason Protters threading PSA run f over ntasks, where f receives an AbstractArray/range of linear indices

julia
@inline function _maptasks(f::F, taskrange, threaded::_True)::Vector where F
+    ntasks = length(taskrange)

Customize this as needed. More tasks have more overhead, but better load balancing

julia
    tasks_per_thread = 2
+    chunk_size = max(1, ntasks ÷ (tasks_per_thread * nthreads()))

partition the range into chunks

julia
    task_chunks = Iterators.partition(taskrange, chunk_size)

Map over the chunks

julia
    tasks = map(task_chunks) do chunk

Spawn a task to process this chunk

julia
        @spawn begin

Where we map f over the chunk indices

julia
            map(f, chunk)
+        end
+    end

Finally we join the results into a new vector

julia
    return mapreduce(fetch, vcat, tasks)
+end

Here we use the compiler directive @assume_effects :foldable to force the compiler to lookup through the closure. This alone makes e.g. flip 2.5x faster!

julia
Base.@assume_effects :foldable @inline function _maptasks(f::F, taskrange, threaded::_False)::Vector where F
+    map(f, taskrange)
+end

Threading utility, modified Mason Protters threading PSA run f over ntasks, where f receives an AbstractArray/range of linear indices

WARNING: this will not work for mean/median - only ops where grouping is possible

julia
@inline function _mapreducetasks(f::F, op, taskrange, threaded::_True; init) where F
+    ntasks = length(taskrange)

Customize this as needed. More tasks have more overhead, but better load balancing

julia
    tasks_per_thread = 2
+    chunk_size = max(1, ntasks ÷ (tasks_per_thread * nthreads()))

partition the range into chunks

julia
    task_chunks = Iterators.partition(taskrange, chunk_size)

Map over the chunks

julia
    tasks = map(task_chunks) do chunk

Spawn a task to process this chunk

julia
        @spawn begin

Where we map f over the chunk indices

julia
            mapreduce(f, op, chunk; init)
+        end
+    end

Finally we join the results into a new vector

julia
    return mapreduce(fetch, op, tasks; init)
+end
+Base.@assume_effects :foldable function _mapreducetasks(f::F, op, taskrange, threaded::_False; init) where F
+    mapreduce(f, op, taskrange; init)
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/transformations/correction/closed_ring.html b/previews/PR195/source/transformations/correction/closed_ring.html new file mode 100644 index 000000000..3d4026d36 --- /dev/null +++ b/previews/PR195/source/transformations/correction/closed_ring.html @@ -0,0 +1,54 @@ + + + + + + Closed Rings | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Closed Rings

julia
export ClosedRing

A closed ring is a ring that has the same start and end point. This is a requirement for a valid polygon (technically, for a valid LinearRing). This correction is used to ensure that the polygon is valid.

The reason this operates on the polygon level is that several packages are loose about whether they return LinearRings (which is correct) or LineStrings (which is incorrect) for the contents of a polygon. Therefore, we decompose manually to ensure correctness.

Example

Many polygon providers do not close their polygons, which makes them invalid according to the specification. Quite a few geometry algorithms assume that polygons are closed, and leaving them open can lead to incorrect results!

For example, the following polygon is not valid:

julia
import GeoInterface as GI
+polygon = GI.Polygon([[(0, 0), (1, 0), (1, 1), (0, 1)]])
GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Int64, Int64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Int64, Int64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Int64, Int64}}, Nothing, Nothing}([(0, 0), (1, 0), (1, 1), (0, 1)], nothing, nothing)], nothing, nothing)

even though it will look correct when visualized, and indeed appears correct.

julia
import GeometryOps as GO
+GO.fix(polygon, corrections = [GO.ClosedRing()])
GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}([(0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0), (0.0, 0.0)], nothing, nothing)], nothing, nothing)

You can see that the last point of the ring here is equal to the first point. For a polygon with n sides, there should be n+1 vertices.

Implementation

julia
"""
+    ClosedRing() <: GeometryCorrection
+
+This correction ensures that a polygon's exterior and interior rings are closed.
+
+It can be called on any geometry correction as usual.
+
+See also `GeometryCorrection`.
+"""
+struct ClosedRing <: GeometryCorrection end
+
+application_level(::ClosedRing) = GI.PolygonTrait
+
+function (::ClosedRing)(::GI.PolygonTrait, polygon)
+    exterior = _close_linear_ring(GI.getexterior(polygon))
+
+    holes = map(GI.gethole(polygon)) do hole
+        _close_linear_ring(hole) # TODO: make this more efficient, or use tuples!
+    end
+
+    return GI.Wrappers.Polygon([exterior, holes...])
+end
+
+function _close_linear_ring(ring)
+    if GI.getpoint(ring, 1) == GI.getpoint(ring, GI.npoint(ring))

the ring is closed, all hail the ring

julia
        return ring
+    else

Assemble the ring as a vector

julia
        tups = tuples.(GI.getpoint(ring))

Close the ring

julia
        push!(tups, tups[1])

Return an actual ring

julia
        return GI.LinearRing(tups)
+    end
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/transformations/correction/geometry_correction.html b/previews/PR195/source/transformations/correction/geometry_correction.html new file mode 100644 index 000000000..5a6d15b1b --- /dev/null +++ b/previews/PR195/source/transformations/correction/geometry_correction.html @@ -0,0 +1,55 @@ + + + + + + Geometry Corrections | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Geometry Corrections

julia
export fix

This file simply defines the GeometryCorrection abstract type, and the interface that any GeometryCorrection must implement.

A geometry correction is a transformation that is applied to a geometry to correct it in some way.

For example, a ClosedRing correction might be applied to a Polygon to ensure that its exterior ring is closed.

Interface

All GeometryCorrections are callable structs which, when called, apply the correction to the given geometry, and return either a copy or the original geometry (if nothing needed to be corrected).

See below for the full interface specification.

# GeometryOps.GeometryCorrectionType.
julia
abstract type GeometryCorrection

This abstract type represents a geometry correction.

Interface

Any GeometryCorrection must implement two functions: * application_level(::GeometryCorrection)::AbstractGeometryTrait: This function should return the GeoInterface trait that the correction is intended to be applied to, like PointTrait or LineStringTrait or PolygonTrait. * (::GeometryCorrection)(::AbstractGeometryTrait, geometry)::(some_geometry): This function should apply the correction to the given geometry, and return a new geometry.

source


Any geometry correction must implement the interface as given above.

julia
"""
+    abstract type GeometryCorrection
+
+This abstract type represents a geometry correction.
+
+# Interface
+
+Any `GeometryCorrection` must implement two functions:
+    * `application_level(::GeometryCorrection)::AbstractGeometryTrait`: This function should return the `GeoInterface` trait that the correction is intended to be applied to, like `PointTrait` or `LineStringTrait` or `PolygonTrait`.
+    * `(::GeometryCorrection)(::AbstractGeometryTrait, geometry)::(some_geometry)`: This function should apply the correction to the given geometry, and return a new geometry.
+"""
+abstract type GeometryCorrection end
+
+application_level(gc::GeometryCorrection) = error("Not implemented yet for $(gc)")
+
+(gc::GeometryCorrection)(geometry) = gc(GI.trait(geometry), geometry)
+
+(gc::GeometryCorrection)(trait::GI.AbstractGeometryTrait, geometry) = error("Not implemented yet for $(gc) and $(trait).")
+
+function fix(geometry; corrections = GeometryCorrection[ClosedRing(),], kwargs...)
+    traits = application_level.(corrections)
+    final_geometry = geometry
+    for Trait in (GI.PointTrait, GI.MultiPointTrait, GI.LineStringTrait, GI.LinearRingTrait, GI.MultiLineStringTrait, GI.PolygonTrait, GI.MultiPolygonTrait)
+        available_corrections = findall(x -> x == Trait, traits)
+        isempty(available_corrections) && continue
+        @debug "Correcting for $(Trait)"
+        net_function = reduce(, corrections[available_corrections])
+        final_geometry = apply(net_function, Trait, final_geometry; kwargs...)
+    end
+    return final_geometry
+end

Available corrections

# GeometryOps.ClosedRingType.
julia
ClosedRing() <: GeometryCorrection

This correction ensures that a polygon's exterior and interior rings are closed.

It can be called on any geometry correction as usual.

See also GeometryCorrection.

source


# GeometryOps.DiffIntersectingPolygonsType.
julia
DiffIntersectingPolygons() <: GeometryCorrection

This correction ensures that the polygons included in a multipolygon aren't intersecting. If any polygon's are intersecting, they will be made nonintersecting through the difference operation to create a unique set of disjoint (other than potentially connections by a single point) polygons covering the same area. See also GeometryCorrection, UnionIntersectingPolygons.

source


# GeometryOps.GeometryCorrectionType.
julia
abstract type GeometryCorrection

This abstract type represents a geometry correction.

Interface

Any GeometryCorrection must implement two functions: * application_level(::GeometryCorrection)::AbstractGeometryTrait: This function should return the GeoInterface trait that the correction is intended to be applied to, like PointTrait or LineStringTrait or PolygonTrait. * (::GeometryCorrection)(::AbstractGeometryTrait, geometry)::(some_geometry): This function should apply the correction to the given geometry, and return a new geometry.

source


# GeometryOps.UnionIntersectingPolygonsType.
julia
UnionIntersectingPolygons() <: GeometryCorrection

This correction ensures that the polygon's included in a multipolygon aren't intersecting. If any polygon's are intersecting, they will be combined through the union operation to create a unique set of disjoint (other than potentially connections by a single point) polygons covering the same area.

See also GeometryCorrection.

source



This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/transformations/correction/intersecting_polygons.html b/previews/PR195/source/transformations/correction/intersecting_polygons.html new file mode 100644 index 000000000..639942e67 --- /dev/null +++ b/previews/PR195/source/transformations/correction/intersecting_polygons.html @@ -0,0 +1,121 @@ + + + + + + Intersecting Polygons | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Intersecting Polygons

julia
export UnionIntersectingPolygons

If the sub-polygons of a multipolygon are intersecting, this makes them invalid according to specification. Each sub-polygon of a multipolygon being disjoint (other than by a single point) is a requirement for a valid multipolygon. However, different libraries may achieve this in different ways.

For example, taking the union of all sub-polygons of a multipolygon will create a new multipolygon where each sub-polygon is disjoint. This can be done with the UnionIntersectingPolygons correction.

The reason this operates on a multipolygon level is that it is easy for users to mistakenly create multipolygon's that overlap, which can then be detrimental to polygon clipping performance and even create wrong answers.

Example

Multipolygon providers may not check that the polygons making up their multipolygons do not intersect, which makes them invalid according to the specification.

For example, the following multipolygon is not valid:

julia
import GeoInterface as GI
+polygon = GI.Polygon([[(0.0, 0.0), (3.0, 0.0), (3.0, 3.0), (0.0, 3.0), (0.0, 0.0)]])
+multipolygon = GI.MultiPolygon([polygon, polygon])
GeoInterface.Wrappers.MultiPolygon{false, false, Vector{GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}[GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}([(0.0, 0.0), (3.0, 0.0), (3.0, 3.0), (0.0, 3.0), (0.0, 0.0)], nothing, nothing)], nothing, nothing), GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}([(0.0, 0.0), (3.0, 0.0), (3.0, 3.0), (0.0, 3.0), (0.0, 0.0)], nothing, nothing)], nothing, nothing)], nothing, nothing)

given that the two sub-polygons are the exact same shape.

julia
import GeometryOps as GO
+GO.fix(multipolygon, corrections = [GO.UnionIntersectingPolygons()])
GeoInterface.Wrappers.MultiPolygon{false, false, Vector{GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}[GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}([(0.0, 0.0), (3.0, 0.0), (3.0, 3.0), (0.0, 3.0), (0.0, 0.0)], nothing, nothing)], nothing, nothing)], nothing, nothing)

You can see that the the multipolygon now only contains one sub-polygon, rather than the two identical ones provided.

Implementation

julia
"""
+    UnionIntersectingPolygons() <: GeometryCorrection
+
+This correction ensures that the polygon's included in a multipolygon aren't intersecting.
+If any polygon's are intersecting, they will be combined through the union operation to
+create a unique set of disjoint (other than potentially connections by a single point)
+polygons covering the same area.
+
+See also `GeometryCorrection`.
+"""
+struct UnionIntersectingPolygons <: GeometryCorrection end
+
+application_level(::UnionIntersectingPolygons) = GI.MultiPolygonTrait
+
+function (::UnionIntersectingPolygons)(::GI.MultiPolygonTrait, multipoly)
+    union_multipoly = tuples(multipoly)
+    n_polys = GI.npolygon(multipoly)
+    if n_polys > 1
+        keep_idx = trues(n_polys)  # keep track of sub-polygons to remove

Combine any sub-polygons that intersect

julia
        for (curr_idx, _) in Iterators.filter(last, Iterators.enumerate(keep_idx))
+            curr_poly = union_multipoly.geom[curr_idx]
+            poly_disjoint = false
+            while !poly_disjoint
+                poly_disjoint = true  # assume current polygon is disjoint from others
+                for (next_idx, _) in Iterators.filter(last, Iterators.drop(Iterators.enumerate(keep_idx), curr_idx))
+                    next_poly = union_multipoly.geom[next_idx]
+                    if intersects(curr_poly, next_poly)  # if two polygons intersect
+                        new_polys = union(curr_poly, next_poly; target = GI.PolygonTrait())
+                        n_new_polys = length(new_polys)
+                        if n_new_polys == 1  # if polygons combined
+                            poly_disjoint = false
+                            union_multipoly.geom[curr_idx] = new_polys[1]
+                            curr_poly = union_multipoly.geom[curr_idx]
+                            keep_idx[next_idx] = false
+                        end
+                    end
+                end
+            end
+        end
+        keepat!(union_multipoly.geom, keep_idx)
+    end
+    return union_multipoly
+end
+
+"""
+    DiffIntersectingPolygons() <: GeometryCorrection
+This correction ensures that the polygons included in a multipolygon aren't intersecting.
+If any polygon's are intersecting, they will be made nonintersecting through the `difference`
+operation to create a unique set of disjoint (other than potentially connections by a single point)
+polygons covering the same area.
+See also `GeometryCorrection`, `UnionIntersectingPolygons`.
+"""
+struct DiffIntersectingPolygons <: GeometryCorrection end
+
+application_level(::DiffIntersectingPolygons) = GI.MultiPolygonTrait
+
+function (::DiffIntersectingPolygons)(::GI.MultiPolygonTrait, multipoly)
+    diff_multipoly = tuples(multipoly)
+    n_starting_polys = GI.npolygon(multipoly)
+    n_polys = n_starting_polys
+    if n_polys > 1
+        keep_idx = trues(n_polys)  # keep track of sub-polygons to remove

Break apart any sub-polygons that intersect

julia
        for curr_idx in 1:n_starting_polys
+            !keep_idx[curr_idx] && continue
+            for next_idx in (curr_idx + 1):n_starting_polys
+                !keep_idx[next_idx] && continue
+                next_poly = diff_multipoly.geom[next_idx]
+                n_new_polys = 0
+                curr_pieces_added = (n_polys + 1):(n_polys + n_new_polys)
+                for curr_piece_idx in Iterators.flatten((curr_idx:curr_idx, curr_pieces_added))
+                    !keep_idx[curr_piece_idx] && continue
+                    curr_poly = diff_multipoly.geom[curr_piece_idx]
+                    if intersects(curr_poly, next_poly)  # if two polygons intersect
+                        new_polys = difference(curr_poly, next_poly; target = GI.PolygonTrait())
+                        n_new_pieces = length(new_polys) - 1
+                        if n_new_pieces < 0  # current polygon is covered by next_polygon
+                            keep_idx[curr_piece_idx] = false
+                            break
+                        elseif n_new_pieces  0
+                            diff_multipoly.geom[curr_piece_idx] = new_polys[1]
+                            curr_poly = diff_multipoly.geom[curr_piece_idx]
+                            if n_new_pieces > 0 # current polygon breaks into several pieces
+                                append!(diff_multipoly.geom, @view new_polys[2:end])
+                                append!(keep_idx, trues(n_new_pieces))
+                                n_new_polys += n_new_pieces
+                            end
+                        end
+                    end
+                end
+                n_polys += n_new_polys
+            end
+        end
+        keepat!(diff_multipoly.geom, keep_idx)
+    end
+    return diff_multipoly
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/transformations/extent.html b/previews/PR195/source/transformations/extent.html new file mode 100644 index 000000000..7844dc190 --- /dev/null +++ b/previews/PR195/source/transformations/extent.html @@ -0,0 +1,37 @@ + + + + + + Extent embedding | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Extent embedding

julia
"""
+    embed_extent(obj)
+
+Recursively wrap the object with a GeoInterface.jl geometry,
+calculating and adding an `Extents.Extent` to all objects.
+
+This can improve performance when extents need to be checked multiple times,
+such when needing to check if many points are in geometries, and using their extents
+as a quick filter for obviously exterior points.

Keywords

julia
$THREADED_KEYWORD
+$CRS_KEYWORD
+"""
+embed_extent(x; threaded=false, crs=nothing) =
+    apply(identity, GI.PointTrait(), x; calc_extent=true, threaded, crs)

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/transformations/flip.html b/previews/PR195/source/transformations/flip.html new file mode 100644 index 000000000..e42a54dca --- /dev/null +++ b/previews/PR195/source/transformations/flip.html @@ -0,0 +1,46 @@ + + + + + + Coordinate flipping | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Coordinate flipping

This is a simple example of how to use the apply functionality in a function, by flipping the x and y coordinates of a geometry.

julia
"""
+    flip(obj)
+
+Swap all of the x and y coordinates in obj, otherwise
+keeping the original structure (but not necessarily the
+original type).
+
+# Keywords
+
+$APPLY_KEYWORDS
+"""
+function flip(geom; kw...)
+    if _is3d(geom)
+        return apply(PointTrait(), geom; kw...) do p
+            (GI.y(p), GI.x(p), GI.z(p))
+        end
+    else
+        return apply(PointTrait(), geom; kw...) do p
+            (GI.y(p), GI.x(p))
+        end
+    end
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/transformations/reproject.html b/previews/PR195/source/transformations/reproject.html new file mode 100644 index 000000000..fcb2b2a2a --- /dev/null +++ b/previews/PR195/source/transformations/reproject.html @@ -0,0 +1,65 @@ + + + + + + Geometry reprojection | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Geometry reprojection

julia
export reproject

This file is pretty simple - it simply reprojects a geometry pointwise from one CRS to another. It uses the Proj package for the transformation, but this could be moved to an extension if needed.

Note that the actual implementation is in the GeometryOpsProjExt extension module.

This works using the apply functionality.

julia
"""
+    reproject(geometry; source_crs, target_crs, transform, always_xy, time)
+    reproject(geometry, source_crs, target_crs; always_xy, time)
+    reproject(geometry, transform; always_xy, time)
+
+Reproject any GeoInterface.jl compatible `geometry` from `source_crs` to `target_crs`.
+
+The returned object will be constructed from `GeoInterface.WrapperGeometry`
+geometries, wrapping views of a `Vector{Proj.Point{D}}`, where `D` is the dimension.
+
+!!! tip
+    The `Proj.jl` package must be loaded for this method to work,
+    since it is implemented in a package extension.
+
+# Arguments
+
+- `geometry`: Any GeoInterface.jl compatible geometries.
+- `source_crs`: the source coordinate reference system, as a GeoFormatTypes.jl object or a string.
+- `target_crs`: the target coordinate reference system, as a GeoFormatTypes.jl object or a string.
+
+If these a passed as keywords, `transform` will take priority.
+Without it `target_crs` is always needed, and `source_crs` is
+needed if it is not retrievable from the geometry with `GeoInterface.crs(geometry)`.
+
+# Keywords
+
+- `always_xy`: force x, y coordinate order, `true` by default.
+    `false` will expect and return points in the crs coordinate order.
+- `time`: the time for the coordinates. `Inf` by default.
+$APPLY_KEYWORDS
+"""
+function reproject end

Method error handling

We also inject a method error handler, which prints a suggestion if the Proj extension is not loaded.

julia
function _reproject_error_hinter(io, exc, argtypes, kwargs)
+    if isnothing(Base.get_extension(GeometryOps, :GeometryOpsProjExt)) && exc.f == reproject
+        print(io, "\n\nThe `reproject` method requires the Proj.jl package to be explicitly loaded.\n")
+        print(io, "You can do this by simply typing ")
+        printstyled(io, "using Proj"; color = :cyan, bold = true)
+        println(io, " in your REPL, \nor otherwise loading Proj.jl via using or import.")
+    else # this is a more general error
+        nothing
+    end
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/transformations/segmentize.html b/previews/PR195/source/transformations/segmentize.html new file mode 100644 index 000000000..794d02e6a --- /dev/null +++ b/previews/PR195/source/transformations/segmentize.html @@ -0,0 +1,178 @@ + + + + + + Segmentize | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Segmentize

julia
export segmentize
+export LinearSegments, GeodesicSegments

This function "segmentizes" or "densifies" a geometry by adding extra vertices to the geometry so that no segment is longer than a given distance. This is useful for plotting geometries with a limited number of vertices, or for ensuring that a geometry is not too "coarse" for a given application.

Info

We plan to add interpolated segmentization from DataInterpolations.jl in the future, which will be available to any vector of point-like objects.

For now, this function only works on 2D geometries. We will also support 3D geometries, as well as measure interpolation, in the future.

Examples

julia
import GeometryOps as GO, GeoInterface as GI
+rectangle = GI.Wrappers.Polygon([[(0.0, 50.0), (7.071, 57.07), (0, 64.14), (-7.07, 57.07), (0.0, 50.0)]])
+linear = GO.segmentize(rectangle; max_distance = 5)
+collect(GI.getpoint(linear))
9-element Vector{Tuple{Float64, Float64}}:
+ (0.0, 50.0)
+ (3.5355, 53.535)
+ (7.071, 57.07)
+ (3.5355, 60.605000000000004)
+ (0.0, 64.14)
+ (-3.535, 60.605000000000004)
+ (-7.07, 57.07)
+ (-3.535, 53.535)
+ (0.0, 50.0)

You can see that this geometry was segmentized correctly, and now has 8 vertices where it previously had only 4.

Now, we'll also segmentize this using the geodesic method, which is more accurate for lat/lon coordinates.

julia
using Proj # required to activate the `GeodesicSegments` method!
+geodesic = GO.segmentize(GO.GeodesicSegments(max_distance = 1000), rectangle)
+length(GI.getpoint(geodesic) |> collect)
3585

This has a lot of points! It's important to keep in mind that the max_distance is in meters, so this is a very fine-grained segmentation.

Now, let's see what they look like! To make this fair, we'll use approximately the same number of points for both.

julia
using CairoMakie
+linear = GO.segmentize(rectangle; max_distance = 0.01)
+geodesic = GO.segmentize(GO.GeodesicSegments(; max_distance = 1000), rectangle)
+f, a, p = poly(collect(GI.getpoint(linear)); label = "Linear", axis = (; aspect = DataAspect()))
+p2 = poly!(collect(GI.getpoint(geodesic)); label = "Geodesic")
+axislegend(a; position = :lt)
+f

There are two methods available for segmentizing geometries at the moment:

Missing docstring.

Missing docstring for LinearSegments. Check Documenter's build log for details.

Missing docstring.

Missing docstring for GeodesicSegments. Check Documenter's build log for details.

Benchmark

We benchmark our method against LibGEOS's GEOSDensify method, which is a similar method for densifying geometries.

julia
using BenchmarkTools: BenchmarkGroup
+using Chairmarks: @be
+using Main: plot_trials
+using CairoMakie
+
+import GeometryOps as GO, GeoInterface as GI, LibGEOS as LG
+
+segmentize_suite = BenchmarkGroup(["title:Segmentize", "subtitle:Segmentize a rectangle"])
+
+rectangle = GI.Wrappers.Polygon([[(0.0, 50.0), (7.071, 57.07), (0.0, 64.14), (-7.07, 57.07), (0.0, 50.0)]])
+lg_rectangle = GI.convert(LG, rectangle)
POLYGON ((0 50, 7.071 57.07, 0 64.14, -7.07 57.07, 0 50))
julia
# These are initial distances, which yield similar numbers of points
+# in the final geometry.
+init_lin = 0.01
+init_geo = 900
+
+# LibGEOS.jl doesn't offer this function, so we just wrap it ourselves!
+function densify(obj::LG.Geometry, tol::Real, context::LG.GEOSContext = LG.get_context(obj))
+    result = LG.GEOSDensify_r(context, obj, tol)
+    if result == C_NULL
+        error("LibGEOS: Error in GEOSDensify")
+    end
+    LG.geomFromGEOS(result, context)
+end
+# now, we get to the actual benchmarking:
+for scalefactor in exp10.(LinRange(log10(0.1), log10(10), 5))
+    lin_dist = init_lin * scalefactor
+    geo_dist = init_geo * scalefactor
+
+    npoints_linear = GI.npoint(GO.segmentize(rectangle; max_distance = lin_dist))
+    npoints_geodesic = GO.segmentize(GO.GeodesicSegments(; max_distance = geo_dist), rectangle) |> GI.npoint
+    npoints_libgeos = GI.npoint(densify(lg_rectangle, lin_dist))
+
+    segmentize_suite["Linear"][npoints_linear] = @be GO.segmentize(GO.LinearSegments(; max_distance = $lin_dist), $rectangle) seconds=1
+    segmentize_suite["Geodesic"][npoints_geodesic] = @be GO.segmentize(GO.GeodesicSegments(; max_distance = $geo_dist), $rectangle) seconds=1
+    segmentize_suite["LibGEOS"][npoints_libgeos] = @be densify($lg_rectangle, $lin_dist) seconds=1
+
+end
+
+plot_trials(segmentize_suite)

julia
abstract type SegmentizeMethod end
+"""
+    LinearSegments(; max_distance::Real)
+
+A method for segmentizing geometries by adding extra vertices to the geometry so that no segment is longer than a given distance.
+
+Here, `max_distance` is a purely nondimensional quantity and will apply in the input space.   This is to say, that if the polygon is
+provided in lat/lon coordinates then the `max_distance` will be in degrees of arc.  If the polygon is provided in meters, then the
+`max_distance` will be in meters.
+"""
+Base.@kwdef struct LinearSegments <: SegmentizeMethod
+    max_distance::Float64
+end
+
+"""
+    GeodesicSegments(; max_distance::Real, equatorial_radius::Real=6378137, flattening::Real=1/298.257223563)
+
+A method for segmentizing geometries by adding extra vertices to the geometry so that no segment is longer than a given distance.
+This method calculates the distance between points on the geodesic, and assumes input in lat/long coordinates.
+
+!!! warning
+    Any input geometries must be in lon/lat coordinates!  If not, the method may fail or error.
+
+# Arguments
+- `max_distance::Real`: The maximum distance, **in meters**, between vertices in the geometry.
+- `equatorial_radius::Real=6378137`: The equatorial radius of the Earth, in meters.  Passed to `Proj.geod_geodesic`.
+- `flattening::Real=1/298.257223563`: The flattening of the Earth, which is the ratio of the difference between the equatorial and polar radii to the equatorial radius.  Passed to `Proj.geod_geodesic`.
+
+One can also omit the `equatorial_radius` and `flattening` keyword arguments, and pass a `geodesic` object directly to the eponymous keyword.
+
+This method uses the Proj/GeographicLib API for geodesic calculations.
+"""
+struct GeodesicSegments{T} <: SegmentizeMethod
+    geodesic::T# ::Proj.geod_geodesic
+    max_distance::Float64
+end

Add an error hint for GeodesicSegments if Proj is not loaded!

julia
function _geodesic_segments_error_hinter(io, exc, argtypes, kwargs)
+    if isnothing(Base.get_extension(GeometryOps, :GeometryOpsProjExt)) && exc.f == GeodesicSegments
+        print(io, "\n\nThe `GeodesicSegments` method requires the Proj.jl package to be explicitly loaded.\n")
+        print(io, "You can do this by simply typing ")
+        printstyled(io, "using Proj"; color = :cyan, bold = true)
+        println(io, " in your REPL, \nor otherwise loading Proj.jl via using or import.")
+    end
+end

Implementation

julia
"""
+    segmentize([method = LinearSegments()], geom; max_distance::Real, threaded)
+
+Segmentize a geometry by adding extra vertices to the geometry so that no segment is longer than a given distance.
+This is useful for plotting geometries with a limited number of vertices, or for ensuring that a geometry is not too "coarse" for a given application.
+
+# Arguments
+- `method::SegmentizeMethod = LinearSegments()`: The method to use for segmentizing the geometry.  At the moment, only `LinearSegments` and `GeodesicSegments` are available.
+- `geom`: The geometry to segmentize.  Must be a `LineString`, `LinearRing`, or greater in complexity.
+- `max_distance::Real`: The maximum distance, **in the input space**, between vertices in the geometry.  Only used if you don't explicitly pass a `method`.
+
+Returns a geometry of similar type to the input geometry, but resampled.
+"""
+function segmentize(geom; max_distance, threaded::Union{Bool, BoolsAsTypes} = _False())
+    return segmentize(LinearSegments(; max_distance), geom; threaded = _booltype(threaded))
+end
+function segmentize(method::SegmentizeMethod, geom; threaded::Union{Bool, BoolsAsTypes} = _False())
+    @assert method.max_distance > 0 "`max_distance` should be positive and nonzero!  Found $(method.max_distance)."
+    segmentize_function = Base.Fix1(_segmentize, method)
+    return apply(segmentize_function, TraitTarget(GI.LinearRingTrait(), GI.LineStringTrait()), geom; threaded)
+end
+
+_segmentize(method, geom) = _segmentize(method, geom, GI.trait(geom))
+#=
+This is a method which performs the common functionality for both linear and geodesic algorithms,
+and calls out to the "kernel" function which we've defined per linesegment.
+=#
+function _segmentize(method::Union{LinearSegments, GeodesicSegments}, geom, T::Union{GI.LineStringTrait, GI.LinearRingTrait})
+    first_coord = GI.getpoint(geom, 1)
+    x1, y1 = GI.x(first_coord), GI.y(first_coord)
+    new_coords = NTuple{2, Float64}[]
+    sizehint!(new_coords, GI.npoint(geom))
+    push!(new_coords, (x1, y1))
+    for coord in Iterators.drop(GI.getpoint(geom), 1)
+        x2, y2 = GI.x(coord), GI.y(coord)
+        _fill_linear_kernel!(method, new_coords, x1, y1, x2, y2)
+        x1, y1 = x2, y2
+    end
+    return rebuild(geom, new_coords)
+end
+
+function _fill_linear_kernel!(method::LinearSegments, new_coords::Vector, x1, y1, x2, y2)
+    dx, dy = x2 - x1, y2 - y1
+    distance = hypot(dx, dy) # this is a more stable way to compute the Euclidean distance
+    if distance > method.max_distance
+        n_segments = ceil(Int, distance / method.max_distance)
+        for i in 1:(n_segments - 1)
+            t = i / n_segments
+            push!(new_coords, (x1 + t * dx, y1 + t * dy))
+        end
+    end

End the line with the original coordinate, to avoid any multiplication errors.

julia
    push!(new_coords, (x2, y2))
+    return nothing
+end

Note

The _fill_linear_kernel definition for GeodesicSegments is in the GeometryOpsProjExt extension module, in the segmentize.jl file.


This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/transformations/simplify.html b/previews/PR195/source/transformations/simplify.html new file mode 100644 index 000000000..458cbb25e --- /dev/null +++ b/previews/PR195/source/transformations/simplify.html @@ -0,0 +1,514 @@ + + + + + + Geometry simplification | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Geometry simplification

This file holds implementations for the RadialDistance, Douglas-Peucker, and Visvalingam-Whyatt algorithms for simplifying geometries (specifically for polygons and lines).

The GEOS extension also allows for GEOS's topology preserving simplification as well as Douglas-Peucker simplification implemented in GEOS. Call this by passing GEOS(; method = :TopologyPreserve) or GEOS(; method = :DouglasPeucker) to the algorithm.

Examples

A quick and dirty example is:

julia
using Makie, GeoInterfaceMakie
+import GeoInterface as GI
+import GeometryOps as GO
+
+original = GI.Polygon([[[-70.603637, -33.399918], [-70.614624, -33.395332], [-70.639343, -33.392466], [-70.659942, -33.394759], [-70.683975, -33.404504], [-70.697021, -33.419406], [-70.701141, -33.434306], [-70.700454, -33.446339], [-70.694274, -33.458369], [-70.682601, -33.465816], [-70.668869, -33.472117], [-70.646209, -33.473835], [-70.624923, -33.472117], [-70.609817, -33.468107], [-70.595397, -33.458369], [-70.587158, -33.442901], [-70.587158, -33.426283], [-70.590591, -33.414248], [-70.594711, -33.406224], [-70.603637, -33.399918]]])
+
+simple = GO.simplify(original; number=6)
+
+f, a, p = poly(original; label = "Original")
+poly!(simple; label = "Simplified")
+axislegend(a)
+f

Benchmark

We benchmark these methods against LibGEOS's simplify implementation, which uses the Douglas-Peucker algorithm.

julia
using BenchmarkTools, Chairmarks, GeoJSON, CairoMakie
+import GeometryOps as GO, LibGEOS as LG, GeoInterface as GI
+using CoordinateTransformations
+using NaturalEarth
+lg_and_go(geometry) = (GI.convert(LG, geometry), GO.tuples(geometry))
+# Load in the Natural Earth admin GeoJSON, then extract the USA's geometry
+fc = NaturalEarth.naturalearth("admin_0_countries", 10)
+usa_multipoly = fc.geometry[findfirst(==("United States of America"), fc.NAME)] |> x -> GI.convert(LG, x) |> LG.makeValid |> GO.tuples
+include(joinpath(dirname(dirname(pathof(GO))), "test", "data", "polygon_generation.jl"))
+
+usa_poly = GI.getgeom(usa_multipoly, findmax(GO.area.(GI.getgeom(usa_multipoly)))[2]) # isolate the poly with the most area
+usa_centroid = GO.centroid(usa_poly)
+usa_reflected = GO.transform(Translation(usa_centroid...)  LinearMap(Makie.rotmatrix2d(π))  Translation((-).(usa_centroid)...), usa_poly)
+f, a, p = plot(usa_poly; label = "Original", axis = (; aspect = DataAspect()))#; plot!(usa_reflected; label = "Reflected")

This is the complex polygon we'll be benchmarking.

julia
simplify_suite = BenchmarkGroup(["Simplify"])
+singlepoly_suite = BenchmarkGroup(["Polygon", "title:Polygon simplify", "subtitle:Random blob"])
+
+include(joinpath(dirname(dirname(pathof(GO))), "test", "data", "polygon_generation.jl"))
+
+for n_verts in round.(Int, exp10.(LinRange(log10(10), log10(10_000), 10)))
+    geom = GI.Wrappers.Polygon(generate_random_poly(0, 0, n_verts, 2, 0.2, 0.3))
+    geom_lg, geom_go = lg_and_go(LG.makeValid(GI.convert(LG, geom)))
+    singlepoly_suite["GO-DP"][GI.npoint(geom)] = @be GO.simplify($geom_go; tol = 0.1) seconds=1
+    singlepoly_suite["GO-VW"][GI.npoint(geom)] = @be GO.simplify($(GO.VisvalingamWhyatt(; tol = 0.1)), $geom_go) seconds=1
+    singlepoly_suite["GO-RD"][GI.npoint(geom)] = @be GO.simplify($(GO.RadialDistance(; tol = 0.1)), $geom_go) seconds=1
+    singlepoly_suite["LibGEOS"][GI.npoint(geom)] = @be LG.simplify($geom_lg, 0.1) seconds=1
+end
+
+plot_trials(singlepoly_suite; legend_position=(1, 1, TopRight()), legend_valign = -2, legend_halign = 1.2, legend_orientation = :horizontal)

julia
multipoly_suite = BenchmarkGroup(["MultiPolygon", "title:Multipolygon simplify", "subtitle:USA multipolygon"])
+
+for frac in exp10.(LinRange(log10(0.3), log10(1), 6)) # TODO: this example isn't the best.  How can we get this better?
+    geom = GO.simplify(usa_multipoly; ratio = frac)
+    geom_lg, geom_go = lg_and_go(geom)
+    _tol = 0.001
+    multipoly_suite["GO-DP"][GI.npoint(geom)] = @be GO.simplify($geom_go; tol = $_tol) seconds=1
+    # multipoly_suite["GO-VW"][GI.npoint(geom)] = @be GO.simplify($(GO.VisvalingamWhyatt(; tol = $_tol)), $geom_go) seconds=1
+    multipoly_suite["GO-RD"][GI.npoint(geom)] = @be GO.simplify($(GO.RadialDistance(; tol = _tol)), $geom_go) seconds=1
+    multipoly_suite["LibGEOS"][GI.npoint(geom)] = @be LG.simplify($geom_lg, $_tol) seconds=1
+    println("""
+    For $(GI.npoint(geom)) points, the algorithms generated polygons with the following number of vertices:
+    GO-DP : $(GI.npoint( GO.simplify(geom_go; tol = _tol)))
+    GO-RD : $(GI.npoint( GO.simplify((GO.RadialDistance(; tol = _tol)), geom_go)))
+    LGeos : $(GI.npoint( LG.simplify(geom_lg, _tol)))
+    """)
+    # GO-VW : $(GI.npoint( GO.simplify((GO.VisvalingamWhyatt(; tol = _tol)), geom_go)))
+    println()
+end
+plot_trials(multipoly_suite)

julia
export simplify, VisvalingamWhyatt, DouglasPeucker, RadialDistance
+
+const _SIMPLIFY_TARGET = TraitTarget{Union{GI.PolygonTrait, GI.AbstractCurveTrait, GI.MultiPointTrait, GI.PointTrait}}()
+const MIN_POINTS = 3
+const SIMPLIFY_ALG_KEYWORDS = """
+# Keywords
+
+- `ratio`: the fraction of points that should remain after `simplify`.
+    Useful as it will generalise for large collections of objects.
+- `number`: the number of points that should remain after `simplify`.
+    Less useful for large collections of mixed size objects.
+"""
+const DOUGLAS_PEUCKER_KEYWORDS = """
+$SIMPLIFY_ALG_KEYWORDS
+- `tol`: the minimum distance a point will be from the line
+    joining its neighboring points.
+"""
+
+"""
+    abstract type SimplifyAlg
+
+Abstract type for simplification algorithms.
+
+# API
+
+For now, the algorithm must hold the `number`, `ratio` and `tol` properties.
+
+Simplification algorithm types can hook into the interface by implementing
+the `_simplify(trait, alg, geom)` methods for whichever traits are necessary.
+"""
+abstract type SimplifyAlg end
+
+"""
+    simplify(obj; kw...)
+    simplify(::SimplifyAlg, obj; kw...)
+
+Simplify a geometry, feature, feature collection,
+or nested vectors or a table of these.
+
+`RadialDistance`, `DouglasPeucker`, or
+`VisvalingamWhyatt` algorithms are available,
+listed in order of increasing quality but decreasing performance.
+
+`PoinTrait` and `MultiPointTrait` are returned unchanged.
+
+The default behaviour is `simplify(DouglasPeucker(; kw...), obj)`.
+Pass in other `SimplifyAlg` to use other algorithms.

Keywords

julia
- `prefilter_alg`: `SimplifyAlg` algorithm used to pre-filter object before
+    using primary filtering algorithm.
+$APPLY_KEYWORDS
+
+
+Keywords for DouglasPeucker are allowed when no algorithm is specified:
+
+$DOUGLAS_PEUCKER_KEYWORDS

Example

julia
Simplify a polygon to have six points:
+
+```jldoctest
+import GeoInterface as GI
+import GeometryOps as GO
+
+poly = GI.Polygon([[
+    [-70.603637, -33.399918],
+    [-70.614624, -33.395332],
+    [-70.639343, -33.392466],
+    [-70.659942, -33.394759],
+    [-70.683975, -33.404504],
+    [-70.697021, -33.419406],
+    [-70.701141, -33.434306],
+    [-70.700454, -33.446339],
+    [-70.694274, -33.458369],
+    [-70.682601, -33.465816],
+    [-70.668869, -33.472117],
+    [-70.646209, -33.473835],
+    [-70.624923, -33.472117],
+    [-70.609817, -33.468107],
+    [-70.595397, -33.458369],
+    [-70.587158, -33.442901],
+    [-70.587158, -33.426283],
+    [-70.590591, -33.414248],
+    [-70.594711, -33.406224],
+    [-70.603637, -33.399918]]])
+
+simple = GO.simplify(poly; number=6)
+GI.npoint(simple)

output

julia
6
+```
+"""
+simplify(alg::SimplifyAlg, data; kw...) = _simplify(alg, data; kw...)
+simplify(alg::GEOS, data; kw...) = _simplify(alg, data; kw...)

Default algorithm is DouglasPeucker

julia
simplify(
+    data; prefilter_alg = nothing,
+    calc_extent=false, threaded=false, crs=nothing, kw...,
+ ) = _simplify(DouglasPeucker(; kw...), data; prefilter_alg, calc_extent, threaded, crs)
+
+
+#= For each algorithm, apply simplification to all curves, multipoints, and
+points, reconstructing everything else around them. =#
+function _simplify(alg::Union{SimplifyAlg, GEOS}, data; prefilter_alg=nothing, kw...)
+    simplifier(geom) = _simplify(GI.trait(geom), alg, geom; prefilter_alg)
+    return apply(simplifier, _SIMPLIFY_TARGET, data; kw...)
+end
+
+
+# For Point and MultiPoint traits we do nothing
+_simplify(::GI.PointTrait, alg, geom; kw...) = geom
+_simplify(::GI.MultiPointTrait, alg, geom; kw...) = geom
+
+# For curves, rings, and polygon we simplify
+function _simplify(
+    ::GI.AbstractCurveTrait, alg, geom;
+    prefilter_alg, preserve_endpoint = true,
+)
+    points = if isnothing(prefilter_alg)
+        tuple_points(geom)
+    else
+        _simplify(prefilter_alg, tuple_points(geom), preserve_endpoint)
+    end
+    return rebuild(geom, _simplify(alg, points, preserve_endpoint))
+end
+
+function _simplify(::GI.PolygonTrait, alg, geom;  kw...)
+    # Force treating children as LinearRing
+    simplifier(g) = _simplify(
+        GI.LinearRingTrait(), alg, g;
+        kw..., preserve_endpoint = false,
+    )
+    lrs = map(simplifier, GI.getgeom(geom))
+    return rebuild(geom, lrs)
+end

Simplify with RadialDistance Algorithm

julia
"""
+    RadialDistance <: SimplifyAlg
+
+Simplifies geometries by removing points less than
+`tol` distance from the line between its neighboring points.
+
+$SIMPLIFY_ALG_KEYWORDS
+- `tol`: the minimum distance between points.
+
+Note: user input `tol` is squared to avoid unnecessary computation in algorithm.
+"""
+@kwdef struct RadialDistance <: SimplifyAlg
+    number::Union{Int64,Nothing} = nothing
+    ratio::Union{Float64,Nothing} = nothing
+    tol::Union{Float64,Nothing} = nothing
+
+    function RadialDistance(number, ratio, tol)
+        _checkargs(number, ratio, tol)

square tolerance for reduced computation

julia
        tol = isnothing(tol) ? tol : tol^2
+        new(number, ratio, tol)
+    end
+end
+
+function _simplify(alg::RadialDistance, points::Vector, _)
+    previous = first(points)
+    distances = Array{Float64}(undef, length(points))
+    for i in eachindex(points)
+        point = points[i]
+        distances[i] = _squared_euclid_distance(Float64, point, previous)
+        previous = point
+    end
+    # Never remove the end points
+    distances[begin] = distances[end] = Inf
+    return _get_points(alg, points, distances)
+end

Simplify with DouglasPeucker Algorithm

julia
"""
+    DouglasPeucker <: SimplifyAlg
+
+    DouglasPeucker(; number, ratio, tol)
+
+Simplifies geometries by removing points below `tol`
+distance from the line between its neighboring points.
+
+$DOUGLAS_PEUCKER_KEYWORDS
+Note: user input `tol` is squared to avoid unnecessary computation in algorithm.
+"""
+@kwdef struct DouglasPeucker <: SimplifyAlg
+    number::Union{Int64,Nothing} = nothing
+    ratio::Union{Float64,Nothing} = nothing
+    tol::Union{Float64,Nothing} = nothing
+
+    function DouglasPeucker(number, ratio, tol)
+        _checkargs(number, ratio, tol)

square tolerance for reduced computation

julia
        tol = isnothing(tol) ? tol : tol^2
+        return new(number, ratio, tol)
+    end
+end
+
+#= Simplify using the DouglasPeucker algorithm - nice gif of process on wikipedia:
+(https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm). =#
+function _simplify(alg::DouglasPeucker, points::Vector, preserve_endpoint)
+    npoints = length(points)
+    npoints <= MIN_POINTS && return points

Determine stopping criteria

julia
    max_points = if !isnothing(alg.tol)
+        npoints
+    else
+        npts = !isnothing(alg.number) ? alg.number : max(3, round(Int, alg.ratio * npoints))
+        npts  npoints && return points
+        npts
+    end
+    max_tol = !isnothing(alg.tol) ? alg.tol : zero(Float64)

Set up queue

julia
    queue = Vector{Tuple{Int, Int, Int, Float64}}()
+    queue_idx, queue_dist = 0, zero(Float64)
+    len_queue = 0

Set up results vector

julia
    results = Vector{Int}(undef, max_points + (preserve_endpoint ? 0 : 1))
+    results[1], results[2] = 1, npoints

Loop through points until stopping criteria are fulfilled

julia
    i = 2  # already have first and last point added
+    start_idx, end_idx = 1, npoints
+    max_idx, max_dist = _find_max_squared_dist(points, start_idx, end_idx)
+    while i  min(MIN_POINTS + 1, max_points) || (i < max_points && max_dist > max_tol)

Add next point to results

julia
        i += 1
+        results[i] = max_idx

Determine which point to add next by checking left and right of point

julia
        left_idx, left_dist = _find_max_squared_dist(points, start_idx, max_idx)
+        right_idx, right_dist = _find_max_squared_dist(points, max_idx, end_idx)
+        left_vals = (start_idx, left_idx, max_idx, left_dist)
+        right_vals = (max_idx, right_idx, end_idx, right_dist)

Add and remove values from queue

julia
        if queue_dist > left_dist && queue_dist > right_dist

Value in queue is next value to add to results

julia
            start_idx, max_idx, end_idx, max_dist = queue[queue_idx]

Add left and/or right values to queue or delete used queue value

julia
            if left_dist > 0
+                queue[queue_idx] = left_vals
+                if right_dist > 0
+                    push!(queue, right_vals)
+                    len_queue += 1
+                end
+            elseif right_dist > 0
+                queue[queue_idx] = right_vals
+            else
+                deleteat!(queue, queue_idx)
+                len_queue -= 1
+            end

Determine new maximum queue value

julia
            queue_dist, queue_idx = !isempty(queue) ?
+                findmax(x -> x[4], queue) : (zero(Float64), 0)
+        elseif left_dist > right_dist  # use left value as next value to add to results
+            push!(queue, right_vals)  # add right value to queue
+            len_queue += 1
+            if right_dist > queue_dist
+                queue_dist = right_dist
+                queue_idx = len_queue
+            end
+            start_idx, max_idx, end_idx, max_dist = left_vals
+        else  # use right value as next value to add to results
+            push!(queue, left_vals)  # add left value to queue
+            len_queue += 1
+            if left_dist > queue_dist
+                queue_dist = left_dist
+                queue_idx = len_queue
+            end
+            start_idx, max_idx, end_idx, max_dist = right_vals
+        end
+    end
+    sorted_results = sort!(@view results[1:i])
+    if !preserve_endpoint && i > 3

Check start/endpoint distance to other points to see if it meets criteria

julia
        pre_pt, post_pt = points[sorted_results[end - 1]], points[sorted_results[2]]
+        endpt_dist = _squared_distance_line(Float64, points[1], pre_pt, post_pt)
+        if !isnothing(alg.tol)

Remove start point and replace with second point

julia
            if endpt_dist < max_tol
+                results[i] = results[2]
+                sorted_results = @view results[2:i]
+            end
+        else

Remove start point and add point with maximum distance still remaining

julia
            if endpt_dist < max_dist
+                insert!(results, searchsortedfirst(sorted_results, max_idx), max_idx)
+                results[i+1] = results[2]
+                sorted_results = @view results[2:i+1]
+            end
+        end
+    end
+    return points[sorted_results]
+end
+
+#= find maximum distance of any point between the start_idx and end_idx to the line formed
+by connecting the points at start_idx and end_idx. Note that the first index of maximum
+value will be used, which might cause differences in results from other algorithms.=#
+function _find_max_squared_dist(points, start_idx, end_idx)
+    max_idx = start_idx
+    max_dist = zero(Float64)
+    for i in (start_idx + 1):(end_idx - 1)
+        d = _squared_distance_line(Float64, points[i], points[start_idx], points[end_idx])
+        if d > max_dist
+            max_dist = d
+            max_idx = i
+        end
+    end
+    return max_idx, max_dist
+end

Simplify with VisvalingamWhyatt Algorithm

julia
"""
+    VisvalingamWhyatt <: SimplifyAlg
+
+    VisvalingamWhyatt(; kw...)
+
+Simplifies geometries by removing points below `tol`
+distance from the line between its neighboring points.
+
+$SIMPLIFY_ALG_KEYWORDS
+- `tol`: the minimum area of a triangle made with a point and
+    its neighboring points.
+Note: user input `tol` is doubled to avoid unnecessary computation in algorithm.
+"""
+@kwdef struct VisvalingamWhyatt <: SimplifyAlg
+    number::Union{Int,Nothing} = nothing
+    ratio::Union{Float64,Nothing} = nothing
+    tol::Union{Float64,Nothing} = nothing
+
+    function VisvalingamWhyatt(number, ratio, tol)
+        _checkargs(number, ratio, tol)

double tolerance for reduced computation

julia
        tol = isnothing(tol) ? tol : tol*2
+        return new(number, ratio, tol)
+    end
+end
+
+function _simplify(alg::VisvalingamWhyatt, points::Vector, _)
+    length(points) <= MIN_POINTS && return points
+    areas = _build_tolerances(_triangle_double_area, points)
+    return _get_points(alg, points, areas)
+end

Calculates double the area of a triangle given its vertices

julia
_triangle_double_area(p1, p2, p3) =
+    abs(p1[1] * (p2[2] - p3[2]) + p2[1] * (p3[2] - p1[2]) + p3[1] * (p1[2] - p2[2]))

Shared utils

julia
function _build_tolerances(f, points)
+    nmax = length(points)
+    real_tolerances = _flat_tolerances(f, points)
+
+    tolerances = copy(real_tolerances)
+    i = [n for n in 1:nmax]
+
+    this_tolerance, min_vert = findmin(tolerances)
+    _remove!(tolerances, min_vert)
+    deleteat!(i, min_vert)
+
+    while this_tolerance < Inf
+        skip = false
+
+        if min_vert < length(i)
+            right_tolerance = f(
+                points[i[min_vert - 1]],
+                points[i[min_vert]],
+                points[i[min_vert + 1]],
+            )
+            if right_tolerance <= this_tolerance
+                right_tolerance = this_tolerance
+                skip = min_vert == 1
+            end
+
+            real_tolerances[i[min_vert]] = right_tolerance
+            tolerances[min_vert] = right_tolerance
+        end
+
+        if min_vert > 2
+            left_tolerance = f(
+                points[i[min_vert - 2]],
+                points[i[min_vert - 1]],
+                points[i[min_vert]],
+            )
+            if left_tolerance <= this_tolerance
+                left_tolerance = this_tolerance
+                skip = min_vert == 2
+            end
+            real_tolerances[i[min_vert - 1]] = left_tolerance
+            tolerances[min_vert - 1] = left_tolerance
+        end
+
+        if !skip
+            min_vert = argmin(tolerances)
+        end
+        deleteat!(i, min_vert)
+        this_tolerance = tolerances[min_vert]
+        _remove!(tolerances, min_vert)
+    end
+
+    return real_tolerances
+end
+
+function tuple_points(geom)
+    points = Array{Tuple{Float64,Float64}}(undef, GI.npoint(geom))
+    for (i, p) in enumerate(GI.getpoint(geom))
+        points[i] = (GI.x(p), GI.y(p))
+    end
+    return points
+end
+
+function _get_points(alg, points, tolerances)
+    # This assumes that `alg` has the properties
+    # `tol`, `number`, and `ratio` available...
+    tol = alg.tol
+    number = alg.number
+    ratio = alg.ratio
+    bit_indices = if !isnothing(tol)
+        _tol_indices(alg.tol::Float64, points, tolerances)
+    elseif !isnothing(number)
+        _number_indices(alg.number::Int64, points, tolerances)
+    else
+        _ratio_indices(alg.ratio::Float64, points, tolerances)
+    end
+    return points[bit_indices]
+end
+
+function _tol_indices(tol, points, tolerances)
+    tolerances .>= tol
+end
+
+function _number_indices(n, points, tolerances)
+    tol = partialsort(tolerances, length(points) - n + 1)
+    bit_indices = _tol_indices(tol, points, tolerances)
+    nselected = sum(bit_indices)
+    # If there are multiple values exactly at `tol` we will get
+    # the wrong output length. So we need to remove some.
+    while nselected > n
+        min_tol = Inf
+        min_i = 0
+        for i in eachindex(bit_indices)
+            bit_indices[i] || continue
+            if tolerances[i] < min_tol
+                min_tol = tolerances[i]
+                min_i = i
+            end
+        end
+        nselected -= 1
+        bit_indices[min_i] = false
+    end
+    return bit_indices
+end
+
+function _ratio_indices(r, points, tolerances)
+    n = max(3, round(Int, r * length(points)))
+    return _number_indices(n, points, tolerances)
+end
+
+function _flat_tolerances(f, points)::Vector{Float64}
+    result = Vector{Float64}(undef, length(points))
+    result[1] = result[end] = Inf
+
+    for i in 2:length(result) - 1
+        result[i] = f(points[i-1], points[i], points[i+1])
+    end
+    return result
+end
+
+function _remove!(s, i)
+    for j in i:lastindex(s)-1
+        s[j] = s[j+1]
+    end
+end

Check SimplifyAlgs inputs to make sure they are valid for below algorithms

julia
function _checkargs(number, ratio, tol)
+    count(isnothing, (number, ratio, tol)) == 2 ||
+        error("Must provide one of `number`, `ratio` or `tol` keywords")
+    if !isnothing(number)
+        if number < MIN_POINTS
+            error("`number` must be $MIN_POINTS or larger. Got $number")
+        end
+    elseif !isnothing(ratio)
+        if ratio <= 0 || ratio > 1
+            error("`ratio` must be 0 < ratio <= 1. Got $ratio")
+        end
+    else  # !isnothing(tol)
+        if tol  0
+            error("`tol` must be a positive number. Got $tol")
+        end
+    end
+    return nothing
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/transformations/transform.html b/previews/PR195/source/transformations/transform.html new file mode 100644 index 000000000..934ff9f49 --- /dev/null +++ b/previews/PR195/source/transformations/transform.html @@ -0,0 +1,79 @@ + + + + + + Pointwise transformation | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Pointwise transformation

julia
"""
+    transform(f, obj)
+
+Apply a function `f` to all the points in `obj`.
+
+Points will be passed to `f` as an `SVector` to allow
+using CoordinateTransformations.jl and Rotations.jl
+without hassle.
+
+`SVector` is also a valid GeoInterface.jl point, so will
+work in all GeoInterface.jl methods.
+
+# Example
+
+```julia
+julia> import GeoInterface as GI
+
+julia> import GeometryOps as GO
+
+julia> geom = GI.Polygon([GI.LinearRing([(1, 2), (3, 4), (5, 6), (1, 2)]), GI.LinearRing([(3, 4), (5, 6), (6, 7), (3, 4)])]);
+
+julia> f = CoordinateTransformations.Translation(3.5, 1.5)
+Translation(3.5, 1.5)
+
+julia> GO.transform(f, geom)
+GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.Linea
+rRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}(StaticArraysCo
+re.SVector{2, Float64}[[4.5, 3.5], [6.5, 5.5], [8.5, 7.5], [4.5, 3.5]], nothing, nothing), GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}(StaticA
+rraysCore.SVector{2, Float64}[[6.5, 5.5], [8.5, 7.5], [9.5, 8.5], [6.5, 5.5]], nothing, nothing)], nothing, nothing)
+```
+
+With Rotations.jl you need to actually multiply the Rotation
+by the `SVector` point, which is easy using an anonymous function.
+
+```julia
+julia> using Rotations
+
+julia> GO.transform(p -> one(RotMatrix{2}) * p, geom)
+GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearR
+ing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}(StaticArraysCore.SVe
+ctor{2, Int64}[[2, 1], [4, 3], [6, 5], [2, 1]], nothing, nothing), GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Int64}}, Nothing, Nothing}(StaticArraysCore.SVector{2, Int64
+}[[4, 3], [6, 5], [7, 6], [4, 3]], nothing, nothing)], nothing, nothing)
+```
+"""
+function transform(f, geom; kw...)
+    if _is3d(geom)
+        return apply(PointTrait(), geom; kw...) do p
+            f(StaticArrays.SVector{3}((GI.x(p), GI.y(p), GI.z(p))))
+        end
+    else
+        return apply(PointTrait(), geom; kw...) do p
+            f(StaticArrays.SVector{2}((GI.x(p), GI.y(p))))
+        end
+    end
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/transformations/tuples.html b/previews/PR195/source/transformations/tuples.html new file mode 100644 index 000000000..6c5c0b8bb --- /dev/null +++ b/previews/PR195/source/transformations/tuples.html @@ -0,0 +1,43 @@ + + + + + + Tuple conversion | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Tuple conversion

julia
"""
+    tuples(obj)
+
+Convert all points in `obj` to `Tuple`s, wherever the are nested.
+
+Returns a similar object or collection of objects using GeoInterface.jl
+geometries wrapping `Tuple` points.

Keywords

julia
$APPLY_KEYWORDS
+"""
+function tuples(geom, ::Type{T} = Float64; kw...) where T
+    if _is3d(geom)
+        return apply(PointTrait(), geom; kw...) do p
+            (T(GI.x(p)), T(GI.y(p)), T(GI.z(p)))
+        end
+    else
+        return apply(PointTrait(), geom; kw...) do p
+            (T(GI.x(p)), T(GI.y(p)))
+        end
+    end
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/types.html b/previews/PR195/source/types.html new file mode 100644 index 000000000..008165ce3 --- /dev/null +++ b/previews/PR195/source/types.html @@ -0,0 +1,91 @@ + + + + + + Types | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Types

This file defines some fundamental types used in GeometryOps.

Warning

Unlike in other Julia packages, only some types are defined in this file, not all. This is because we define types in the files where they are used, to make it easier to understand the code.

julia
export TraitTarget, GEOS

TraitTarget

This struct holds a trait parameter or a union of trait parameters. It's essentially a way to construct unions.

julia
"""
+    TraitTarget{T}
+
+This struct holds a trait parameter or a union of trait parameters.
+
+It is primarily used for dispatch into methods which select trait levels,
+like `apply`, or as a parameter to `target`.
+
+# Constructors
+```julia
+TraitTarget(GI.PointTrait())
+TraitTarget(GI.LineStringTrait(), GI.LinearRingTrait()) # and other traits as you may like
+TraitTarget(TraitTarget(...))

There are also type based constructors available, but that's not advised.

julia
TraitTarget(GI.PointTrait)
+TraitTarget(Union{GI.LineStringTrait, GI.LinearRingTrait})

etc.

julia
```
+
+"""
+struct TraitTarget{T} end
+TraitTarget(::Type{T}) where T = TraitTarget{T}()
+TraitTarget(::T) where T<:GI.AbstractTrait = TraitTarget{T}()
+TraitTarget(::TraitTarget{T}) where T = TraitTarget{T}()
+TraitTarget(::Type{<:TraitTarget{T}}) where T = TraitTarget{T}()
+TraitTarget(traits::GI.AbstractTrait...) = TraitTarget{Union{map(typeof, traits)...}}()
+
+
+Base.in(::Trait, ::TraitTarget{Target}) where {Trait <: GI.AbstractTrait, Target} = Trait <: Target

BoolsAsTypes

In apply and applyreduce, we pass threading and calc_extent as types, not simple boolean values.

This is to help compilation - with a type to hold on to, it's easier for the compiler to separate threaded and non-threaded code paths.

Note that if we didn't include the parent abstract type, this would have been really type unstable, since the compiler couldn't tell what would be returned!

We had to add the type annotation on the _booltype(::Bool) method for this reason as well.

TODO: should we switch to Static.jl?

julia
abstract type BoolsAsTypes end
+struct _True <: BoolsAsTypes end
+struct _False <: BoolsAsTypes end
+
+@inline _booltype(x::Bool)::BoolsAsTypes = x ? _True() : _False()
+@inline _booltype(x::BoolsAsTypes)::BoolsAsTypes = x

GEOS

GEOS is a struct which instructs the method it's passed to as an algorithm to use the appropriate GEOS function via LibGEOS.jl for the operation.

It's generally a lot slower than the native Julia implementations, but it's useful for two reasons:

  1. Functionality which doesn't exist in GeometryOps can be accessed through the GeometryOps API, but use GEOS in the backend until someone implements a native Julia version.

  2. It's a good way to test the correctness of the native implementations.

julia
"""
+    GEOS(; params...)
+
+A struct which instructs the method it's passed to as an algorithm
+to use the appropriate GEOS function via `LibGEOS.jl` for the operation.
+
+Dispatch is generally carried out using the names of the keyword arguments.
+For example, `segmentize` will only accept a `GEOS` struct with only a
+`max_distance` keyword, and no other.
+
+It's generally a lot slower than the native Julia implementations, since
+it must convert to the LibGEOS implementation and back - so be warned!
+"""
+struct GEOS
+    params::NamedTuple
+end
+
+function GEOS(; params...)
+    nt = NamedTuple(params)
+    return GEOS(nt)
+end

These are definitions for convenience, so we don't have to type out alg.params every time.

julia
Base.get(alg::GEOS, key, value) = Base.get(alg.params, key, value)
+Base.get(f::Function, alg::GEOS, key) = Base.get(f, alg.params, key)
+
+"""
+    enforce(alg::GO.GEOS, kw::Symbol, f)
+
+Enforce the presence of a keyword argument in a `GEOS` algorithm, and return `alg.params[kw]`.
+
+Throws an error if the key is not present, and mentions `f` in the error message (since there isn't
+a good way to get the name of the function that called this method).
+"""
+function enforce(alg::GEOS, kw::Symbol, f)
+    if haskey(alg.params, kw)
+        return alg.params[kw]
+    else
+        error("$(f) requires a `$(kw)` keyword argument to the `GEOS` algorithm, which was not provided.")
+    end
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/source/utils.html b/previews/PR195/source/utils.html new file mode 100644 index 000000000..4d1a90b7f --- /dev/null +++ b/previews/PR195/source/utils.html @@ -0,0 +1,144 @@ + + + + + + Utility functions | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Utility functions

julia
_is3d(geom)::Bool = _is3d(GI.trait(geom), geom)
+_is3d(::GI.AbstractGeometryTrait, geom)::Bool = GI.is3d(geom)
+_is3d(::GI.FeatureTrait, feature)::Bool = _is3d(GI.geometry(feature))
+_is3d(::GI.FeatureCollectionTrait, fc)::Bool = _is3d(GI.getfeature(fc, 1))
+_is3d(::Nothing, geom)::Bool = _is3d(first(geom)) # Otherwise step into an itererable
+
+_npoint(x) = _npoint(trait(x), x)
+_npoint(::Nothing, xs::AbstractArray) = sum(_npoint, xs)
+_npoint(::GI.FeatureCollectionTrait, fc) = sum(_npoint, GI.getfeature(fc))
+_npoint(::GI.FeatureTrait, f) = _npoint(GI.geometry(f))
+_npoint(::GI.AbstractGeometryTrait, x) = GI.npoint(trait(x), x)
+
+_nedge(x) = _nedge(trait(x), x)
+_nedge(::Nothing, xs::AbstractArray) = sum(_nedge, xs)
+_nedge(::GI.FeatureCollectionTrait, fc) = sum(_nedge, GI.getfeature(fc))
+_nedge(::GI.FeatureTrait, f) = _nedge(GI.geometry(f))
+function _nedge(::GI.AbstractGeometryTrait, x)
+    n = 0
+    for g in GI.getgeom(x)
+        n += _nedge(g)
+    end
+    return n
+end
+_nedge(::GI.AbstractCurveTrait, x) = GI.npoint(x) - 1
+_nedge(::GI.PointTrait, x) = error("Cant get edges from points")
+
+
+"""
+    polygon_to_line(poly::Polygon)
+
+Converts a Polygon to LineString or MultiLineString

Examples

julia
```jldoctest
+import GeometryOps as GO, GeoInterface as GI
+
+poly = GI.Polygon([[(-2.275543, 53.464547), (-2.275543, 53.489271), (-2.215118, 53.489271), (-2.215118, 53.464547), (-2.275543, 53.464547)]])
+GO.polygon_to_line(poly)

output

julia
GeoInterface.Wrappers.LineString{false, false, Vector{Tuple{Float64, Float64}}, Nothing, Nothing}([(-2.275543, 53.464547), (-2.275543, 53.489271), (-2.215118, 53.489271), (-2.215118, 53.464547), (-2.275543, 53.464547)], nothing, nothing)
+```
+"""
+function polygon_to_line(poly)
+    @assert GI.trait(poly) isa PolygonTrait
+    GI.ngeom(poly) > 1 && return GI.MultiLineString(collect(GI.getgeom(poly)))
+    return GI.LineString(collect(GI.getgeom(GI.getgeom(poly, 1))))
+end
+
+
+"""
+    to_edges()
+
+Convert any geometry or collection of geometries into a flat
+vector of `Tuple{Tuple{Float64,Float64},Tuple{Float64,Float64}}` edges.
+"""
+function to_edges(x, ::Type{T} = Float64) where T
+    edges = Vector{Edge{T}}(undef, _nedge(x))
+    _to_edges!(edges, x, 1)
+    return edges
+end
+
+_to_edges!(edges::Vector, x, n) = _to_edges!(edges, trait(x), x, n)
+function _to_edges!(edges::Vector, ::GI.FeatureCollectionTrait, fc, n)
+    for f in GI.getfeature(fc)
+        n = _to_edges!(edges, f, n)
+    end
+end
+_to_edges!(edges::Vector, ::GI.FeatureTrait, f, n) = _to_edges!(edges, GI.geometry(f), n)
+function _to_edges!(edges::Vector, ::GI.AbstractGeometryTrait, fc, n)
+    for f in GI.getgeom(fc)
+        n = _to_edges!(edges, f, n)
+    end
+end
+function _to_edges!(edges::Vector, ::GI.AbstractCurveTrait, geom, n)
+    p1 = GI.getpoint(geom, 1)
+    p1x, p1y = GI.x(p1), GI.y(p1)
+    for i in 2:GI.npoint(geom)
+        p2 = GI.getpoint(geom, i)
+        p2x, p2y = GI.x(p2), GI.y(p2)
+        edges[n] = (p1x, p1y), (p2x, p2y)
+        p1x, p1y = p2x, p2y
+        n += 1
+    end
+    return n
+end
+
+_tuple_point(p) = GI.x(p), GI.y(p)
+_tuple_point(p, ::Type{T}) where T = T(GI.x(p)), T(GI.y(p))
+
+function to_extent(edges::Vector{Edge})
+    x, y = extrema(first, edges)
+    Extents.Extent(X=x, Y=y)
+end
+
+function to_points(x, ::Type{T} = Float64) where T
+    points = Vector{TuplePoint{T}}(undef, _npoint(x))
+    _to_points!(points, x, 1)
+    return points
+end
+
+_to_points!(points::Vector, x, n) = _to_points!(points, trait(x), x, n)
+function _to_points!(points::Vector, ::FeatureCollectionTrait, fc, n)
+    for f in GI.getfeature(fc)
+        n = _to_points!(points, f, n)
+    end
+end
+_to_points!(points::Vector, ::FeatureTrait, f, n) = _to_points!(points, GI.geometry(f), n)
+function _to_points!(points::Vector, ::AbstractGeometryTrait, fc, n)
+    for f in GI.getgeom(fc)
+        n = _to_points!(points, f, n)
+    end
+end
+function _to_points!(points::Vector, ::Union{AbstractCurveTrait,MultiPointTrait}, geom, n)
+    n = 0
+    for p in GI.getpoint(geom)
+        n += 1
+        points[n] = _tuple_point(p)
+    end
+    return n
+end
+
+function _point_in_extent(p, extent::Extents.Extent)
+    (x1, x2), (y1, y2) = extent.X, extent.Y
+    return x1 ≤ GI.x(p) ≤ x2 && y1 ≤ GI.y(p) ≤ y2
+end

This page was generated using Literate.jl.

+ + + + \ No newline at end of file diff --git a/previews/PR195/tutorials/creating_geometry.html b/previews/PR195/tutorials/creating_geometry.html new file mode 100644 index 000000000..ac38334f9 --- /dev/null +++ b/previews/PR195/tutorials/creating_geometry.html @@ -0,0 +1,113 @@ + + + + + + Creating Geometry | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Creating Geometry

In this tutorial, we're going to:

  1. Create and plot geometries

  2. Plot geometries on a map using GeoMakie and coordinate reference system (CRS)

  3. Create geospatial geometries with embedded coordinate reference system information

  4. Assign attributes to geospatial geometries

  5. Save geospatial geometries to common geospatial file formats

First, we load some required packages.

julia
# Geospatial packages from Julia
+import GeoInterface as GI
+import GeometryOps as GO
+import GeoFormatTypes as GFT
+using GeoJSON # to load some data
+# Packages for coordinate transformation and projection
+import CoordinateTransformations
+import Proj
+# Plotting
+using CairoMakie
+using GeoMakie

Creating and plotting geometries

Let's start by making a single Point.

julia
point = GI.Point(0, 0)
GeoInterface.Wrappers.Point{false, false, Tuple{Int64, Int64}, Nothing}((0, 0), nothing)

Now, let's plot our point.

julia
fig, ax, plt = plot(point)

Let's create a set of points, and have a bit more fun with plotting.

julia
x = [-5, 0, 5, 0];
+y = [0, -5, 0, 5];
+points = GI.Point.(zip(x,y));
+plot!(ax, points; marker = '✈', markersize = 30)
+fig

Points can be combined into a single MultiPoint geometry.

julia
x = [-5, -5, 5, 5];
+y = [-5, 5, 5, -5];
+multipoint = GI.MultiPoint(GI.Point.(zip(x, y)));
+plot!(ax, multipoint; marker = '☁', markersize = 30)
+fig

Let's create a LineString connecting two points.

julia
p1 = GI.Point.(-5, 0);
+p2 = GI.Point.(5, 0);
+line = GI.LineString([p1,p2])
+plot!(ax, line; color = :red)
+fig

Now, let's create a line connecting multiple points (i.e. a LineString). This time we get a bit more fancy with point creation.

julia
r = 2;
+k = 10;
+ϴ = 0:0.01:2pi;
+x = r .* (k + 1) .* cos.(ϴ) .- r .* cos.((k + 1) .* ϴ);
+y = r .* (k + 1) .* sin.(ϴ) .- r .* sin.((k + 1) .* ϴ);
+lines = GI.LineString(GI.Point.(zip(x,y)));
+plot!(ax, lines; linewidth = 5)
+fig

We can also create a single LinearRing trait, the building block of a polygon. A LinearRing is simply a LineString with the same beginning and endpoint, i.e., an arbitrary closed shape composed of point pairs.

A LinearRing is composed of a series of points.

julia
ring1 = GI.LinearRing(GI.getpoint(lines));
GeoInterface.Wrappers.LinearRing{false, false, Vector{GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}[GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.0, 0.0), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.010987813253244, 0.0004397316773170068), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.043805248003498, 0.0035114210915891397), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.098016055420953, 0.011814947665167774), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.172899020101585, 0.027886421973952302), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.267456684570245, 0.05416726609360478), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.380427415579764, 0.09297443860091348), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.51030066635026, 0.1464721641710074), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.655335250260467, 0.21664550952386064), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.813580405100698, 0.30527612515520186), nothing)  …  GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.866418416586406, -0.3376428491230612), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.704405820024185, -0.24279488312757858), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.55494217175954, -0.16692537029320365), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.420040147662014, -0.10832215707812454), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.30151010318639, -0.0650624499034016), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.200938172182195, -0.03503632062070827), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.119667078681967, -0.01597247419241532), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.058779893613323, -0.005465967083412071), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.019086932781654, -0.0010075412835199304), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.001115954499138, -1.4219350464667047e-5), nothing)], nothing, nothing)

Now, let's make the LinearRing into a Polygon.

julia
polygon1 = GI.Polygon([ring1]);
GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearRing{false, false, Vector{GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}[GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.0, 0.0), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.010987813253244, 0.0004397316773170068), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.043805248003498, 0.0035114210915891397), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.098016055420953, 0.011814947665167774), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.172899020101585, 0.027886421973952302), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.267456684570245, 0.05416726609360478), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.380427415579764, 0.09297443860091348), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.51030066635026, 0.1464721641710074), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.655335250260467, 0.21664550952386064), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.813580405100698, 0.30527612515520186), nothing)  …  GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.866418416586406, -0.3376428491230612), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.704405820024185, -0.24279488312757858), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.55494217175954, -0.16692537029320365), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.420040147662014, -0.10832215707812454), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.30151010318639, -0.0650624499034016), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.200938172182195, -0.03503632062070827), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.119667078681967, -0.01597247419241532), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.058779893613323, -0.005465967083412071), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.019086932781654, -0.0010075412835199304), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.001115954499138, -1.4219350464667047e-5), nothing)], nothing, nothing)], nothing, nothing)

Now, we can use GeometryOps and CoordinateTransformations to shift polygon1 up, to avoid plotting over our earlier results. This is done through the GeometryOps.transform function.

julia
xoffset = 0.;
+yoffset = 50.;
+f = CoordinateTransformations.Translation(xoffset, yoffset);
+polygon1 = GO.transform(f, polygon1);
+plot!(polygon1)
+fig

Polygons can contain "holes". The first LinearRing in a polygon is the exterior, and all subsequent LinearRings are treated as holes in the leading LinearRing.

GeoInterface offers the GI.getexterior(poly) and GI.gethole(poly) methods to get the exterior ring and an iterable of holes, respectively.

julia
hole = GI.LinearRing(GI.getpoint(multipoint))
+polygon2 = GI.Polygon([ring1, hole])
GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, T, Nothing, Nothing} where T}, Nothing, Nothing}(GeoInterface.Wrappers.LinearRing{false, false, T, Nothing, Nothing} where T[GeoInterface.Wrappers.LinearRing{false, false, Vector{GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}[GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.0, 0.0), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.010987813253244, 0.0004397316773170068), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.043805248003498, 0.0035114210915891397), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.098016055420953, 0.011814947665167774), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.172899020101585, 0.027886421973952302), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.267456684570245, 0.05416726609360478), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.380427415579764, 0.09297443860091348), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.51030066635026, 0.1464721641710074), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.655335250260467, 0.21664550952386064), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.813580405100698, 0.30527612515520186), nothing)  …  GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.866418416586406, -0.3376428491230612), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.704405820024185, -0.24279488312757858), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.55494217175954, -0.16692537029320365), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.420040147662014, -0.10832215707812454), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.30151010318639, -0.0650624499034016), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.200938172182195, -0.03503632062070827), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.119667078681967, -0.01597247419241532), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.058779893613323, -0.005465967083412071), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.019086932781654, -0.0010075412835199304), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((20.001115954499138, -1.4219350464667047e-5), nothing)], nothing, nothing), GeoInterface.Wrappers.LinearRing{false, false, Vector{GeoInterface.Wrappers.Point{false, false, Tuple{Int64, Int64}, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.Point{false, false, Tuple{Int64, Int64}, Nothing}[GeoInterface.Wrappers.Point{false, false, Tuple{Int64, Int64}, Nothing}((-5, -5), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Int64, Int64}, Nothing}((-5, 5), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Int64, Int64}, Nothing}((5, 5), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Int64, Int64}, Nothing}((5, -5), nothing)], nothing, nothing)], nothing, nothing)

Shift polygon2 to the right, to avoid plotting over our earlier results.

julia
xoffset = 50.;
+yoffset = 0.;
+f = CoordinateTransformations.Translation(xoffset, yoffset);
+polygon2 = GO.transform(f, polygon2);
+plot!(polygon2)
+fig

Polygons can also be grouped together as a MultiPolygon.

julia
r = 5;
+x = cos.(reverse(ϴ)) .* r .+ xoffset;
+y = sin.(reverse(ϴ)) .* r .+ yoffset;
+ring2 =  GI.LinearRing(GI.Point.(zip(x,y)));
+polygon3 = GI.Polygon([ring2]);
+multipolygon = GI.MultiPolygon([polygon2, polygon3])
GeoInterface.Wrappers.MultiPolygon{false, false, Vector{GeoInterface.Wrappers.Polygon{false, false, _A, Nothing, Nothing} where _A}, Nothing, Nothing}(GeoInterface.Wrappers.Polygon{false, false, _A, Nothing, Nothing} where _A[GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}(StaticArraysCore.SVector{2, Float64}[[70.0, 0.0], [70.01098781325325, 0.0004397316773170068], [70.0438052480035, 0.0035114210915891397], [70.09801605542096, 0.011814947665167774], [70.17289902010158, 0.027886421973952302], [70.26745668457025, 0.05416726609360478], [70.38042741557976, 0.09297443860091348], [70.51030066635026, 0.1464721641710074], [70.65533525026046, 0.21664550952386064], [70.8135804051007, 0.30527612515520186]  …  [70.86641841658641, -0.3376428491230612], [70.70440582002419, -0.24279488312757858], [70.55494217175954, -0.16692537029320365], [70.42004014766201, -0.10832215707812454], [70.30151010318639, -0.0650624499034016], [70.20093817218219, -0.03503632062070827], [70.11966707868197, -0.01597247419241532], [70.05877989361332, -0.005465967083412071], [70.01908693278165, -0.0010075412835199304], [70.00111595449914, -1.4219350464667047e-5]], nothing, nothing), GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, Nothing}(StaticArraysCore.SVector{2, Float64}[[45.0, -5.0], [45.0, 5.0], [55.0, 5.0], [55.0, -5.0]], nothing, nothing)], nothing, nothing), GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearRing{false, false, Vector{GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}[GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.999974634566875, -0.01592650896568995), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.999565375483215, -0.06592462566760626), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.99865616402829, -0.11591614996189725), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.997247091122496, -0.16589608273778408), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.99533829767195, -0.2158594260436434), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.99292997455441, -0.2658011835867806), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.990022362600165, -0.31571636123306385), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.98661575256801, -0.3655999675063154), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.98271048511609, -0.41544701408748197), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.9783069507679, -0.46525251631344455), nothing)  …  GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.97976366505997, 0.4493927459900552), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.9840085315131, 0.3995734698458635), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.9877550012664, 0.3497142366876638), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.991002699676024, 0.299820032397223), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.99375130197483, 0.24989584635339165), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.99600053330489, 0.1999466709331708), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.997750168744936, 0.1499775010124783), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.99900003333289, 0.0999933334666654), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((54.999750002083324, 0.049999166670833324), nothing), GeoInterface.Wrappers.Point{false, false, Tuple{Float64, Float64}, Nothing}((55.0, 0.0), nothing)], nothing, nothing)], nothing, nothing)], nothing, nothing)

Shift multipolygon up, to avoid plotting over our earlier results.

julia
xoffset = 0.;
+yoffset = 50.;
+f = CoordinateTransformations.Translation(xoffset, yoffset);
+multipolygon = GO.transform(f, multipolygon);
+plot!(multipolygon)
+fig

Great, now we can make Points, MultiPoints, Lines, LineStrings, Polygons (with holes), and MultiPolygons and modify them using [CoordinateTransformations] and [GeometryOps].

Plot geometries on a map using GeoMakie and coordinate reference system (CRS)

In geospatial sciences we often have data in one Coordinate Reference System (CRS) (source) and would like to display it in different (destination) CRS. GeoMakie allows us to do this by automatically projecting from source to destination CRS.

Here, our source CRS is common geographic (i.e. coordinates of latitude and longitude), WGS84.

julia
source_crs1 = GFT.EPSG(4326)
GeoFormatTypes.EPSG{1}((4326,))

Now let's pick a destination CRS for displaying our map. Here we'll pick natearth2.

julia
destination_crs = "+proj=natearth2"
"+proj=natearth2"

Let's add land area for context. First, download and open the Natural Earth global land polygons at 110 m resolution.GeoMakie ships with this particular dataset, so we will access it from there.

julia
land_path = GeoMakie.assetpath("ne_110m_land.geojson")
"/home/runner/.julia/packages/GeoMakie/2upVC/assets/ne_110m_land.geojson"

Note

Natural Earth has lots of other datasets, and there is a Julia package that provides an interface to it called NaturalEarth.jl.

Read the land MultiPolygons as a GeoJSON.FeatureCollection.

julia
land_geo = GeoJSON.read(land_path)
FeatureCollection with 127 Features

We then need to create a figure with a GeoAxis that can handle the projection between source and destination CRS. For GeoMakie, source is the CRS of the input and dest is the CRS you want to visualize in.

julia
fig = Figure(size=(1000, 500));
+ga = GeoAxis(
+    fig[1, 1];
+    source = source_crs1,
+    dest = destination_crs,
+    xticklabelsvisible = false,
+    yticklabelsvisible = false,
+);

Plot land for context.

julia
poly!(ga, land_geo, color=:black)
+fig

Now let's plot a Polygon like before, but this time with a CRS that differs from our source data

julia
plot!(multipolygon; color = :green)
+fig

But what if we want to plot geometries with a different source CRS on the same figure?

To show how to do this let's create a geometry with coordinates in UTM (Universal Transverse Mercator) zone 10N EPSG:32610.

julia
source_crs2 = GFT.EPSG(32610)
GeoFormatTypes.EPSG{1}((32610,))

Create a polygon (we're working in meters now, not latitude and longitude)

julia
r = 1000000;
+ϴ = 0:0.01:2pi;
+x = r .* cos.(ϴ).^3 .+ 500000;
+y = r .* sin.(ϴ) .^ 3 .+5000000;
629-element Vector{Float64}:
+ 5.0e6
+ 5.0e6
+ 5.00001e6
+
+ 5.0e6
+ 5.0e6

Now create a LinearRing from Points

julia
ring3 = GI.LinearRing(Point.(zip(x, y)))
GeoInterface.Wrappers.LinearRing{false, false, Vector{Point{2, Float64}}, Nothing, Nothing}(Point{2, Float64}[[1.5e6, 5.0e6], [1.4998500087497458e6, 5.000000999950001e6], [1.4994001399837343e6, 5.000007998400139e6], [1.4986507085647392e6, 5.000026987852369e6], [1.4976022389592e6, 5.000063948817746e6], [1.4962554647802354e6, 5.000124843834609e6], [1.4946113281484335e6, 5.000215611503127e6], [1.4926709788709967e6, 5.000342160541625e6], [1.4904357734399722e6, 5.000510363870095e6], [1.4879072738504685e6, 5.0007260527263e6]  …  [1.4870405593989636e6, 4.999194331880103e6], [1.4896621210021754e6, 4.999426363321033e6], [1.491990928929295e6, 4.999609061508909e6], [1.4940253560034204e6, 4.999748243174828e6], [1.4957639801366436e6, 4.999849768598615e6], [1.497205585568957e6, 4.999919535736425e6], [1.4983491639274692e6, 4.999963474314044e6], [1.4991939151049731e6, 4.999987539891298e6], [1.4997392479570867e6, 4.999997707902938e6], [1.499984780817334e6, 4.999999967681458e6]], nothing, nothing)

Now create a Polygon from the LineRing

julia
polygon3 = GI.Polygon([ring3])
GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Point{2, Float64}}, Nothing, Nothing}}, Nothing, Nothing}(GeoInterface.Wrappers.LinearRing{false, false, Vector{Point{2, Float64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{Point{2, Float64}}, Nothing, Nothing}(Point{2, Float64}[[1.5e6, 5.0e6], [1.4998500087497458e6, 5.000000999950001e6], [1.4994001399837343e6, 5.000007998400139e6], [1.4986507085647392e6, 5.000026987852369e6], [1.4976022389592e6, 5.000063948817746e6], [1.4962554647802354e6, 5.000124843834609e6], [1.4946113281484335e6, 5.000215611503127e6], [1.4926709788709967e6, 5.000342160541625e6], [1.4904357734399722e6, 5.000510363870095e6], [1.4879072738504685e6, 5.0007260527263e6]  …  [1.4870405593989636e6, 4.999194331880103e6], [1.4896621210021754e6, 4.999426363321033e6], [1.491990928929295e6, 4.999609061508909e6], [1.4940253560034204e6, 4.999748243174828e6], [1.4957639801366436e6, 4.999849768598615e6], [1.497205585568957e6, 4.999919535736425e6], [1.4983491639274692e6, 4.999963474314044e6], [1.4991939151049731e6, 4.999987539891298e6], [1.4997392479570867e6, 4.999997707902938e6], [1.499984780817334e6, 4.999999967681458e6]], nothing, nothing)], nothing, nothing)

Now plot on the existing GeoAxis.

Note

The keyword argument source is used to specify the source CRS of that particular plot, when plotting on an existing GeoAxis.

julia
plot!(ga,polygon3; color=:red, source = source_crs2)
+fig

Create geospatial geometries with embedded coordinate reference system information

Great, we can make geometries and plot them on a map... now let's export the data to common geospatial data formats. To do this we now need to create geometries with embedded CRS information, making it a geospatial geometry. All that's needed is to include ; crs = crs as a keyword argument when constructing the geometry.

Let's do this for a new Polygon

julia
r = 3;
+k = 7;
+ϴ = 0:0.01:2pi;
+x = r .* (k + 1) .* cos.(ϴ) .- r .* cos.((k + 1) .* ϴ);
+y = r .* (k + 1) .* sin.(ϴ) .- r .* sin.((k + 1) .* ϴ);
+ring4 = GI.LinearRing(Point.(zip(x, y)))
GeoInterface.Wrappers.LinearRing{false, false, Vector{Point{2, Float64}}, Nothing, Nothing}(Point{2, Float64}[[21.0, 0.0], [21.00839489109211, 0.00025191811248184703], [21.033518309870985, 0.0020133807972559925], [21.075186885419612, 0.006784125578492062], [21.13309630561615, 0.016044338630866517], [21.206823267470536, 0.031245035570328428], [21.29582819010705, 0.053798628882221644], [21.39945867303846, 0.08506974233813636], [21.516953677609987, 0.12636633117296836], [21.64744840486518, 0.17893116483784577]  …  [21.69159119078359, -0.19823293781563178], [21.557153362189904, -0.14182952335952814], [21.43541888381864, -0.09707519809793252], [21.327284472232776, -0.06274967861547665], [21.233544778745394, -0.03756486776283019], [21.15488729606723, -0.020173244847778715], [21.091887951911644, -0.0091766360295773], [21.045007417743918, -0.0031353088009582475], [21.01458815628695, -0.0005773323690041465], [21.00085222666982, -8.14404531208901e-6]], nothing, nothing)

But this time when we create the Polygon we need to specify the CRS at the time of creation, making it a geospatial polygon

julia
geopoly1 = GI.Polygon([ring4], crs = source_crs1)
GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{Point{2, Float64}}, Nothing, Nothing}}, Nothing, GeoFormatTypes.EPSG{1}}(GeoInterface.Wrappers.LinearRing{false, false, Vector{Point{2, Float64}}, Nothing, Nothing}[GeoInterface.Wrappers.LinearRing{false, false, Vector{Point{2, Float64}}, Nothing, Nothing}(Point{2, Float64}[[21.0, 0.0], [21.00839489109211, 0.00025191811248184703], [21.033518309870985, 0.0020133807972559925], [21.075186885419612, 0.006784125578492062], [21.13309630561615, 0.016044338630866517], [21.206823267470536, 0.031245035570328428], [21.29582819010705, 0.053798628882221644], [21.39945867303846, 0.08506974233813636], [21.516953677609987, 0.12636633117296836], [21.64744840486518, 0.17893116483784577]  …  [21.69159119078359, -0.19823293781563178], [21.557153362189904, -0.14182952335952814], [21.43541888381864, -0.09707519809793252], [21.327284472232776, -0.06274967861547665], [21.233544778745394, -0.03756486776283019], [21.15488729606723, -0.020173244847778715], [21.091887951911644, -0.0091766360295773], [21.045007417743918, -0.0031353088009582475], [21.01458815628695, -0.0005773323690041465], [21.00085222666982, -8.14404531208901e-6]], nothing, nothing)], nothing, GeoFormatTypes.EPSG{1}((4326,)))

Note

It is good practice to only include CRS information with the highest-level geometry. Not doing so can bloat the memory footprint of the geometry. CRS information can be included at the individual Point level but is discouraged.

And let's create second Polygon by shifting the first using CoordinateTransformations

julia
xoffset = 20.;
+yoffset = -25.;
+f = CoordinateTransformations.Translation(xoffset, yoffset);
+geopoly2 = GO.transform(f, geopoly1);
GeoInterface.Wrappers.Polygon{false, false, Vector{GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, GeoFormatTypes.EPSG{1}}}, Nothing, GeoFormatTypes.EPSG{1}}(GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, GeoFormatTypes.EPSG{1}}[GeoInterface.Wrappers.LinearRing{false, false, Vector{StaticArraysCore.SVector{2, Float64}}, Nothing, GeoFormatTypes.EPSG{1}}(StaticArraysCore.SVector{2, Float64}[[41.0, -25.0], [41.00839489109211, -24.999748081887518], [41.033518309870985, -24.997986619202745], [41.07518688541961, -24.99321587442151], [41.13309630561615, -24.983955661369134], [41.20682326747054, -24.96875496442967], [41.295828190107045, -24.946201371117777], [41.39945867303846, -24.914930257661865], [41.51695367760999, -24.873633668827033], [41.64744840486518, -24.821068835162155]  …  [41.69159119078359, -25.198232937815632], [41.55715336218991, -25.14182952335953], [41.43541888381864, -25.097075198097933], [41.327284472232776, -25.062749678615475], [41.2335447787454, -25.037564867762832], [41.15488729606723, -25.02017324484778], [41.091887951911644, -25.009176636029576], [41.04500741774392, -25.003135308800957], [41.01458815628695, -25.000577332369005], [41.00085222666982, -25.000008144045314]], nothing, GeoFormatTypes.EPSG{1}((4326,)))], nothing, GeoFormatTypes.EPSG{1}((4326,)))

Creating a table with attributes and geometry

Typically, you'll also want to include attributes with your geometries. Attributes are simply data that are attributed to each geometry. The easiest way to do this is to create a table with a :geometry column. Let's do this using DataFrames.

julia
using DataFrames
+df = DataFrame(geometry=[geopoly1, geopoly2])

Now let's add a couple of attributes to the geometries. We do this using DataFrames' ! mutation syntax that allows you to add a new column to an existing data frame.

julia
df[!,:id] = ["a", "b"]
+df[!, :name] = ["polygon 1", "polygon 2"]
+df

Saving your geospatial data

There are Julia packages for most commonly used geographic data formats. Below, we show how to export that data to each of these.

We begin with GeoJSON, which is a JSON format for geospatial feature collections. It's human-readable and widely supported by most web-based and desktop geospatial libraries.

julia
import GeoJSON
+fn = "shapes.json"
+GeoJSON.write(fn, df)
"shapes.json"

Now, let's save as a Shapefile. Shapefiles are actually a set of files (usually 4) that hold geometry information, a CRS, and additional attribute information as a separate table. When you give Shapefile.write a file name, it will write 4 files of the same name but with different extensions.

julia
import Shapefile
+fn = "shapes.shp"
+Shapefile.write(fn, df)
20340

Now, let's save as a GeoParquet. GeoParquet is a geospatial extension to the Parquet format, which is a high-performance data store. It's great for storing large amounts of data in a single file.

julia
import GeoParquet
+fn = "shapes.parquet"
+GeoParquet.write(fn, df, (:geometry,))
"shapes.parquet"

Finally, if there's no Julia-native package that can write data to your desired format (e.g. .gpkg, .gml, etc), you can use GeoDataFrames. This package uses the GDAL library under the hood which supports writing to nearly all geospatial formats.

julia
import GeoDataFrames
+fn = "shapes.gpkg"
+GeoDataFrames.write(fn, df)
"shapes.gpkg"

And there we go, you can now create mapped geometries from scratch, manipulate them, plot them on a map, and save them in multiple geospatial data formats.

+ + + + \ No newline at end of file diff --git a/previews/PR195/tutorials/geodesic_paths.html b/previews/PR195/tutorials/geodesic_paths.html new file mode 100644 index 000000000..3ebbd7dc7 --- /dev/null +++ b/previews/PR195/tutorials/geodesic_paths.html @@ -0,0 +1,35 @@ + + + + + + Geodesic paths | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Geodesic paths

Geodesic paths are paths computed on an ellipsoid, as opposed to a plane.

julia
import GeometryOps as GO, GeoInterface as GI
+using CairoMakie, GeoMakie
+
+
+IAH = (-95.358421, 29.749907)
+AMS = (4.897070, 52.377956)
+
+
+fig, ga, _cp = lines(GeoMakie.coastlines(); axis = (; type = GeoAxis))
+lines!(ga, GO.segmentize(GO.GeodesicSegments(; max_distance = 100_000), GI.LineString([IAH, AMS])); color = Makie.wong_colors()[2])
+fig

+ + + + \ No newline at end of file diff --git a/previews/PR195/tutorials/spatial_joins.html b/previews/PR195/tutorials/spatial_joins.html new file mode 100644 index 000000000..5172217ce --- /dev/null +++ b/previews/PR195/tutorials/spatial_joins.html @@ -0,0 +1,66 @@ + + + + + + Spatial joins | GeometryOps.jl + + + + + + + + + + + + + + +
Skip to content

Spatial joins

Spatial joins are table joins which are based not on equality, but on some predicate p(x,y), which takes two geometries, and returns a value of either true or false. For geometries, the DE-9IM spatial relationship model is used to determine the spatial relationship between two geometries.

Spatial joins can be done between any geometry types (from geometrycollections to points), just as geometrical predicates can be evaluated on any geometries.

In this tutorial, we will show how to perform a spatial join on first a toy dataset and then two Natural Earth datasets, to show how this can be used in the real world.

In order to perform the spatial join, we use FlexiJoins.jl to perform the join, specifically using its by_pred joining method. This allows the user to specify a predicate in the following manner:

julia
[inner/left/right/outer/...]join((table1, table1),
+    by_pred(:table1_column, predicate_function, :table2_column) # & add other conditions here
+)

We have enabled the use of all of GeometryOps' boolean comparisons here. These are:

julia
GO.contains, GO.within, GO.intersects, GO.touches, GO.crosses, GO.disjoint, GO.overlaps, GO.covers, GO.coveredby, GO.equals

Tip

Always place the dataframe with more complex geometries second, as that is the one which will be sorted into a tree.

Simple example

This example demonstrates how to perform a spatial join between two datasets: a set of polygons and a set of randomly generated points.

The polygons are represented as a DataFrame with geometries and colors, while the points are stored in a separate DataFrame.

The spatial join is performed using the contains predicate from GeometryOps, which checks if each point is contained within any of the polygons. The resulting joined DataFrame is then used to plot the points, colored according to the containing polygon.

First, we generate our data. We create two triangle polygons which, together, span the rectangle (0, 0, 1, 1), and a set of points which are randomly distributed within this rectangle.

julia
import GeoInterface as GI, GeometryOps as GO
+using FlexiJoins, DataFrames
+
+using CairoMakie, GeoInterfaceMakie
+
+pl = GI.Polygon([GI.LinearRing([(0, 0), (1, 0), (1, 1), (0, 0)])])
+pu = GI.Polygon([GI.LinearRing([(0, 0), (0, 1), (1, 1), (0, 0)])])
+poly_df = DataFrame(geometry = [pl, pu], color = [:red, :blue])
+f, a, p = poly(poly_df.geometry; color = tuple.(poly_df.color, 0.3))

Here, the upper polygon is blue, and the lower polygon is red. Keep this in mind!

Now, we generate the points.

julia
points = tuple.(rand(1000), rand(1000))
+points_df = DataFrame(geometry = points)
+scatter!(points_df.geometry)
+f

You can see that they are evenly distributed around the box. But how do we know which points are in which polygons?

We have to join the two dataframes based on which polygon (if any) each point lies within.

Now, we can perform the "spatial join" using FlexiJoins. We are performing an outer join here

julia
@time joined_df = FlexiJoins.innerjoin(
+    (points_df, poly_df),
+    by_pred(:geometry, GO.within, :geometry)
+)
julia
scatter!(a, joined_df.geometry; color = joined_df.color)
+f

Here, you can see that the colors were assigned appropriately to the scattered points!

Real-world example

Suppose I have a list of polygons representing administrative regions (or mining sites, or what have you), and I have a list of polygons for each country. I want to find the country each region is in.

julia
import GeoInterface as GI, GeometryOps as GO
+using FlexiJoins, DataFrames, GADM # GADM gives us country and sublevel geometry
+
+using CairoMakie, GeoInterfaceMakie
+
+country_df = GADM.get.(["JPN", "USA", "IND", "DEU", "FRA"]) |> DataFrame
+country_df.geometry = GI.GeometryCollection.(GO.tuples.(country_df.geom))
+
+state_doublets = [
+    ("USA", "New York"),
+    ("USA", "California"),
+    ("IND", "Karnataka"),
+    ("DEU", "Berlin"),
+    ("FRA", "Grand Est"),
+    ("JPN", "Tokyo"),
+]
+
+state_full_df = (x -> GADM.get(x...)).(state_doublets) |> DataFrame
+state_full_df.geom = GO.tuples.(only.(state_full_df.geom))
+state_compact_df = state_full_df[:, [:geom, :NAME_1]]
julia
innerjoin((state_compact_df, country_df), by_pred(:geom, GO.within, :geometry))
+innerjoin((state_compact_df,  view(country_df, 1:1, :)), by_pred(:geom, GO.within, :geometry))

Warning

This is how you would do this, but it doesn't work yet, since the GeometryOps predicates are quite slow on large polygons. If you try this, the code will continue to run for a very, very long time (it took 12 hours on my laptop, but with minimal CPU usage).

Enabling custom predicates

In case you want to use a custom predicate, you only need to define a method to tell FlexiJoins how to use it.

For example, let's suppose you wanted to perform a spatial join on geometries which are some distance away from each other:

julia
my_predicate_function = <(5)  abs  GO.distance

You would need to define FlexiJoins.supports_mode on your predicate:

julia
FlexiJoins.supports_mode(
+    ::FlexiJoins.Mode.NestedLoopFast, 
+    ::FlexiJoins.ByPred{typeof(my_predicate_function)}, 
+    datas
+) = true

This will enable FlexiJoins to support your custom function, when it's passed to by_pred(:geometry, my_predicate_function, :geometry).

+ + + + \ No newline at end of file
Skip to content

20th April, 2024

See GeometryOps#114.

  • [ ] Exact predicates can be defined for lower-level, more atomic predicates within GeometryOps.

  • [ ] Add Shewchuck's adaptive math as a stage for exact predicates.

  • [x] @skygering to write docstrings for the predicates

29th Feb, 2024

To do

  • [ ] Finish clipping degeneracies

  • [ ] Fix cross & overlap functions

  • [x] Benchmarks to show why things you couldn't concieve of in R are doable in Julia

  • [x] profile functions for exponential improvements

  • [ ] A list of projects people can work on...the beauty here is that each function is kind of self-contained so it's an undergrad level project

  • [ ] Doc improvements

    • more

    • benchmarks page

  • Methods to validate and fix geometry

    • [ ] Polygons and LinearRings:

      • [ ] self-intersection

      • [ ] holes are actually within the polygon

      • [ ] Polygon exteriors must be counterclockwise, holes clockwise.

      • [ ] length of all rings > 4

      • [ ] repeated last point

    • [ ] LineStrings: NaN/Inf points

    • [x] Fix linear rings at some point to make sure the ring is closed, i.e., points[end] == points[begin]

  • Tests

    • [x] Simplify functions

    • [x] Polygonize

    • Barycentric tests for n_vertices > 4

Done

  • Rename bools.jl to something more relevant to the actual code -> orientation.jl

  • Doc improvements:

    • organise sections

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%0DaTE}%lFC?6H@gsWhTqoy(jnZQI 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

Introduction

tA*OWCO|Ide>dc$@$O+Q+D=m`td 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 U&{d8DWc;U~CG!YPqb;BmWg*U7p`J4oIlvu4st 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 M(4*d0vpx5}00mmpJpcdz literal 0 HcmV?d00001 diff --git a/previews/PR195/assets/hpfmrae.CLtpJ5Wb.png b/previews/PR195/assets/hpfmrae.CLtpJ5Wb.png new file mode 100644 index 0000000000000000000000000000000000000000..484cbe27e43ac28978070377fdebedce0486926b GIT binary patch literal 201563 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

20th April, 2024